UART
線 2 本、クロックなし。スタートビットとストップビットで包んだバイト。
線の上の 1 文字
文字を入力してみてください。1 文字ごとに、スタートビット・データ 8 ビット(下位から)・パリティ(任意)・ストップビットに変換されます。
フレーム全体
8N1 では 1 文字が 10 ビット時間かかります(スタート 1 + データ 8 + ストップ 1。パリティや 2 ストップなら増えます)。115200 baud なら毎秒およそ 1.15 万文字です。
スタートビット
ラインが 1 ビット時間だけ 1 から 0 に落ちます。この立ち下がりで受信側が目を覚まし、ビットのタイミングを数え始めます。スタートビットは常に 0 です。
データ 'H' (0x48)
'H' = 72 = 0b01001000 の 8 ビットを、下位ビット(LSB)から順に送ります。数字として書く順番とは逆に、線上へ現れます。
ストップビット
ラインが 1(アイドルレベル)に戻り、少なくとも 1 ビット時間保たれます。次のスタートビットで必ずきれいな立ち下がりが出るようにするためです。ここで 1 が見えなければ、受信側はフレーミングエラーを報告します。
概要
UART(Universal Asynchronous Receiver/Transmitter)は最も単純なシリアル通信です。片方向ごとに 1 本の信号線と共通のグランドだけを使います。クロック線はありません。代わりに両側が事前に速度(ボーレート)を取り決め、各バイトをスタートビットとストップビットで包むことで、1 文字ごとにタイミングを取り直します。
よく見る 8N1 という表記は「データ 8 ビット・パリティなし・ストップ 1 ビット」の意味です。デバッグコンソール、GPS、Bluetooth モジュール、マイコンのブートローダなど、あらゆる場所で使われています。
基本情報
- 信号線
- TX・RX(+ GND)
- クロック
- なし(非同期)
- よくある速度
- 9600 / 115200 baud
- フレーム
- スタート 1 + データ 5〜9 + パリティ(任意) + ストップ 1〜2
- ビット順
- LSB ファースト
- 接続形態
- 1 対 1
使われる場面
- マイコンのデバッグコンソール・ログ出力(シリアル経由の printf)
- GPS(NMEA)、Bluetooth / Wi-Fi モジュール、指紋センサ
- RS-232・RS-485(Modbus RTU)・MIDI の土台となる物理層
つまずきやすい点
- 両側でボーレート・データビット・パリティ・ストップビットを揃える必要があります。食い違うとエラーではなく文字化けとして現れます。
- TX は相手の RX につなぎます(クロス接続)。TX 同士をつなぐのが初心者の定番ミスです。
- RS-232 は ±3〜±15 V で論理も反転しています。3.3 V のマイコンに直結すると壊れることがあるので、レベル変換(MAX3232 など)を使います。
出典・規格
- TIA/EIA-232-F (RS-232)