UARTの基礎知識
スポンサーリンク
Contents
UARTとは
UART (Universal Asynchronous Receiver Transmitter) は、非同期型のシリアル通信の一つで、マイコンやPC間でデータを送受信するために使用されます。シンプルな配線でデータをやり取りできるため、組み込みシステムやコンピュータ周辺機器で広く使用されています。
UARTの特徴
- 2本の線 (送信: Tx, 受信: Rx) だけで通信が可能
- 非同期通信 (クロックなしのデータ通信)
- フルデュプレックス通信 (送信受信を同時に行える)
- 設定が簡単で実装しやすい
- 長距離通信には適さない(ノイズや信号減衰の影響を受けやすい)
UARTは、I2CやSPIなどの同期通信方式と異なり、独自のクロックを持たずにデータを送信するため、シンプルな実装が可能ですが、送受信のタイミングに注意が必要です。
UARTのデータフレーム構造
UART通信では、次のようなフレームでデータを送信します。
[Start (1bit)] [Data (5-8bit)] [Parity (0 or 1bit)] [Stop (1 or 2bit)]
- スタートビット (1bit): データ送信の開始を示す (常に Low)
- データビット (5-8bit): 送信する実際のデータ
- パリティビット (0 or 1bit, 任意): データの誤りを検出するための機能
- ストップビット (1 or 2bit): データ送信の終了を示す (常に High)
パリティビットの役割
パリティビットは、データの誤り検出に使用され、以下の種類があります。
パリティ設定 | 説明 |
なし (None) | パリティビットを使用しない |
偶数パリティ (Even) | 1のビット数が偶数になるようにパリティビットを設定 |
奇数パリティ (Odd) | 1のビット数が奇数になるようにパリティビットを設定 |
データの正確性が求められる場合、パリティビットを利用すると信頼性が向上しますが、その分データの送信時間が増えます。
ボーレート (通信速度)
UARTの通信速度は、ボーレート (bps: bits per second) で決定されます。
ボーレート (bps) | 1バイト送信時間 |
300 | 約33.3 ms |
1200 | 約8.33 ms |
2400 | 約4.17 ms |
4800 | 約2.08 ms |
9600 | 約1.04 ms |
19200 | 約0.52 ms |
38400 | 約0.26 ms |
57600 | 約0.17 ms |
115200 | 約0.086 ms |
230400 | 約0.043 ms |
460800 | 約0.022 ms |
921600 | 約0.011 ms |
- 送信側と受信側で同じボーレートを設定しないと、データ化けや通信不良が発生する
- 高速通信ほどノイズの影響を受けやすいため、適切なボーレートを選ぶ必要がある
フロー制御 (RTS/CTS)
UART通信では、データ送信を制御するために RTS/CTSシグナルを使用することが可能です。
シグナル | 説明 |
RTS (Request To Send) | 送信側が “送っても良いか” を受信側に問いかける |
CTS (Clear To Send) | 受信側が “送ってよし” を送信側に通知する |
フロー制御が必要なケース
- 高速通信 (115200bps 以上) でデータが溢れる可能性がある場合
- 受信側がデータ処理に時間がかかる場合
- 組み込みシステムでの安定した通信を求める場合
RTS/CTSを使用することで、データのオーバーフローを防ぎ、通信の安定性を向上させることができます。
UARTの注意点
- 送信側と受信側でボーレートを同じに設定すること
- 異なるデバイス間で通信する際は、電圧レベルの違いに注意(3.3Vと5Vの違いなど)
- 通信エラーを防ぐために、適切なパリティビット設定やフロー制御を検討する
- 長距離通信ではノイズ対策が必要
UARTと他の通信方式の比較
通信方式 | 特徴 | メリット | デメリット |
UART | 非同期シリアル通信 | シンプルな構成、低コスト | 高速通信には向かない |
I2C | 同期通信、マルチデバイス接続可 | 複数デバイスとの接続が可能 | 配線が複雑になる |
SPI | 高速同期通信 | 高速なデータ転送が可能 | 配線が増える、デバイス間の距離に制限 |
UARTは、簡単なデバイス間通信に最適ですが、高速なデータ転送が必要な場合はSPIやI2Cを検討する必要があります。
まとめ
- UARTは非同期型のシリアル通信方式で、シンプルな配線で通信が可能
- 送受信はTx/Rxの2本の線で行われ、クロック信号なしで通信する
- フロー制御 (RTS/CTS) を利用すれば、安定した通信が可能
- ボーレート設定やエラー対策を適切に行うことで、安定した通信を実現できる