マイコン(MCU)システム開発入門編

第7回:シリアル通信概要とUARTを使う場合の留意点

マイコンを使う場合に頻繁に使われるシリアル通信の種類と特徴について概説します。さらに代表的なシリアル通信の一つである 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 のマルチドロップ構成

図-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年 有限会社マイクロチップ・デザインラボ設立
現在の活動
  • マイコンや計測制御システムの開発コンサルタント、グローバル電子(株)顧問
  • 神奈川工科大学 非常勤講師としてモノづくりの基礎を指導
  • 書籍や雑誌記事の執筆
書籍
(技術評論社)
  • 電子工作の素(改定新版)
  • MCC、C言語によるPICプログラミング大全
  • マイコンの使い方がよくわかる本
  • 逆引きPIC電子工作やりたいこと事典
  • IoT電子工作やりたいこと事典

特別連載「マイコン(MCU)システム開発入門編」リンク

特別連載