シリアル通信プロトコル - パート2: UART

Mark Harris
|  投稿日 2021/04/14, 水曜日
シリアル通信プロトコル - UART

この記事では、人気のあるUARTデバイスについて見ていきます。これは通信プロトコルではなく、マイクロコントローラーやスタンドアロンのICでシリアルデータの送受信に使用される物理回路です。利用可能なさまざまな種類のシリアル通信プロトコルを見ていくために制作した一連の記事のサポートとなります。

シリアル通信は、マイクロコントローラー、データを生成する周辺機器、その他のスマートデバイスなどのデバイス間で情報を伝送するための完璧なメカニズムです。次回、設計にシリアル通信バスを組み込む必要があるときに、このリソースが非常に価値あるものとなることを願っています。UARTは、デバイス上のシリアルポートとしても一般的に言及されます。しかし、これはDB9スタイルのコネクタを使用し、ハードウェアプロトコルとしてRS-232を使用する別の種類のシリアルポートと混同されることがよくあります。マイクロコントローラー上のUART周辺機器とRS-232ベースのデバイスが互いに通信するために、UARTがRS-232トランシーバーに接続されていることは珍しくありません。

UARTは、Universal Asynchronous Receiver Transmitterの略です。この通信システムには、グラウンドを除いて2つのピンが必要です。1つはTXとラベル付けされた送信機、もう1つはRXとラベル付けされた受信機です。名前に非同期という言葉が出てくることから、クロック信号を必要としないことがわかります。クロックがないため、送信機と受信機は同じボーレートを使用しなければなりません。

ボーレート(Bd)は、伝送速度を測定する単位です。このパラメータは、送信機と受信機のデータチャネル上の通信速度を決定します。ボーレートは、単純化するために秒あたりのビット数として表されることがあります。したがって、1000 Bdのレートは、通信速度が秒あたり1000ビット、または1ビットの持続時間が1/1000秒または1ミリ秒であることを意味します。ボーレートには、kBd(キロボー)、MBd(メガボー)、GBd(ギガボー)などの標準的なメトリックプレフィックスがあります。ボーレートには、スタートビットやストップビットなどのデータ以外のメッセージの部分が含まれているため、送信機から受信機へ送信される有用な情報の伝送速度はわずかに少なくなります。

より一般的な事前定義されたUARTボーレートには以下が含まれます:

  • 110ボー
  • 300ボー
  • 1200ボー
  • 4800ボー
  • 9600ボー
  • 19200ボー
  • 38400ボー
  • 115200ボー

時には、通信する両デバイスのボーレートを調整できることもあれば、一方のデバイスが固定のボーレートを持っており、もう一方がそれに合わせて変更する必要があることもあります。

したがって、2つのデバイスをUARTで接続するには、送信機のTXピンを受信機のRXピンに接続する必要があります:

UART

基本的なUART配線はTX、RX、およびグラウンドで構成されます

一部の構成では、両方のデバイスにRXとTXのピンがあり、マイクロコントローラから専用ICにコマンドを送信し、逆方向に命令や情報を受け取ることができます。これをデュプレックス接続と呼びます。また、第二のデバイスからのフィードバックが不要なアプリケーションもあります。そのため、通信は一方向だけで十分であり、TXからRXへの一つの伝送ラインだけが必要です。これをシンプレックス接続と呼びます。

UART

送信デバイスは、そのデバイスから受信デバイスへの通信を開始するために、スタートビットを送信する必要があります。このビットは、通信が開始されたことを受信デバイスに通知します。

UART

UARTデバイスはスタートビットを送信します(通信の開始)

データビットは、最も重要なビット(MSB)がD7とラベル付けされ、最も重要でないビット(LSB)がD0とラベル付けされる8ビットのストリームとして送信されます。

UART

UART通信の最初のデバイスは、最初のスタートビットの後にデータビットを送信します。

そして、これらのデータビットの終わりに、送信機はストップビットを送信し、これがメッセージの終わりであり、UARTバスをアイドルモードにすることを示します。

UART

UART

UART通信の最初のデバイスは、データビットの後にストップビットを送信します。

この場合、完全なUARTメッセージは10ビットで構成されることがわかります。アイドルモードでは、UARTバスは高い状態に引き上げられ、低いスタートビットを送信し、その後に8つのデータビットが続き、その後にストップビットが続きます。ストップビットは1ビットに限定されるわけではなく、通信速度に応じてさまざまな構成が可能です。この構成は、完全なメッセージビットセットが少なくとも一度はバス信号の電圧レベルを低から高に変更することを意味します:

Sampling Points

UARTシリアル通信パッケージの例

最上位ビットD7は、パリティビットとしても使用できます。このビットは、通信の最小ブロックに現れる基本的なエラーチェック機構を提供します。パリティビットは、高ビットまたは1の総数が奇数または偶数であることを保証するために使用できます。これは、コーディングに依存します。偶数パリティチェックの場合、データビットD0からD6が設定されており、偶数の高ビットを含む場合、パリティビットは0(低)に設定されます。逆に、このビットのセットが奇数の高ビットを持っている場合、パリティビットは1(高)に設定されます。これにより、メッセージ内の高ビットの総数が偶数になることが保証されます。奇数パリティチェックの場合、データビットD0からD6が偶数の高ビットを含むように設定されている場合、パリティビットは1(高)に設定されます。逆に、このビットのセットが奇数の高ビットを持っている場合、パリティビットは0(低)に設定されます。これにより、メッセージ内の高ビットの総数が奇数になることが保証されます。

