STM32G031とVSCode+STM32CubeでI2Cスレーブの受信文字をシリアル出力(受信)(STM32-I2C-USART)(CH340N)
x 過去ログを見よ->
x I2C-UASRT コンバータ (STM32-I2C-USART)
x CubeMXは、stm32g031f6px
x VSCodeは、nucleo-g031
x プルアップ抵抗は、忘れずに
x ちょつとやる気が出てきたのでバイナリを何とかする予定 おわつた
目的
I2Cスレーブのテスト
I2Cは、PA11とPA12
シリアルは、9600bpsでPA2(4ピン)から出力
-o_con173
-o_con160
参考
I2C_SLAVE_TEST2_031_2のファイルを適当にコピー
I2C_SLAVE_TEST2_031_2_BINに実行用バイナリーがある
いろいろ
新規プログラムは、実質3行でほぼ設定ゲーである。
設定してボタンを押してようすを見るゲームの様だ。
-その3 215
-その4 o_con217
-218
-212
-262
-265-
-266-
-213
-214
-237
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;
STM32G31J6M6用 Aを連続出力
//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.. 表示
//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機能使用方法
Author And Source
この問題について(STM32G031とVSCode+STM32CubeでI2Cスレーブの受信文字をシリアル出力(受信)(STM32-I2C-USART)(CH340N)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/5032e6905c9425f41495著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .