18 ユニバーサル同期非同期受信送信機(USART)
この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。
このモジュールには、3つのUSART(USART1/2/3)と5つのUART(UART4/5/6/7/8)が搭載されています。
注:CH32V20x_D6およびCH32F20x_D6の場合、シリアルポート4はユニバーサル同期非同期送受信(USART4)です。
このモジュールには、3つのUSART(USART1/2/3)と5つのUART(UART4/5/6/7/8)が搭載されています。
注:CH32V20x_D6およびCH32F20x_D6の場合、シリアルポート4はユニバーサル同期非同期送受信(USART4)です。
18.1 主な特徴
・全二重または半二重の同期または非同期通信
・NRZデータ形式
・分数ボーレートジェネレータ(最大9Mbps)
・プログラム可能なデータワード長
・設定可能なストップビット
・LIN、IrDAエンコーダ、スマートカードをサポート
・DMAをサポート
・複数の割り込みソース
・NRZデータ形式
・分数ボーレートジェネレータ(最大9Mbps)
・プログラム可能なデータワード長
・設定可能なストップビット
・LIN、IrDAエンコーダ、スマートカードをサポート
・DMAをサポート
・複数の割り込みソース
図 18-1 USART のブロック図
18.2 概要
TE(送信イネーブルビット)がセットされると、送信機シフトレジスタ内のデータがTXピンに出力され、クロックがCKピンに出力されます。
送信中は、最下位ビットが最初にシフトアウトされます。
各データフレームはローレベルのスタートビットで始まり、 次に送信機はM(ワード長)ビットの設定に応じて8ビットまたは9ビットのデータを送信し、最後に設定可能な数のストップビットを送信します。
パリティチェックビットがある場合、データワードの最後のビットがチェックビットになります。
TEがセットされた後、アイドルフレームが送信されます。
アイドルフレームは、ストップビットを含む10ビットまたは11ビットのハイレベルです。
ブレークフレームは、10ビットまたは11ビットのローレベルで、その後にストップビットが続きます。
送信中は、最下位ビットが最初にシフトアウトされます。
各データフレームはローレベルのスタートビットで始まり、 次に送信機はM(ワード長)ビットの設定に応じて8ビットまたは9ビットのデータを送信し、最後に設定可能な数のストップビットを送信します。
パリティチェックビットがある場合、データワードの最後のビットがチェックビットになります。
TEがセットされた後、アイドルフレームが送信されます。
アイドルフレームは、ストップビットを含む10ビットまたは11ビットのハイレベルです。
ブレークフレームは、10ビットまたは11ビットのローレベルで、その後にストップビットが続きます。
18.3 ボーレートジェネレータ
トランシーバーのボーレート = FCLK/(16*USARTDIV)
FCLKはAPBxのクロック(PCLK1またはPCLK2)です。
PCLK2はUSART1モジュールに使用され、その他のモジュールにはPCLK1が使用されます。
USARTDIVの値は、USART_BRRのDIV_MとDIV_Fの2つのドメインに基づいて決定されます。
具体的な計算式は次のとおりです。
USARTDIV = DIV_M+(DIV_F/16)
ボーレートジェネレータによって生成されるビットレートは、ユーザーが要求するボーレートと完全に一致しない場合があり、誤差が生じる可能性があることに注意してください。
できるだけ近い値にするだけでなく、偏差を減らす方法として、APBxクロックを上げる方法もあります。
例えば、ボーレートを115200bpsに設定すると、USARTDIVの値は39.0625に設定され、最高周波数で115200bpsのボーレートが得られますが、 921600bpsのボーレートが必要な場合、計算されたUSARTDIVは4.88になりますが、USART_BRRに実際に入力される最も近い値は4.875しか得られません。
実際のボーレートは923076bpsで、誤差は0.16%です。
送信機から送信されたシリアルポートの波形が受信機に送信される際、受信機と送信機の間でボーレートに一定の誤差が生じます。
この誤差は主に3つの要因から発生します。
受信機と送信機の実際のボーレートが一致していない、受信機と送信機のクロックに誤差がある、回路内で波形が変化する、などです。
周辺モジュールの受信部には、受信に関して一定の許容誤差があります。
上記3つの側面で発生する偏差の合計がモジュールの許容誤差限度未満であれば、その偏差は受信および送信に影響を与えません。
モジュールの許容誤差限度は、小数ボーレートおよびMビット(データフィールドのワード長)の使用の有無によって影響を受けます。
小数ボーレートの使用および9ビットデータフィールド長の使用により許容誤差限度は減少しますが、3%未満にはなりません。
PCLK2はUSART1モジュールに使用され、その他のモジュールにはPCLK1が使用されます。
USARTDIVの値は、USART_BRRのDIV_MとDIV_Fの2つのドメインに基づいて決定されます。
具体的な計算式は次のとおりです。
USARTDIV = DIV_M+(DIV_F/16)
ボーレートジェネレータによって生成されるビットレートは、ユーザーが要求するボーレートと完全に一致しない場合があり、誤差が生じる可能性があることに注意してください。
できるだけ近い値にするだけでなく、偏差を減らす方法として、APBxクロックを上げる方法もあります。
例えば、ボーレートを115200bpsに設定すると、USARTDIVの値は39.0625に設定され、最高周波数で115200bpsのボーレートが得られますが、 921600bpsのボーレートが必要な場合、計算されたUSARTDIVは4.88になりますが、USART_BRRに実際に入力される最も近い値は4.875しか得られません。
実際のボーレートは923076bpsで、誤差は0.16%です。
送信機から送信されたシリアルポートの波形が受信機に送信される際、受信機と送信機の間でボーレートに一定の誤差が生じます。
この誤差は主に3つの要因から発生します。
受信機と送信機の実際のボーレートが一致していない、受信機と送信機のクロックに誤差がある、回路内で波形が変化する、などです。
周辺モジュールの受信部には、受信に関して一定の許容誤差があります。
上記3つの側面で発生する偏差の合計がモジュールの許容誤差限度未満であれば、その偏差は受信および送信に影響を与えません。
モジュールの許容誤差限度は、小数ボーレートおよびMビット(データフィールドのワード長)の使用の有無によって影響を受けます。
小数ボーレートの使用および9ビットデータフィールド長の使用により許容誤差限度は減少しますが、3%未満にはなりません。
18.4 同期モード
図18-2 USARTクロックタイミングの例(M=0)

図18-3 データサンプルホールド時間
同期モードは、USARTモジュール使用時にシステムがクロック信号を出力できるようにします。
図18-3 データサンプルホールド時間
同期モードが有効化され、外部にデータを送信すると、CKピンは同時にクロックを外部に出力します。
同期モードを有効にするには、制御レジスタ2(R16_USARTx_CTLR2)のCLKENビットを設定しますが、LINモード、 スマートカードモード、赤外線モード、および半二重モードを同時にオフにする必要があります。
つまり、SCEN、HDSEL、およびIRENビットがリセット状態であることを確認する必要があります。
これらの3つのビットは、制御レジスタ3(R16_USARTx_CTLR3)にあります。
同期モードの主なポイントは、クロックの出力制御です。以下の点に注意してください。
(1) USARTモジュールの同期モードはマスターモードでのみ動作します。つまり、CKピンはクロックのみを出力し、入力は受信しません。
(2) クロック信号は、TXピンがデータを出力する場合にのみ出力されます。
(3) LBCLビットは、最後のデータビットが送信される際にクロックを出力するかどうかを決定します。
CPOLビットはクロックの極性を決定し、CPHAビットはクロックの位相位置を決定します。
これらの3つのビットは、制御レジスタ2(R16_USARTx_CTLR2)にあります。
TEとREが有効になっていない場合、これらの3つのビットを設定する必要があります。
具体的な違いは図18-2に示されています。 (4) 同期モードでは、レシーバはクロック出力時にのみサンプリングを行い、スレーブは図18-3に示すように、一定の信号セットアップ時間とホールド時間を維持する必要があります。
18.5 単線半二重モード
半二重モードでは、1本のピン(TXピンのみ)を使用して送受信することができ、TXピンとRXピンはチップ内部で接続されています。
半二重モードを有効にするには、制御レジスタ3(R16_USARTx_CTLR3)のHDSELビットを設定しますが、 同時にLINモード、スマートカードモード、赤外線モード、同期モードを無効にする必要があります。
つまり、SCEN、CLKEN、IRENビットがリセット状態であることを確認する必要があります。
これらの3つのビットは、制御レジスタ2と制御レジスタ3(R16_USARTx_CTLR2とR16_USARTx_CTLR3)にあります。
半二重モードに設定した後、TX IOポートをフローティング入力またはオープンドレイン出力ハイモードに設定する必要があります。
TEビットが設定されている場合、データがデータレジスタに書き込まれている限り、データは送信されます。
複数のデバイスが単一のバスを使用して半二重モードで送受信を行う場合、バス競合が発生する可能性があることに特に注意する必要があります。
ユーザーはソフトウェアによってこれを回避する必要があります。
半二重モードを有効にするには、制御レジスタ3(R16_USARTx_CTLR3)のHDSELビットを設定しますが、 同時にLINモード、スマートカードモード、赤外線モード、同期モードを無効にする必要があります。
つまり、SCEN、CLKEN、IRENビットがリセット状態であることを確認する必要があります。
これらの3つのビットは、制御レジスタ2と制御レジスタ3(R16_USARTx_CTLR2とR16_USARTx_CTLR3)にあります。
半二重モードに設定した後、TX IOポートをフローティング入力またはオープンドレイン出力ハイモードに設定する必要があります。
TEビットが設定されている場合、データがデータレジスタに書き込まれている限り、データは送信されます。
複数のデバイスが単一のバスを使用して半二重モードで送受信を行う場合、バス競合が発生する可能性があることに特に注意する必要があります。
ユーザーはソフトウェアによってこれを回避する必要があります。
18.6 スマートカード
図18-4(NO)パリティチェックエラー

