LoginSignup
0
0

STM32C011(SOP8)のI2Cで遊ぶ(準備編)(STM32C011J4M7)(そしてI2Cは、動いた)

Last updated at Posted at 2024-02-03

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チカ

o_cop922.jpg




//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に送ると文字を表示する

o_cop923.jpg



//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


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0