UARTプロジェクトの検証(2)仕様読み込み

1.1 UARTについて

UART (PL011) は、Advanced Microcontroller Bus Architecture (AMBA) 準拠のシステムオンチップ (SoC) ペリフェラルです。UART は、Advanced Peripheral Bus (APB) に接続された AMBA スレーブ モジュールです。UART には、赤外線データ アソシエーション (IrDA) シリアル赤外線 (SIR) プロトコル エンコーダ/デコーダ (ENDEC) が含まれています。

1.1.1 特徴

• プログラマブル FIFO は 1 バイトの深さまで無効にできます。

• プログラム可能なボーレートジェネレーター。これにより、基準クロックを (1x16) で (65535 x16) に分周し、内部 x16 クロックを生成することができます。

• 送信 FIFO、受信 FIFO、受信タイムアウト、モデム ステータス、およびエラー条件割り込みの独立したマスキング

• ダイレクト メモリ アクセス (DMA) をサポートします。

• 完全にプログラム可能なシリアル インターフェイスの機能:

- データは 5、6、7、または 8 ビットで構成可能

- 偶数、奇数、スティックまたはパリティなしビットの生成と検出

-1 または 2 ストップ ビットの生成

- ボーレート生成、DC 最大 UARTCLK_max_freq /16

1.1.2 プログラマブルパラメータ(プログラマブルパラメータ)

• 通信ボーレート、整数部および小数部

• データビット

・ストップビット数、1.5ストップビット

• パリティモード

• FIFO 有効 (深さ 16) または無効 (深さ 1)

• FIFO トリガレベルは 1 \8、1 \4、1 \2、3 \4、7 \8 から選択できます。

• 低電力モードでより短いビット持続時間を生成するための内部公称 1.8432MHz クロック周波数 (1.42 ~ 2.12MHz)

• ハードウェア フロー制御。

2.1 機能概要(機能概要)

UARTの実行:

• ペリフェラルから受信したデータのシリアルからパラレルへの変換 (rx 方向)

• 周辺機器に転送されるデータのパラレル/シリアル変換。(TX方向)

CPU は、AMBA APB インターフェイスを介してデータと制御/ステータス情報の読み取りと書き込みを行います。送信パスと受信パスは、送信モードと受信モードで最大 16 バイトを独立して保存できる内部 FIFO メモリによってバッファされます。

プログラム可能なボーレートジェネレーターが含まれており、

• このジェネレータは、UART 内部基準クロック入力 UARTCLK から共通の送信および受信内部クロックを生成します。

• 業界標準の 16C550 UART デバイスと同様の機能を提供します。

• UARTCLK 基準クロック周波数に応じて、最大 460.8Kbits\/s のボー レートをサポートします。

UART の動作とボー レート値は、ライン制御レジスタ (UARTLCR_UH) とボー レート分周レジスタ (UARTIBRD および UARTFBRD) によって制御されます。

2.2 機能フレーム図


• APB インターフェイス AMBA: APB インターフェイスは、ステータス/制御レジスタおよび送信/受信 FIFO メモリにアクセスするための読み取りおよび書き込みデコードを生成します。 

• レジスタ ブロック: レジスタ ブロックは、AMBA APB インターフェイスを通じて書き込まれたデータ、または読み取られたデータを保存します。

• ボー レート ジェネレーター: ボー レート ジェネレーターには、内部 x16 クロック、Baud16、および IrLPBaud16 信号を生成するためのフリーランニング カウンタが含まれています。Baud16 は、UART 送受信制御のタイミング情報を提供します。Baud16 は、1 UARTCLK クロック サイクルの幅とボー レートの 16 倍の周波数を持つパルス ストリームです。IrLPBaud16 は、低電力モードで IrDA エンコードされたトランスポート ビット ストリームのパルス幅を生成するためのタイミング情報を提供します。