スマートカードモードは、スマートカードコントローラにアクセスするための ISO7816-3 プロトコルをサポートします。
スマートカードモードを有効にするには、制御レジスタ3 (R16_USARTx_CTLR3) の SCEN ビットをセットしますが、 同時に LIN モード、半二重モード、赤外線モードを無効にする必要があります。
つまり、LINEN、HDSEL、IREN ビットがリセット状態であること、そして CLKEN ビットをオンにしてクロックを出力できることが必要です。
これらの 3 つのビットは、制御レジスタ2 と制御レジスタ3 (R16_USARTx_CTLR2 と R16_USARTx_CTLR3) にあります。
スマートカードモードをサポートするには、USART を 8 データビット + 1 チェックビットに設定する必要があります。
ストップビットは、送信と受信の両方で 1.5 ビットに設定することをお勧めします。
スマートカードモードは単線半二重プロトコルで、TXラインをデータ通信に使用し、オープンドレイン出力とプルアップ構成にする必要があります。
受信側がデータフレームを受信し、パリティチェックエラーを検出すると、ストップビットでNACK信号を送信します。
つまり、ストップビット中にTXサイクルを1つ減らします。
送信側がNACK信号を検出すると、フレームエラーが生成され、アプリケーションはそれに応じて再送信できます。
図17-4は、正常な条件下でのTXピンの波形と、パリティチェックエラーが発生した場合の波形を示しています。
USARTのTCフラグ(送信完了フラグ)は、GT(保護時間)クロックの生成を遅延させる可能性があり、受信側は自身でスタートビットとして設定したNACK信号を認識しません。
スマートカードモードでは、CKピンが有効になった後の出力波形は通信とは関係ありません。
スマートカードにクロックを提供するだけです。
その値はAPBクロックであり、次に5ビットで設定可能なクロック周波数分周値です(周波数分周値はPSCの2倍で、最高周波数分周値は62です)。
18.7 赤外線
USARTモジュールは、物理層通信用のIrDA赤外線トランシーバの制御をサポートします。
IrDAを使用するには、LINEN、STOP、CLKEN、SCEN、およびHDSELビットをクリアする必要があります。
USARTモジュールとSIR物理層(赤外線トランシーバ)の間ではNRZ(非ゼロ復帰)符号化が使用され、最大サポート速度は115200bpsです。
IrDAは半二重プロトコルです。
UASRTがSIR物理層にデータを送信した場合、IrDAデコーダは新しく送信された赤外線信号を無視します。
USARTがSIRからデータを受信する場合、SIRはUSART信号を受け入れません。
USARTからSIRに送信されるレベルロジックと、SIRからUSARTに送信されるレベルロジックは異なります。
SIR受信ロジックでは、「1」が高レベル、「0」が低レベルを表します。ただし、SIR送信ロジックでは、「0」が高レベル、「1」が低レベルを表します。
IrDAを使用するには、LINEN、STOP、CLKEN、SCEN、およびHDSELビットをクリアする必要があります。
USARTモジュールとSIR物理層(赤外線トランシーバ)の間ではNRZ(非ゼロ復帰)符号化が使用され、最大サポート速度は115200bpsです。
IrDAは半二重プロトコルです。
UASRTがSIR物理層にデータを送信した場合、IrDAデコーダは新しく送信された赤外線信号を無視します。
USARTがSIRからデータを受信する場合、SIRはUSART信号を受け入れません。
USARTからSIRに送信されるレベルロジックと、SIRからUSARTに送信されるレベルロジックは異なります。
SIR受信ロジックでは、「1」が高レベル、「0」が低レベルを表します。ただし、SIR送信ロジックでは、「0」が高レベル、「1」が低レベルを表します。
18.8 DMA
USARTモジュールはDMAをサポートしており、DMAを使用して高速連続受信と送信を実現できます。
DMAが有効でTXEビットが設定されている場合、DMAは設定されたメモリ空間から送信バッファにデータを書き込みます。
DMAを受信に使用する場合、RXNEビットがセットされるたびに、DMAは受信バッファ内のデータを特定のメモリ空間に転送します。
DMAが有効でTXEビットが設定されている場合、DMAは設定されたメモリ空間から送信バッファにデータを書き込みます。
DMAを受信に使用する場合、RXNEビットがセットされるたびに、DMAは受信バッファ内のデータを特定のメモリ空間に転送します。
18.9 割り込み
下表の複数の割り込み ソースをサポートします。
| 割込ソース | 略語 | Enable bit | 備考 |
| 送信データレジスタが空 | TXE | TXEIE | Transmit data register empty |
| 送信許可 | CTS | CTSIE | Transmission allowed |
| 送信完了 | TC | TCIE | Transmission complete |
| 受信データ準備完了 | TXNE | TXNEIE | Received data ready |
| オーバーランエラーを検出 | ORE | data overrun error | |
| アイドルライン | IDLE | IDLEIE | Idle line |
| パリティエラー | PE | PEIE | parity check error |
| ブレークフラグ | LBD | LBDIE | Break flag |
| ノイズ | NE | EIE | noise |
| マルチバッファ通信オーバーランエラー | ORT | Overrun error in multi-buffer communication | |
| マルチバッファ通信フレーミングエラー | FE | Framing error (FE) in multi-buffer communication |
18.10 レジスタの説明
| Name | Access address USARTy 0x400***** | Description | Reset value | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| y=1 | y=2 | y=3 | y=4 | y=5 | y=6 | y=7 | y=8 | |||
| R32_USARTy_STATR | 13800 | 04400 | 04800 | 04C00 | 05000 | 01800 | 01C00 | 02000 | status register | 0x000000C0 |
| R32_USARTy_DATAR | 13804 | 04404 | 04804 | 04C04 | 05004 | 01804 | 01C04 | 02004 | data register | 0x000000XX |
| R32_USARTy_BRR | 13808 | 04408 | 04808 | 04C08 | 05008 | 01808 | 01C08 | 02008 | baud rate register | 0x00000000 |
| R32_USARTy_CTLR1 | 1380C | 0440C | 0480C | 04C0C | 0500C | 0180C | 01C0C | 0200C | control register1 | 0x00000000 |
| R32_USARTy_CTLR2 | 13810 | 04410 | 04810 | 04C10 | 05010 | 01810 | 01C10 | 02010 | control register2 | 0x00000000 |
| R32_USARTy_CTLR3 | 13814 | 04414 | 04814 | 04C14 | 05014 | 01814 | 01C14 | 02014 | control register3 | 0x00000000 |
| R32_USARTy_GPR | 13818 | 04418 | 04818 | 04C18 | 05018 | 01818 | 01C18 | 02018 | guard time and prescaler register | 0x00000000 |
18.10.1 USARTステータスレジスタ(R32_USARTy_STATR)(y=1/2/3/4/5/6/7/8)
USARTy_STATR = USART STATus Register | Access base address 0x400***00 Offset address: 0x00
■レジスター内容
CTSEビットがセットされている場合、nCTS出力ステータスが変化します。
このビットはソフトウェアによってクリアされます。
CTSIEビットがセットされている場合、割り込みが生成されます。
LIN切断が検出されると、このビットはハードウェアによってセットされます。
ソフトウェアによってクリアされます。
LBDIEビットがセットされている場合、割り込みが生成されます。
TDRレジスタのデータがハードウェアによってシフトレジスタに転送されると、このビットがハードウェアによってセットされます。
TXEIEビットがセットされている場合、割り込みが発生し、データレジスタにデータが書き込まれ、このビットはリセットされます。
データを含むフレームが送信され、TXEビットがセットされている場合、ハードウェアはこのビットをセットします。
TCIEビットがセットされている場合は、対応する割り込みが生成されます。
ソフトウェアはこのビットを読み取り、データレジスタに書き込んでこのビットをクリアします。
また、直接0を書き込んでこのビットをクリアすることもできます。
シフトレジスタのデータがデータレジスタに転送されると、このビットはハードウェアによってセットされます。
RXNEIEビットがセットされている場合は、対応する割り込みが発生します。
このビットは、データレジスタへの書き込み操作によってクリアできます。
このビットは、直接0を書き込むことでもクリアできます。
アイドルラインが検出されると、このビットはハードウェアによってセットされます。
IDLEIEビットがセットされている場合は、対応する割り込みが生成されます。
このビットは、ステータスレジスタを読み出してからデータレジスタを読み出すことでクリアできます。
注: このビットは、RXNEがセットされるまで再セットされません。
受信シフトレジスタにデータレジスタに転送する必要があるデータがあるが、データレジスタの受信フィールドにまだ読み出されていないデータがある場合、このビットがセットされます。
RXNEIEビットがセットされている場合、対応する割り込みが生成されます。
注:オーバーランエラーが発生した場合、データレジスタの値は失われませんが、シフトレジスタの値は上書きされます。
EIEビットがセットされている場合、マルチバッファ通信モードではOREフラグビットによって割り込みが生成されます。
ノイズエラーフラグが検出されると、ハードウェアによってセットされます。
このビットは、ステータスレジスタを読み出してからデータレジスタを読み出すことでリセットできます。
注:このビットは割り込みを生成しません。
EIEビットがセットされている場合、マルチバッファ通信モードではFEフラグビットが割り込みを生成します。
同期エラー、過度のノイズ、または切断が検出されると、このビットがハードウェアによってセットされます。
このビットは、このビットを読み出した後、データレジスタを読み出すことでリセットできます。
注:このビットは割り込みを生成しません。
EIEビットがセットされている場合、マルチバッファ通信モードではFEフラグビットによって割り込みが生成されます。
受信モードでパリティエラーが発生すると、このビットはハードウェアによってセットされます。
このビットは、このビットを読み出した後、データレジスタを読み出すことでリセットできます。
このビットをクリアする前に、ソフトウェアはRXNEフラグビットがセットされるのを待つ必要があります。
PEIEビットが以前にセットされている場合、このビットがセットされたときに対応する割り込みが生成されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | CTS | LBD | TXE | TC | RXNE | IDLE | ORE | NE | FE | PE | |||||||||||||||||||||
| RO | RWO | RWO | RO | RWO | RWO | RO | RO | RO | RO | RO | |||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CTS
CTSステータス変化フラグ(CTS status change flag)CTSEビットがセットされている場合、nCTS出力ステータスが変化します。
このビットはソフトウェアによってクリアされます。
CTSIEビットがセットされている場合、割り込みが生成されます。
| 1 | nCTSステータスラインが変化しました。 |
| 0 | nCTSステータスラインに変化はありません。 |
LBD
LIN切断検出フラグ(LIN break detection flag)LIN切断が検出されると、このビットはハードウェアによってセットされます。
ソフトウェアによってクリアされます。
LBDIEビットがセットされている場合、割り込みが生成されます。
| 1 | LIN切断を検出。 |
| 0 | LIN切断を検出していない。 |
TXE
送信データレジスタ空フラグ(Transmission data register empty flag)TDRレジスタのデータがハードウェアによってシフトレジスタに転送されると、このビットがハードウェアによってセットされます。
TXEIEビットがセットされている場合、割り込みが発生し、データレジスタにデータが書き込まれ、このビットはリセットされます。
| 1 | データはシフトレジスタに転送されています。 |
| 0 | データはシフトレジスタに転送されていません。 |
TC
送信完了フラグ(Transmission complete flag)データを含むフレームが送信され、TXEビットがセットされている場合、ハードウェアはこのビットをセットします。
TCIEビットがセットされている場合は、対応する割り込みが生成されます。
ソフトウェアはこのビットを読み取り、データレジスタに書き込んでこのビットをクリアします。
また、直接0を書き込んでこのビットをクリアすることもできます。
| 1 | 送信完了。 |
| 0 | 送信未完了。 |
RXNE
リードデータレジスタが空でないことを示すフラグ(Read data register not empty flag)シフトレジスタのデータがデータレジスタに転送されると、このビットはハードウェアによってセットされます。
RXNEIEビットがセットされている場合は、対応する割り込みが発生します。
このビットは、データレジスタへの書き込み操作によってクリアできます。
このビットは、直接0を書き込むことでもクリアできます。
| 1 | データが受信されており、読み出し可能です。 |
| 0 | データは受信されていません。 |
IDLE
アイドルラインフラグ(Idle line flag)アイドルラインが検出されると、このビットはハードウェアによってセットされます。
IDLEIEビットがセットされている場合は、対応する割り込みが生成されます。
このビットは、ステータスレジスタを読み出してからデータレジスタを読み出すことでクリアできます。
| 1 | バスは現在アイドル状態です。 |
| 0 | アイドルバスは検出されていません。 |
ORE
オーバーランエラーフラグ(Overrun error flag)受信シフトレジスタにデータレジスタに転送する必要があるデータがあるが、データレジスタの受信フィールドにまだ読み出されていないデータがある場合、このビットがセットされます。
RXNEIEビットがセットされている場合、対応する割り込みが生成されます。
| 1 | オーバーランエラーが発生しました。 |
| 0 | オーバーランエラーは発生していません。 |
EIEビットがセットされている場合、マルチバッファ通信モードではOREフラグビットによって割り込みが生成されます。
NE
ノイズエラーフラグ(Noise error flag)ノイズエラーフラグが検出されると、ハードウェアによってセットされます。
このビットは、ステータスレジスタを読み出してからデータレジスタを読み出すことでリセットできます。
| 1 | ノイズ検出。 |
| 0 | ノイズ未検出。 |
EIEビットがセットされている場合、マルチバッファ通信モードではFEフラグビットが割り込みを生成します。
FE
フレームエラーフラグ(Frame error flag)同期エラー、過度のノイズ、または切断が検出されると、このビットがハードウェアによってセットされます。
このビットは、このビットを読み出した後、データレジスタを読み出すことでリセットできます。
| 1 | フレームエラーが検出されました。 |
| 0 | フレームエラーは検出されていません。 |
EIEビットがセットされている場合、マルチバッファ通信モードではFEフラグビットによって割り込みが生成されます。
PE
パリティエラーフラグ(Parity error flag)受信モードでパリティエラーが発生すると、このビットはハードウェアによってセットされます。
このビットは、このビットを読み出した後、データレジスタを読み出すことでリセットできます。
このビットをクリアする前に、ソフトウェアはRXNEフラグビットがセットされるのを待つ必要があります。
PEIEビットが以前にセットされている場合、このビットがセットされたときに対応する割り込みが生成されます。
| 1 | パリティチェックエラー発生。 |
| 0 | パリティチェックエラーなし。 |
18.10.2 USARTデータレジスタ(USARTy_DATAR)(y=1/2/3/4/5/6/7/8)
USARTy_DATAR = USART data register | Access base address 0x400***00 Offset address: 0x04
■レジスター内容
このレジスタは実際には受信データレジスタ(RDR)と送信データレジスタ(TDR)の2つのレジスタで構成されています。
DRの読み書き操作は、受信データレジスタ(RDR)の読み出しと送信データレジスタ(TDR)への書き込みから始まります。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | DR | ||||||||||||||||||||||||||||||
| RO | RW | ||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X |
DR
データレジスタ(Data register)このレジスタは実際には受信データレジスタ(RDR)と送信データレジスタ(TDR)の2つのレジスタで構成されています。
DRの読み書き操作は、受信データレジスタ(RDR)の読み出しと送信データレジスタ(TDR)への書き込みから始まります。
18.10.3 USART ボーレート レジスタ (USARTy_BRR) (y=1/2/3/4/5/6/7/8)
USARTy_BRR = USART baud rate register | Access base address 0x400***00 Offset address: 0x08
■レジスター内容
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | DIV_M | DIV_F | |||||||||||||||||||||||||||||
| RO | RW | RW | |||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DIV_M
これらの12ビットはUSART分周器の仮数部を定義します。(These 12 bits define the mantissa of the USART divider)DIV_F
これらの4ビットはUSART分周器の分数を定義します。(These 4 bits define the fraction of the USART divider)18.10.4 USART制御レジスタ1 (USARTy_CTLR1) (y=1/2/3/4/5/6/7/8)
USARTy_CTLR1= | Access base address 0x400***00 Offset address: 0x0C
■レジスター内容
このビットが設定されると、現在のバイト送信が完了した後、USART の周波数分周器と出力は両方とも動作を停止します。
このビットはUSARTのウェイクアップ方法を決定します。
受信側ではデータのパリティが実行されます。
送信側ではチェックビットが挿入されます。
このビットがセットされると、パリティ制御の有効化は現在のバイトの送信が完了した後にのみ有効になります。
このビットが設定されると、パリティ制御の有効化は現在のバイト送信が完了した後にのみ有効になります。
このビットがセットされている場合、パリティチェックエラー割り込みの発生が許可されます。
このビットが設定されている場合、送信バッファ空割り込みの生成が許可されます。
このビットがセットされている場合、送信完了割り込みの発生が許可されます。
このビットが設定されている場合、受信バッファ非空割り込みが生成されるようになります。
このビットが設定されている場合、アイドル ライン割り込みの生成が許可されます。
このビットが設定されている場合、送信機は有効化されます。
このビットが設定されると、受信機が有効になり、受信機はRXピン上のスタートビットの検出を開始します。
このビットは、USARTがミュートモードかどうかを決定します。
注1: RWUビットがセットされる前に、USARTはまずデータバイトを受信する必要があります。
そうしないと、ミュートモード時にアイドルバスによってウェイクアップできません。 注2: アドレスフラグからのウェイクアップに設定されている場合、RXNEがセットされている間は、RWUビットをソフトウェアで変更することはできません。
このビットは、フレームブレーク文字を送信する場合にセットされます。
ブレークフレームのストップビットは、ハードウェアによってセットされます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | UE | M | WAKE | PCE | PS | PEIE | TXEIE | TCIE | RXNEIE | IDLEIE | TE | RE | RWU | SBK | |||||||||||||||||
| RO | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | |||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
UE
USART 有効ビット(USART enable bit)このビットが設定されると、現在のバイト送信が完了した後、USART の周波数分周器と出力は両方とも動作を停止します。
| 1 | USARTを使用する。 |
| 0 | USARTを停止する。 |
M
ワード長ビット(Word length bit)| 1 | 9データビット。 |
| 0 | 8データビット。 |
WAKE
ウェイクアップビット(Wake-up bit)このビットはUSARTのウェイクアップ方法を決定します。
| 1 | アドレスフラグ。 |
| 0 | アイドルライン。 |
PCE
パリティ制御の有効化(Parity control enable)受信側ではデータのパリティが実行されます。
送信側ではチェックビットが挿入されます。
このビットがセットされると、パリティ制御の有効化は現在のバイトの送信が完了した後にのみ有効になります。
PS
パリティ選択(Parity selection)| 1 | 奇数パリティ |
| 0 | 偶数パリティ |
PEIE
パリティチェック割り込み許可ビット(Parity check interrupt enable bit)このビットがセットされている場合、パリティチェックエラー割り込みの発生が許可されます。
TXEIE
送信バッファ空割り込み有効(Transmit buffer empty interrupt enable)このビットが設定されている場合、送信バッファ空割り込みの生成が許可されます。
TCIE
送信完了割り込み許可(Transmission completion interrupt enable)このビットがセットされている場合、送信完了割り込みの発生が許可されます。
RXNEIE
受信バッファ非空割り込み有効(Receive buffer non-empty interrupt enable)このビットが設定されている場合、受信バッファ非空割り込みが生成されるようになります。
IDLEIE
アイドル ライン割り込みの有効化(Idle line interrupt enable)このビットが設定されている場合、アイドル ライン割り込みの生成が許可されます。
TE
送信機の有効化(Transmitter enable)このビットが設定されている場合、送信機は有効化されます。
RE
受信機の有効化(Receiver enable)このビットが設定されると、受信機が有効になり、受信機はRXピン上のスタートビットの検出を開始します。
RWU
レシーバのウェイクアップ(Receiver wake-up)このビットは、USARTがミュートモードかどうかを決定します。
| 1 | レシーバはミュートモードです。 |
| 0 | レシーバはアクティブモードです。 |
そうしないと、ミュートモード時にアイドルバスによってウェイクアップできません。 注2: アドレスフラグからのウェイクアップに設定されている場合、RXNEがセットされている間は、RWUビットをソフトウェアで変更することはできません。
SBK
ブレーク文字送信制御ビット(Send break character control bit)このビットは、フレームブレーク文字を送信する場合にセットされます。
ブレークフレームのストップビットは、ハードウェアによってセットされます。
| 1 | ブレーク文字を送信する。 |
| 0 | ブレーク文字を送信しない。 |
18.10.5 USART制御レジスタ2 (USARTy_CTLR1) (y=1/2/3/4/5/6/7/8)
USARTy_CTLR2 = USART control register2 | Access base address 0x400***00 Offset address: 0x10
■レジスター内容
このビットがセットされると、LINモードが有効になります。
LINモードでは、SBKビットを使用してLIN同期切断シンボルを送信し、LIN同期切断シンボルを検出できます。
これらのビットはストップビットを設定するために使用されます。
このビットはCKピンをイネーブルするために使用されます。
同期モードでは、このビットを使用してSLCKピンのクロック出力の極性を選択し、CPHAと連携して必要なクロック/データサンプリング関係を生成します。
注:送信を有効にした後、このビットを変更することはできません。
同期モードでは、このビットを使用してSLCKピンのクロック出力の位相位置を選択し、CPOLビットと組み合わせて必要なクロック/データサンプリング関係を生成できます。
注:送信を有効にした後は、このビットを変更できません。
同期モードにおいて、CKピンから送信された最後のデータバイトに対応するクロックパルスを出力するかどうかを制御します。
注:送信を有効にした後は、このビットを変更できません。
このビットは、LBDによって発生する割り込みをイネーブルにできます。
11ビットまたは10ビットのブレークキャラクタ検出を選択します。
デバイスのUSARTノードアドレスを設定するために使用されます。
マルチプロセッサ通信でミュートモード中にデータが使用される場合、アドレスフラグは特定のUSARTデバイスをウェイクアップするために使用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | LINEN | STOP | CLKEN | CPOL | CPHA | LBCL | Reserved | LBDIE | LBDL | Reserved | ADD | ||||||||||||||||||||
| RO | RW | RW | RW | RW | RW | RW | RO | RW | RW | RO | RW | ||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
LINEN
LINモード有効ビット(LIN mode enable bit)このビットがセットされると、LINモードが有効になります。
LINモードでは、SBKビットを使用してLIN同期切断シンボルを送信し、LIN同期切断シンボルを検出できます。
STOP
ストップビット設定(Stop bit setting)これらのビットはストップビットを設定するために使用されます。
| 00 | 1ストップビット |
| 01 | 0.5ストップビット |
| 10 | 2ストップビット |
| 11 | 1.5ストップビット |
CLKEN
クロックイネーブル(Clock enable)このビットはCKピンをイネーブルするために使用されます。
| 1 | イネーブル |
| 0 | ディセーブル |
CPOL
クロック極性設定ビット(Clock polarity setting bit)同期モードでは、このビットを使用してSLCKピンのクロック出力の極性を選択し、CPHAと連携して必要なクロック/データサンプリング関係を生成します。
| 1 | バスがアイドル状態のとき、CKピンはHighレベルを維持します。 |
| 0 | バスがアイドル状態のとき、CKピンはLowレベルを維持します。 |
CPHA
クロック位相位置設定ビット(Clock phase position setting bit)同期モードでは、このビットを使用してSLCKピンのクロック出力の位相位置を選択し、CPOLビットと組み合わせて必要なクロック/データサンプリング関係を生成できます。
| 1 | データキャプチャはクロックの2番目のエッジで実行されます。 |
| 0 | データキャプチャはクロックの1番目のエッジで実行されます。 |
LBCL
最終ビットクロックパルス制御ビット(Last bit clock pulse control bit)同期モードにおいて、CKピンから送信された最後のデータバイトに対応するクロックパルスを出力するかどうかを制御します。
| 1 | データの最終ビットのクロックパルスはCKから出力されません。 |
| 0 | データの最終ビットのクロックパルスはCKから出力されます。 |
LBDIE
LINブレーク文字検出割り込みイネーブル(LIN break character detection interrupt enable)このビットは、LBDによって発生する割り込みをイネーブルにできます。
LBDL
LINブレークキャラクタ検出長(LIN break character detection length)11ビットまたは10ビットのブレークキャラクタ検出を選択します。
| 1 | 11ビットブレーク検出。 |
| 0 | 10ビットブレーク検出。 |
ADD
USARTノードのアドレス(Address of the USART node)デバイスのUSARTノードアドレスを設定するために使用されます。
マルチプロセッサ通信でミュートモード中にデータが使用される場合、アドレスフラグは特定のUSARTデバイスをウェイクアップするために使用されます。
18.10.6 USART制御レジスタ3 (USARTy_CTLR3) (y=1/2/3/4/5/6/7/8)
USARTy_CTLR3 = USART control register3 | Access base address 0x400***00 Offset address: 0x14
■レジスター内容
このビットが設定されている場合、CTSがセットされたときに割り込みが生成されます。
このビットが設定されている場合、CTS フロー制御が有効になります。
このビットが設定されている場合、RTS フロー制御が有効になります。
このビットが設定されると、DMA送信モードが有効になります。
このビットが設定されると、受信用のDMAモードが有効になります。
このビットが設定されている場合、スマートカード モードが有効になります。
このビットが設定されている場合、チェックエラーが発生したときにNACKが送信されます。
このビットが設定されている場合、半二重モードが選択されます。
このビットが設定されると、低電力モードが選択されます。
このビットが設定されると、赤外線モードが有効になります。
このビットが設定され、DMARも設定されている場合に、FE、ORE、またはNEビットが設定されていれば割り込みが生成されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | CTSIE | CTSE | RTSE | DMAT | DMAR | SCEN | NACK | HDSEL | IRLP | IREN | EIE | ||||||||||||||||||||
| RO | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | ||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CTSIE
CTSIE割り込み有効ビット(CTSIE interrupt enable bit)このビットが設定されている場合、CTSがセットされたときに割り込みが生成されます。
CTSE
CTS 有効ビット(CTS enable bit)このビットが設定されている場合、CTS フロー制御が有効になります。
RTSE
RTS 有効ビット(RTS enable bit)このビットが設定されている場合、RTS フロー制御が有効になります。
DMAT
DMA送信有効ビット(DMA transmission enable bit)このビットが設定されると、DMA送信モードが有効になります。
DMAR
DMA受信有効ビット(DMA reception enable bit)このビットが設定されると、受信用のDMAモードが有効になります。
SCEN
スマートカード モード有効ビット(Smartcard mode enable bit)このビットが設定されている場合、スマートカード モードが有効になります。
NACK
スマートカードNACK有効ビット(Smart card NACK enable bit)このビットが設定されている場合、チェックエラーが発生したときにNACKが送信されます。
HDSEL
半二重モード選択ビット(Half-duplex mode selection bit)このビットが設定されている場合、半二重モードが選択されます。
IRLP
赤外線低電力選択ビット(Infrared low power selection bit)このビットが設定されると、低電力モードが選択されます。
IREN
赤外線有効ビット(Infrared enable bit)このビットが設定されると、赤外線モードが有効になります。
EIE
エラー有効割り込みビット(Error enable interrupt bit)このビットが設定され、DMARも設定されている場合に、FE、ORE、またはNEビットが設定されていれば割り込みが生成されます。
18.10.7 USARTガードタイムおよび分周レジスタ(USARTy_GPR)(y=1/2/3/4/5/6/7/8)
USARTy_GPR = USART Guard time and Prescaler Register | Access base address 0x400***00 Offset address: 0x18
■レジスター内容
これらのビットは、ボーレートクロック単位でガードタイムを指定します。
スマートカードモードでは、ガードタイムが経過すると送信完了フラグがセットされます。
赤外線低消費電力モードでは、ソースクロックはこの値で分周されます(8ビットすべてが有効)。
値0は予約を意味します。 赤外線通常モードでは、これらのビットは1にのみ設定できます。
スマートカードモードでは、値(下位5ビットが有効)を2倍にしてソースクロック周波数の分周係数を算出し、スマートカードにクロックを供給します。
値0は予約を意味します。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | GT | PSC | |||||||||||||||||||||||||||||
| RO | RW | RW | |||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
GT
ガードタイムドメイン(Guard time domain)これらのビットは、ボーレートクロック単位でガードタイムを指定します。
スマートカードモードでは、ガードタイムが経過すると送信完了フラグがセットされます。
PSC
プリスケーラ領域(Prescaler domain)赤外線低消費電力モードでは、ソースクロックはこの値で分周されます(8ビットすべてが有効)。
値0は予約を意味します。 赤外線通常モードでは、これらのビットは1にのみ設定できます。
スマートカードモードでは、値(下位5ビットが有効)を2倍にしてソースクロック周波数の分周係数を算出し、スマートカードにクロックを供給します。
値0は予約を意味します。
