TECHNICAL NOTES

USB対応を加え、Station-S Rev0を製造可能な基板へ — CraftVia開発記録 #4

  • CraftVia
  • STM32
  • ESP32
  • オープンハードウェア
  • 回路設計
  • PCB設計

前回の記事では、小型マイコン基板「Core-S」を開発するためのベース基板「Station-S Rev0」について、役割、機能の優先順位、電源・電流測定、二つのCore-Sソケットなどの仕様を決めました。

当初のRev0は、STLINK-V3MODSによるSTM32の開発を最優先とし、Station専用のUSB Type-Cは将来版へ送る予定でした。しかし、回路を具体化する過程で、Core-Sの共通端子へUSB D+ / D-を通す回路を実装すれば、Rev0の段階からESP32-C3などUSB書き込みに対応するMCUを使ったCoreを同じStation上で試せることに気が付きました。

そこでRev0の範囲を見直し、USB Type-C、USB/SWD切替、USB給電を追加しました。電源回路もLDOからDCDCコンバータへ変更し、最終的には7ページの回路図と、140 mm × 90 mmの4層PCBとしてまとめています。

今回は、仕様変更の理由、各回路ページの役割、部品配置と配線、銅箔領域、設計凍結直前の確認結果を紹介します。

CraftVia Station-S Rev0の3D表示
CraftVia Station-S Rev0の3D表示。左上がStation制御用のCTRL Core、右下が開発対象のDEV/DUT Coreです。右上にはSTLINK-V3MODSとUSB Type-C、中央と左側には追加回路を試すユニバーサル基板エリアを配置しています。画像を選択すると、別タブで拡大して確認できます。

回路図へ進む前にUSB対応を追加する

前回の仕様では、Rev0はSTM32専用として、PCとの接続をSTLINK-V3MODS上のMicro-Bコネクタへ任せる予定でした。この構成ならSWD書き込み、デバッグ、VCP UARTを比較的単純に成立させられます。

一方、CraftViaでは将来、STM32以外のMCUを搭載したCore-Sも同じ外形で試したいと考えています。例えばESP32-C3にはUSB Serial/JTAG機能があり、対応端子へUSB D+ / D-を接続すれば、外付けUSB-UART変換ICを使わずに書き込みやデバッグを行えます。

Station側にUSBコネクタを持たせ、USB PHY固有の直列抵抗やプルアップなどはCore側へ置く構成なら、StationはD+ / D-の共通経路だけを受け持てます。USBの使い方が異なるMCUでも、Core側で必要な条件を整えれば、Stationのコネクタと配線を再利用できます。

この考えから、次の変更をRev0へ取り込みました。

項目前回記事時点最終的なRev0
PC接続STLINK-V3MODSのMicro-BSTLINK Micro-Bに加えUSB Type-C
対象STM32のSWDを優先SWDとUSB Full-Speed対応Coreを選択可能
5 V入力ST-Linkまたは外部5 VUSB-C、ST-Link、外部5 Vから選択
3.3 V生成TLV75533 LDOAP63203WU-7 DCDCコンバータ
N2 / N3SWDIO / SWCLKSWDまたはUSB D- / D+へ切替
回路図6ページUSBページを加えた7ページ

ST-LinkとStationのUSB-Cを同時に一つのPCポートへまとめる構成ではなく、ジャンパーで使用モードを明示的に選びます。初号機では、切替のしやすさよりも接続状態を追いやすいことを優先しました。

回路図を7ページに分ける

回路図は、次の7ページに分けました。

ページ内容
01_PWR_MEAS電源入力、3.3 V生成、電流・電圧測定
02_DEV_DEBUGST-Link、SWD、RESET、BOOT、VCP UART、USER I/O
03_GPIO_BREAKOUTDEV/DUT Coreの全端子と3穴ブレークアウト
04_CTRL_COREStation制御用Coreと各機能の接続
05_CTRL_UI表示器、操作ボタン、状態LED
06_CTRL_BREAKOUTCTRL Coreの全端子引き出し
07_USB_ESPUSB Type-C、保護回路、USB/SWD切替

機能別に分けることで、電源の流れ、デバッグ信号の方向、測定対象、将来変更する範囲を追いやすくしました。ページ間の接続にはネットポートを使い、同じネット名が別ページへ続くことを明示しています。

01_PWR_MEAS — 3つの5 V入力と測定対象を分ける

Station-S Rev0の電源・電流測定回路
01_PWR_MEAS。USB-C、ST-Link、外部5 Vの選択、AP63203による3.3 V生成、外部電流計用ジャンパ、0.1 Ωシャント抵抗、INA226をまとめています。

電源入力はジャンパーで1つだけ選ぶ

JP1では、次の3つからSYS_5Vの供給元を選びます。

JP1電源
1–2USB-Cの5 V
3–4STLINK-V3MODSの5 V
5–6外部5 V

複数の電源を直接並列にしないため、装着するジャンパーキャップは一つだけです。STLINK-V3MODSから給電する場合は、モジュールの仕様に従って、5 V出力から取り出す合計電流を200 mA以内に収めます。これはDCDC変換前の5 V側の制限であり、3.3 V側の負荷電流とは区別して考えます。

外部5 V入力にはPTCとPチャネルMOSFETによる逆接続保護を追加しました。USB-C側には別のPTCがあり、それぞれの入力で異常時の影響を限定します。

LDOからAP63203へ変更する

前回はTLV75533PDBVRを予定していましたが、USB-Cからの給電と将来のESP32系Coreを考えると、3.3 V側の負荷が200 mAを超える可能性があります。5 Vから3.3 VへLDOで降圧すると、500 mAで約0.85 W、1 Aでは約1.7 Wを熱として失います。

そこで、固定3.3 V出力の同期整流DCDCコンバータAP63203WU-7へ変更しました。入力に10 µF、出力に22 µFを2個、インダクタに4.7 µH、BST–SW間に100 nFを配置しています。

USB-C入力へ保持電流1.1 AのPTCを置いています。ただし、この値はUSB接続元から1.1 Aを取り出せることを保証するものではありません。CC1 / CC2の5.1 kΩのRdはデバイス側であることを示すための抵抗で、これだけでは接続元の供給可能電流を判定できません。Rev0では接続元が通知する供給可能電流と適用されるUSBの給電条件を確認し、その範囲内で負荷電流、出力電圧、DCDC周辺温度を評価します。

DEV/DUTだけを測定対象にする

Stationには、開発対象のCoreが動作中にどれだけ電力を使うかを確認するため、電流・電圧の測定機能を持たせます。通常動作時とSleep時の違いや、ファームウェアの変更、使用するMCUの種類による消費電力の変化を、同じ開発環境で比較することが目的です。

VDD_CTRLは、CTRL Core、INA226、表示器、Station操作部へ供給します。そこからJP2、シャント抵抗RS1を通過した後をVDD_TARGETとし、DEV/DUT Coreとその外部回路だけを測定対象にしました。

SYS_5V
   └─ AP63203 ─ VDD_CTRL ─ CTRL Core / INA226 / 表示器 / UI
                         │
                         └─ JP2 ─ RS1 0.1Ω ─ VDD_TARGET ─ DEV/DUT Core

JP2は通常ジャンパーキャップで短絡します。外部電流計を使用するときは、電源を切ってキャップを外し、端子間へ電流計を直列接続します。

電流モニタはINA226AIDGSR、シャント抵抗はWSL2512R1000FEAとしました。シャント両端からINA226へ向かう検出線は主電流配線と分け、抵抗パッドから直接取り出すKelvin配線としています。10 Ωの直列抵抗2本と0.1 µFによる差動フィルタも設けました。

0.1 ΩとINA226のシャント電圧範囲から、測定上限は約819 mAです。これは測定レンジを示す値であり、Stationの給電可能電流を示すものではありません。実際の負荷電流は、選択した電源と電源回路の供給能力の範囲内に収めます。

また、0.1 Ωのシャント抵抗には500 mA時に50 mVの電圧降下が生じ、その分だけDEV/DUTへ届く電圧が下がります。測定感度と電源への影響の両方を考えたうえで、数mAから数百mAの変化や、RunからSleepへ移ったときの傾向を見る用途を想定しています。数µA単位の精密測定は対象外です。

02_DEV_DEBUG — STM32開発機能を1つずつ切り離せるようにする

Station-S Rev0のDEV/DUTデバッグ回路
02_DEV_DEBUG。STLINK-V3MODS、SWD、RESET、BOOT、VCP UART、USERボタン、USER LED、各切離しジャンパーをまとめています。

STLINK-V3MODSからDEV/DUT Coreへ、SWDIO、SWCLK、NRST、T_VCC、VCP UART TX/RXを接続します。SWDIOとSWCLKには0 Ωの直列抵抗を置き、必要に応じて抵抗値を変更できるようにしました。未使用のSWO/TDOはテストパッドへ引き出しています。

Coreソケット側の信号名は、特定のMCU名ではなく次の名前へ整理しました。

端子Station側の名称STM32 Core-S G031での用途
N1DEV_N1 / DBG_RESETNRST
N2DEV_N2 / DBG_DATA0SWDIO
N3DEV_N3 / DBG_DATA1SWCLK
N4DEV_N4 / DBG_BOOTBOOT操作

JP3はSWCLK経路の切離し用で、通常はジャンパーキャップを装着します。JP4はBOOT選択で、通常は開放です。RESET、VCP UART、T_VCCにも個別の切離しジャンパーを設け、USBだけでCoreを使うときにST-Link側から信号が回り込まないようにしました。

USERボタンとUSER LEDは、Core-S G031ではN5、N6へ接続します。どちらも2ピンジャンパーを介しているため、不要な場合は外し、別のCoreではジャンパーワイヤーで任意の端子へ接続できます。

03_GPIO_BREAKOUT — Coreの端子名を物理位置で扱う

Station-S Rev0のDEV/DUT GPIOブレークアウト
03_GPIO_BREAKOUT。North、East、South、West各8端子を、2.54 mmピッチのスルーホールへ展開しています。

DEV/DUT Coreの四辺各8端子は、同じ信号へ接続される穴を3個ずつ配置しました。一つをジャンパーワイヤー、もう一つを測定プローブ、残りを外部回路へ使うといった接続ができます。

シルクにはPA11やPB3のようなMCUピン名ではなく、N1、E4、S7、W2というCore-S上の物理端子名を使います。Coreに搭載するMCUが変わっても、Stationの穴位置と名前を維持するためです。

Core-S G031では未使用のN8も引き出しました。VDD_TARGETとGNDの穴も近くに置き、外部回路へ信号・電源・基準電位をまとめて接続できます。

04_CTRL_CORE — Station自身の機能をStationで開発する

Station-S Rev0のCTRL Core回路
04_CTRL_CORE。制御用Core-Sと、INA226、表示、操作信号の接続をまとめています。

CTRL Coreは、INA226の読み出し、表示器への測定値表示、操作ボタン、状態LEDを担当します。最初はCore-S G031を使う予定です。

CTRLソケットはST-Linkへ常時接続しません。制御ファームウェアを作るときはCoreをDEV/DUTソケットへ挿して書き込み、動作確認時にCTRLソケットへ移します。

完成済みの制御マイコンをStationへ載せるのではなく、先に成立させたStationの書き込み環境を使って、Station自身の計測・表示機能を育てます。この手順を試せることも、二つのCoreソケットを設けた理由です。

基板へ装着した後の確認用として、CTRL_NRST、CTRL_SWDIO、CTRL_SWCLK、VDD_CTRL、GNDはテストパッドへ出しています。

05_CTRL_UI — 表示器がなくても動作を確認できるようにする

Station-S Rev0の表示器・操作回路
05_CTRL_UI。I2C/SPI兼用表示器コネクタ、CTRL USERボタン、Station STATUS LEDをまとめています。

手持ちのSSD1306搭載OLEDモジュールをI2Cで使えるよう、VDD_CTRL、GND、SCL、SDAを出しています。将来SPI表示器も試せるよう、CS、SCK、MOSI、MISO、DC、RSTも同じ10ピンコネクタへ用意しました。回路図上のコネクタ名はLCD_I2C_SPIです。

表示器が未接続でも制御ファームウェアを確認できるよう、CTRL USERボタンとSTATUS LEDを独立して設けています。最初はLED点滅、次にINA226の認識、最後に測定値表示という順に機能を増やせます。

06_CTRL_BREAKOUT — 制御側も固定機能にしない

Station-S Rev0のCTRLブレークアウト
06_CTRL_BREAKOUT。CTRL Core-Sの四辺32端子と、3.3 V、5 V、GNDを2.54 mmピッチで引き出しています。

CTRL Coreの全32端子を各1穴ずつ引き出しました。Station制御のアイデアを試しながら、センサー、記録用メモリ、通信モジュールなどを追加できます。

VDD_CTRLだけでなくSYS_5Vも出しているため、3.3 Vと5 Vのモジュールを使い分けられます。ただし、追加した回路の消費電流は、選択している5 V電源の能力に含めて考える必要があります。

07_USB_ESP — USB信号とSWD信号を同じCore端子へ切り替える

Station-S Rev0のUSB-C・USB/SWD切替回路
07_USB_ESP。USB Type-C、CC抵抗、VBUS保護、USB ESD保護、FSUSB42によるUSB/SWD切替、モード表示LEDをまとめています。

USB Type-Cコネクタには、手はんだしやすいスルーホール端子型のUSB4085-GF-Aを選びました。CC1、CC2にはそれぞれ5.1 kΩのRdを接続し、USBデバイス側として5 Vを受け取ります。

VBUSにはTVSダイオードと1.1 A PTC、D+ / D-にはUSBLC6-2SC6を配置しました。USB VBUSが来ていることを示すLEDも設けています。

USBとSWDの切替にはFSUSB42MUXを使用します。JP7の設定は次のとおりです。

JP7N2 / N3へ接続する信号
1–2ST-LinkのSWDIO / SWCLK
2–3USB D- / D+

ジャンパー未装着時は100 kΩのプルダウンによりSWD側が既定になります。USBモードを示すLEDも追加しました。

USBだけでCoreを使う場合は、NRST、VCP TX、VCP RX、T_VCCのJP8~JP11を開放します。ST-Linkを使う場合は装着します。基板シルクにも操作を表示しました。

この経路は、すべてのCoreへ無条件にUSBを接続するものではありません。Core側がN2 / N3をUSB D- / D+として使用すると宣言し、MCUごとに必要なUSB PHY周辺回路をCore上へ持つことが前提です。また、Coreソケットとブレークアウトによる分岐があるため、Rev0ではUSB Full-Speedを主な評価対象とし、480 Mbps動作は保証しません。

PCBは140 mm × 90 mmの4層構成

CraftVia Station-S Rev0のPCB表面の2D表示
CraftVia Station-S Rev0のPCB表面の2D表示。右下にDEV/DUT Coreと3穴ブレークアウト、左上にCTRL Core、右上にSTLINK-V3MODSとUSB Type-C、中央と左側にユニバーサル基板エリアを配置しています。

基板外形は140 mm × 90 mmです。初号機では小型化だけを優先せず、Coreの抜き差し、ボタン操作、プローブ接続、追加回路の試作を行える面積を残しました。

層構成は次のとおりです。

層主な用途
Top部品、主要信号、電源配線、DCDCのSW領域
L2連続したGNDプレーン
L3SYS_5V、VDD_CTRL、VDD_TARGETの電源領域
Bottom補助配線、DCDC周辺の局所GND領域

Top層の信号は、直下のL2 GNDをリターン経路として使えます。L3は三つの電源ネットへ分け、制御系と測定対象の電源を分離しました。

配線で優先したもの

DCDCの高電流ループを小さくする

AP63203、入力コンデンサ、インダクタ、出力コンデンサ、BSTコンデンサを近接配置しました。SWピンからインダクタへ向かう銅箔領域は必要以上に広げず、他の信号から距離を取っています。

入力・出力コンデンサのGND側には複数のビアを置き、L2 GNDへ短く接続しました。Bottom層にもDCDC周辺だけの局所GND領域を追加し、帰還経路と放熱経路を補っています。

シャント抵抗は主電流と検出線を分ける

VDD_SHUNT_INからRS1を通ってVDD_TARGETへ向かう配線は約0.8 mm幅としました。INA226へ向かう検出線は、シャント抵抗のパッドから直接分岐させています。

主電流配線の途中から電圧を拾うと、その配線で生じた電圧降下まで測定値へ入ります。Rev0では部品配置と配線の両方で、Kelvin接続を成立させました。

USB D+ / D-は対として配線する

USB Type-CからESD保護IC、FSUSB42までのD+ / D-を近接して配線し、長い区間では長さをそろえました。FSUSB42からCoreソケットまではN2 / N3の物理位置へ接続します。

USB対応Coreでは、Stationのブレークアウト穴も信号上の分岐になります。このためRev0の評価では、USBの認識、書き込み、通信を実機で確認し、必要なら次版で端子構造や切替方法を見直します。

SWD、I2C、操作信号の順に配線する

SWDIO、SWCLK、NRST、T_VCCは可能な範囲で短くし、USB切替回路と切離しジャンパーを経由してDEV/DUTへ接続しました。SWDIOとSWCLKに厳密な等長条件は設けず、初回は低めのSWDクロックから確認します。

I2CはINA226、CTRL Core、表示器、テストパッドへ分岐するため、400 kHz動作を前提に詰め込まず、まず100 kHzで立ち上げます。実装後に波形と立上り時間を確認します。

追加回路を試せる面積を残す

Station-S Rev0には、独立した2.54 mmピッチのユニバーサル基板エリアを複数設けました。穴同士は初期状態で接続されていません。

必要な部分だけをはんだや配線材で接続できるほか、小型ブレッドボードを上から貼り付ける使い方も想定しています。CTRL Coreを使ってStation機能を増やす場合にも、DEV/DUTの外部回路を試す場合にも使えます。

電源や信号をあらかじめ接続しなかったのは、用途を固定しないためです。DCDCのSWノードやUSB差動信号など、影響を受けやすい配線もユニバーサル領域を避けています。

ジャンパー設定と注意点を裏面シルクに残す

CraftVia Station-S Rev0のPCB裏面の2D表示
CraftVia Station-S Rev0のPCB裏面の2D表示。ジャンパー設定と電源・測定上の注意点をシルクに記載しています。画像を選択すると、別タブで拡大して確認できます。

Stationには電源選択、USB/SWDモード、切離しジャンパーなど、使用時に確認したい設定があります。設定のたびに資料を開かずに済むよう、裏面シルクへジャンパーの操作と電源・測定上の注意点を記載しました。

主な内容は次のとおりです。

  • JP1の電源選択と「一つだけ装着」
  • ST-Linkの5 V出力から取り出す合計電流は最大200 mA
  • JP7のSWD / USB選択
  • USB専用時はJP8~JP11を開放
  • N1~N4の抽象的なデバッグ端子定義
  • 電流測定範囲は約819 mAまで
  • µA精密測定用ではないこと

Coreソケットの内側に配置したため、表面の部品配置やユニバーサル領域を圧迫せず、基板を裏返すと操作条件を確認できます。

DRCエラー0件まで確認する

PCBでは、部品間クリアランス、配線、ビア、スルーホール、基板外形、銅箔領域を確認し、最終的にDRCエラー0件となりました。

DRCが0件でも、USB電源の供給能力、DCDCの温度、USBの信号品質、INA226の実測誤差、ソケットの挿抜性までは分かりません。Rev0では次の項目を実機で確認します。

  1. USB-C、ST-Link、外部5 Vの各電源入力
  2. 3.3 V出力のリップルとDCDC周辺温度
  3. ST-LinkによるSWD書き込み、デバッグ、VCP UART
  4. USB対応Coreの認識と書き込み
  5. RESET、BOOT、USERボタン、USER LED
  6. INA226と外部電流計の比較
  7. Run、Sleepなど動作状態による電流変化
  8. CTRL Coreからの計測、表示、操作
  9. ブレークアウト、テストパッド、ユニバーサル領域の使い勝手

Rev0を凍結し、実物で検証する段階へ

前回の仕様設計から、USB対応と電源構成を大きく変更しました。結果としてStation-S Rev0は、STM32向けの開発ステーションだけでなく、USB書き込みに対応する将来のCoreを試すための基盤にもなりました。

電源とモードはジャンパーで選び、対応する信号をCore側が宣言し、実験時の条件を確認しながら使います。初号機では、この明示性が問題の切り分けに役立つと考えています。

次は回路図、PCB、BOM、Gerber、ドリル、実装位置、DRC結果をRev0として凍結し、試作基板を発注します。届いた基板では、設計どおり動くかだけでなく、操作しやすいか、測定しやすいか、次のCoreへ展開できるかを確認します。

Station-Sが実物になれば、CraftViaは小さなCoreを設計する段階から、書き込み、計測、追加回路の試作までを一つの環境で回す段階へ進みます。

AKSでは、マイコンを用いた回路設計や基板試作などの技術支援も行っています。支援内容については、事業紹介をご覧ください。

関連記事・資料