x 時間がなくて忙しい人は、一番下へ
目的
I2Cで遊ぶ準備をする
ピンの機能 (i2c SCK SDA)
ハードウェアマニュアル(英文)より
1 - 20 PC14 I2C1_SDA
8 - 1 PC15
2 2 VDD
3 - 3 VSS
4 - 4 PF2
4 - 5 PA0
4 - 6 PA1
4 - 7 PA2
- 8 PA3
- 9 PA4
- 10 PA5
- 11 PA6
- 12 PA7
5 - 13 PA8
PA9 I2C1_SCL
PA10 I2C1_SDA
5 - 14 PA11
6 - 15 PA12
7 - 16 PA13
8 - 17 PA14
8 - 18 PB6 I2C1_SCL
1 - 19 PB7 I2C1_SDA I2C1_SCL
いろいろ1
えーーー 1ピンと8ピンのみ
標準的なPB6、PB7だね
8ピンは、SWDと被るから
「ターゲットリセット」が必須だね。
1ピン PB7のLチカ
//GPIO_PB7_C011_2
//初期化
void setup() {
delay(3000);//マッポの手先、消したら、いかんぜょ(斎藤由紀風)
//ピンの初期化 PB7
pinMode(PB7, OUTPUT);
} //setup
//メインループ
void loop() {
//PB7をオン
digitalWrite(PB7, HIGH);
delay(1000); //1秒待つ
//PB7をオフ
digitalWrite(PB7, LOW);
delay(1000); //1秒待つ
} //loop
必ず読んでください。
↓ここをクリック↓
↑ここをクリック↑
x 以降は、自己責任の意味がわかる人だけ読んでください。
x ターゲットリセット信号の出る書き込み器を必ず用意してください。
x 必ず、全体のはじめの先頭に3秒のウエートを入れてください。
x 3秒ルールは、絶対に消さないでください
PB6は、なぜか動かない
//GPIO_PB6_C011_1
//初期化
void setup() {
delay(3000);//マッポの手先、消したら、いかんぜょ(斎藤由紀風)
//ピンの初期化 PB6
pinMode(PB6, OUTPUT);
} //setup
//メインループ
void loop() {
//PB6をオン
digitalWrite(PB6, HIGH);
delay(1000); //1秒待つ
//PB6をオフ
digitalWrite(PB6, LOW);
delay(1000); //1秒待つ
} //loop
PB6が動かない
PC14が動かない
PA9が動いた
PA10が動いた
STM32C011F6Uの時
//*** I2C ***
#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SDA[] = {
{PA_10_R, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
{PC_14, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF14_I2C1)},
{NC, NP, 0}
};
#endif
#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SCL[] = {
{PA_9_R, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
{PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF14_I2C1)},
{NC, NP, 0}
};
#endif
PA10,PA9で遊ぶ そして、動いた
へんな液晶は、オリジナルハードで0x80に送ると文字を表示する
//GPIO_I2C_A_C011_1
//インクルド
#include <Arduino.h>
#include <Wire.h>
//初期化
void setup() {
delay(3000);//マッポの手先、消したら、いかんぜょ(斎藤由紀風)
//ピンの初期化 PB6
pinMode(PB7, OUTPUT);
//i2cの初期化
Wire.setSDA(19); //PA10
Wire.setSCL(18); //PA9
Wire.begin(); //pa12 pa11
} //setup
//メインループ
void loop() {
//一文字転送
Wire.beginTransmission( (0x80)>>1 );
Wire.write('A');
Wire.endTransmission();
delay(1);
//PB6をオン
digitalWrite(PB7, HIGH);
delay(1000); //1秒待つ
//PB6をオフ
digitalWrite(PB7, LOW);
delay(1000); //1秒待つ
} //loop