したがって、パリティビットを使用することで、セットされたビットをチェックすることにより、エラーを検出できます。パリティビットを含むビットの総数が正しくない場合、パリティビットによって受信側は送信中のエラーを検出できます。しかし、このタイプのエラー保護は、エラーを訂正することはできず、エラーが発生したことを捉えるだけです。全体のビットセットのどのビットが間違っているかを特定する方法がないためです。1ビットが誤った状態にあるかどうかを検出することはできますが、全体のパリティが正しくなる場合、複数のビットに影響するエラーは検出されないかもしれません。

パリティエラーが検出された場合、そのメッセージは破棄され、最初から再送信されなければなりません。高い干渉やノイズレベルの場合、成功した送信を達成するまでにかなりの時間がかかる可能性がありますが、メッセージエラーを防ぐのに役立ちます。

その上で、UART通信の受信側と送信側は、成功した通信のために、正確に同じボーレート、文字長、パリティメカニズム、ストップビット構成を使用する必要があります。

UARTの変種として、USARTと呼ばれるものもあります。これは、ユニバーサル同期非同期受信送信機です。非同期チャネル(UARTと同様)としても、データがクロックされた場合には同期チャネルとしても機能することができます。クロックはデータ自体から回復されるか、別の外部信号として送信されることがあります。

USARTを同期モードで使用する場合、開始ビットと停止ビットは必要ありません。これにより、ビットタイミングにクロック参照があるため、同期的に動作する際にはより高いデータレートを使用することができます。したがって、開始/停止ビットに使用される代わりに、より多くのビットをデータに使用することができます。

 

UART

USART通信の例

UART

USART

UARTはデータ信号のみを必要とします

USARTの同期モードはデータとクロックの両方を必要とします。

UARTでは、データを固定レートで送信する必要はありません。

USARTの同期モードでは、データは固定レートで送信されます。

UARTでは、データは通常1バイトずつ送信されます。

USARTでは、同期データは通常、データブロックの形で送信されます。

UARTでは、データ転送速度が4800、9600、38400bpsなどの特定の値に設定されます。

USARTでは、同期モードを使用すると、他のすべての要因が一定である場合、非同期モードよりも高いDTR(データ転送率)を実現できます。

UARTの速度は約115200bpsに制限されています。

USARTは115kbpsを超える速度を達成できます。

全二重通信:データは同時に両方向に送信できます。

半二重通信:データは一度に一方向にのみ送信できます。

UARTとUSARTの主な目的は、PCバスライン上の並列データをシリアルデータに変換し、RS-232やRS-485などのシリアル通信プロトコル標準に準拠したバスを使用してラインドライバーを介して送信できるようにすることです。UART/USARTと外部バスとの間には、インターフェース用のコンバーターが必要になります。これにより、データを同様のデバイスで読み取ることができ、2つが正確に同じシリアルデータ形式を使用する必要はありません。2つの間の伝送が共通のサポートされた標準プロトコルに従っている限り、各デバイス内のシリアル通信の実装はそのデバイスに特有のものにすることができます。

UARTはコンピュータ市場ではUSBに大きく取って代わられましたが、低コストのデバイスでのシリアル通信に広く使用されています。

要約

この記事では、人気のあるUARTデバイスの機能とその利点や実装の詳細についていくつか見てきました。次の記事では、シリアル通信プロトコル - パートスリー: RS-232について、利用可能なシリアル通信プロトコルのいくつかを見ていきます。何か見逃しましたか?シリアル通信プロトコル

への導入をチェックしてください。Altium Designer®の設計ツールには、新しい技術に追いつくために必要なものがすべて含まれています。今日私たちに話をして、次のPCBデザインを強化する方法を見つけてください。

筆者について

筆者について

Mark Harrisは「技術者のための技術者」とでも言うべき存在です。エレクトロニクス業界で12年以上にわたる豊富な経験を積んでおり、その範囲も、航空宇宙や国防契約の分野から、小規模製品のスタートアップ企業や趣味にまで及んでいます。イギリスに移り住む前、カナダ最大級の研究機関に勤務していたMarkは、電子工学、機械工学、ソフトウェアを巻き込むさまざまなプロジェクトや課題に毎日取り組んでいました。彼は、きわめて広範囲にまたがるAltium Designer用コンポーネントのオープンソース データベース ライブラリ (Celestial Database Library) も公開しています。オープンソースのハードウェアとソフトウェアに親しんでおり、オープンソース プロジェクトで起こりがちな日々の課題への取り組みに求められる、固定観念にとらわれない問題解決能力を持っています。エレクトロニクスは情熱です。製品がアイデアから現実のものになり、世界と交流し始めるのを見るのは、尽きることのない楽しみの源です。

Markと直接やり取りする場合の連絡先: mark@originalcircuit.com

関連リソース

ホームに戻る
Thank you, you are now subscribed to updates.