PIC-IoT WA開発ボード( EV54Y39A )は、Microchipが発売した、AWS向けに事前プロビジョニングされた迅速なプロトタイピング用IoT開発ボードです。
CDC仮想シリアルポートの動作原理とは何でしょうか?
CDC(Communications Device Class)仮想シリアルポートは、オンボードデバッガに実装されたUSBコンポジットデバイスの機能です。この機能により、ホストPCとターゲットMCUの間に双方向の透過型UARTデータチャンネルが確立されます。ホスト側では、ターミナルソフトウェアが仮想シリアルポートを介してターゲットボード上の物理UARTペリフェラルと全二重のデータ送受信を行うことができ、追加のRS-232インターフェースやUSB-シリアル変換アダプタは不要です。
以下の図は、PIC-IoT WAオンボードデバッガに組み込まれたCDC仮想シリアルポートの動作原理を示しています。
(画像提供:Microchip)
データ伝送経路
-
ホスト送信 → ターゲット受信
ホストのターミナルソフトウェアから送信されたデータ → USB CDC TX → デバッガのCDC TXピン → ターゲットMCUのUART RXピン
-
ターゲット送信 → ホスト受信
ターゲットMCUのUART TXピン → デバッガのCDC RXピン → USB CDC RX → ホストの仮想シリアルポート → ターミナルソフトウェアで受信
システムの認識(Enumeration)とドライバのインストール
- Windows: Curiosity Virtual COM Portとして認識されます。COMポート番号は、デバイスマネージャの「ポート」セクションで確認できます。旧バージョンのWindowsでは、MPLAB X IDEに同梱されているドライバのインストールが必要です。
- Linux:
/dev/ttyACM*として認識されます。ユーザーがアクセス権限を取得するにはdialoutユーザーグループにユーザーを追加する必要があります。 - macOS:
/dev/tty.usbmodem*として認識され、ターミナルアプリケーションからモデムデバイスとして直接利用できます。
サポートされるパラメータと制限事項
| パラメータ項目 | サポート内容 |
|---|---|
| ボーレート | 1200bps~500kbps:範囲外の値は最も近い境界値へ自動的に補正 されます。実行中の変更も可能です。 |
| データビット | 8ビットの文字長に固定 |
| パリティビット | 奇数パリティ、偶数パリティ、およびパリティなしのすべてに対応 |
| ストップビット | 1ストップビットまたは2ストップビットから選択可能 |
| ハードウェアフロー制御 | 非対応 |
重要な信号と動作メカニズム
DTR信号の必要性
デバッガは、ターミナルソフトウェアがDTR信号をアサートした場合にのみ、CDCチャンネルでの送受信を有効にします。DTRがアサートされない限り、データの転送は行われません。
エンジニア向けヒント:DTR信号のアサートとはどういう意味でしょうか?
DTRは、シリアル通信におけるハードウェア制御信号であり、Data Terminal Readyの略称です。
DTR信号をアサートするとは、ホストPCがシリアル制御チャンネルを介してDTR信号をアクティブ状態に設定し、周辺機器(この場合はPIC-IoT WAのオンボードデバッガ)に通知することを意味します。
フレームバッファリングと効率の最適化
- ホスト側からの送信:データは、最大伝送効率を得るため、64バイトのUSBフレーム単位でバッファリングされ、フレームが満たされると送信されます。低ボーレートで1バイトずつ送信すると、フレームバッファリングの仕組みによりスループットが低下します。
- ターゲット側での受信:データは、ホストへアップロードされる前に最大64バイトまでバッファに蓄積されます。一部しか埋まっていないフレームは、約100msのタイムアウト後に強制的にアップロードされます。保留中のフレームは最大8つまで保持できます。
CDCオーバーライドモード
CMD:SEND_UART=で始まるテキストファイルをデバッガのマスストレージドライブに書き込むと、デバッガのCDC TXピンから直接データを送信できます。デフォルトのボーレートは9600bpsです。以前にボーレートが設定されている場合は、その設定値が維持されます。1つのメッセージの長さは最大50文字です。
ハードウェアおよびソフトウェアでの注意事項
ハードウェアに関する注意
デバッガのCDC TXピンには外部プルアップ抵抗がなく、未使用時はフローティング状態になります。不要なフレーミングエラーを防ぐため、ターゲットMCUはこのピンに対して内部プルアップ抵抗を有効にする必要があります。
ソフトウェアに関する注意
ターミナルソフトウェアはDTR信号の制御に対応している必要があります。対応していない場合、データ通信はまったく行えません。ボーレートは1200bps~500kbpsの範囲内に設定する必要があります。この範囲外の値は、自動的に範囲内へ調整されます。
エンジニア向けヒント
低ボーレートでデバッグを行う際は、データをまとめて送信し、USBフレームの総数を減らすことで、1バイト単位の転送による効率低下を回避してください。データが文字化けする場合は、まずターゲット側でボーレート設定、DTR信号の状態、および内部プルアップ設定を確認してください。
関連資料
関連商品
- PIC-IoT WA開発ボード( EV54Y39A )
関連記事
- PIC-IoT WA開発ボードをすぐに使い始める - クイックスタートガイド
- PIC-IoT WA開発ボードをすぐに使い始める - オンボードリソースの詳細解説
- PIC-IoT WA開発ボードをすぐに使い始める - 電源構成ガイド
- PIC-IoT WA開発ボードをすぐに使い始める - オンラインプログラミングガイド
- PIC-IoT WA開発ボードをすぐに使い始める - CDC仮想シリアルポート
