Up MCU の設定 作成: 2026-09-14
更新: 2026-10-07

4足歩行ロボット > 自律型> コンピュータ > プログラミング > I2C > モータストア > MCUの設定

    SBC側の 歩行脳NNストアが,MCU 側のモータストアに,I2C で目標電流値を送る。
    この通信で,MCU は slave 側になり,slave 識別のアドレスをもつ。


  • I2C slave の設定
    アドレスの設定は,STM32 では CubeMX/CubeIDE を使って行う。

    ここでは,I2C の使用回路を I2C1, アドレスを 0x10 に設定する。

    すると,自動生成されるコードの中に,つぎのようなものが現れる:
      hi2c1.Init.OwnAddress1 = 0x10;
    意味は:
      I2C1 の Own Address レジスタに
      0x10 を書き込む


  • I2C1, hi2c1
    I2C1 は,STM32の中のハードウェア回路の1つ:
        STM32の中
       ┌────┐
       │ CPU  │
       ├────┤
       │ I2C1  │
       ├────┤
       │ I2C2  │
       ├────┤
       │ UART1 │
       ├────┤
       │ ‥‥  │
       └────┘

    hi2c1 は,I2C1 の設定情報 (管理台帳)。
    CubeMX がつぎのようにつくる:

      typedef struct
      {
        ‥‥
      } I2C_HandleTypeDef;

      I2C_HandleTypeDef hi2c1;

    hi2c1 の中に入っているのは,
      hi2c1.Instance = I2C1;
      hi2c1.Init.OwnAddress1 = 0x10;
      hi2c1.Init.ClockSpeed = 400000;
       ‥‥
    「I2C1をどう使うか」 が保存されている。

    そして,つぎが実現する:
      SBC 側からの 0x10 への送信は,
      STM32の I2C回路が
      これを自分宛と判断する


    備考 : I2C に hi2c* があるように,
       UART → huart*
       ADC → hadc*
       TIM1 → htim*