TECHNICAL NOTES
小さなマイコン基板のための開発環境を作る — CraftVia開発記録 #3
マイコン基板を小さくすると、装置へ組み込みやすくなります。一方で、USB接続や書き込み用のデバッガ、動作確認用のLEDまで省くと、そのままでは開発しにくくなります。
今回は、小さなマイコン基板を差し込み、電源供給、プログラムの書き込み、消費電流の測定を行う開発用ベース基板を設計します。
これは、試作で得た設計資産を、実際の装置や次の開発へつなぐ「CraftVia」プロジェクトの一環です。
CraftViaでは、マイコンとその動作に必要な基本回路をまとめた基板を「Core」、書き込み・計測などを担う開発用ベース基板を「Station」と呼びます。ここからは、この二つの名前を使って説明します。
前回の記事では、STM32G031を搭載する25.40 mm角の「Core-S G031 Rev0」を設計しました。今回は、その開発・評価に使う「Station-S」の仕様を決めました。
この記事では、初号機(Rev0)に必要な機能と主要部品、電源・計測の構成を決めるまでを紹介します。具体的な回路図と部品配置は、次回の記事で扱います。
Coreに必要な開発機能をStationへまとめる
一般的な開発ボードには、マイコンのほかにデバッガ、USB-UART、LED、ボタン、電源回路などが一枚の基板にまとまっています。開発中は便利ですが、そのまま装置へ組み込むと、開発時にだけ使う部品も一緒に持ち込むことになります。
そこで、CraftViaでは装置へ組み込むマイコン基板「Core」と、開発用の機能をまとめて手元に残す「Station」を分けることにしました。CraftViaの考え方と構成は、プロジェクトの立ち上げを紹介した記事で詳しく説明しています。
Stationには、次の機能を持たせます。
- Coreへの電源供給
- ファームウェアの書き込みとデバッグ
- RESET、BOOT、UARTの操作
- ボタンとLEDによる簡単な動作確認
- 開発対象の電圧・電流・電力測定
- GPIOへのアクセスと追加回路の試作
開発中はここへCoreを差し込み、動作を確認できたら、組み込み先の基板や装置へ移します。開発用の機能を繰り返し使いながら、装置に必要な部分だけを小さく保つのが狙いです。
接続相手の外形と端子配置を先に固定する
Stationを設計するには、差し込むCoreの形と端子位置が決まっていなければなりません。そのため、先に設計したCore-S G031 Rev0のデータをいったん固定しました。
固定したのは、25.40 mm角の外形、2.54 mmピッチの接点位置、電源・GNDと書き込み用端子の配置、4層構成、および回路図・PCB・製造データです。設計ソースと製造用ファイルを用途別にまとめ、SHA-256チェックサムも記録しています。
この「設計凍結」は、試作に使う基準を残すためのものです。実物で挿抜のしやすさや電源品質などを評価し、必要な修正は次の改版へ反映します。
初号機ではSTM32の書き込み・デバッグを優先する
将来的には、STM32以外のMCUを搭載したCoreにも対応することを目指しています。そのため、Stationも、MCUに応じた書き込み・デバッグ環境を用意できる構成へ発展させたいと考えています。
例えば、USB Type-CをPCとの接続口とし、USBハブの下流へ複数のデバッグプローブを接続する構想があります。対応するMCUに合わせてプローブを使い分けられれば、開発用の設備を共通化できます。
ただし、初号機からすべてを入れると、USB、電源、デバッグ信号、制御ファームウェアが互いに依存し、問題の切り分けが難しくなります。そこでRev0はSTM32G031を対象とし、次の順に機能を成立させます。
- ファームウェアの書き込みとデバッグ
- RESET、ボタン、LED、UARTによる動作確認
- 開発対象の電圧・電流・電力測定
- 測定値の表示と操作機能
- GPIOやユニバーサル領域での追加回路の試作
まずはCoreを差し込めば、STM32開発ボード(Nucleo)に近い感覚で使えることを目指します。書き込み・デバッグは計測や表示の機能から独立させ、付加機能が未完成でも基本の開発を続けられるようにします。
STM32向けのデバッガにSTLINK-V3MODSを選ぶ
この第一段階を担当するデバッガとして、STMicroelectronicsのSTLINK-V3MODSを選びました。STM32向けの書き込み・デバッグに使える小型モジュールで、Stationへ固定搭載し、モジュール上のUSB Micro-BコネクタをPCへ接続します。
Coreへは、書き込み・デバッグ用のSWDIO、SWCLK、リセット用のNRST、ターゲット電圧を接続するT_VCC、シリアル通信用のVCP UART TX/RX、GNDを接続します。
Rev0では専用のUSB Type-CやUSBハブは搭載せず、まずこのモジュールでSTM32向けの開発環境を立ち上げます。他のMCUへ対応する段階で、それぞれに適したプローブや書き込み方式を追加する方針です。
測定・表示を担当するマイコンにもCoreを使う
書き込み環境の次に考えたのは、電流測定や表示をどのマイコンで制御するかです。
専用MCUをStationへ直接実装する方法もありますが、今回は制御側にもCoreを使うことにしました。Station自身も、CraftViaの開発基盤を使って育てていくという考え方です。
Stationには、開発対象用と制御用の二つのCoreソケットを設けます。
| ソケットの表示 | 役割 |
|---|---|
| DEV/DUT(開発対象) | 書き込み・デバッグ・消費電流測定の対象となるCoreを挿す |
| CTRL(制御用) | 計測・表示・操作を担当するCoreを挿す |
DEV/DUTはDevelopment / Device Under Test、CTRLはControlを表します。デバッガは開発対象側へ接続し、制御用側は電流モニタINA226の読み出し、OLED表示、ボタン入力、状態LEDを担当します。最初は両方にCore-S G031を使う予定です。
開発用の道具で、その道具の機能を増やす
制御用のファームウェアも、このStationを使って書き込めます。
- 制御用にするCoreを、開発対象側のソケットへ挿す
- STLINK-V3MODSから制御用ファームウェアを書き込む
- 電源を切り、書き込み済みのCoreを制御用ソケットへ移す
- INA226、OLED、ボタン、LEDと組み合わせて動作を確認する
- 修正が必要なら、電源を切って開発対象側へ戻し、修正版を書き込む
最初はLEDを点滅させ、次にI2Cで電流モニタを認識し、測定値を取得して表示する。このように、先に立ち上げた書き込み環境を使って、Station自身の機能を段階的に増やせます。
測りたい電流だけを測るために、電源経路を分ける
電流測定を行うには、「どの回路の電流を測っているのか」を明確にする必要があります。
表示器や制御用マイコンの電流まで含めると、開発対象のプログラムによる変化が分かりにくくなります。そこで、電源の接続系統(ネット)を次の四つに分けました。
| ネット名 | 役割 |
|---|---|
STLINK_5V | STLINK-V3MODSから受け取る5 V |
SYS_5V | Station内部で使用する5 V |
VDD_CTRL | 制御用Core、INA226、OLED、操作部・状態表示用3.3 V |
VDD_TARGET | 開発対象のCoreと外部回路へ供給する、電流測定対象の3.3 V系統 |
構成は次のようになります。
STLINK-V3MODS
│ STLINK_5V
└─ 電源選択 ─ SYS_5V
│
└─ 3.3 Vレギュレータ ─ VDD_CTRL
│
├─ 制御用Core
├─ INA226
├─ OLED
└─ 操作部・状態表示
VDD_CTRL ─ 外部電流計用ジャンパ ─ シャント抵抗 ─ VDD_TARGET
│
├─ 開発対象のCore
└─ 外部回路用3.3 V出力
制御用Core、INA226、OLED、制御用の状態LEDはVDD_CTRLから給電します。これらをシャント抵抗の上流へ置き、Stationの制御系の電源電流を測定経路から除外します。
測定するのは、シャント抵抗を通ってVDD_TARGETへ流れる電流です。開発対象のCoreと外部回路を同時に接続すれば、両方の消費電流を合計した値になります。Core単体を比較するときは、外部負荷を外すなど測定条件をそろえます。
GPIO経由の電流も、接続先や給電方法によって測定値に影響します。開発対象につなぐUSER LEDや外部回路をどのように接続し、どこまでを測定対象に含めるかは、次回の回路図で整理します。
3.3 Vレギュレータと電源予算
3.3 VレギュレータにはTLV75533PDBVRを選定しました。固定3.3 V出力のLDOで、制御系と開発対象へ電源を供給します。
Rev0では、STLINK-V3MODSの5 V出力をStation全体の電源として使用します。メーカー仕様に従い、この5 V出力から取り出す電流を合計200 mA以内に収めることが条件です。開発対象だけに200 mAを割り当てられるわけではありません。
電源予算には、次の負荷が含まれます。
- 制御用Core
- 開発対象のCore
- INA226
- OLEDモジュール
- 電源・状態表示LED
- VDD_TARGETから給電する外部回路
給電できる電流は、制御用・開発対象のCoreに加え、OLEDや外部回路の消費分も含めて考える必要があります。Rev0では手持ちのSSD1306搭載小型表示モジュールを想定していますが、実装後に各ブロックの電流を測り、200 mA以内に収まることを確認します。
電流予算に加え、LDOの発熱も確認します。5 Vから3.3 Vへ降圧して200 mAを供給する場合、LDOの損失は概算で(5 − 3.3) × 0.2 = 0.34 Wです。実装後は各ブロックの消費電流とともに、レギュレータの温度上昇を確認します。
将来版では、Station専用のUSB-C電源、保護回路、負荷スイッチを追加し、デバッガ給電への依存を減らす予定です。
INA226と0.1 Ωシャントを選ぶ
開発対象の電圧・電流・電力を測るため、電流・電力モニタにはINA226AIDGSRを選びました。
シャント抵抗は0.1 Ωとし、初期候補には4端子構造のWSK2512R1000BEAを選定しました。電流を流す端子と電圧を検出する端子を分けやすく、Kelvin配線を構成しやすいためです。
0.1 Ωの場合、代表的なシャント電圧と損失は次のようになります。
| シャントを流れる電流 | シャント電圧 | シャント抵抗の損失 |
|---|---|---|
| 1 mA | 0.1 mV | 0.0001 mW |
| 10 mA | 1 mV | 0.01 mW |
| 100 mA | 10 mV | 1 mW |
| 200 mA | 20 mV | 4 mW |
| 500 mA | 50 mV | 25 mW |
500 mAの行はシャント抵抗の特性を示す計算例であり、Rev0の給電上限を超えています。200 mAもStation全体の電源予算なので、開発対象へ供給できる電流は制御系の消費分だけ小さくなります。
Rev0の目的は、µA単位の精度を保証する専用計測器を作ることではありません。INA226のデータシートでは、シャント電圧の最小刻み(1 LSB)は2.5 µVです。0.1 Ωでは電流換算で25 µAに相当します。また、入力オフセット電圧の最大±10 µVは、同じ条件で±100 µA相当になります。
これらは基板全体の測定精度を示す数値ではありません。実際にはシャント抵抗の誤差、配線、温度なども影響します。表示の桁数を増やしても、その桁まで正確に測れるとは限らないため、低電流域の値は慎重に扱います。
想定しているのは、次のような比較です。
- 将来的な他MCU対応も含めた、M0+系、M4F系、RISC-V系などのCoreごとの傾向
- クロック設定変更前後の差
- LED、通信、演算処理を動かしたときの変化
- RunからSleepなどへ切り替えたときの、測定可能な範囲での電流変化
- INA226の値と外部電流計の比較
まずはRun時の電流や処理内容による変化の比較を中心とし、Stop時などの微小電流を正確に評価する場合は、必要な分解能と精度を備えた別の計測器を使います。また、INA226の変換時間や平均化設定より短い電流変化は、その波形やピークを捉えられるとは限りません。過渡的な変化を調べる場合も、必要な時間分解能に応じて測定方法を選びます。この初号機では、開発中に変化を見つけ、次に詳しく測るべき箇所を判断できることを目標にします。
外部電流計も直列接続できるようにする
INA226だけでなく、手持ちのテスターや電流計でも確認できるよう、シャント抵抗の上流に2ピンジャンパを設けることにしました。
通常時はジャンパキャップで短絡します。外部電流計を使用するときは、電源を切ってジャンパキャップを外し、二つの端子間へ電流計を直列接続します。
この構成では、外部電流計を接続してもシャント抵抗とINA226は回路内に残ります。同じ負荷を同時に観察できるため、INA226の設定や測定値を確認しやすくなります。ただし、外部電流計にも電圧降下があるため、接続時は開発対象の供給電圧が変わり、動作や消費電流へ影響する可能性があります。
誤操作を避けるため、基板上にはジャンパを外してから電流計を接続することと、通電中に抜き差ししないことを表示します。
初号機での検証を、次の設計へつなぐ
今回は、STM32の書き込み・デバッグを土台にして、制御用Coreと電流測定を加える構成にしました。USBハブと複数プローブへの対応、制御用ソケットへのデバッグ信号の切替、Coreの自動識別、可変電源、PC向けの計測アプリケーションは、初号機の完成条件に含めません。
他のMCUへの対応では、ソケットの形をそろえるだけでなく、端子の用途やデバッガとの接続も合わせる必要があります。将来のCoreが使う開発信号を宣言し、それに対応する経路だけを接続する方針とし、具体的な切替方法は今後検討します。
まずは電源供給、書き込み、計測が意図どおり動くかを確認し、その結果を次のUSB・電源・プローブ構成へ反映します。
次回、この構成を回路図にする
Coreに必要な開発機能を補うため、デバッガ、開発対象と制御用の二つのソケット、電源経路、電流測定方法を決めました。これで、各機能をどこにつなぎ、何から動作確認を始めるかが見えてきました。
次は、ジャンパの操作、信号方向、テストポイント、部品定数を具体化し、製造できる回路へ落とし込みます。電源・計測、開発対象のデバッグ、GPIO、制御用Core、操作・表示、制御用端子の引き出しという6ページに分けて回路図を作成する予定です。
次回は、Station-S Rev0の回路図と、140 mm × 90 mmの基板上へ部品を配置するまでを紹介します。