• 送信 FIFO: 送信 FIFO は、幅 8 ビット、深さ 16 ビットの FIFO メモリ バッファです。APB インターフェイスを通じて書き込まれた CPU データは、送信ロジックによって読み出されるまで FIFO に保存されます。送信 FIFO を無効にして、シングルバイト保持レジスタのように動作させることができます。 

• 受信 FIFO: 受信 FIFO は、幅 12 ビット、深さ 16 ビットの FIFO メモリ バッファです。受信データと対応するエラー ビットは、APB インターフェイスを介して CPU によって読み出されるまで、受信ロジックによって受信 FIFO に保存されます。受信 FIFO を無効にして、シングルバイト保持レジスタとして機能させることができます。

• 送信ロジック: 送信ロジックは、送信 FIFO から読み取られたデータに対してパラレルからシリアルへの変換を実行します。制御レジスタ内のプログラムされた構成に従って、制御ロジックはスタート ビット、データ ビットの最下位ビット (LSB)、次にパリティ ビット、次にストップ ビットで始まるシリアル ビット ストリームを出力します。

• 受信ロジック: 有効なスタート パルスを検出した後、受信ロジックは受信したビット ストリームに対してシリアルからパラレルへの変換を実行します。オーバーラン、パリティ、フレーミングエラーチェック、改行検出も行われ、そのステータスが受信 FIFO に書き込まれたデータとともに表示されます。

• 割り込み生成ロジック: UART は、単一のマスカブルな高レベルのアクティブ割り込みを生成します。結合された割り込み出力も、個々の割り込み要求の OR 関数として生成されます。ペリフェラルごとに別のレベルのマスキングを提供するシステム割り込みコントローラと組み合わせた単一の割り込みを使用できます。これにより、割り込みソース制御レジスタ ビットの場所を常に認識しているモジュラー デバイス ドライバーを使用できるようになります。また、システム割り込みコントローラを使用して個別の割り込み要求を使用することもできます。これにより、各ペリフェラルの出力にマスキングが提供されます。このようにして、グローバル割り込みサービス ルーチンは、システム割り込みコントローラの 1 つのワイド レジスタからソースのセット全体を読み取ることができます。リアルタイム システムでは、ペリフェラル レジスタからの読み取り時間は、CPU クロック速度と比較して非常に重要です。

2.3 操作

インターフェースのリセット:

UART および IrDA SIR ENDEC は、グローバル リセット信号 PRESETn とブロック固有のリセット信号 nUARTRST によってリセットされます。外部リセット コントローラーは、PRESETn を使用して nUARTRST を非同期的にアサートし、UARTCLK に対して同期的にネゲートする必要があります。PRESETn は、システムオンチップ内の最も遅いブロックをリセットするのに十分な長さ LOW にアサートされ、その後再び HIGH にアサートされる必要があります。UART では、PRESETn が少なくとも 1 PCLK サイクルの間 Low にアサートされる必要があります。

クロック信号:

UARTCLK に選択した周波数は、必要なボー レート範囲に適合させる必要があります。

FUARTCLK (最小)>=16 (ボー レート係数、サンプリング時間) x baud_u レート (最大) (送信データ周波数)

FUARTCLK (最大) <= 16 (ボー レート係数、サンプリング時間) x 65535 (2^16-1) x baud_rate (最小)。

たとえば、ボーレート範囲が 110 ボー~460800 ボーの場合、UARTCLK 周波数は 7.3728MHz~115MHz の範囲内である必要があります。UARTCLK の周波数も、すべてのボー レートに必要な誤差制限内である必要があります。PCLK と UARTCLK のクロック周波数比も制限されています。UARTCLK の周波数は PCLK の周波数の 5/3 倍を超えてはなりません。

FUARTCLK<=5 \3 x FPCLK (apb バスクロック)

これにより、受信データを受信 FIFO に書き込むのに十分な時間が確保されます。

2.3.1 uart 固有の操作

制御データは UART ライン制御レジスタ UARTLCR_H に書き込まれます。このレジスタは内部で 29 ビット幅ですが、レジスタ位置 UARTLCR_H、UARTIBRD、および UARTFBRD への 3 回の書き込みにより、AMBA APB バスを介して外部からアクセスされます。

