USB CDC Serial / implementation

STM32H7でUSB CDCシリアルロガーを作るガイド

STM32H7をUSB CDC ACM DeviceとしてPCへ接続し、UART、センサ、内部イベントをロギングする。ログ生成とUSB転送を分離し、USB未接続時にもアプリ本体が停止しない設計にする。

対象STM32H7
用途serial logger
Review2026-07-23

STM32H7をUSB CDC ACM DeviceとしてPCへ接続し、UART、センサ、内部イベントをロギングする。ログ生成とUSB転送を分離し、USB未接続時にもアプリ本体が停止しない設計にする。

基本情報

項目内容
対象STM32H7シリーズ
テーマUSB CDC Serial / serial logger
状態現役製品として扱う
公式開発環境STM32CubeIDE / STM32CubeMX / STM32CubeH7
書き込み・デバッグST-LINK / SWD。ボード固有のオンボードST-LINK有無を確認
確認日2026-07-23

STM32H7は単一仕様ではなく、品種によってCPU構成、USB FS/HS、外部ULPI PHY、Ethernet MAC、DCMI、JPEG、外部メモリ、内蔵フラッシュ容量が異なる。この記事では、Nucleo H743ZI2やSTM32H750系ボードを例に挙げる場合でも、必ず対象MCUのデータシート、リファレンスマニュアル、ボード回路図を確認する。

このテーマで最初に判断する3点

1. ログ生成とUSB送信を別タスク・別バッファにする

CDC送信完了を待つ処理が計測や制御を止めないようにする。

2. CDCのボーレートとUSB実効速度を混同しない

Line Codingの値はUSB物理速度そのものではない。UARTブリッジ用途で反映するかを仕様化する。

3. キャッシュとDMAバッファの整合性を管理する

USB、UART、SDRAMを組み合わせる場合、バッファ領域とキャッシュ操作を明確にする。

必要なもの

部品・道具区分確認点
STM32H7開発ボード必須USB Device端子
USBデータケーブル必須データ通信対応
端末ソフト必須PC受信確認
USB-UARTドングル推奨外部UART比較
ロジックアナライザ推奨UART波形

MCU本体と開発ボードを分けて確認する

項目MCU本体で確認すること開発ボードで確認すること
USBFS/HSコア、内蔵PHY、外部ULPI要否コネクタ、VBUS、電源スイッチ、ESD
EthernetMAC有無、DMA、MDIO/MDCPHY、RJ45、クロック、終端
メモリ内蔵Flash/RAM、キャッシュ、MPU外部SDRAM、QSPI/OSPI、SDカード
カメラDCMI/JPEG有無カメラコネクタ、電源、クロック
電源VOS、LDO/SMPS、低電力モードST-LINK、LED、レギュレータ、ジャンパ
クロックHSE/HSI/CSI/HSI48、PLL、kernel clock水晶、ST-LINK MCO、配線
デバッグSWD/JTAG、トレースオンボードST-LINK、端子、切離し方法

最小動作確認

  1. 公式CDC StandaloneまたはUSBX CDC ACM例を無改造で動かす。
  2. 固定文字列を周期送信し、PCで受信数を確認する。
  3. リングバッファを追加し、ログ生成側は非ブロッキングにする。
  4. USB未接続、接続、切断、再接続を試す。
  5. バイナリ、長文、連続転送、複数ログ源を追加する。
  6. 欠落数、最大バッファ使用量、最大停止時間を記録する。

失敗時の安全な切り分け

症状優先して確認すること
COMポートが出ないUSB Device設定、48MHzクロック、端子
送信がBUSYのまま送信完了コールバック、再送制御
大量ログで欠落リングバッファ、優先度、PC読み出し
UART追加後に文字化けUART kernel clock、ボーレート計算

最小構成へ戻す際は、CubeMX生成直後の公式設定、既知良好ケーブル、オンボードST-LINK、単純なクロック構成を使う。USB、Ethernet、外部メモリ、DCMIを同時に有効化せず、一機能ずつ確認する。

ログ形式

項目推奨内容
時刻単調増加タイマまたはRTC
起動ID再起動を区別
レベルDEBUG、INFO、WARN、ERROR
モジュールUSB、UART、ETH、AI等
連番欠落検出
ファーム版ビルドID
エラー統計破棄数、再接続数

製品では、ログ量を動的に制限し、秘密情報や認証情報を出力しない。

共通チェックリスト

  • [ ] 正確なSTM32H7型番とシリコンリビジョンを記録した
  • [ ] ボード型番とリビジョンを記録した
  • [ ] STM32CubeIDE、CubeMX、CubeH7の版を固定した
  • [ ] データシート、リファレンスマニュアル、Errataを確認した
  • [ ] クロックツリーとVOS設定を保存した
  • [ ] キャッシュ、MPU、DMAバッファ配置を記録した
  • [ ] 公式サンプルを無改造で確認した
  • [ ] 別ボードまたは別PCで再現した
  • [ ] 電源断、抜き差し、再起動を試した
  • [ ] 未確認の品種差をシリーズ共通仕様として断定していない

次の行動

最小構成が安定したら、長時間試験、異常系、別OS、別個体、温度、電圧、通信負荷へ広げる。企業PoCでは、CubeMX設定、iocファイル、ソース、ELF、map、bin/hex、ビルドログ、試験ログ、ボード回路図を同じ版として保存する。

関連ページ

公式資料

Amazonの検索結果

購入リンクにはアフィリエイトリンクを含む場合があります。仕様・在庫は購入前に販売ページとメーカー公式情報で確認してください。

次に読むとよい記事