ロボットの中心となる MCUのピン配置( Port assign )は以下のとおりです。
◀ この記事の前に: 回路図
▶ この記事の次に: Peripheral MCU / ESP32 のピン配置
ピン配置
STM32 Leaf は Leafonyの Leaf(ボード)のひとつです。Lefony Bus の仕様とSTM32の仕様に基づき、ロボットに必要な機能を実現するための構成を検討しました。各ピン(ポート)にはSTM32が持つ本来の機能があります。その機能とロボットに必要な構成を最適な組合せにします。
以下は Leafony Blockのピン配置です。
- Body MCU: Peripheral MCUから信号線を介してウエイクアップします
- Peripheral MCU: Body MCUからの信号線を介してウエイクアップします
- Head MCU: Peripheral MCUからの制御で頭部ボードの電源を制御します
求められる機能
Body MCU に求められる機能は以下のとおりです。
- ロボットの制御の中心( 全体の協調制御、各MCUとの協調連携 )
- サーボモータの制御( 四肢と頭部の動作 )
- 電源電圧の監視
- 省電力の制御
- MCU間の情報交換( M-Link )
- プログラミング / デバッグ機能
- Leafony の Leafによる拡張( 既存の Leaf、自作するカスタムリーフ )
- I2Cによる拡張
検討内容
組込み系はピン配置が重要です。組込み系の MCUには CPU以外に周辺回路が入っています。その周辺回路(機能)は特定のピンと連携している場合が多く、使用したい機能を選択することはどのピンをどのように使用するかと同じになります。そのため使用する機能と外部回路を考慮してピンの割り当てを決めることが必要となります。
組込み系の設計で要(かなめ)になるところですが、おもしろいところでもあります。量産設計ではプリント基板のアートワークも考慮して決めます。ピンの配置によりパターンの取り回しが変わるためです。特にノイズに影響する場合などは最適なパターンの引き回しにするためにピンの配置は大切です。
今回のピン配置を決めた流れは以下のとおりです。
1)電源系を決める
Busの仕様で以下は電源に関する Bus Lineです。仕様により自動的に決まります。
- F1:3.3V / 主電源
- F3:VBUS / バッテリ電源の直結を想定
- F27:グランド
2)MCU周辺系を決める
一般的にはリセットとシステムクロックがあります。Leafony Busは リセットのみです。以下のとおりです。
- F5:リセット
3)プログラム書き込み、デバッグ系を決める
以下の方法があります。
- USB Leaf(AZ01)を使用してUSB経由でPCに接続
- SWDを使用してデバッガ経由でPCに接続
USB Leaf は Leafony Block 内での接続です。F18, F20を使用します。そのため、USB を使用してプログラム書き込みやデバッグ( Arduinoのシリアルモニタ出力 )を行う場合は、ここに接続する他の信号線との干渉に注意が必要です。
Design Considerations ロボットの動作時(プログラミングやデバッグをしていないとき)は、このポートは使用しません。動作時は MCU間通信 M-Linkの制御( MP-SW )と、省電力制御の外部からの再起動信号( B-WAKEEUP )の入力ポートとして使用します。
MP-SW :Peripheral MCU の M-Link参加・不参加を制御、標準で参加( MP-SW OFF )
USE Leaf に USBケーブルが接続されていない場合( Vusb = 0V )のときは USB信号線がポートから切りなされるので、MP-SWが信号線を専有できます。シリアルモニタとの併用はできません。MCU内部を観察したい場合は別な方法( SWD、M-Linkを介して他の MCUでの検出など )を使用する必要があります。
B-WAKEUP:STM32 Leaf をスリープしたときに外部からの信号線で復帰(ウエイクアップ)した場合に、このポートを使用します。(ウエイクアップ・ポートは限定されています。)この信号線も前記の MP-SWの信号線と同じく、デバッグ時には注意が必要です。
詳しくはUSB Leaf の特徴をご覧ください。
- F18:UARTのRXD( MP-SW と併用 )
- F20:UARTのTXD( B-WAKEUP と併用 )
Busの仕様により以下はSWDに関する Bus Lineです。
- F2:SWDのSWDIO
- F29:SWDのSWCLK
( SWD接続は、F5:RESETとF27:GNDも必要です。 )
4)機能的なピン配置を優先的に決める。
高速通信系を優先したので、MCU間の通信で使用する SPIをアサインしました。
- F15:SPIのSS(デバイス指定(選択))
- F17:SPIのMOSI(マスタからスレーブへの通信)
- F19:SPIのMISO(スレーブかたマスタへの通信)
- F21:SPIのSCK(クロック)
SPIを MCU間の通信で使用した場合、Leafony Block内部でのSPI 通信をどうするか検討が必要です。ここではとりあえず SPIを MCU間の通信( M-Link )で使用することを想定しておきます。I2Cも使用できそうですので以下を確保しました。I2Cはデバイスのアドレスで通信相手を選択しますので、SPIのデバイス選択信号線が不要です。
MCU間の接続や Leafの拡張は別途説明します。
- F23:I2CのSDA(データ線)
- F25:I2CのSCL(クロック線)
電源電圧の検出は周辺回路を担当する Peripheral MCUで計測します。オプションとして Body MCUで計測することの想定して ADCをアサインします。
- F12:ADC入力(電源電圧を1/2して入力)
ADCの基準電圧も既定です。
- F4:AREF(ADCの基準電圧)
5)Leafony Block 内部との整合性を考える
今回、Leafonyを使用した目的のひとつに Leafの追加(増設)があります。Leafony Block 内部の接続にも配慮する必要があります。内部の接続で重要な線を外部用の線とぶつからないようにする必要があります。内部の接続で重要な線は以下のとおりです。
- F7:RTC microSD Leaf(AZ02)の SDPONで使用
- F8:BLE Leaf(AC02)のRXD
- F10:BLE Leaf (AC02)のTXD
- F18:USB Leaf(AZ01)のTXD
- F20:USB Lead(AZ01)のRXD
- F24:4-Sensors(AI01)のINT(割り込み線)
I2CとSPIは内部外部の共用となります。I2Cはアドレスでデバイスを選択するので問題はありませんが、SPIは線で物理的に選択する必要があります。前項4)のSPIのSSを内部とした場合、外部用に別途線が必要となります。これは汎用IOですので以下で調整します。
6)汎用IOを決める
サーボモータの出力制御があります。実はこの MCUのある意味メインの機能になります。残りのポートを割り付けていきます。組み込み系であればパターン(配線)の取り回しや電気的特性などを配慮してポートの位置を決めることが望まれます。
- F9:サーボモータ1
- F11:サーボモータ2
- F14:サーボモータ3
- F16:サーボモータ4
- F22:サーボモータ5
- F26:サーボモータ6
- F28:サーボモータ7
- F12:サーボモータの電源制御
- F13:M-Link(外部)用のSPIの制御線
ポートの選択に関してはひとる注意が必要です。PA10だけ他の線と異なります。他の線は STM32直結ですが、PA10だけスイッチング用のICを介しています。サーボモータはオープンドレイン出力(5Vトレラント)で使用します。そのため PA10は使用できません。そこで PA10(F13)をサーボモータ以外の M-Link用の SPI制御線にアサインしました。
( 参考 )Leafony STM32 の PA10(注意点)
F12は標準でサーボモータの電源のON/OFFを制御します。オプション(回路構成の変更)で電源電圧を検出する ADCの入力に切り換えることも可能です。
7)最後の調整です
あと、配置したいのはウエイクアップ用です。これはある程度制約があります。以下のとおりです。
- WKUP1 (Wakeup Pin 1):PA0ピンにマッピング
- WKUP2 (Wakeup Pin 2):PC13ピンにマッピング
- WKUP3 (Wakeup Pin 3):PE6ピンにマッピング
- WKUP4 (Wakeup Pin 4):PA2ピンにマッピング
- WKUP5 (Wakeup Pin 5):PC5ピンにマッピング
この中からPA2(WKUP4)をウエイクアップ用の線としました。USB Leaf(AZ01)と共用となります。
今回もかなりぎりぎりのピン配置でしたがほぼ全てのピンを有効にアサインできたと思います。Grove 5V Leaf(AX06)や LCD Leaf(AI04)は一部のピンが衝突しますが、使用頻度を考慮して使用適用外としました。
参考情報
他のサイトで参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
- USB Leaf の特徴: F18, F20 は、プログラム書き込み時と動作時の両方を行います。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet