Up I2C 接続の構成 作成: 2026-10-11
更新: 2026-10-12

4足歩行ロボット > 自律型> コンピュータ > プログラミング > I2C > 接続の構成

  • I2C 接続の構成
    MCU は2つあり,SBC とデバイス (モータ, IMU, 接地センサ) のそれぞれと,つぎのようにつながる:


      移動覚NN   接地覚NN    歩行脳NN
       ストア     ストア      ストア
    └───↑───────↑────────┼───┘
       I2C     I2C      I2C
    ┌───┼───────┼───┐ ┌──↓──┐ 
    │  I2C2    I2C4 │ │ I2C1│ 
    │  0x20    0x40 │ │ 0x10│
    │┌‥‥┼‥‥‥‥‥‥‥┼‥‥┐│ │  │  │ 
    │  OUT     OUT  │ │ IN  │ 
    │︙  ‖  SC   ‖  ︙│ │  ‖  │ 
    │︙ IMU     接地セ ︙│ │ モータ │ 
    │︙ ストア     ストア ︙│ │ ストア │ 
    │└‥‥┼‥‥‥‥‥‥‥┼‥‥┘│ │     │ 
    └───↑───────↑───┘ └↓───↑┘ 
       I2C     I2C    PWM  ADC
     ┌──┼──┐ ┌──┼──┐  ┌┼───┼┐
     │ I2C1│ │ I2C3│  │     │
     │ 0x10│ │ 0x30│  │     │  
     │  │  │ │  │  │  │     │
     │ OUT │ │ OUT │  │     │
     │  ‖  │ │  ‖  │  │     │
     │ IMU │ │ 接地セ │  │ モータ │
     └─────┘ └─────┘  └─────┘

       中段の2つの枠が,2つのMCU。
       「モータ」 は,モータドライバ IC +モータ。


  • master と slave
    I2C 通信は,master と slave の通信。
    中枢 (歩行脳NN) に近い側が master になる:
      SBC─MCU 間 : SBC 側のストアが master
      MCU─デバイス 間 : MCU 側のストアが master

    master であるとは,つぎのこと:
     1. slave は,master が読み書きするメモリ領域 (ここでは 「バッファ」 と呼ぶ)
        *_buffer
    を作成する
     2. master は,*_buffer の読み/書きを,
      slave に無断で行う
    (物理層では,送信リクエストと了承のダイアログがある)

    *_buffer は,I2C で直接送受信するデータが入る。
    I2C で送れるのは byte 列だから,そのデータは byte 列である。


  • ストアの IN/OUT と *_buffer の関係
    図中の IN, OUT は,master に対する *_buffer のタイプを示している。
    master が専ら書き込みに使っているのを IN,専ら読み出しに使っているのを OUT,と表している。
    データの流れを神経系と見立てると, *_buffer が求心性であるのが OUT,遠心性であるのが IN。

    "IN"・"OUT" と表現は違うが,実体は *_buffer であり,master が読み書きの両方をできる。 .

    "*_buffer" のネーミングは,ここではつぎのようにする:
      モータストア IN : mootor_store_buffer
      IMUストア OUT : imu_store_buffer
      接地センサスト OUTア : foot_store_buffer


  • I2C回路と slave アドレス
    図中の I2C(m) は,I2C ハードウェア回路の名前。
    0x(n) は,master 側から見た slave のアドレス。

    この設定が,ストアの I2C 通信のプログラミングに先行する。
    プログラミンは,この設定に準じる。