0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

STM32G031とVSCode+STM32CubeでI2Cスレーブの受信文字をシリアル出力(受信)(STM32-I2C-USART)(CH340N)

Last updated at Posted at 2021-12-11

x 過去ログを見よ->

x I2C-UASRT コンバータ (STM32-I2C-USART)

x STM32G031J6M6 VSCode PlatformIO CubeIDE I2C

x CubeMXは、stm32g031f6px
x VSCodeは、nucleo-g031
x プルアップ抵抗は、忘れずに

x ちょつとやる気が出てきたのでバイナリを何とかする予定 おわつた

目的
I2Cスレーブのテスト
I2Cは、PA11とPA12
シリアルは、9600bpsでPA2(4ピン)から出力

-273-

o_con273.jpg

-509-

o_con509.jpg

-o_con173

o_con173.jpg

-o_con160

o_con160.jpg

o_con174.jpg

o_con175.jpg

参考

I2C_SLAVE_TEST2_031_2のファイルを適当にコピー
I2C_SLAVE_TEST2_031_2_BINに実行用バイナリーがある

いろいろ
新規プログラムは、実質3行でほぼ設定ゲーである。
設定してボタンを押してようすを見るゲームの様だ。

o_con153.jpg

o_con154.jpg

o_con155.jpg

o_con156.jpg

o_con157.jpg

o_con158.jpg

-その3 215

o_con215.jpg

-その4 o_con217

o_con217.jpg

-218

o_con218.jpg

-212

o_con212.jpg

-262

o_con262.jpg

-265-

o_con265.jpg

書き換え
5V - SWCLK
SDA-T
SCL-R

o_con269.jpg

-266-

o_con266.jpg

-213

o_con213.jpg

-214

o_con214.jpg

-237

o_con237.jpg

-283

o_con283.jpg

main内のwhile内





        //I2Cのアドレスの設定も忘れずに「hi2c2.Init.OwnAddress1 = 0x80;」

        uint8_t aRxBuffer[10] = {0};

        while (HAL_I2C_Slave_Receive(&hi2c2,aRxBuffer, 1, 1000) != HAL_OK) {};

        //LED ON debug
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);
        //HAL_Delay(500); //debug


        //I2Cスレーブの受信データの表示
        HAL_UART_Transmit(&huart2,aRxBuffer, 1, 10);

        //I2Cスレーブの受信データの表示
        //HAL_UART_Transmit(&huart2, (uint8_t *)"\tRead A: ", 9, 10);
        //uint8_t n1  = '0' + (aRxBuffer[0] % 16);
        //uint8_t n10 = '0' + (aRxBuffer[0] / 16);
        //HAL_UART_Transmit(&huart2, &n10, 1, 10);
        //HAL_UART_Transmit(&huart2, &n1, 1, 10);
        //HAL_UART_Transmit(&huart2, (uint8_t *)"\r\n", 2, 10);

        //LED OFF debug
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);
        //HAL_Delay(500); //debug




I2C内(忘れずに)




  hi2c2.Init.OwnAddress1 = 0x80;



o_con176.jpg

STM32G31J6M6用 Aを連続出力

o_con177.jpg




//I2C_A_031_1

#include <Arduino.h>
#include <Wire.h>

//STM32G031J6M6 i2cピンの定義
#define sdaPin PA12    // ArduinoA4
#define sclPin PA11    // ArduinoA5

#define en     PB7     // 1pin

#define ADDR1  0x40

//初期化
void setup() {

  delay(3000); //not Delete

  //GPIOの初期化
  pinMode(en, OUTPUT);

  //i2cの初期化
  Wire.begin(sdaPin, sclPin); //STM32G031J6M6

}//setup

//メインループ
void loop() {

  digitalWrite(en, 1); //LED ON debug

  //I2Cに送信
  Wire.beginTransmission(ADDR1);
  Wire.write('A');
  Wire.endTransmission();

  delay(500);//0.5秒待つ


  digitalWrite(en, 0); //LED OFF debug
  delay(500);//0.5秒待つ

}//loop




STM32G031J6M6 HELLO.. 表示

o_con178.jpg



//I2C_HELLO_031_1

#include <Arduino.h>
#include <Wire.h>

//STM32G031J6M6 i2cピンの定義
#define sdaPin PA12    // ArduinoA4
#define sclPin PA11    // ArduinoA5

#define en     PB7     // 1pin

#define ADDR1  0x40

//文字列の表示 nana_seg
int ns_printf(char *str1)
{

  //文字の中身がゼロか
  while (*str1) {

    //I2Cに送信
    Wire.beginTransmission(ADDR1);
    Wire.write( *str1 ++  );
    Wire.endTransmission();

    delay(1);//連続送信防止の為に1ms待つ

  } //while

  //戻り値
  return (0);

}//ns_printf


//初期化
void setup() {

  delay(3000); //not Delete

  //GPIOの初期化
  pinMode(en, OUTPUT);

  //i2cの初期化
  Wire.begin(sdaPin, sclPin); //STM32G031J6M6

}//setup


//メインループ
void loop() {

  digitalWrite(en, 1); //LED ON debug

  //I2Cに文字列を出力
  ns_printf("hello world\r\n");

  delay(500);//0.5秒待つ


  digitalWrite(en, 0); //LED OFF debug
  delay(500);//0.5秒待つ

}//loop




資料

HALライブラリによるSTM32マイコンのUART機能使用方法

おまけ

普通のシリアルとして使うプログラム




int ledPin = PB7; // LEDをPB7番ピンに
int inPin  = PA0; // デジタルピンPA0に入力
int val = 0;     // 読み取った値を保持する変数

void setup() {
  pinMode(ledPin, OUTPUT);   // LED用に出力に設定
  pinMode(inPin, INPUT);     // スイッチ用に入力に設定
}

void loop() {
  val = digitalRead(inPin);                    // 入力ピンを読む
  digitalWrite(ledPin, (val==LOW)? HIGH: LOW); // LEDのピンを読み取った値に変更(反転)
}





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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?