ロボットには標準で二つのMCUを搭載しています。MCU間は情報交換できるように接続しています。この接続を “M-Link” と名付けました。
◀ この記事の前に: 二つの Leafony Block
▶ この記事の次に: 具体的な複数のMCU接続
搭載するMCUの役割
- Body MCU: 中心となる MCU、主にでサーボモータを制御する。Leafony Block( STM32 )
- Peripheral MCU: Wi-Fi、Bluetooth、表示、発音などの周辺を制御する。ESP32
複数の MCUは SPI( Serial Peripheral Interface ) で接続しています。
本体ボードには二つ目の Leafony Block を追加搭載することができます。また、ロボットの頭部に頭部ボードを拡張することができます。( 頭部ボードはオプションです。)
- Body MCU2: 二つ目の Leafony Block
- Head MCU: センサ類の周辺をとりまとめる。
全体の構成は図のとおりです。青色の矢印は SPIによる MCU間のデータの流れです。緑色の矢印は I2Cによる Leafony Block 間のデータの流れです。これを”M-Link2“と名付けました。
MCU間の接続はSPI
SPI接続にはいくつかの方式があります。標準モードはひとつのマスタにひとつもしくは複数のスレーブが並列に接続した接続方式です。デイジチェーンモードは複数のデバイスを直接接続します。ロボットで使用する接続方式は各MCUをシリアル(直列)に接続するデイジチェーンモード方式です。
標準モード
マスタは選択線(SS1, SS2, SS3)で通信したいスレーブを選択します。(論理負 = Lowにすると選択)マスタは対象とするひとつのスレーブだけと通信できます。
上図の通信は以下のとおりです。
マスタ ⇔ スレーブ1( スレーブ2,3は非対象 )
デイジーチェーン・モード
選択線はひとつ。SSをLowにするとスレーブ全体と通信できる様になります。通信データは順番に各スレーブを回りますので標準モードに比べると通信データの遅延を生じます。
上図の通信は以下のとおりです。
HeadMCU → Peripheral MCU → BodyMCU → ( 元へ・HeadMCU )
MCU間の接続形態
オプションを含めた各MCUを SPIのデイジチェーンモードで接続しました。
Design Considerations Head MCU から Peripheral MCU にデータを早く伝送したいので、その方向に接続しています。( Head MCU - MOSI → Peripheral MCU - MISO )逆方向の伝送では Body MCUを介すため遅くなります。
Head MCU はオプションです。 Head MCUがない場合は、Peripheral MCUと Body MCUが直結します。
Head MCU がある場合でも省電力機能(別記)で、Head MCU が機能していない時は直結となります。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 具体的な複数のMCU接続: MCU間の接続の詳細です。対応するポート(ピン)など設計に必要な情報です。
他のWebサイト
- SPIの基本を学ぶ ( Analog Devices )
- SPIデバイスのデイジーチェーン接続 ( Analog Devices )
- よく分かる! シリアル通信基礎講座 ( 株式会社マクニカ )