13. UART

13. 非同期送受信UART

13.1 UART概要

CH559チップは、2つの全二重非同期シリアルポートを備えています。UART0とUART1です。UART0は、標準的なMCS51シリアルポートです。データの送受信は、物理的に分離された送信/受信レジスタへのSBUFアクセスによって実現されます。SBUFに書き込まれたデータは送信レジスタにロードされ、SBUFへの読み出し操作は受信バッファレジスタに対応します。

UART1は、以下の機能を持つ拡張非同期シリアルポートです:

  1. 16C550の非同期式シリアルポートと互換性があり、拡張されています。
  2. 5、6、7、8データビットと1、2ストップビットをサポート。
  3. 奇数、偶数、パリティなし、ブランク0、フラグ1などの検証方法に対応。
  4. プログラム可能な通信ボーレート、115200bpsをサポートし、最大3Mbpsの通信ボーレートを実現。
  5. 独立した送受信バッファと8バイトのFIFO FIFOバッファを内蔵し、4つのFIFOトリガレベルをサポート。
  6. MODEMモデムの信号CTS、DSR、RI、DCD、DTR、RTSをサポートし、外部からRS232レベルに変換することができます。
  7. TL16C550Cと互換性のあるハードウェアフローコントロール信号CTSとRTSの自動ハンドシェイクと自動伝送レートコントロールをサポートしています。
  8. シリアルフレームエラー検出、ブレイクライン間隔検出に対応。
  9. SIR赤外線コーデックを内蔵し、2400bps~115200bpsのボーレートでのIrDA赤外線通信に対応。
  10. 全二重、半二重のシリアル通信に対応し、RS485を切り替えるためのステータス端子を備えています。
  11. 半二重差動トランシーバーを内蔵し、RS485バスと同様のシンプルな長距離複合機通信を直接サポートします。
  12. 本機をスレーブとして使用する際のアドレスのプリセットをサポートし、複数台通信時にバス上のデータパケットを自動的に一致させるために使用します。

13.2 UARTレジスタ

表13.2.1 UART関連レジスタ一覧

名前アドレス備考リセット値
SBUF 99h UART0データレジスタ xxh
SCON 98h UART0制御レジスタ 00h
SER1_DLL 9AhUART1ボーレートディバイザーラッチ下位バイト xxh
SER1_RBR 9AhUART1データ受信バッファレジスタ(読み取り専用) xxh
SER1_THR 9AhUART1データ送信ホールドレジスタ(書き込み専用) xxh
SER1_FIFO 9AhUART1データFIFOリード/ライトレジスタ xxh
SER1_DIV 97h UART1プリスケーラ除算器レジスタ xxh
SER1_ADDR 97hUART1バスアドレスプリセットレジスタFFh
SER1_MSR 96hUART1 MODEMステータスレジスタ(読み取り専用) F0h
SER1_LSR 95hUART1ラインステータスレジスタ(読み取り専用) 60h
SER1_MCR 94hUART1 MODEM制御レジスタ00h
SER1_LCR 93hUART1ライン制御レジスタ00h
SER1_IIR 92hUART1割り込み識別レジスタ(読み取り専用)01h
SER1_FCR 92hUART1 FIFO制御レジスタ(書き込み専用)00h
SER1_DLM 91hUART1ボーレートディバイザラッチ上位バイト80h
SER1_IER 91hUART1割り込み許可レジスタ00h

13.2.1 UART0レジスタ概要

UART0制御レジスタ(SCON):

ビット名前アクセス備考リセット値
7SM0RWUART0作業モード選択ビット0。
0: 8ビットデータの非同期通信が選択。
1: 9ビットデータの非同期通信が選択。
0
6SM1RWUART0作業モード選択ビット1。
0: 固定ボーレートを設定。
1: T1またはT2によって生成される可変ボーレートを設定。
0
5SM2RW

UART0マルチマシン通信制御ビットです。

モード2および3でデータを受信する際、SM2=1のとき、RB8が0ならば、RIが1に設定されていないので、受信は無効です。RB8が1の場合、RIが1に設定されていれば、受信は有効です。

SM2=0のとき、RB8が0または1の場合、データ受信時にRIが設定され、受信は有効となります。モード1では、SM2=1の場合、有効なストップビットを受信したときのみ、受信が有効になります。モード0では、SM2ビットを0に設定する必要があります

0
4RENRWUART0 許可受信制御ビットです。
0: 受信無効。
1: 受信可能。
0
3TB8RW送信データの9ビット目です。モード2および3では、TB8は送信データの9ビット目を書き込むために使用され、パリティビットになることがあります。マルチマシン通信では、ホストがアドレスバイトを送信するかどうかを示すために使用されます。 データバイト、TB8=0はデータ、TB8=1はアドレスです。0
2RB8RW受信データの9ビット目、モード2と3では、RB8を使って受信データの9ビット目を格納します。モード1では、SM2=0の場合、RB8を使用して受信したストップビットを格納します。モード0では、RB8を使用せず。0
1TIRW送信割り込みフラグビット。データバイトが送信された後にハードウェアによって設定され、ソフトウェアによってクリアされる必要があります。0
0RIRW受信割り込みフラグビット。データバイトを受信した後にハードウェアによって設定され、ソフトウェアによってクリアされる必要があります。0

表13.2.1.1 UART0作業モード選択

SM0SM1備考
0 0モード0。シフトレジスタモード、固定ボーレートはFsys / 12
0 1モード1。8ビットの非同期通信モード。可変ボーレート、タイマーT1またはT2で生成されます。
1 0モード2。9ビットの非同期通信モード。ボーレートは、Fsys / 128(SMOD = 0)またはFsys / 32(SMOD = 1)です。
1 1モード3。9ビット非同期通信。可変ボーレート。タイマーT1またはT2で生成。

モード1および3では、RCLK = 0およびTCLK = 0の場合、UART0のボーレートはタイマーT1によって生成されます。T1はモード2のオートリロード8ビットタイマーモードに設定し、bT1_CTとbT1_GATEは共に0でなければならず、以下のタイプのクロック状況に分けられます。

表13.2.1.2 T1で生成されるUART0ボーレートの計算式

bTMR_CLKbT1_CLKSMOD備考
1 1 0 TH1 = 256-Fsys/32/ボーレート
1 1 1 TH1 = 256-Fsys/16/ボーレート
0 1 0 TH1 = 256-Fsys/4/32/ボーレート
0 1 1 TH1 = 256-Fsys/4/16/ボーレート
X 0 0 TH1 = 256-Fsys/12/32/ボーレート
X 0 1 TH1 = 256-Fsys/12/16/ボーレート

モード1および3では、RCLK = 1またはTCLK = 1の場合、UART0のボーレートはタイマーT2によって生成されます。T2は16ビットの自動再搬送レート生成モードに設定し、C_T2とCP_RL2はともに0でなければならず、以下のタイプのクロック状況に分けられます。

表13.2.1.3 T2で生成されるUART0ボーレートの計算式

bTMR_CLKbT2_CLK備考
1 1 RCAP2 = 65536-Fsys/16/ボーレート
0 1 RCAP2 = 65536-Fsys/2/16/ボーレート
X 0 RCAP2 = 65536-Fsys/4/16/ボーレート

UART0データレジスタ(SBUF):

ビット名前アクセス備考リセット値
[7:0]SBUFRWUART0のデータレジスタで、物理的に分離した2つのレジスタの送信と受信を含む。SBUFへのデータ書き込みは、送信データレジスタに対応します。SBUFからのデータの読み出しは、受信データレジスタに対応します。xxh

13.2.2 UART1関連レジスタ

