xmit & recv blog Engineering/Programing/English/Others

UARTの基礎知識

engineering


スポンサーリンク

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) を利用すれば、安定した通信が可能
  • ボーレート設定やエラー対策を適切に行うことで、安定した通信を実現できる