UARTLCR_H 定義:

• 転送パラメータ

• 単語の長さ

• バッファモード

• 送信ストップビット

• パリティモード

• 割り込み生成。

UARTIBRD と UARTFBRD は一緒にボーレート除数を定義します。

ボーレート設定:

ボーレート除数は、16 ビットの整数と 6 ビットの小数部で構成される 22 ビットの数値です。ボー レート ジェネレーターはこの値を使用してビット周期を決定します。分数ボー レート分周器を使用すると、すべての標準ボー レートを生成しながら、周波数 > 3.6864MHz の任意のクロックを UARTCLK として使用できます。16 ビット整数は、UARTIBRD レジスタを通じてロードされます。6 ビットの小数部は UARTFBRD レジスタにロードされます。ボーレート除数と UARTCLK の関係は次のとおりです。

ボーレート除数 = UARTCLK / (16xBaud Rate) = BRDI + BRDF、ここで BRDI は整数部分、BRDF は小数点で区切られた小数部分です。

小数m=integer(BRDF*2^n+0.5)

内部クロック イネーブル信号 Baud16 を生成します。これは、必要なボー レートの 16 倍の平均周波数を持つ UARTCLK 幅パルスのストリームです。次に、この信号を 16 で割って送信クロックを取得します。ボー レート除数の数値が小さいほどビット周期が短いことを示し、ボー レート除数の数値が大きいほどビット周期が長いことを示します。

データ送信または受信:

受信または送信されたデータは 2 つの 16 バイト FIFO に保存され、受信 FIFO にはステータス情報用に 1 文字あたり 4 ビットが追加されています。

送信の場合、データは送信 FIFO に書き込まれます。UART が有効な場合、UARTLCR_H で指定されたパラメータを使用してデータ フレームの送信が開始されます。データ転送は、送信 FIFO にデータがなくなるまで続行されます。データが送信 FIFO に書き込まれると (つまり、FIFO が空ではない)、BUSY 信号は High になり、データの送信中は High のままになります。BUSY は、送信 FIFO が空で、最後の文字 (ストップ ビットを含む) がシフト レジスタから転送された場合にのみネゲートされます。UART が有効でなくなっても、BUSY を HIGH にアサートできます。

データ サンプルごとに 3 つの読み取り値が取得され、過半数の値が保持されます。次の段落では、中央のサンプリング ポイントを定義し、その両側でサンプルを採取します。

レシーバがアイドル状態 (UARTRXD 連続 1、マーク状態) でデータ入力で Low レベルが検出されると (スタート ビットが受信された)、受信カウンタ (Baud16 によってイネーブルされたクロック) が動作を開始し、通常のデータでは、UART モードではこのカウンタの 8 サイクル目、SIR モードではカウンタの 4 サイクル目でサンプリングされ、より短いロジック 0 パルス (ビット周期の半分) が可能になります。

Baud16 の 8 サイクル目でも UARTRXD が Low の場合、スタート ビットは有効ですが、そうでない場合は、間違ったスタート ビットが検出され、無視されます。スタートビットが有効な場合、データ文字のプログラムされた長に従って、連続するデータビットが Baud16 の 16 サイクルごと (つまり 1 ビット周期後) にサンプリングされます。パリティ モードが有効な場合、パリティ ビットがチェックされます。最後に、UARTRXD が High の場合は有効なストップ ビットがアサートされ、それ以外の場合はフレーミング エラーが発生します。

 
———————————————
著作権に関する声明: この記事は CSDN ブロガー「whddddddddddd」のオリジナル記事であり、CC 4.0 BY-SA 著作権契約に従い、オリジナルのソースリンクとこれを添付してください。転載用ステートメント。
元のリンク: https://blog.csdn.net/whddddddddddd/article/details/125117044

おすすめ

転載: blog.csdn.net/Arvin_ing/article/details/127606531