2024.10.04本記事では、UARTの仕組みと動作原理が5分で理解できるよう、分かりやすく、簡潔にまとめてあります。Transmitterの略称で、非同期(調歩同期式)シリアル通信を行うための、シリアル/パラレル変換用ハードウエア、つまりシフトレジスタを意味します。『非同期(調歩同期式)シリアル通信』の特徴については、こちらの記事にて『クロック同期式シリアル通信』と比較しながら、分かりやすく説明しています!※UARTは通信規格の名称のように扱われることもありますが、誤りです。通信方式を指して『UART』と記載することがあります。専用のICも存在しますが、マイコンのペリフェラルとして内臓されている場合がほとんどです。マイコンのペリフェラルとして動作するUARTは、概ね下記で構成されます。送信側のマイコン:CPUが送信用のデータレジスタにデータを書き込むと、シフトレジスタを介してシリアルデータが所定のフォーマットで出力されます。受信側のマイコン:所定フォーマットのシリアルデータを受信すると、シフトレジスタを介して受信データレジスタにデータが書き込まれ、それをCPUが読み取ります。これら、送信/受信レジスタ、シフトレジスタおよび、その周辺回路を含むハードウエアの総称をUARTといいます。UARTの接続UARTは、方向の固定された送信線と受信線をもつ全二重方式で通信します。マスターやスレーブのような関係性は無く、どちらからでも通信を開始できます。自身の受信ポート(RxD)を相手の送信ポート(TxD)に接続します。調歩同期式の通信ですので、クロック線はありません。フロー制御に使用する『RTS』、『CTS』の接続については後述します。フロー制御を使用しない場合はこれらの線を接続しなくてもUART通信は可能です。UARTのプロトコルプロトコルとは、通信を行うための『手順』や『ルール』を意味します。UARTを用いた通信には、以下のプロトコルが必須となります。・通信の開始にスタートビットを付与する・通信の終わりにストップビットを付与するまた、トランシーバとレシーバの双方で、以下の設定を合わせておく必要があります。・フロー制御の有無これらについて、一つずつ説明していきます。以下、UARTにおける通信単位を『フレーム』と呼びます。1フレームは、少なくとも、スタートビット、データ、ストップビットで構成されます。スタートビットUARTはクロック非同期式なので、トランスミッタがデータを送信したいとき、1フレームの開始をレシーバに合図する必要があります。・トランスミッタは、TxDをLowにドライブします(1ビット幅以上)・レシーバは、RxDのHigh→Low遷移を検出すると『通信開始(1フレームの始まり)』と認識しますこの最低1ビット幅のLowレベル信号を、『スタートビット』といいます。ストップビットトランスミッタは、スタートビットに続いて、あらかじめ設定されたビット数のデータを送り終えると、TxDをHighにドライブします。レシーバは、あらかじめ設定されたビット数のデータを受信後に、このHighレベルを検出すると、通信完了と判断し、『通信待ち』状態に戻ります。データ送信後に出力される、このHighレベル信号(1ビットまたは2ビット、あらかじめ設定する)を『ストップビット』といいます。データ長を設定するのであれば、レシーバは受信完了を認識できるのでストップビットは不要では?通信完了後に、次のフレームのスタートビットを検出するために、ストップビットが必要になります。ストップビットには、通信線を一度Highレベルに(通信待ち状態に)戻すという目的があります。ストップビットが無く、データの最後がLowレベルであった場合、そのLowレベルが前フレームの最終データなのか、次フレームのスタートビットなのか、判断がつかなくなります。スポンサーリンクボーレートの設定ボーレートは、UART通信における通信速度を表すパラメータ(1秒あたりに転送するビット数)です。sec)、19200bps、38400bps、57600bps、115200bps、が一般的です。似たような用語に『ビットレート』がありますが、意味が若干異なるため、注意が必要です。ボーレート:1秒あたりに転送する全ビット数(制御ビット※を含む)ビットレート:1秒あたりに転送するデータビットの数(制御ビット※を含まない)※制御ビットとは、転送したいデータとは別に、通信プロトコル上必要となる冗長ビット。UARTでは、『スタートビット』、『ストップビット』、『パリティビット(後述)』のこと。マイコンに内蔵されるUARTは、マイコン内で生成されるペリフェラル用クロック(デバイスおよびデバイスの設定により周波数が異なる)を持っていて、これを内蔵のディバイダ(デバイスによって仕様が異なる)で分周することで狙いのボーレートを生成します。ボーレートは通信を行う双方で設定を合わせる必要がありますが、クロックの周波数や精度、ディバイダの仕様がデバイスによって異なるため、完全に一致させることはできません。(例えば、9600bpsに設定しようとしても、9598bpsとか、9602bpsとか、ややズレた値にしか設定できません)UARTでは、このような『誤差』は発生するものとして許容する必要があります。言い換えれば、誤差があってもタイミングマージンを確保できるように、あらかじめ計算しておく必要があります(計算式はマイコン等、デバイスのデータシートに記載されていることが多い)。調歩同期式通信において、連続して転送可能なデータ長を延ばせない(1バイト程度で一旦区切る必要がある)理由はこの『誤差』にあります。この『誤差』は1ビット転送するごとに蓄積していき、連続してデータを転送していくといずれはレシーバがデータを正しく受信できなくなります。調歩同期式シリアル通信で発生する誤差について、詳細をこちらの記事で説明しています。スポンサーリンクパリティの設定データビットの後に『パリティビット』を付与することで、通信の信頼性を向上させることができます。UARTでは事前に『偶数パリティ』、『奇数パリティ』、『パリティ無し』のいずれかを設定します。この設定も当然、双方で合わせておく必要があります。偶数パリティ偶数パリティは、データビットとパリティビットに含まれる『1』の数の合計が偶数になるようにパリティビットを付与する、誤り検出方法です。0010』である場合、データビットに含まれる『1』の数は3つです。よって、パリティビットに『1』をセットし、『1』の数を4つ(偶数)にします。“1”)レシーバ側も、データビットとパリティビットに含まれる『1』の数が偶数になるはずだと分かっていますので、『1』の数が奇数であれば、エラーを検出したと判定できます。奇数パリティ奇数パリティは、データビットとパリティビットに含まれる『1』の合計が、奇数になるようにパリティビットを付与する、誤り検出方法です。仕組みは上述した偶数パリティと同じで、異なるのは偶数か奇数かの違いのみです。パリティ無しその名の通り、パリティビットによるエラー検出を使用しない設定です。データビットの後は(パリティビットが省略され)、ストップビットとなります。スポンサーリンクデータビット数の設定1フレームに挿入できるデータビットの数は、通常1バイト(8ビット)ですが、7ビットや9ビットに設定できる場合もあります。双方で設定を合わせる必要があります。上述したように、UARTでは受信データは専用レジスタに保存されますが、CPUがこれを読み出すタイミングは任意(ソフトウエア次第)です。CPUが受信データを読み出す前に新たなデータを受信すると、内容が上書きされデータが失われてしまうことがあります。Out)構造で多段階化されている場合もありますが、FIFOが満タンになったら同じことです。このようなデータ消失を防止するため、相手が受信可能か確認してからデータを送信する仕組みを、『フロー制御』といいます。Send)という2つの専用線を用いて行うため、『ハードウエア・フロー制御』ともいいます。RTS:通信相手に、自身が受信可能であることを伝える出力信号です。Hレベルで『受信不可』、Lレベルで『受信可』を意味します。CTS:自身がデータ送信可能か判別するための入力信号です。Hレベルで『送信不可』、Lレベルで『送信可』と判定します。自身のRTS出力を、相手のCTS入力に、互いに接続することで、今現在受信可能かどうかを、相手に伝え合うことができます。UARTにおいて、フロー制御は必須ではありません。データ消失が問題にならない、あるいは、データレジスタが上書きされる前に、CPUがデータを読み取れることを、ソフトウエアで保証できるシステムであれば、フロー制御は不要(RTS、CTSを接続する必要はない)です。冒頭に記載した通り、UARTはシリアル・パラレル変換用のハードウエアを意味します。通信規格では無いため、物理層の取り決めはなく、デバイスの電源電圧に応じて、5V、3.3V、1.8VのCMOSレベルで動作することがほとんどです。UARTと混同されがちな通信規格にRS232Cがありますが、これは全く異なるものです。RS232Cは通信プロトコルではなく物理層のみを規定する規格で、厳密には調歩同期式である必要すらありません(たまたま調歩同期式を採用することが多いため、UARTと混同されます)。Signal)は差動データ伝送の最も一般的な規格です。ディスプレイ・モニタの描画データ伝送や、コピー機の画像データ伝送など、様々なアプリケーションに採用されています。遅延時間やスキューについて解説!シングルエンド信号を差動信号に変換して出力するLVDSドライバまたは、その逆を行うLVDSレシーバの重要な特性である遅延時間とスキューについて解説します。本記事はLVDSについての基礎知識が前提となっています。動作原理やAC特性について詳しく説明!クロック同期型のLVDSデータをCMOSやTTL等シングルエンドのパラレルデータに変換するLVDSデシリアライザおよび、その逆を行うLVDSシリアライザがあります。SerDes(Seriarizer/Deseri...通信インターフェースシリアル通信の種類について!クロック同期式と非同期式の違いについて理解する異なるデバイス(機器)間を接続するシリアル通信は、『クロック同期式』と『クロック非同期式』に大別できます。『クロック同期式』は、クロックをデータ線と別線で伝達する方式と、クロックをデータ線に重畳して(重ねて)伝達する方式があります。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ホーム通信インターフェーススポンサーリンクhimao某メーカの電気系エンジニア(10年以上)▶︎電子基板(マイコン/モータドライブ回路/通信インターフェイス回路/など)の設計を幅広く経験▶︎エンジニアに必要な知識はネットで調べてもイマイチ理解できないことが多く、私自身も苦労してきました。自分が苦労してきた内容を若手エンジニア向けに分かりやすく解説できればと考え、2022年に本ブログを解説▶︎エンジニアの現場で使える『実用的な』知識・ノウハウを配信していきます。CPUとメモリの関係について解説!2022.02.272024.05.10himao某メーカの電気系エンジニア(10年以上)▶︎電子基板(マイコン/モータドライブ回路/通信インターフェイス回路/など)の設計を幅広く経験▶︎エンジニアに必要な知識はネットで調べてもイマイチ理解できないことが多く、私自身も苦労してきました。自分が苦労してきた内容を若手エンジニア向けに分かりやすく解説できればと考え、2022年に本ブログを解説▶︎エンジニアの現場で使える『実用的な』知識・ノウハウを配信していきます。インターフェースホーム検索トップサイドバ。