マイコンを使う場合に頻繁に使われるシリアル通信の種類と特徴について概説します。さらに代表的なシリアル通信の一つである UART による非同期通信を使う場合の留意点について解説します。
1. シリアル通信の種類と特徴
マイコンで使われるシリアル通信には図1のような種類があります。図のようにそれぞれに通信速度と通信可能距離に特徴があります。Wi-Fi は無線通信なので分類とは異なりますが、参考までに追加しています。
この図から分かるように多くのシリアル通信では、通信速度が高速になるとともに通信可能距離が短くなりますので注意が必要です。また RS232/422/485 はケーブルの太さ、つまりケーブルの抵抗が通信距離に影響を与えます。
図1:マイコン用シリアル通信の種類と特徴
このような条件からどの通信方式を選ぶかは、表1のような条件で選択することになります。基本は距離と速度で選択範囲が絞られますが、それ以外に接続相手により決まってしまう場合もあります。いずれにしても適材適所で方式を選択する必要があります。
表1:マイコン用シリアル通信の種類と特徴
| 選択条件 | シリアル通信方式の選択肢 | |
|---|---|---|
| 距離 | 基板内 | SPI、I2C、RS232、単線シリアル |
| 10m以下 | USB、RS232C | |
| 数10m以上 | RS422/RS485、Wi-Fi、単線シリアル、LAN | |
| 通信速度 | 200kbps 以下 | I2C、RS232 |
| 1Mbps 以下 | I2C、RS422/RS485、Wi-Fi、USB、単線シリアル | |
| 1Mbps 以上 | SPI、USB、LAN、Wi-Fi | |
| 接続相手 | IC、モジュール | I2C、SPI、RS232 |
| パソコン、スマホ | USB シリアル(RS232)、USB、LAN、Wi-Fi | |
| インターネット | LAN、Wi-Fi | |
2. UARTによるシリアル通信の留意事項
マイコン内蔵のUART(Universal Asynchronous Receiver Transmitter)モジュールを使うと可能になる通信は、RS232C/RS422/RS485 となります。さらに USB シリアル変換器を使えばUSBによるシリアル通信も可能です。
一番基礎となる RS232C の規格は表2のようになっていて、もともとはアナログモデムを接続して使う前提となっています。この規格に合わせてマイコンと本来のRS232C規格の機器と接続する場合には、TTL-RS232C のレベル変換ICを使って接続していました。しかし、この RS232C 規格の機器は、ほとんど使われなくなっているので、TTL レベルで直接使うようになりました。本来は「UART 直結通信」と呼ぶべきですが、この TTL レベルのシリアル通信もそのまま RS232C 通信と呼んでいます。さらにこの場合のシリアル通信は非同期通信がデフォルトのようになっています。
表2:EIA-232-D/E(RS232C)の規格
| 項 目 | 規 格 | |
|---|---|---|
| ドライバ | 最大無負荷出力電圧 | ±25V |
| 最小負荷出力電圧 | ±5〜15V(負荷 〜 7kΩ) | |
| 短絡時の最大出力電流 | 500mA | |
| 最大スルーレート | 30V/μsec | |
| レシーバ | 入力抵抗 | 3 ~ 7kΩ |
| 入力スレッショルド | ±3V | |
| 最大入力電圧 | ±25V | |
| 最大ケーブル長 | 15m | |
| 最大伝送速度 | 20kbps | |
1)RS232C/RS422/RS485 の非同期通信は同期に注意
シリアル通信では「同期」と呼ばれる3つの要素に注意が必要です。3つの要素とは…
- 電気的レベルの同期
- ビット同期
- フレーム同期
…の3要素です。
TTLレベルでマイコン同士などをシリアル通信で接続する場合には、まず電圧を同じにする必要があります。通常は 3.3V か 5V のいずれかとなります。
次にビット同期ですが、非同期通信の場合のビット同期は、送受信両方が同じ通信速度とすることで合わせるようになっています。したがって、互いの通信速度が正確に同じでなければビット同期がとれなくなります。1ワードの送信ごとに速度のずれはリセットされ蓄積されることは無いので、最悪、「±1.5% 以下」の速度ずれであれば正常に通信ができます。
マイコンを使うとクロック周波数が温度により変化しますから、このクロックで動作する UART の通信速度も連動して変化します。この誤差も含めて±1.5% 以下とする必要があります。マイコン内蔵のクロックは温度範囲によって変動誤差が変わりますから、実際に使用する環境の温度範囲を加味して誤差を検討する必要があります。これで誤差が確保できない場合には、クロックをセラミック振動子やクリスタル振動子によるものに変更する必要があります。
非同期通信のフレーム同期は、スタートビットとストップビットで始まりと終わりが明確ですから、自動的に同期がとれていますので問題になることはありません。
2)TTL レベルの RS232C 通信は速度と距離に注意
通信速度はマイコンの能力により上限速度が決まりますし、高速な通信はプログラムに大きな負荷をかけますから、全体の負荷とのバランスで速度を決める必要があります。
また TTL レベルですから、正常に通信ができる距離にも制限があります。100kbps 以上の高速通信の場合には 1m 以下とする必要があります。
3)GND の接続を忘れないように
物理的に離れているデバイスと接続する場合には、TX、RX以外にGNDも必ず接続する必要があります。
4)RS422/RS485 では専用ドライバ IC が必要
RS422/RS485 は RS232C の TTL レベル電圧による通信を差動電流伝送に変換することで高速長距離通信を実現しています。したがって、RS422/RS485 を使う場合には、専用のドライバ IC を追加する必要があります。
5)RS485 のマルチドロップ用通信プロトコルには標準がない
RS485 で図2のようにマルチドロップ構成として複数の端末を接続して通信する場合、UART の 9-bit モードを利用してアドレスとデータを区別して通信するようにしますが、これをサポートする標準となるプロトコルはありませんので、プロトコルのプログラムは自作する必要があります。
また、特定のメーカの機器と接続するときには、そのメーカが持つプロトコルに合わせる必要があります。
図2:RS485 のマルチドロップ構成