UART1データFIFOリード&ライトレジスタSER1_FIFOは、データ受信バッファレジスタSER1_RBRとデータ送信ホールディングレジスタSER1_THRの2つの物理的に独立したレジスタを含む。

データ受信バッファレジスタ(SER1_RBR), bLCR_DLAB = 0の場合:

ビット名前アクセス備考リセット値
[7:0]SER1_RBRROシリアルポート受信バッファレジスタ。SER1_LSRのbLSR_DATA_RDYビットが1であれば、このレジスタから受信データを読み出すことができる。bFCR_FIFO_ENが1の場合、シリアルポートのシフトレジスタから受信したデータは、まず受信FIFOに格納されてから、このレジスタのリードに渡される。xxh

データ送信用ホールドレジスタ(SER1_THR), bLCR_DLAB = 0の場合:

ビット名前アクセス備考リセット値
[7:0]SER1_THRWO送信FIFOを含むシリアルポートの送信ホールドレジスタは、送信するデータの書き込みに使用されます。bFCR_FIFO_ENが1の場合、書き込まれたデータは、まず送信FIFOに格納され、その後送信シフトレジスタを介して1つずつ出力される。xxh

割り込み許可レジスタ(SER1_IER), bLCR_DLAB = 0の場合:

ビット名前アクセス備考リセット値
7 bIER_RESET RWシリアルポートソフトウェアリセット制御ビット。
1: シリアルポートがリセットされます。
このビットは、ソフトウェアクリアなしで自動的にクリアすることができます。
0
6 bIER_EN_MODEM_O RWUART1モデム信号出力許可ビットです。
1: MODEM信号RTS/DTRの出力が有効になります。
0: 出力は無効となります。
0
5 bIER_PIN_MOD1 RWUART1ピンモード選択上位 0
4 bIER_PIN_MOD0 RWUART1ピンモード選択下位 0
3 bIER_MODEM_CHG RWモデム入力状態変化割り込み許可ビット。
1: モデム入力状態変化割り込みを有効にする。
0: 無効にする。
0
2 bIER_LINE_STAT RW受信ラインステータス割り込み許可ビット。
1: 受信ラインステータス割り込みが有効になります。
0: 無効になります。
0
1 bIER_THR_EMPTY RW送信保持レジスタ空割り込み許可ビット。
1: 送信保持レジスタ空割り込みが有効になります。
0: 無効になります。
0
0 bIER_RECV_RDY RW受信データ割り込み許可ビット。
1: 受信データ完了割り込みとそれに続く受信データのタイムアウト割り込みの発生が有効になります。
0: 無効になります。
0

UART1のピンモードは、bIER_PIN_MOD1とbIER_PIN_MOD0の両方と、bUH1_DISABLE、bXBUS_CS_OE、bXBUS_AL_OE、bALE_CLK_ENを組み合わせて、さまざまな構成を選択できます。これらのうち,最後の4つはRS485ENにまとめることができます。:

RS485EN = bUH1_DISABLE & ~ ( bXBUS_CS_OE & ~ bXBUS_AL_OE | bALE_CLK_EN )

RS485ENbIER_PIN_MOD1bIER_PIN_MOD0備考
x 0 0RXD1: P4.0/RXD1_
TXD1: 無効
0 1 0RXD1: P2.6
TXD1: P2.7
0 0 1RXD1: P4.0/RXD1_
TXD1: P4.4/TXD1_
0 1 1RXD1: P2.6
TXD1: P2.7
TNOW: P2.5
1 1 0RXD1: iRS485 XAと共有
TXD1: iRS485のXBと共有
1 0 1RXD1: iRS485 XAと共有
TXD1: iRS485のXBと共有
TNOW: P4.4
1 1 1RXD1: iRS485 XAと共有
TXD1: iRS485のXBと共有
TNOW: P2.5

