>
当時のプリンタ、マウス、モデムですか?彼らは巨大で重いコネクタと太いケーブルを持っていて、あなたのパソコンにねじ込まなければなりません。これらのデバイスは、UARTプロトコルを使用してコンピュータと通信しています。USBは古いケーブルやコネクタにほぼ完全に置き換えられていますが、UARTは決して古くはありません。現在多くのプロジェクトでUARTを使用しているGPSモジュール、BluetoothモジュールとRFIDカードリーダーモジュールなどがRaspberry Piに接続され、Arduinoまたはその他マイクロコントローラダイアログが表示されます。
汎用非同期送受信コンベヤ(Universal Asynchronous Receiver/Transmitter)は、一般にUARTと呼ばれています。シリアル通信とパラレル通信の間で転送されるデータを変換します。並列入力信号をシリアル出力信号に変換するチップとして、UARTは通常、他の通信インタフェースの接続に統合される。
それは像ではありませんSPII 2 Cのような通信プロトコルは、マイクロコントローラ内の独立した物理回路または独立したICである。
UARTの最も良い点は、2本の線だけを使ってデバイス間でデータを転送できることであり、UARTの背後にある原理はわかりやすい。
UART通信概要
UART通信では、2つのUARTが直接相互に通信している。送信UARTは、CPUなどの制御装置からのパラレルデータをシリアル形式に変換し、受信UARTにシリアル送信し、UARTを受信してシリアルデータを受信装置のパラレルデータに変換する。2つのUART間でデータを転送するには2本の線しか必要ありません。UARTを送信したTxピンからUARTを受信したRxピンにデータが流れる:
UARTは非同期的にデータを送信する。これは、送信UARTのビット出力を受信UARTのビットサンプリングに同期させるクロック信号がないことを意味する。送信UARTはクロック信号ではなく、転送中のパケットに開始ビットと停止ビットを追加する。これらのビットはパケットの開始と終了を定義するので、受信UARTはビットの読み取りを開始するタイミングを知っている。
UARTを受信して開始ビットを検出すると、それはボーレートの特定の周波数で入力ビットを読み出します。ボーレートは、毎秒ビット数(bps)で表されるデータ転送速度のメトリックです。2つのUARTはほぼ同じボーレートで実行する必要があります。UARTの送信と受信の間のボーレートは10%程度しか違わない。
2つのUARTは、同じパケット構造を送信および受信するように構成する必要もあります。
UARTがどのように働くか
UART伝送データは、CPU、メモリ、マイクロコントローラなどの他のデバイスを介してUARTにデータを送信するためのUARTバスに依存しています。データはデータバスから送信UARTへ並列形式で転送される。UARTを送信してデータバスから並列データを取得すると、開始ビット、パリティビット、停止ビットが追加され、パケットが作成されます。次に、パケットはTxピン上でビット毎にシリアル出力される。UART受信側は、Rxピン上でパケットをビット毎に読み出す。その後、UARTを受信してデータをパラレル形式に変換し、開始ビット、パリティビット、停止ビットを削除します。最後に、受信UARTは、受信側のデータバスにパケットを並列に送信する:
UARTで送信されたデータは、パケットとして編成される。各パケットには、UARTに応じて1つの開始ビット、5~9つのデータビット、オプションのパリティビット、および1または2つの停止ビットが含まれます。
スタートビット
UARTデータ伝送路がデータを伝送しない場合、通常は高電圧レベルに維持されます。データ伝送を開始するために、送信UARTは伝送路をハイレベルからローレベルに1クロック周期引き延ばす。受信UARTが高電圧から低電圧への変換を検出すると、データフレーム中のビットをボーレートの周波数で読み取り始めます。
データボックス
データボックスには、転送する実際のデータが含まれています。パリティビットを使用する場合は、5ビットから8ビットの長さにすることができます。パリティビットを使用しない場合、データフレームは9ビット長にすることができます。ほとんどの場合、データは最初に最小有効ビットで送信されます。
パリティビット
パリティは、数字の均一性または奇数を記述します。パリティビットは、UARTを受信して送信中に何らかのデータが変化しているかどうかを判断する方法である。電磁放射、不整合なボーレート、または長距離伝送の場合、データが変化する可能性があります。UART読み取りデータフレームを受信すると、値が1のビット数が計算され、総数が偶数か奇数かをチェックします。パリティビットが0(パリティ)の場合、データフレーム内の1ビットは合計で偶数になる必要があります。パリティビットが1(パリティ)の場合、データフレーム中の1ビットは合計で奇数になる必要があります。パリティビットがデータと一致すると、UARTは転送に誤りがないことを知っている。ただし、パリティビットが0の場合、1ビットは合計奇数でなければなりません。あるいは、パリティビットが1であり、1ビットが合計で偶数であるべきである場合、データフレーム中のビットは変更されている。
ストップビット
転送パケットの終了を通知するために、UART送信側はデータ転送線を低電圧から高電圧まで少なくとも2ビットの期間駆動する。
UART転送ステップ
1.データバスからUARTを送信してデータを並列に受信する:
2.UARTを送信データフレームに開始ビット、パリティビット、停止ビットを追加する:
3.パケット全体がUART送信からUART受信へシリアル送信される。UARTを受信して、事前に設定されたボーレートでデータ線をサンプリングする:
4.UART廃棄データフレーム中の開始ビット、パリティビット、停止ビットを受信する:
5.UARTを受信してシリアルデータをパラレルに変換し、受信側のデータバスに転送する:
UARTの長所と短所
完璧な通信プロトコルはありません。以下にいくつかの利点と欠点があり、プロジェクトのニーズに合っているかどうかを判断するのに役立ちます。
利点
2本の電線のみ使用
クロック信号は不要
パリティビットがあります
両方が設定されていれば、パケットの構造を変更することができる
完全なドキュメントがあり、広く使用されています
欠点
データフレームのサイズを最大9ビットに制限
複数のスレーブまたは複数のマスターシステムはサポートされていません
UARTあたりのボーレートは10%以内でなければならない