6)受信には割り込みを使う
多くの場合受信はいつ来るかわかりませんから、いつ来てもよいように割り込みを使ったプログラムとします。送信は自分でタイミングを決めますから割り込みは必要ありませんが、送信完了を待つ時間が待てないような場合は、やはり割り込みを使います。
7)フロー制御はプログラムで行う
TTL レベルの RS232C 通信の場合、フロー制御はハードウェアではなく、プログラムで行うことが多くなっています。通常はメモリにバッファを用意してオーバーフローしないように制御します。
3. USB シリアル変換によるシリアル通信の留意事項
最近のパソコンと RS232C 通信を行う場合には、USB を使う必要があります。USB シリアル変換ICを使えば簡単に使えるようになります。この場合に注意することは次のようになります。
1)パソコン用のドライバの有無の確認
USB シリアル変換ICを選択する場合、パソコン側のドライバソフトウェアが用意されているかどうかの確認が必要です。パソコンの OS に標準で組み込まれているメーカもあるので、選択に注意が必要です。またパソコンの OS のバージョンアップで認識しなくなる場合もあるので保守が必要。
2)通信速度の限界に注意
USB シリアル変換ICにより最高速度が制限される場合もあるので注意が必要です。
3)電圧レベルに注意
TTL レベル側が 3.3V と 5V のものがあるので確認が必要。
4)ポート番号は環境により変わる
パソコンに接続した場合、環境によりポート番号が変わるので、パソコン側のプログラム開発には注意が必要。通常は COM ポートを選択できるようにします。
以上がシリアル通信の概要と UART を使う場合の留意事項です。次回はI2C通信を使う場合の留意事項について解説します。
PDF 資料請求
特別連載_MCU_7:シリアル通信概要と UART を使う場合の留意点
著者プロフィール
後閑 哲也 Tetsuya Gokan
| 経歴 |
1971年 東北大学卒業後 大手通信機メーカにて各種の制御装置を開発 2003年 有限会社マイクロチップ・デザインラボ設立 |
|---|---|
| 現在の活動 |
|
| 書籍 (技術評論社) |
|
特別連載「マイコン(MCU)システム開発入門編」リンク
- 第1回: 組み込みシステムのシステム設計とは
- 第2回: ハードウェア設計方法
- 第3回: ソフトウェア設計方法
- 第4回: マイコンのハードウェア設計留意点
- 第5回: デジタル入出力インターフェースの設計留意点
- 第6回: アナログ入出力インターフェースの設計留意点
- 第7回:シリアル通信概要と UART を使う場合の留意点
- 第8回:I2C 通信を使う場合の留意点(2月公開予定)
- 第9回:SPI 通信を使う場合の留意点(3月公開予定)
- 第10回:PWM 制御を使う場合の留意点(4月公開予定)