上の表の最後の3つの構成は、iRS485の半二重通信モードです。この時、RS485EN=1、RXD1とTXD1はiRS485の差動ピンXAとXBを併用しています。内蔵の半二重差動トランシーバーを介して、それは直接バスのシンプルなRS485長距離複数のマシンの通信をサポートしています。

iRS485の半二重通信モードでは、以下のパラメータを設定する必要があります:

  1. SER1_MCRのbMCR_HALFを1に設定し、半二重トランシーバモードとする。
  2. UHUB1_CTRLのbUH1_DISABLEを1に設定することで,HP / HM端子を無効にすることができる。

割り込み識別レジスタ(SER1_IIR):

ビット名前アクセス備考リセット値
[7:6]MASK_U1_IIR_IDR0FIFO許可フラグ、11はFIFOが有効であることを意味する00b
[5:4]reservedR0予約00b
[3:0]MASK_U1_IIR_INTR0UART1割り込みステータスフラグ0001b
0bIIR_NO_INTR0UART1は割り込みフラグで、割り込みがないと1になります。0は割込みあり1

UART1の割り込み状態は、bIIR_INT_FLAG3、bIIR_INT_FLAG2、bIIR_INT_FLAG1、bIIR_INT_FLAG0の4ビットで構成されています。MASK_U1_IIR_INTは、UART1のシリアルポート割り込みフラグとして使用されます。具体的な割り込みの内容は次の表のとおりです。

名前アドレス割り込み種類割り込みソース割り込みクリア方法
U1_INT_SLV_ADDR0Ehバスアドレス一致受信1データはシリアルバスアドレスで、アドレスはプリセット値またはブロードキャストアドレスと一致するSER1_IIRの読み出しまたはマルチマシンモードの無効化
U1_INT_LINE_STAT06h受信ラインの状態bLSR_OVER_ERRまたはbLSR_PAR_ERRまたはbLSR_FRAME_ERRまたはbLSR_BREAK_ERRSER1_LSR読み出し
U1_INT_RECV_RDY04h受信データあり受信したバイト数がFIFOのトリガーポイントに達した場合SER1_RBR読み出し
U1_INT_RECV_TOUT0Ch受信データタイムアウトデータを受信したが、次のデータを4データバイト以上受信していない場合SER1_RBR読み出し
U1_INT_THR_EMPTY02hSER1_THRレジスタが空送信ホールディングレジスタが空になり、bIER_THR_EMPTYが0から1に変化して、割り込みが再び有効になる。SER1_IIR読み出しかSER1_THR書き込み
U1_INT_MODEM_CHG00hMODEMの入力変化△CTSまたは△DSRまたは△RIまたは△DCDSER1_MSR読み出し
U1_INT_NO_INTER01h割り込み無し割り込みがない場合

FIFO制御レジスタ(SER1_FCR):

ビット名前アクセス備考リセット値
7bFCR_FIFO_TRIG1W0受信FIFO割り込みとハードウェアフローコントロールのトリガーポイントがHIGHに設定される0
6bFCR_FIFO_TRIG0W0受信FIFO割り込みとハードウェアフローコントロールのトリガーポイントがLOWに設定される0
[5:3]reservedR0予約000b
2bFCR_T_FIFO_CLRW0送信FIFOデータクリアイ許可ビット。このビットが1の場合、送信FIFO内のデータ(送信中のデータを除く)がクリアされます。このビットは、ソフトウェアでクリアしなくても自動的にクリアできます。0
1bFCR_R_FIFO_CLRW0受信FIFOデータクリア許可ビット。このビットが1の場合、受信FIFO内のデータ(受信中のデータを除く)がクリアされます。このビットは、ソフトウェアでクリアしなくても自動的にクリアできます。0
0bFCR_FIFO_ENW0FIFO許可ビット。
1: FIFOが有効になります。
0: FIFOは無効になります。
FIFOをディセーブルにすると、16C450互換モードとなり、1バイトの深さしかないFIFOと同等になります。FIFOを有効にすることをお勧めします。
0

