LoginSignup
0
0

More than 1 year has passed since last update.

STM32G031とI2CでIOエキスパンダー化(4GPIO)(mbed-os)

Last updated at Posted at 2022-08-21

x 超超重要 なぜか秋月STM32G031J6M6がうり切れていた。注意!!(2022/8/27現在)

x SWDをいじるので上級者向け

x 過去ログを見よ!!

x PA0をGPIOがわかる人むけ
x PA0を470Ωでプルアップ
x アドレスは、0x40(8ビット0x80)
x i2cプルアップも忘れずに
x 再書き込みに問題があるかも

目的
I2CでIOを拡張する。
金銭的には、ほぼ意味は、無い。
たまたまSTM32G031J6M6がある場合、買いに行く手間が省ける。

1 1ビット目
2 VDD
3 GND
4 2ビット目

8 SWD 3ビット目
7 SWD 4ビット目
6 SDA
5 SCL

受信




//I2C_4GPIO_V3_031_1


#include "mbed.h"

//1 LED1 PB_7
//2 VDD
//3 GND
//4 LED2 PA_0
//
//5 LED3 PA_14
//6 LED4 PA_13
//7 SDA
//8 SCL

//GPIOの初期化
DigitalOut myled1(PB_7);  //LED1
DigitalOut myled2(PA_0);  //LED2
DigitalOut myled3(PA_14); //LED3
DigitalOut myled4(PA_13); //LED4

//I2Cの初期化
//               sda   scl
I2CSlave slave(PA_12, PA_11); //0031

//メイン関数
int main()
{

    //not delete 3s wait
    wait_us(1000*1000);// 1秒待つ
    wait_us(1000*1000);// 1秒待つ
    wait_us(1000*1000);// 1秒待つ

    char buf; //I2Cバッファー

    //I2Cスレーブのアドレスの設定
    slave.address(0x80);

    //無限ループ
    while(1) {

        //I2Cの状態の読み出し(ポーリング)
        while (slave.receive() != I2CSlave::WriteAddressed) {}
        
        //I2Cスレーブの受信バッファーを読み取る
        slave.read(&buf, 1);

        //GPIOへビットを設定
        myled1 = ( buf & 0x01 );//LED1の点灯,消灯
        buf = buf >> 1;
        myled2 = ( buf & 0x01 );//LED2の点灯,消灯
        buf = buf >> 1;
        myled3 = ( buf & 0x01 );//LED3の点灯,消灯
        buf = buf >> 1;
        myled4 = ( buf & 0x01 );//LED4の点灯,消灯

    }//while

}//main






送信



//i2c_0x80_1248_out_031_1

#include "mbed.h"

//        sda   scl
I2C i2c(PA_12, PA_11); //010

int main() {

    while(1) {

        i2c.write( (0x80), "1", 1);wait_us(1000*1000);// 1秒待つ

        i2c.write( (0x80), "2", 1);wait_us(1000*1000);// 1秒待つ

        i2c.write( (0x80), "4", 1);wait_us(1000*1000);// 1秒待つ

        i2c.write( (0x80), "8", 1);wait_us(1000*1000);// 1秒待つ
        
    }//while

}//main




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