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の主要な設定項目を示します.

  1. 通信速度(Baud Rate):19200bpsに設定
  2. データサイズ:8ビットまたは9ビットを選択可能
  3. 割り込みの有効化:バッファ・サイズ指定が必要
  4. 標準入出力関数(STDIO)の有効化
  5. 送受信ピン(TX/RX)の設定

ボーレート(Baud Rate)は,通信の安定性を考慮しながら設定する必要があります.19200bpsでは安定した通信が可能ですが,高速化が求められる場合は57600bpsや115200bpsも選択できます.

受信データの処理と応答

パソコン側から送信されたデータを受信し,適切な応答を行うには,EUSARTの受信関数と送信関数を利用します.以下の処理を実装することで,指定の文字を受信した際に異なる応答を返すことができます.

  1. 開始時に"Command = "と表示
  2. 受信文字が'A'または'a'のとき:ASCII文字'A'から'Z'までを送信
  3. 受信文字が'N'または'n'のとき:ASCII文字'0'から'9'までを送信
  4. そのほかのとき:"???"を送信

このように,受信データに応じて異なる応答を返すことで,シンプルなコマンド・インターフェースを構築できます.

ボーレートと通信速度の関係

ボーレートとは

ボーレート(Baud Rate)とは,1秒間に転送されるシンボル(信号変化)の数を指します.EUSARTにおいては,ボーレートの設定が通信の安定性に大きく影響を与えます.

ボーレートとビットレートは異なる概念ですが,一般的なシリアル通信では1シンボルが1ビットに対応するため,ボーレート=ビットレートとして扱われることが多いです.

ボーレートと誤差の影響

EUSARTを利用する際,マイコンのシステム・クロックとボーレートの設定値の間には誤差が生じることがあります.この誤差が大きい場合,通信が不安定になり,データの破損が発生する可能性があります.

一般的なボーレートと誤差の例を以下に示します.

  1. 9600bps:誤差 0.16%
  2. 19200bps:誤差 0.08%
  3. 57600bps:誤差 0.64%
  4. 115200bps:誤差 0.96%

通常,誤差が1%未満であれば実用上問題ありませんが,高速通信時には誤差が影響するため注意が必要です.

適切なボーレートの選択

ボーレートを選択する際には,以下の点を考慮することが重要です.

  1. 通信相手(パソコンやほかのマイコン)が対応するボーレートを選択
  2. 通信誤差が許容範囲内であることを確認
  3. 高いボーレートでは安定動作を保証するためにシステム・クロックの設定を適切に行う

19200bpsは,誤差が少なく,汎用的に利用されるため,初心者向けの設定として推奨されます.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
  • 1996年 ホームページ「電子工作の実験室」を開設
  • 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
  • 2012年 神奈川工科大学 工学部 客員教授

著書

  1. "[VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
  3. [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
  5. 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.

参考文献

  1. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
  5. [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
  6. [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.