Baud
プロトコル一覧

UART

線 2 本、クロックなし。スタートビットとストップビットで包んだバイト。

線の上の 1 文字

文字を入力してみてください。1 文字ごとに、スタートビット・データ 8 ビット(下位から)・パリティ(任意)・ストップビットに変換されます。

TX0Start0D00D10D21D30D40D51D60D71Stop0Start1D00D10D21D30D41D51D60D71Stopス…データ 'H' (0x48)ス…ス…データ 'i' (0x69)ス…区分1 バイト目の受信70615040312010000x4872 'H'2 バイト目の受信70615140312010010x69105 'i'

フレーム全体

8N1 では 1 文字が 10 ビット時間かかります(スタート 1 + データ 8 + ストップ 1。パリティや 2 ストップなら増えます)。115200 baud なら毎秒およそ 1.15 万文字です。

  1. スタートビット

    ラインが 1 ビット時間だけ 1 から 0 に落ちます。この立ち下がりで受信側が目を覚まし、ビットのタイミングを数え始めます。スタートビットは常に 0 です。

  2. データ 'H' (0x48)

    'H' = 72 = 0b01001000 の 8 ビットを、下位ビット(LSB)から順に送ります。数字として書く順番とは逆に、線上へ現れます。

  3. ストップビット

    ラインが 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)

関連するプロトコル