[STM32注4] UARTタイミング解釈とハードウェアアプリケーション(つまり、ハードウェアUARTの実装、およびハードウェアUARTとソフトウェアUARTの使用/ハードウェアシリアルポートとソフトウェアシリアルポート/ USART)



Uart Timing Interpretation



1.UARTの概要

1、UART(ユニバーサル非同期レシーバトランスミッタ)バスは非同期シリアルポートであるため、一般に2つの同期シリアルポートI2CとSPIの構造よりもはるかに複雑です。このバスの双方向通信は、全二重送受信を実現できるユニバーサルシリアルデータバスです。一般的にによってボーレートジェネレータ(結果のボーレートは、送信ボーレートの16倍に等しくなります)、UARTレシーバーUART送信機ハードウェア上の2本のワイヤーで構成されています。1本は送信用です(TX)、受信用(処方箋)。



2.ピン接続(下図参照)



3. STM32F1でのUARTピンの割り当て(下図を参照)

4. UART通信プロセス(下図を参照)



5. UART通信に必要な構成パラメータ(スタートビット、データビット、パリティビット、ストップビット、ボーレート)の定義

(1)スタートビット:これは単一パケットの最初のビットであり、データ転送の開始を示すために使用されます。通信回線にデータ伝送がない場合は、論理「1」の状態になります。送信デバイスが文字データを送信するとき、最初に論理「0」信号を送信します。この論理ローレベルがスタートビットです。スタートビットは、通信回線を介して受信デバイスに送信されます。受信デバイスがこのロジックローレベルを検出すると、データ信号を受信する準備を開始します。

(二)データビット:通信の実際のデータビットを測定するために使用されます。コンピューターがパケットを送信するとき、実際のデータは8ビットではなく、標準値は5、7、および8ビットです。設定方法は、送信したい情報によって異なります。たとえば、標準のASCIIコードは0〜127(7ビット)です。拡張ASCIIコードは0〜255(8ビット)です。データが単純なテキスト(標準ASCIIコード)を使用している場合、各パケットは7ビットのデータを使用します。各パケットは、スタート/ストップビット、データビット、パリティビットを含むバイトを参照します。実際のデータビットは通信プロトコルの選択に依存するため、「パケット」という用語はあらゆる通信状況を指します。

(3)パリティビット:シリアル通信における簡単なエラー検出方法です。エラー検出方法には、偶数、奇数、高、低の4つがあります。もちろん、チェックディジットはありません。偶数パリティと奇数パリティの場合、シリアルポートは、送信データのロジック上位ビットが偶数または奇数になるように値を使用して、パリティビット(データビットの後のビット)を設定します。たとえば、データが011の場合、偶数パリティの場合、パリティビットは0であり、論理的に上位のビット数が偶数になるようにします。奇数パリティの場合、パリティビットは1であるため、3つの論理上位ビットがあります。上位ビットと下位ビットは実際にはデータをチェックしません。単にロジックハイまたはロジックローチェックを設定します。これにより、受信デバイスはビットのステータスを知ることができ、ノイズが通信に干渉するかどうか、またはデータの送受信が同期されていないかどうかを判断する機会があります。

(4)ストップビット:これは単一パケットの最後のビットであり、データ送信の終了を示すために使用されます。一般的な値は1、1.5、2桁です。データは伝送ラインで計時され、各デバイスには独自のクロックがあるため、通信中の2つのデバイス間でわずかな非同期が発生する可能性があります。したがって、ストップビットは送信の終了を示すだけでなく、コンピュータがクロック同期を修正する機会も提供します。ストップビットに適したビットが多いほど、さまざまなクロック同期の許容範囲は大きくなりますが、データ転送速度は遅くなります。

(5)ボーレート:通信速度の測定に使用します。 1秒あたりに送信されるビット数を表します。たとえば、300ボーは、1秒あたり300ビットが送信されることを意味します。クロックサイクルを指すときは、ボーレートを指します。たとえば、プロトコルが4800ボーレートを必要とする場合、クロックは4800Hzです。これは、データラインでのシリアル通信のサンプリングレートが4800Hzであることを意味します。電話回線のボーレートは通常、14400、28800、および36600です。ボーレートはこれらの値よりもはるかに大きくなる可能性がありますが、ボーレートは距離に反比例します。高いボーレートは、近くに配置された機器間の通信によく使用されます。典型的な例は、GPIB(汎用インターフェースバス)デバイスの通信です。 A

データ送信中のパラメータ適用の基準は次のとおりです。

第二に、UARTバスデータ送信の全体的なタイミング図

タイミングの解釈:

UARTは、最初に受信したパラレルデータを送信用のシリアルデータに変換します。メッセージフレームは、下位のスタートビットから始まり、7または8データビットが続きます(パリティ/ストップビットを含むデータワードからパリティ/ストップビットが削除された後の有効なデータビットの数。次の回路図を参照してください。理解のための図)、使用可能なパリティビットと1つまたは複数の上位ストップビット(通常、UARTは1、1.5、2、USARTには0.5も含まれます)。受信機はスタートビットを見つけると、データを送信する準備ができていることを認識し、送信機のクロック周波数との同期を試みます。パリティが選択されている場合、UARTはデータビットの後にパリティビットを追加します。パリティビットは、エラーチェックを支援するために使用できます。受信プロセス中に、UARTはメッセージフレームからスタートビットとエンドビットを削除し、着信バイトのパリティチェックを実行し、データバイトをシリアルからパラレルに変換します。
UARTは、送信と受信のステータスを示す追加の信号も生成します。たとえば、パリティエラーが発生した場合、UARTはパリティフラグを設定します。 A

