ロボットには複数のMCUを搭載しています。具体的な接続に関する情報です。
概要は「複数のMCUをつなぐ」をご参照ください。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に: サーボモータ
M-Link の構成
複数の MCU間は情報交換できるように接続しています。この接続を ” M-Link ” と名付けました。
M-Link は SPIのデイジーチェーン( daisy chain / 数珠つなぎ )による接続です。

よく使われる SPI接続は通信する対象が1つだけで対向して行われる通信です。
デイジーチェーン方式は、複数の通信対象と通信をおこなう通信方式です。特徴は以下のとおりです。
- メリット
同時に複数の通信対象と通信できる
スレーブデバイスの選択線の数を減らせる
データ線を減らせる - デメリット
通信に時間がかかる場合がある
通信方向が一方向に限られる
デイジーチェーン方式にした場合、通信の方向は一方向に限られます。 対向しているときと異なり、通信対象となるスレーブからの通信は通信路の間にある MCUを経由する分だけデータの到達が遅れます。その遅れの影響が少なくなる接続にしました。
外部との通信はおもに Peripheral MCUの Wi-Fi または Bloutoothを使用します。そのため通信が多くなることが想定できる MCUと隣接するように接続します。外部の状況を把握するセンサ類はオプションの頭部ボードに多く搭載されます。その状況を外部にできるだけ遅延なく発信することを重視して、Head MCUと Peripheral MCUを隣接して Head MCUからのデータを遅れを少なく Peripheral MCUに送ることにしました。
MCUの接続ピン
M-Link は SPIのデイジーチェーン方式による接続です。各MCUの接続ピンは以下のとおりです。
Body MCU / Leafony Bus assign
Line | Leafony Bus / STM32 | ||||
---|---|---|---|---|---|
Pin. | Port | Function | |||
( 内部 ) | F15 | PB6 | SPI | SS | |
M-Link | MB-SCK | F21 | PA5 | SCK | |
MB-MOSI | F17 | PA7 | MOSI | ||
MB-MISO | F19 | PA6 | MISO | ||
MB-SS | F13 | PA10 | M-Link |
Peripheral MCU / ESP32 Pin assign
Line | MCU / STM32 | |||
---|---|---|---|---|
Pin. | Port | Function | ||
M-Link | MW-SS | 29 | IO5 | VSPICS |
MW-SCK | 30 | IO18 | VSPICLK | |
MW-MOSI | 37 | IO23 | VSPID | |
MW-MISO | 31 | IO19 | VSPIQ |
Head MCU / Head connector ( option )
Line | MCU / Head | |||
---|---|---|---|---|
Pin. | Port | Function | ||
M-Link | MH-SS | 4 | IO5 | |
MH-SCK | 5 | IO18 | ||
MH-MOSI | 7 | IO23 | ||
MH-MISO | 6 | IO19 |
柔軟性のある MCU間接続
複数ある MCUを相互に接続したとき、通信速度を向上させる目的で通信する対象のスレーブデバイスを選択する機能を追加しました。
複数ある MCUのデータ線( MOSI, MISO )を直結することにより、特定の MCUを介さずに通過しないことにより特定のスレーブと直結することができます。
各MCUのデータ線に直結するスイッチを設けることにより、目的とする機能やデータの通信に柔軟に対応することができます。スイッチはプログラムで制御できるので動的な回路を構成することができます。
Head MCUは頭部ボード内にあり、MCU前にデータ線を交差する回路を設置することにより、 Head MCUをマスタとすることを想定しています。
データ線を直結するスイッチは以下のとおりです。
- M-Psw: Peripheral MCUのデータ線を制御
- M-Bsw: Body MCUのデータ線を制御
- M-Hsw: 頭部ボードのデータ線を制御( 頭部ボードはオプション )
- M-B2sw: Body MCU2のデータ線を制御( Body MCU2はオプション )
M-Hsw と M-B2sw はオプションを接続していない場合に M-Linkをリンク状に接続する役割もあわせもっています。
接続切り替えスイッチ
M-Link の回路構成例
M-Linkをプログラムで制御することにより、以下の回路を構成できます。
Body MCUをマスタ / 2 MCU連携
Body MCUをマスタ / 3 MCU連携
Body MCUをマスタ / 4 MCU連携
Head MCUをマスタ
M-Link の制御
M-Link の制御は以下の制御線で行います。
対 象 | 制御元の MCU | ポート |
---|---|---|
M-Psw | Body MCU | F18 |
M-Bsw | Peripheral MCU | GPIO21 |
M-Hsw | Peripheral MCU | GPIO27 |
M-B2sw | Peripheral MCU | GPIO22 |
オプション非取付時
頭部ボード( Head MCU )がない場合: M-Hsw 接続
Body MCU2がない場合:M-B2sw接続
制御回路
スイッチは 74CBTLV3125BQ,115を使用しています。
負論理で Lowで ON、High で OFFになります。
制御線はプルアップしているため、制御元の MCUがハイインピーダンスのときは OFFになります。
MCUがスリープ時にハイインピーダンスとした場合、M-Linkは切り離されます。●●●●
MCU間の接続回路

各MCUの接続線は以下のとおりです。
- Body MCU: Leafony bus の SPI
- Peripheral MCU: ESP bus の SPI
- Head MCU: CN6 / Connector
Body MCU と Peripheral MCU のデータ線は ロボットの頭部ボード(オプション)の有無、省電力機能の ON/OFFで接続形態が異なります。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- マルチプレクサ: 74CBTLV3125BQ,115 / Nexperia USA Inc. / メーカー / Datasheet