bFCR_FIFO_TRIG1とbFCR_FIFO_TRIG0は、MASK_U1_FIFO_TRIGを構成し、受信FIFOの割り込みポイントとハードウェアフローコントロールのトリガーポイントを設定するために使用されます。
11: 7バイトに対応しています。つまり、7バイトフルに受信するとデータ受信可能な割り込みが発生します。=1の場合、RTS端子のレベルは自動的に無効になります。
10: 4バイトに対応しています。
01: 2バイトに対応しています。
00: 1バイトに対応しています。

ライン制御レジスタ(SER1_LCR):

ビット名前アクセス備考リセット値
7bLCR_DLABRWボーレートディバイザラッチアクセス許可ビット。
0: レジスタSER1_RBR, SER1_THR, SER1_IER, SER1_ADRへのアクセスが有効となる。
1: レジスタSER1_DLL, SER1_DLM, SER1_DIVへのアクセスが可能となる。
0
6bLCR_BREAK_ENRW強制BREAKライン間隔許可ビット。
0: BREAK出力は発生しません。
1: 強制的にBREAK出力を行います。
0
5bLCR_PAR_MOD1RWハイパリティモード0
4bLCR_PAR_MOD0RWローパリティモード0
3bLCR_PAR_ENRWパリティ許可ビット。
0: パリティビットはありません。
1: 送信時にパリティチェックビットを生成し、受信時にパリティチェックビットを受信することができます。
0
2bLCR_STOP_BITRWストップビットフォーマット設定ビット。
0: ストップビットが1つあります。
1: ストップビットが2つあります。
0
1bLCR_WORD_SZ1RWデータワード長セット上位0
0bLCR_WORD_SZ0RWデータワード長セット下位0

bLCR_PAR_MOD1とbLCR_PAR_MOD0の組み合わせにより、bLCR_PAR_ENが1の時のパリティビットのフォーマットを設定する。
00: 奇数パリティ。
01: 偶数パリティ。
10: フラグビット(MARKを1に設定)。
11: ブランクビット(SPACEを0にクリア)。

bLCR_WORD_SZ1とbLCR_WORD_SZ0の組み合わせで、パリティなしの1つのデータのワード長を設定します。
00: 5データビット。
01: 6データビット。
10: 7データビット。
11: 8データビット。

MODEM制御レジスタ(SER1_MCR):

ビット名前アクセス備考リセット値
7bMCR_HALFRW半二重送受信モード許可ビット。
0: 半二重送受信モードが無効となり、全二重をサポートします。
1: 自動半二重送受信モードになります。送信が優先されます。送信中は受信が中断されます。
0
6bMCR_TNOWRWRTSピン機能選択ビット。
0: 標準的なRTS出力となります。
1: TNOW出力となります。出力の状態は、送信中です。
このビットは、RS485の半二重モードの制御に使用できます。
0
5bMCR_AUTO_FLOWRWCTSとRTSのハードウェア自動フロー制御許可ビット。
0: ハードウェア自動フロー制御が無効になります。
1: ハードウェア自動フロー制御が有効になります。
ハードウェアフロー制御が有効になった後、シリアルポートは、CTSピン入力がアクティブLOWの場合のみ次のデータの送信を継続し、それ以外の場合はシリアルポートの送信を中断します。ハードウェアフロー制御が有効になった後、bMCR_RTSが1の場合、受信FIFOが空になると、シリアルポートは自動的に低レベルのRTSピンを作動させます。受信したバイト数がFIFOのトリガーポイントに達すると、シリアルポートは自動的にRTSピンを無効にし、受信FIFOが空になると再びRTSピンを有効にすることができるようになります。ハードウェアフロー制御を有効にすると、CTSAの入力状態の変化はMODEMの状態割り込みを生成しません。自身のCTSピンを相手のRTSピンに接続し、自身のRTSピンを相手のCTSピンに送ることで、ハードウェアによる自動レートコントロールを実現することができます。
0
4bMCR_LOOPRW内部ループのテストモード許可ビットです。
0: 内部ループテストは無効となります。
1: 内部ループテストが有効になります。
内部ループテストモードでは、シリアルポートのすべての外部出力ピンが非アクティブになります。TXD1は内部的にRXD1に、RTSは内部的にCTSに、DTRは内部的にDSRに、OUT1は内部的にRIに、OUT2は内部的にDCDに戻ります。
0
3bMCR_OUT2RWシリアルポート割り込み要求出力許可ビット。
0: シリアルポート割り込み要求出力は無効になります。
1: シリアルポート割り込み要求出力が有効になります。
0
2bMCR_OUT1RWユーザー定義のMODEM制御ビット。実際の出力端子は接続されていません。内部ループテスト、または汎用データビットとして使用します。0
1bMCR_RTSRWRTSピン出力制御ビット。
0: RTSピン出力は無効(ハイレベル)となります。
1: RTSピン出力は有効(ローレベル)になります。
0
0bMCR_DTRRWDTRピン出力制御ビット。
0: DTRピン出力が無効(ハイレベル)となります。
1: DTRピン出力は有効(ローレベル)となります。
0