注意:

データワードの長さ(ここでは有効なデータビット数+パリティビット(1)+ストップビット(ここでは例として1ビット)として定義)は、Mビットをプログラムすることによって8ビットまたは9ビットに選択できます。 CR1レジスタ、つまり、USART受信機/送信機はCR1のMビットに応じて8ビットまたは9ビットのデータワードを送受信できます。次の図を参照してください。

以下では、STM32FIのシリアルポート1を例として取り上げ、個別に初期化(パラメータ設定)し、割り込みサービス関数を使用し(割り込みを受信)、printf関数を使用します。コードの実装については、次の3つの図を参照してください。

1.シリアルポート1の初期化

2.シリアルポート1の割り込みサービス機能

3.シリアルポート1のprintf()関数

別の:

1、ハードウェアUARTとソフトウェアUARTの使用違いは次のとおりです(これは個人的な理解と要約です)。

(1)ハードウェアUARTの使用:つまり、UART通信機能を実装する場合、チップ内に統合されたUART関連のハードウェアコンポーネントと回路が直接使用されます。通信機能がコードによって実現されると、レジスタを直接操作するか、既製のIAP関数を直接呼び出します(レジスタの操作と適用が完了します)。これにより、開発者はチップの基礎となるレジスタ操作とUARTデバイスのハードウェア実装原理。

(2)ソフトウェアUARTの使用:つまり、UART通信機能を実装する場合、チップ内に統合されたUART関連のハードウェアコンポーネントと回路は直接使用されませんが、ボーレートはCPUの動作によるソフトウェアシミュレーションによって実現されます。チップ独自の無料IOポート制御および受信機/送信機機能により、タイミング機能を実現し、対応するデバイスとの通信目的を達成します。これにより、開発者は、IOアナログタイミング機能の使用とUARTのデータ出力および入力タイミングについての理解を深めることができます。デバイス。

二、ハードウェアシリアルポートとソフトウェアシリアルポート違いは次のとおりです。

(1)ハードウェアシリアルポート:一般的に、RS232またはその他のシリアル通信接続プロトコルを満たすシリアルポートです。これらのプロトコルは、通信プロトコルであるだけでなく、インターフェイスプロトコルでもあります。ハードウェアシリアルポートの特徴は、この種の機器を接続する場合、デバイスとホストコンピュータを接続するために特別なシリアルケーブルを使用する必要があることです。たとえば、R232インターフェースは12Vレベルの信号を使用して相互に信号を送信します。

(2)ソフトウェアシリアルポート:一般的に、通信プロトコルでシリアルポートを使用するデバイスですが、物理接続では、必ずしもシリアルポートのハードウェアプロトコルに準拠しているとは限りません。特徴は、柔軟なインターフェースを備えた既製の機器と通信できることです。たとえば、USB回線でネットワーク通信をシミュレートし、USB回線でRS232シリアルポートをシミュレートします。 GPRSなどの多くの既製モジュールの場合、インターフェイスはシリアルポートですが、このモジュールは5Vまたは3.3Vインターフェイスであると主張しているため、一般的なシリアルポートに直接接続することはできませんが、CPUに直接接続する必要があります。 TTL信号線、そしてCPUは、シリアル通信プロトコルを実行することにより、それらを簡単に接続できます。

3、USART(ユニバーサル同期/非同期受信機/送信機)は、全二重のユニバーサル同期/非同期シリアルトランシーバーモジュールです。インターフェースは非常に柔軟なシリアル通信デバイスです。 (UARTとは異なり、クロック駆動機能を備えているため、同期/非同期通信はオプションです)

USARTトランシーバモジュールは一般的に3つの部分に分かれています。クロックジェネレーター、データトランスミッターおよびレシーバー

制御レジスタはすべてのモジュールで共有されます。クロックジェネレータは、同期ロジック回路(同期スレーブモードの外部クロック入力によって駆動される)とボーレートジェネレータで構成されています。送信クロックピンXCKは、同期送信モードでのみ使用されます。トランスミッタ部分は、個別の書き込みバッファ(送信UDR)、シリアルシフトレジスタ、パリティジェネレータ、およびさまざまな構造を処理するためのコントロールで構成されています。論理回路構造。書き込みバッファを使用すると、マルチフレームデータを遅延なく継続的に送信できます。受信機はUSARTモジュールの最も複雑な部分であり、最も重要なのはクロックとデータ受信ユニットです。データ受信ユニットは、非同期データを受信するために使用されます。受信ユニットに加えて、受信機には、パリティチェッカー、制御ロジック、シフトレジスタ、および2ステージ受信バッファ(受信UDR)も含まれています。受信機は送信機と同じフレーム構造をサポートし、フレームエラー、データオーバーフロー、チェックエラーの検出もサポートします。

添付ファイル:この記事は、STM32との実際の戦闘後の私の要約に基づいています。ポインタを与えることを歓迎します、ありがとう。