8bit PICで10分!ミニUSB I/Oデバイスの制作
EUSARTを用いたUSBシリアル通信の基本
CDC(Communication Device Class)を利用
![]() |
---|
図1 EUSARTの設定項目を適切に選択することで,安定したUSBシリアル通信を実現できる.ボーレートは安定性と互換性のバランスを考慮して設定する.画像クリックで動画を見る.または記事を読む.[提供・著]後閑 哲也 詳細:[VOD/KIT/data]8bit PIC/Wi-Fi/Debugger搭載!ミニマムIoTデバイス製作キット |
ミニUSB I/Oデバイスをパソコンと接続し,データの送受信を行うためには,EUSART(Enhanced Universal Synchronous Asynchronous Receiver Transmitter)を利用したシリアル通信の実装が不可欠です.EUSARTは,8bit PICマイコンに搭載されている通信モジュールであり,非同期通信(UART)や同期通信(SPI/I$^2$C)を扱うことができます.
USBシリアル通信の設定
EUSARTをUSB経由でパソコンと通信させるためには,USB CDC(Communication Device Class)を活用することで仮想COMポートとして認識させることが可能です.以下に,EUSARTの主要な設定項目を示します.
- 通信速度(Baud Rate):19200bpsに設定
- データサイズ:8ビットまたは9ビットを選択可能
- 割り込みの有効化:バッファ・サイズ指定が必要
- 標準入出力関数(STDIO)の有効化
- 送受信ピン(TX/RX)の設定
ボーレート(Baud Rate)は,通信の安定性を考慮しながら設定する必要があります.19200bpsでは安定した通信が可能ですが,高速化が求められる場合は57600bpsや115200bpsも選択できます.
受信データの処理と応答
パソコン側から送信されたデータを受信し,適切な応答を行うには,EUSARTの受信関数と送信関数を利用します.以下の処理を実装することで,指定の文字を受信した際に異なる応答を返すことができます.
- 開始時に"Command = "と表示
- 受信文字が'A'または'a'のとき:ASCII文字'A'から'Z'までを送信
- 受信文字が'N'または'n'のとき:ASCII文字'0'から'9'までを送信
- そのほかのとき:"???"を送信
このように,受信データに応じて異なる応答を返すことで,シンプルなコマンド・インターフェースを構築できます.
ボーレートと通信速度の関係
ボーレートとは
ボーレート(Baud Rate)とは,1秒間に転送されるシンボル(信号変化)の数を指します.EUSARTにおいては,ボーレートの設定が通信の安定性に大きく影響を与えます.
ボーレートとビットレートは異なる概念ですが,一般的なシリアル通信では1シンボルが1ビットに対応するため,ボーレート=ビットレートとして扱われることが多いです.
ボーレートと誤差の影響
EUSARTを利用する際,マイコンのシステム・クロックとボーレートの設定値の間には誤差が生じることがあります.この誤差が大きい場合,通信が不安定になり,データの破損が発生する可能性があります.
一般的なボーレートと誤差の例を以下に示します.
- 9600bps:誤差 0.16%
- 19200bps:誤差 0.08%
- 57600bps:誤差 0.64%
- 115200bps:誤差 0.96%
通常,誤差が1%未満であれば実用上問題ありませんが,高速通信時には誤差が影響するため注意が必要です.
適切なボーレートの選択
ボーレートを選択する際には,以下の点を考慮することが重要です.
- 通信相手(パソコンやほかのマイコン)が対応するボーレートを選択
- 通信誤差が許容範囲内であることを確認
- 高いボーレートでは安定動作を保証するためにシステム・クロックの設定を適切に行う
19200bpsは,誤差が少なく,汎用的に利用されるため,初心者向けの設定として推奨されます.〈著:ZEPマガジン〉
著者紹介
- 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
- 1996年 ホームページ「電子工作の実験室」を開設
- 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
- 2012年 神奈川工科大学 工学部 客員教授
著書
- "[VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
- [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
- 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.
参考文献
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
- [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.