ラインステータスレジスタ(SER1_LSR):

ビット名前アクセス備考リセット値
7bLSR_ERR_R_FIFOR0受信FIFOのエラーフラグ。
1: 受信FIFOにbLSR_PAR_ERR、bLSR_FRAME_ERR、bLSR_BREAK_ERRのいずれかのエラーが少なくとも1つのあることを示します。
0
6bLSR_T_ALL_EMPR0送信関連レジスタフルエンプティフラグビット。
1: 送信ホールディングレジスタSER1_THR、FIFO、送信シフトレジスタが空であることを意味します。
1
5bLSR_T_FIFO_EMPR01: 送信ホールディングレジスタSER1_THRおよびFIFOが空であることを示します。1
4bLSR_BREAK_ERRR01: BREAKラインのインターバル状態が検出されたことを示します。0
3bLSR_FRAME_ERRR01: 受信FIFOの現在のデータがフレーミングされており、有効なストップビットがないことを示します。0
2bLSR_PAR_ERRR01: 受信FIFO内の現在のデータのパリティエラーを示します。0
1bLSR_OVER_ERRR01: 受信FIFOバッファのオーバーフローを示します。0
0bLSR_DATA_RDYR01: 受信FIFOに受信データがあることを示します。
FIFO内のすべてのデータを読み出した後、このビットは自動的に0にクリアされます。
0

MODEMステータスレジスタ(SER1_MSR):

ビット名前アクセス備考リセット値
7bMSR_DCDR0DCD端子のビット反転。
1: DCD端子が有効(アクティブLOW)であることを示します。
1
6bMSR_RIR0RI端子のビット反転。
1: RIピンが有効(アクティブLOW)であることを示す。
1
5bMSR_DSRR0DSR端子のビット反転。
1: DSR端子が有効(アクティLOW)であることを示します。
1
4bMSR_CTSR0CTSピンのビット反転。
1: CTSピンが有効(アクティブLOW)であることを示します。
1
3bMSR_DCD_CHGR01: DCDピンの入力状態が変化したことを示します。0
2bMSR_RI_CHGR01: RIピンの入力状態が変化したことを示します。0
1bMSR_DSR_CHGR01: DSRピンの入力状態が変化したことを示します。0
0bMSR_CTS_CHGR01: CTSピンの入力状態が変化したことを示します。0

UART1バスアドレスプリセットレジスタ(SER1_ADDR), bLCR_DLAB = 0の時:

ビット名前アクセス備考リセット値
[7:0]SER1_ADDRRW複数のマシンの通信における自動比較のためのプリセットバスアドレスFFh

