Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

UART(ユーアート)とは | 意味や読み方など丁寧でわかりやすい用語解説

UART(ユーアート)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ユニバーサル非同期送受信装置 (ユニバーサルヒフドウソウジュソウチ)

英語表記

UART (ユーアート)

用語解説

UARTは、二つのデバイス間でデータをやり取りするための非常に一般的なシリアル通信プロトコルであり、またその機能を実現するハードウェア回路そのものを指す言葉である。その名はUniversal Asynchronous Receiver/Transmitter(ユニバーサル非同期送受信器)の頭文字に由来する。組み込みシステムやマイクロコントローラ(マイコン)が他の周辺機器やコンピュータと通信する際によく利用され、そのシンプルさと普及率の高さから、電子工作から産業機器まで幅広い分野で標準的なインターフェースとして用いられている。主な特徴は、複数の設定に対応可能な「Universal」性、クロック信号を共有せずに通信を行う「Asynchronous」性、そして送信機能と受信機能の両方を備える「Receiver/Transmitter」である点にある。特に非同期通信であることは、配線が単純で済むという大きな利点をもたらす。

UARTにおける「Universal」とは、通信速度(ボーレート)、データビット長、パリティビットの有無、ストップビット長といった様々な通信パラメータを柔軟に設定できることを意味する。これにより、異なる仕様を持つデバイス間でも設定を合わせることで通信が可能となる。

「Asynchronous」は、送受信する両方のデバイスが共通のクロック信号を共有しない通信方式を指す。同期通信では、別途クロック線を設けてタイミングを合わせる必要があるが、非同期通信ではそれが不要であるため、配線数を削減できる。では、どのようにしてデータのタイミングを合わせるのかというと、データフレームと呼ばれる特定の形式に基づいて送受信が行われる。このデータフレームは、通常「スタートビット」「データビット」「パリティビット」「ストップビット」で構成される。

送信側は、データ送信を開始する前に必ず「スタートビット」を送信する。これは、受信側にデータが送られてくること、およびデータの開始位置を通知する役割を果たす。スタートビットは常に特定の論理レベル(例えば、通常ハイレベルで待機している状態からローレベルに変化する)に変化することで開始が示される。受信側はこの立ち下がりエッジを検出すると、そこから一定間隔でビットをサンプリングしていくことでデータを取り込む準備をする。

スタートビットに続いて、実際のデータ本体である「データビット」が送信される。データビット長は一般的に5ビットから9ビットの間で設定可能であり、ASCII文字などの情報を表現するのに使われる。例えば、8ビットであれば1バイトの情報を送ることが可能である。最も下位のビットから順に(LSBファーストで)送信されるのが一般的である。

データビットの後に続くのは、オプションの「パリティビット」である。パリティビットは、通信中にデータが誤って変化していないか(エラーが発生していないか)を検出するための簡易的なエラーチェック機能である。偶数パリティと奇数パリティの二種類があり、データビットに含まれる「1」の数が偶数になるようにパリティビットを設定するか、奇数になるように設定するかの違いがある。受信側は、受信したデータビットとパリティビットを再計算して、送信側が設定したパリティと一致するかを確認することで、エラーを検出する。ただし、パリティビットはエラーを検出するだけで、エラーを訂正する機能は持たない。

最後に、データフレームの終わりを示す「ストップビット」が送信される。ストップビットは、送信が完了したことと、次のデータフレームの開始に備えるための区切りを意味する。通常は1ビットまたは2ビット長で、スタートビットとは逆の論理レベル(例えば、ハイレベル)を保持する。ストップビットの送信が完了すると、UARTは次のデータ送信に備えて待機状態に戻る。

UART通信では、送受信する両方のデバイスで「ボーレート」、すなわち通信速度が一致している必要がある。ボーレートは1秒間に送受信されるビット数を表す単位であり、例えば9600bps(ビット毎秒)は1秒間に9600ビットのデータが送受信されることを意味する。ボーレートが異なると、受信側がデータをサンプリングするタイミングがずれてしまい、正しくデータを受信できなくなる。また、データビット長、パリティビットの有無と種類、ストップビット長といった設定も、両方のデバイスで完全に一致していなければならない。

UARTは、一般的に「TXD (Transmit Data)」「RXD (Receive Data)」「GND (Ground)」の三本の線を用いて通信を行う。TXDは送信専用、RXDは受信専用のデータ線であり、GNDは両デバイス間の電位基準を合わせるための共通線である。TXDとRXDが独立しているため、同時にデータの送受信を行う「全二重通信」が可能である。これは、一方のデバイスがデータを送信している間に、もう一方のデバイスがデータを同時に受信できることを意味する。

メリットとしては、回路がシンプルで実装が容易であること、安価であること、そして多くのマイクロコントローラに標準で搭載されているため広く利用できる点が挙げられる。また、全二重通信が可能であるため、双方向のやり取りがスムーズに行える。一方でデメリットとしては、通信距離に制限があること(一般的に数メートル程度)、ノイズの影響を受けやすいこと、複数のデバイスを同時に接続する場合には追加の回路やプロトコル(例えばRS-485のような)が必要になることが挙げられる。高速なデータ転送が必要な場合や、より信頼性の高いエラー訂正機能が求められる場合には、SPIやI2C、USBといった別のシリアル通信方式が選択されることもあるが、UARTはシンプルさが求められる場面で今なお重要な役割を果たしている。

関連コンテンツ