SER1_ADDRは、本機がスレーブとして使用される際のアドレスをプリセットする。複数台通信時に受信アドレスを自動的に比較し、アドレスが一致した場合やブロードキャストアドレス0FFHを受信した場合に割り込みを発生させ、同時に後続のデータパケットの受信を許可するために使用する。アドレスが一致しないうちは、データを受信しないでください。データの送信を開始した後、またはSER1_ADDRレジスタを書き換えた後は、次にアドレスが再び一致するかブロードキャストアドレスを受信するまでデータの受信を停止する。

SER1_ADDRが0FFHまたはbLCR_PAR_EN=0の場合、バスアドレスの自動比較は無効となる。

SER1_ADDRが0FFHではなく、bLCR_PAR_EN = 1の場合、バスアドレスの自動比較が有効となり、以下のパラメータを設定する必要がある。bLCR_WORD_SZ1とbLCR_WORD_SZ0は共に1で、8データビットを選択する。BLCR_PAR_MOD1は常に1です。アドレスバイトがMARKの場合 データバイトのビット9が0の場合は、bLCR_PAR_MOD0を1に設定してください。アドレスバイトがSPACEの場合(データバイトのビット9が1の場合)は、bLCR_PAR_MOD0を0にして、データバイトに応じて選択します。

UART1ボーレートディバイザラッチ(SER1_DLM, SER1_DLL), bLCR_DLAB = 1の時:

ビット名前アクセス備考リセット値
[7:0]SER1_DLLRWSER1_DLLは下位バイト、SER1_DLMは上位バイトである。この2つは16ビットの除算器を形成し、16ビットカウンタで構成されるシリアルボーレートジェネレータに使用される。これらのレジスタはbLCR_DLABが1の時のみ読み書き可能である。
除算器 = Fsys * 2 / SER1_DIV / 16 / ボーレート
xxh
[7:0]SER1_DLMRW80h

UART1プリスケーラディバイザレジスタ(SER1_DIV), bLCR_DLAB = 1の時:

ビット名前アクセス備考リセット値
[7:0]SER1_DIVRWシステムのメインクロックFsysを乗算した後、シリアルポートのボーレートジェネレータの内部基準クロックを生成するために前置分周するのに使用されます。このレジスタは、bLCR_DLABが1のときのみ読み書きできる。xxh

13.3 UARTアプリケーション

UART0アプリケーション:

  1. UART0のボーレートジェネレータを選択します。タイマーT1またはT2から選択し、対応するカウンタを設定します。
  2. タイマをスタート
  3. SCONのSM0、SM1、SM2を設定して、シリアルポート0の動作モードを選択します。RENを1に設定して、UART0の受信を有効にします。
  4. シリアルポートの割り込みを設定したり、RI、TIの割り込み状態を問い合わせたりすることができます。
  5. 読み書き可能なSBUFは、シリアルデータの送受信を実装しており、シリアルポートの受信信号の許容ボーレート誤差は2%以下です。

UART1アプリケーション:

  1. SER1_LCRのbLCR_DLABビットを1に設定する。UART1 プリスケーラレジスタSER1_DIVを書き込む。ボーレートに応じてボーレート除算器を計算し、除算器の上位バイトと下位バイトをそれぞれSER1_DLMとSER1_DLLに書き込む。
    除算器 = Fsys/8/STER1_DIV/ボーレート
  2. SER1_LCRを設定し、適切なシリアルデータフォーマット、データバイト、パリティモードを選択します。
  3. オプション設定SER1_IER、UART1割り込みステータストリガを選択。
  4. 割り込みモードを使用する場合、割り込み出力を有効にするにはSER1_MCRのbMCR_OUT2ビットを1に設定する必要があります。そうでない場合は、割り込みステータスビットをアクティブにクエリーする必要があります。
  5. SER1_FIFOを読み書きすることでシリアルデータの送受信を実現し、シリアルポート受信信号の許容ボーレート誤差は2%以下です。