42
© 2013 Microchip Technology Inc. DS61107G_JP - p. 21-1 UART 21 セクション 21. UART ハイライト 本セクションには以下の主要項目を記載しています。 21.1 はじめに ...................................................................................................................... 21-2 21.2 制御レジスタ .............................................................................................................. 21-4 21.3 UART baud レート ジェネレータ ............................................................................. 21-12 21.4 UART のコンフィグレーション ................................................................................ 21-16 21.5 UART トランスミッタ .............................................................................................. 21-17 21.6 データビットの検出 .................................................................................................. 21-20 21.7 UART レシーバ ......................................................................................................... 21-21 21.8 UART による 9 ビット通信 ....................................................................................... 21-24 21.9 ブレーク シーケンス ................................................................................................. 21-26 21.10 初期化 ....................................................................................................................... 21-26 21.11 その他の UART 機能 ................................................................................................. 21-27 21.12 UxCTS および UxRTS 制御ピンの動作 .................................................................... 21-30 21.13 赤外線サポート ......................................................................................................... 21-32 21.14 割り込み .................................................................................................................... 21-34 21.15 I/O ピンの制御 .......................................................................................................... 21-34 21.16 省電力モード中の UART の動作 ............................................................................... 21-35 21.17 各種リセットの影響 .................................................................................................. 21-36 21.18 関連アプリケーション ノート .................................................................................. 21-37 21.19 改訂履歴 .................................................................................................................... 21-38 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Section 21. UARTww1.microchip.com/downloads/jp/DeviceDoc/61107G_JP.pdf15:8 BRG 7:0 BRG Note 1: これらのレジスタは対応するクリア/ セット/ 反転レジスタを備え、それらのアドレスはそれぞれ0x4/0x8/0xC

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • UA

    RT

    21

    注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

    セクション 21. UART

    ハイライト

    本セクションには以下の主要項目を記載しています。

    21.1 はじめに ...................................................................................................................... 21-221.2 制御レジスタ .............................................................................................................. 21-421.3 UART baud レート ジェネレータ ............................................................................. 21-1221.4 UART のコンフィグレーション ................................................................................ 21-1621.5 UART トランスミッタ .............................................................................................. 21-1721.6 データビットの検出 .................................................................................................. 21-2021.7 UART レシーバ ......................................................................................................... 21-2121.8 UART による 9 ビット通信 ....................................................................................... 21-2421.9 ブレーク シーケンス ................................................................................................. 21-2621.10 初期化 ....................................................................................................................... 21-2621.11 その他の UART 機能 ................................................................................................. 21-2721.12 UxCTS および UxRTS 制御ピンの動作 .................................................................... 21-3021.13 赤外線サポート ......................................................................................................... 21-3221.14 割り込み .................................................................................................................... 21-3421.15 I/O ピンの制御 .......................................................................................................... 21-3421.16 省電力モード中の UART の動作 ............................................................................... 21-3521.17 各種リセットの影響 .................................................................................................. 21-3621.18 関連アプリケーション ノート .................................................................................. 21-3721.19 改訂履歴 .................................................................................................................... 21-38

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-1

  • PIC32 ファミリ リファレンス マニュアル

    21.1 はじめに汎用非同期送受信 (UART) モジュールは、PIC32 ファミリのデバイスが提供するシリアル I/Oモジュールの 1 つです。UART は RS-232、RS-485、LIN、IrDA® 等のプロトコルを使って周辺デバイスやパーソナル コンピュータと通信する全二重方式の非同期通信チャンネルです。 一部のデバイスの UART モジュールは、UxCTS および UxRTS ピンを使うハードウェア フロー制御オプションもサポートし、さらに IrDA エンコーダ / デコーダも備えます。詳細は各デバイス データシート内の「UART」を参照してください。UART モジュールの主な特長は以下の通りです。• 全二重の 8 ビットまたは 9 ビットデータ転送• 偶数パリティ、奇数パリティ、パリティなしを選択可能 (8 ビットデータの場合 )• 1 個また 2 個のストップビット• ハードウェアによる baud レート自動検出機能• 16 ビット プリスケーラ付き baud レート ジェネレータ (BRG) を完全内蔵• 80 MHz で 76 bps ~ 20 Mbps の baud レートレンジ• 送信と受信で別々の先入れ / 先出し (FIFO) データバッファ• パリティ、フレーミング、バッファ オーバーラン エラーの検出• アドレス検出 ( 第 9 ビット = 1) 時にのみ割り込む事が可能• 送信割り込みと受信割り込みを別々に生成• 診断用ループバック モードをサポート• LIN 1.2 プロトコルをサポートUART の概略ブロック図を図 21-1 に示します。UART モジュールは以下の主要ハードウェア要素で構成されます。

    • baud レート ジェネレータ • 非同期トランスミッタ• 非同期レシーバと IrDA エンコーダ / デコーダ

    Note: ファミリ リファレンス マニュアルの本セクションは、デバイス データシートの補足を目的としています。本書の内容は PIC32 ファミリの一部のデバイスには対応していません。

    本書の内容がお客様のご使用になるデバイスに対応しているかどうかは、最新デバイス データシート内の「UART」の冒頭に記載している注意書きでご確認ください。

    デバイス データシートとファミリ リファレンス マニュアルの各セクションは、マイクロチップ社のウェブサイト (http://www.microchip.com) でご覧になれます。

    DS61107G_JP - p. 21-2 © 2013 Microchip Technology Inc.

    http://www.microchip.com

  • セクション 21. UARTU

    AR

    T21

    図 21-1: UART の概略ブロック図

    Baud Rate Generator

    UxRX

    Hardware Flow Control

    UARTx Receiver

    UARTx Transmitter UxTX

    UxCTS(1)UxRTS/BCLKx(1)

    IrDA®

    Note 1: 一部の UART モジュールでは、これらのピンを使えません。これらのピンが使えるかどうかは、各デバイス データシート内の「UART」を参照してください。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-3

  • PIC32 ファミリ リファレンス マニュアル

    21.2 制御レジスタ

    各 UART モジュールには下記の特殊機能レジスタ (SFR) が割り当てられています。• UxMODE: UARTx モードレジスタ

    このレジスタは下記の機能を提供します。

    - UART モジュールの有効化 / 無効化- IrDA エンコーダ / デコーダの有効化 / 無効化- WAKE、ABAUD、ループバック機能の有効化 / 無効化- UxRTS および UxCTS ピンの有効化 / 無効化 - UxRTS ピンの動作モードの設定- UxRx ピン極性の設定- baud レートのタイプの選択- データビット数、パリティ、ストップビット数の選択

    • UxSTA: UARTx ステータス / 制御レジスタこのレジスタは下記の機能を提供します。

    - 送信割り込みモードの選択- 受信割り込みモードの選択- UART 送信の有効化 / 無効化- アドレス検出モードの制御- 送信および受信バッファの状態、パリティエラー、フレーミングエラー、オーバーフ

    ロー エラー等、各種ステータスの表示• UxTXREG: UARTx 送信レジスタ

    このレジスタは送信データを格納します。

    • UxRXREG: UARTx 受信レジスタこのレジスタは受信データを格納します。

    • UxBRG: UART baud レートレジスタこのレジスタは送信または受信データの baud レート値を格納します。

    UART タイマモジュールには、割り込み制御用に下記のビットも割り当てられています。

    • 送信割り込みイネーブル制御ビット (UxTXIE)• 送信割り込みフラグ ステータスビット (UXTXIF)• 受信割り込みイネーブル制御ビット (UxRXIE)• 受信割り込みフラグ ステータスビット (UxRXIF)• エラー割り込みイネーブル制御ビット (UxEIE)• エラー割り込みフラグ ステータスビット (UxEIF)• 割り込み優先度制御ビット (UxIP)• 割り込み副優先度制御ビット (UxIS)表 21-2 に、UART 関連の全てのレジスタをまとめて示します。表内の各レジスタビットの詳細な説明は表の後に記載しています。

    Note: PIC32 ファミリの各デバイスは 1 つまたは複数の UART モジュールを備えます。ピン、制御 / ステータスビット、レジスタの名前に含まれる添え字「x」はモジュールの番号を表します。詳細は各デバイス データシート内の「UART」を参照してください。

    Note: 一部のデバイスだけが UxRTS および UxCTS ピンを備えています。ご使用になるデバイスがこれらのピンを備えているかどうかは、デバイス データシート内の

    「ピン割り当て図」を参照してください。

    Note: これらのビットの詳細と使用可能かどうかは、各デバイスのデータシート内の「割り込みコントローラ」と、『セクション 08. 割り込み』(DS61108) を参照してください。

    DS61107G_JP - p. 21-4 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    表 21-2: UART 関連 SFR のまとめ

    レジスタ名Bit

    31/23/15/7Bit

    30/22/14/6Bit

    29/21/13/5Bit

    28/20/12/4Bit

    27/19/11/3Bit

    26/18/10/2Bit

    25/17/9/1Bit

    24/16/8/0

    UxMODE(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 ON — SIDL IREN RTSMD(2) — UEN(2)

    7:0 WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL

    UxSTA(1) 31:24 — — — — — — — ADM_EN

    23:16 ADDR

    15:8 UTXISEL UTXINV URXEN UTXBRK UTXEN UTXBF TRMT

    7:0 URXISEL ADDEN RIDLE PERR FERR OERR URXDA

    UxTXREG 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 — — — — — — — TX

    7:0 TX

    UxRXREG 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 — — — — — — — RX

    7:0 RX

    UxBRG(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 BRG

    7:0 BRG

    Note 1: これらのレジスタは対応するクリア / セット / 反転レジスタを備え、それらのアドレスはそれぞれ 0x4/0x8/0xC バイトオフセットしています。クリア / セット / 反転レジスタは、対応するレジスタの名前の後にそれぞれ「CLR」、「SET」、

    「INV」を追加した名前を持ちます ( 例 :UxMODECLR)。これらのレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがそれぞれクリア、セット、反転されます。これらのレジスタからの読み出しは無

    視されます。

    2: 一部の UART モジュールはこれらのビットを備えていません。UART モジュールでこれらのビットを使えるかどうかは、各デバイス データシート内の「UART」を参照してください。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-5

  • PIC32 ファミリ リファレンス マニュアル

    レジスタ 21-1: UxMODE: UARTx モードレジスタビットレンジ

    Bit31/23/15/7

    Bit30/22/14/6

    Bit29/21/13/5

    Bit28/20/12/4

    Bit27/19/11/3

    Bit26/18/10/2

    Bit25/17/9/1

    Bit24/16/8/0

    31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    15:8R/W-0 U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0

    ON(1) — SIDL IREN RTSMD(2) — UEN(2)

    7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

    -n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-16 未実装 :「0」として読み出しbit 15 ON: UARTx イネーブルビット (1)

    1 = UARTxを有効にする (UARTxはUENおよびUTXEN制御ビットの定義に従ってUARTxピンを制御する )

    0 = UARTxを無効にする (全てのUARTxピンはPORTx、TRISx、LATxレジスタの対応するビットにより制御され、UARTx の消費電力は最小になる )

    bit 14 未実装 :「0」として読み出しbit 13 SIDL: アイドル中停止ビット

    1 = デバイスがアイドルに移行すると動作を停止する0 = アイドル中も動作を継続する

    bit 12 IREN: IrDA® エンコーダ / デコーダ イネーブルビット1 = IrDA を有効にする0 = IrDA を無効にする

    bit 11 RTSMD: UxRTS ピンモード選択ビット (2)

    1 = UxRTS ピンを片方向モードにする0 = UxRTS ピンをフロー制御モードにする

    bit 10 未実装 :「0」として読み出しbit 9-8 UEN: UARTx イネーブルビット (2)

    11 = UxTX、UxRX、UxBCLK ピンを有効にして使い、UxCTS ピンは PORTx レジスタの対応するビットにより制御される

    10 = UxTX、UxRX、UxCTS、UxRTS ピンを有効にして使う01 = UxTX、UxRX、UxRTS ピンを有効にして使い、UxCTS ピンは PORTx レジスタの対応するビットによ

    り制御される00 = UxTXおよびUxRXピンを有効にして使い、UxCTSおよびUxRTS/UxBCLKピンはPORTxレジスタの対

    応するビットにより制御される

    bit 7 WAKE: スリープ中スタートビット検出時復帰イネーブルビット1 = 復帰を有効にする0 = 復帰を無効にする

    bit 6 LPBACK: UARTx ループバック モード選択ビット1 = ループバック モードを有効にする0 = ループバック モードを無効にする

    Note 1: PBCLK 分周比を 1:1 にしている場合、周辺モジュールの ON ビットをクリアした命令の直後の SYSCLKサイクルでは、そのモジュールのSFRに対する読み/書きをユーザ ソフトウェアで実行しないでください。

    2: 一部の UART モジュールはこれらのビットを備えません。UART モジュールでこれらのビットを使えるかどうかは、各デバイス データシート内の「UART」を参照してください。

    DS61107G_JP - p. 21-6 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    bit 5 ABAUD: baud レート自動検出イネーブルビット1 = 次のキャラクタでbaudレート計測を有効にする(同期キャラクタ(0x55)の受信が必要)。このビットは

    完了時にハードウェアでクリアされる0 = baud レート自動検出を無効にする、または自動検出は完了した

    bit 4 RXINV: 受信極性反転ビット1 = UxRX のアイドル状態は「0」0 = UxRX のアイドル状態は「1」

    bit 3 BRGH: 高 baud レート イネーブルビット1 = 高速モード (4x baud クロックを有効にする ) 0 = 標準速モード (16x baud クロックを有効にする )

    bit 2-1 PDSEL: パリティ / データ選択ビット11 = 9 ビットデータ、パリティなし10 = 8 ビットデータ、奇数パリティ01 = 8 ビットデータ、偶数パリティ00 = 8 ビットデータ、パリティなし

    bit 0 STSEL: ストップビット選択ビット1 = 2 個のストップビット0 = 1 個のストップビット

    レジスタ 21-1: UxMODE: UARTx モードレジスタ ( 続き )

    Note 1: PBCLK 分周比を 1:1 にしている場合、周辺モジュールの ON ビットをクリアした命令の直後の SYSCLKサイクルでは、そのモジュールのSFRに対する読み/書きをユーザ ソフトウェアで実行しないでください。

    2: 一部の UART モジュールはこれらのビットを備えません。UART モジュールでこれらのビットを使えるかどうかは、各デバイス データシート内の「UART」を参照してください。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-7

  • PIC32 ファミリ リファレンス マニュアル

    レジスタ 21-2: UxSTA: UARTx ステータス / 制御レジスタビットレンジ

    Bit31/23/15/7

    Bit30/22/14/6

    Bit29/21/13/5

    Bit28/20/12/4

    Bit27/19/11/3

    Bit26/18/10/2

    Bit25/17/9/1

    Bit24/16/8/0

    31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0

    — — — — — — — ADM_EN

    23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    ADDR

    15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-1

    UTXISEL(1) UTXINV URXEN UTXBRK UTXEN UTXBF TRMT

    7:0R/W-0 R/W-0 R/W-0 R-1 R-0 R-0 R/W-0 R-0

    URXISEL(1) ADDEN RIDLE PERR FERR OERR URXDA

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

    -n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-25 未実装 :「0」として読み出しbit 24 ADM_EN: 自動アドレス検出モード イネーブルビット

    1 = 自動アドレス検出モードを有効にする0 = 自動アドレス検出モードを無効にする

    bit 23-16 ADDR: 自動アドレスマスク ビットADM_EN ビットを「1」にセットした場合、この値によって自動アドレス検出に使うアドレス キャラクタを定義します。

    bit 15-14 UTXISEL: 送信割り込みモード選択ビット (1)

    4 段 FIFO を備える UART モジュールの場合 :11 = 予約済み ( 使用禁止 )10 = 送信バッファがエンプティになった時点で割り込みフラグビットをセットする01 = 全てのキャラクタの送信が完了した時点で割り込みフラグビットをセットする00 = 送信バッファに 1 つ以上の空き位置ができた時点で割り込みフラグビットをセットする8 段 FIFO を備える UART モジュールの場合 :11 = 予約済み ( 使用禁止 )10 = 送信バッファがエンプティであれば割り込みフラグビットをアサートし続ける01 = 全てのキャラクタの送信完了後割り込みフラグビットをアサートし続ける00 = 送信バッファに 1 つ以上の空き位置が存在すれば割り込みフラグビットをアサートし続ける

    bit 13 UTXINV: 送信極性反転ビット

    IrDA モードが無効 (IREN (UxMODE) = 0) の場合 :1 = UxTX のアイドル状態は「0」0 = UxTX のアイドル状態は「1」IrDA モードが有効 (IREN (UxMODE) = 1) の場合 :1 = IrDA エンコードされた UxTX のアイドル状態は「1」0 = IrDA エンコードされた UxTX のアイドル状態は「0」

    bit 12 URXEN: レシーバ イネーブルビット1 = UARTx レシーバを有効にする (ON = 1であれば UARTx が UxRX ピンを制御する )0 = UARTxレシーバを無効にする(UARTxモジュールはUxRXピンを制御せず、ポートがUxRXピンを制御

    する )bit 11 UTXBRK: 送信ブレークビット

    1 = 次の送信でブレークを送信する ( スタートビットの後に 12 個の「0」ビットとストップビットが続く。このビットはブレーク送信完了時にハードウェアでクリアされる )

    0 = ブレーク送信は無効または完了した

    Note 1: これらのビットの機能は、デバイスが実装している UART モジュールのタイプによって異なります。利用可能な割り込みモードについては、各デバイス データシート内の「UART」を参照してください。

    DS61107G_JP - p. 21-8 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    bit 10 UTXEN: 送信イネーブルビット1 = UARTx トランスミッタを有効にする (ON = 1であれば UARTx は UxTX ピンを制御する )0 = UARTx トランスミッタを無効にする ( 保留中の送信を全て中止し、バッファをリセットする。ポート

    が UxTX ピンを制御する ) bit 9 UTXBF: 送信バッファフル ステータスビット ( 読み出し専用 )

    1 = 送信バッファはフル0 = 送信バッファはフルではない ( 少なくともあと 1 つのキャラクタを書き込める )

    bit 8 TRMT: 送信シフトレジスタ エンプティビット ( 読み出し専用 )1 = 送信シフトレジスタも送信バッファもエンプティ ( 直前の送信は完了した )0 = 送信シフトレジスタはエンプティではない (送信中または送信バッファ内に送信待ちのデータが存在

    する )bit 7-6 URXISEL: 受信割り込みモード選択ビット (1)

    4 段 FIFO を備える UART モジュールの場合 :11 = 受信バッファがフルになった (4 個のデータキャラクタを格納した ) 時点で割り込みフラグビットを

    セットする10 = 受信バッファが3/4フルになった (3個のデータキャラクタを格納した )時点で割り込みフラグビット

    をセットする

    0x = 1 個のキャラクタを受信した時点で割り込みフラグビットをセットする8 段 FIFO を備える UART モジュールの場合 :11 = 予約済み ( 使用禁止 )10 = 受信バッファが3/4フル以上 (6個以上のデータキャラクタを格納中 )であれば割り込みフラグビット

    をアサートし続ける01 = 受信バッファが1/2フル以上 (4個以上のデータキャラクタを格納中 )であれば割り込みフラグビット

    をアサートし続ける

    00 = 受信バッファがエンプティでなければ(少なくとも1個のデータキャラクタを格納していれば)割り込みフラグビットをアサートし続ける

    bit 5 ADDEN: アドレス キャラクタ ( 受信データの bit 8 = 1) 検出ビット1 = アドレス検出モードを有効にする ( この制御ビットは 9 ビットモードを選択した場合にのみ効力を持

    ちます )0 = アドレス検出モードを無効にする

    bit 4 RIDLE: レシーバアイドル ビット ( 読み出し専用 )1 = レシーバはアイドル中0 = レシーバはデータを受信中

    bit 3 PERR: パリティエラー ステータスビット ( 読み出し専用 )1 = 現在のキャラクタでパリティエラーを検出した0 = パリティエラーは検出していない

    bit 2 FERR: フレーミング エラー ステータスビット ( 読み出し専用 )1 = 現在のキャラクタでフレーミング エラーを検出した0 = フレーミング エラーは検出していない

    bit 1 OERR: 受信バッファ オーバーラン エラー ステータスビットこのビットはハードウェアでセットされ、ソフトウェアでのみクリア (=0) できます。セットされた OERRビットをクリアすると、受信バッファと RSR はエンプティ状態にリセットされます。1 = 受信バッファがオーバーフローした0 = 受信バッファはオーバーフローしていない

    bit 0 URXDA: 受信バッファ内データ読み出し可能ビット ( 読み出し専用 )1 = 受信バッファ内にデータが存在する ( 少なくとも 1 つのキャラクタを読み出せる )0 = 受信バッファはエンプティ

    レジスタ 21-2: UxSTA: UARTx ステータス / 制御レジスタ ( 続き )

    Note 1: これらのビットの機能は、デバイスが実装している UART モジュールのタイプによって異なります。利用可能な割り込みモードについては、各デバイス データシート内の「UART」を参照してください。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-9

  • PIC32 ファミリ リファレンス マニュアル

    レジスタ 21-3: UxTXREG: UARTx 送信レジスタビットレンジ

    Bit31/23/15/7

    Bit30/22/14/6

    Bit29/21/13/5

    Bit28/20/12/4

    Bit27/19/11/3

    Bit26/18/10/2

    Bit25/17/9/1

    Bit24/16/8/0

    31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0

    — — — — — — — TX

    7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    TX

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

    -n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-9 未実装 :「0」として読み出しbit 8-0 TX: 送信キャラクタのデータ bit 8-0

    レジスタ 21-4: UxRXREG: UARTx 受信レジスタビットレンジ

    Bit31/23/15/7

    Bit30/22/14/6

    Bit29/21/13/5

    Bit28/20/12/4

    Bit27/19/11/3

    Bit26/18/10/2

    Bit25/17/9/1

    Bit24/16/8/0

    31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0

    — — — — — — — RX

    7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    RX

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

    -n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-9 未実装 :「0」として読み出しbit 8-0 RX: 受信キャラクタのデータ bit 8-0

    DS61107G_JP - p. 21-10 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    レジスタ 21-5: UxBRG: UART baud レートレジスタビットレンジ

    Bit31/23/15/7

    Bit30/22/14/6

    Bit29/21/13/5

    Bit28/20/12/4

    Bit27/19/11/3

    Bit26/18/10/2

    Bit25/17/9/1

    Bit24/16/8/0

    31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    BRG

    7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    BRG

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

    -n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-16 未実装 :「0」として読み出しbit 15-0 BRG: baud レート分周比ビット

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-11

  • PIC32 ファミリ リファレンス マニュアル

    21.3 UART BAUD レート ジェネレータ UARTモジュールは専用の16ビットbaudレート ジェネレータ (BRG)を備えています。UxBRGレジスタはフリーランニング 16 ビットタイマの周期を制御します。式 21-1 に、BRGH = 0の場合の baud レートの計算式を示します。

    式 21-1: UART baud レート (BRGH = 0)

    例 21-1 に、下記条件における baud レート誤差の計算例を示します。• FPB = 4 MHz • 目標 baud レート = 9600

    例 21-1: baud レート誤差の計算 (BRGH = 0)

    BRGH = 0 とした場合、可能な最大 baud レート (UxBRG = 0) は FPB/16 、可能な最小 baudレートは FPB/(16 * 65536) です。式 21-2 に、BRGH = 1とした場合の baud レートの計算式を示します。

    式 21-2: UART baud レート (BRGH = 1)

    BRGH = 1とした場合、可能な最大 baud レート (UxBRG = 0) は FPB/4 、可能な最小 baud レートは FPB/(4 * 65536) です。UxBRG レジスタに更新値を書き込むと、baud レートカウンタはリセット ( クリア ) されます。これにより、BRGはタイマ オーバーフローを待たずに更新されたbaudレートを出力できます。

    21.3.1 baud レートテーブル一般的な周辺モジュール バスクロック (PBCLK) 周波数 (FPB) における UART baud レートを表21-2に示します。表には、各周波数における最小および最大baudレートも記載しています。

    Note: FPB: PBCLK 周波数

    UxBRGFPB

    16 Baud Rate----------------------------------- 1–=

    Baud RateFPB

    16 UxBRG 1+ -------------------------------------------=

    Desired Baud Rate = FPB/(16 (UxBRG + 1))

    Solving for UxBRG value:

    UxBRG = ((FPB/Desired Baud Rate)/16) – 1UxBRG = ((4000000/9600)/16) – 1 UxBRG = [25.042] = 25

    Calculated Baud Rate= 4000000/(16 (25 + 1)) = 9615

    Error = (Calculated Baud Rate – Desired Baud Rate)

    Desired Baud Rate = (9615 – 9600)/9600 = 0.16%

    Note: FPB: PBCLK 周波数

    UxBRGFPB

    4 Baud Rate-------------------------------- 1–=

    Baud RateFPB

    4 UxBRG 1+ ----------------------------------------=

    DS61107G_JP - p. 21-12 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    表 21-2: UART baud レート (UxMODE.BRGH = 「0」)

    目標 baudレート

    周辺モジュール バスクロック 40 MHz

    周辺モジュール バスクロック 33 MHz

    周辺モジュール バスクロック 30 MHz

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 0.00 22726.0 110.0 0.0 18749.0 110.0 0.0 17044.0300 300.0 0.00 8332.0 300.0 0.0 6874.0 300.0 0.0 6249.0

    1200 1200.2 0.02 2082.0 1199.8 0.0 1718.0 1199.6 0.0 1562.02400 2399.2 -0.03 1041.0 2401.0 0.0 858.0 2400.8 0.0 780.09600 9615.4 0.16 259.0 9593.0 -0.1 214.0 9615.4 0.2 194.0

    19.2 K 19230.8 0.16 129.0 19275.7 0.4 106.0 19132.7 -0.4 97.038.4 K 38461.5 0.16 64.0 38194.4 -0.5 53.0 38265.3 -0.4 48.0

    56 K 55555.6 -0.79 44.0 55743.2 -0.5 36.0 56818.2 1.5 32.0115 K 113636.4 -1.19 21.0 114583.3 -0.4 17.0 117187.5 1.9 15.0250 K 250000.0 0.00 9.0 257812.5 3.1 7.0300 K 294642.9 -1.8 6.0500 K 500000.0 0.00 4.0 515625.0 3.1 3.0

    最小レート 38.1 0.0 65535 31.5 0.0 65535 28.6 0.0 65535最大レート 2500000 0.0 0 2062500 0.0 0 1875000 0.0 0

    目標 baudレート

    周辺モジュール バスクロック 25 MHz

    周辺モジュール バスクロック 20 MHz

    周辺モジュール バスクロック 18.432 MHz

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート%

    誤差

    BRG 値(10 進数 )

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 0.00 14204.0 110.0 0.0 11363.0 110.0 0.0 10472.0300 300.0 0.01 5207.0 300.0 0.0 4166.0 300.0 0.0 3839.0

    1200 1200.1 0.01 1301.0 1199.6 0.0 1041.0 1200.0 0.0 959.02400 2400.2 0.01 650.0 2399.2 0.0 520.0 2400.0 0.0 479.09600 9585.9 -0.15 162.0 9615.4 0.2 129.0 9600.0 0.0 119.0

    19.2 K 19290.1 0.47 80.0 19230.8 0.2 64.0 19200.0 0.0 59.038.4 K 38109.8 -0.76 40.0 37878.8 -1.4 32.0 38400.0 0.0 29.0

    56 K 55803.6 -0.35 27.0 56818.2 1.5 21.0 54857.1 -2.0 20.0115 K 111607.1 -2.95 13.0 113636.4 -1.2 10.0 115200.0 0.2 9.0250 K 250000.0 0.0 4.0300 K500 K

    最小レート 23.8 0.0 65535 19 0.0 65535 18 0.0 65535最大レート 1562500 0.0 0 1250000 0.0 0 1152000 0.0 0

    目標 baudレート

    周辺モジュール バスクロック 16 MHz

    周辺モジュール バスクロック 12 MHz

    周辺モジュール バスクロック 10 MHz

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 0.00 9090.0 110.0 0.0 6817.0 110.0 0.0 5681.0300 300.0 0.01 3332.0 300.0 0.0 2499.0 300.0 0.0 2082.0

    1200 1200.5 0.04 832.0 1200.0 0.0 624.0 1199.6 0.0 520.02400 2398.1 -0.08 416.0 2396.2 -0.2 312.0 2403.8 0.2 259.09600 9615.4 0.16 103.0 9615.4 0.2 77.0 9615.4 0.2 64.0

    19.2 K 19230.8 0.16 51.0 19230.8 0.2 38.0 18939.4 -1.4 32.038.4 K 38461.5 0.16 25.0 37500.0 -2.3 19.0 39062.5 1.7 15.0

    56 K 55555.6 -0.79 17.0 57692.3 3.0 12.0 56818.2 1.5 10.0115 K 111111.1 -3.38 8.0 6.0250 K 250000.0 0.00 3.0 250000.0 0.0 2.0300 K500 K 500000.0 0.00 1.0

    最小レート 15 0.0 65535 11 0.0 65535 10 0.0 65535最大レート 1000000 0.0 0 750000 0.0 0 625000 0.0 0

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-13

  • PIC32 ファミリ リファレンス マニュアル

    表 21-2: UART baud レート (UxMODE BRGH = 「0」)

    目標 baudレート

    周辺モジュール バスクロック 8 MHz

    周辺モジュール バスクロック 5 MHz

    周辺モジュール バスクロック 4 MHz

    実際の

    baudレート%

    誤差

    BRG 値(10 進数 )

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 0.01 4544.0 110.0 0.0 2840.0 110.0 0.0 2272.0300 299.9 -0.02 1666.0 299.9 0.0 1041.0 300.1 0.0 832.0

    1200 1199.0 -0.08 416.0 1201.9 0.2 259.0 1201.9 0.2 207.02400 2403.8 0.16 207.0 2403.8 0.2 129.0 2403.8 0.2 103.09600 9615.4 0.16 51.0 9469.7 -1.4 32.0 9615.4 0.2 25.0

    19.2 K 19230.8 0.16 25.0 19531.3 1.7 15.0 19230.8 0.2 12.038.4 K 38461.5 0.16 12.0 39062.5 1.7 7.0

    56 K 55555.6 -0.79 8.0115 K250 K 250000.0 0.00 1.0300 K500 K 500000.0 0.00 0.0

    最小レート 8 0.0 65535 5 0.0 65535 4 0.0 65535最大レート 500000 0.0 0 312500 0.0 0 250000 0.0 0

    目標 baudレート

    周辺モジュール バスクロック 7.68 MHz

    周辺モジュール バスクロック 7.15909 MHz

    周辺モジュール バスクロック 5.0688 MHz

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 -0.01 4363.0 110.0 0.0 4067.0 110.0 0.0 2879.0300 300.0 0.00 1599.0 300.1 0.0 1490.0 300.0 0.0 1055.0

    1200 1200.0 0.00 399.0 1199.6 0.0 372.0 1200.0 0.0 263.02400 2400.0 0.00 199.0 2405.6 0.2 185.0 2400.0 0.0 131.09600 9600.0 0.00 49.0 9520.1 -0.8 46.0 9600.0 0.0 32.0

    19.2 K 19200.0 0.00 24.0 19454.0 1.3 22.0 18635.3 -2.9 16.038.4 K 36923.1 -3.85 12.0 37286.9 -2.9 11.0 39600.0 3.1 7.0

    56 K 53333.3 -4.76 8.0 55930.4 -0.1 7.0115 K 120000.0 4.35 3.0 111860.8 -2.7 3.0250 K 240000.0 -4.00 1.0300 K500 K

    最小レート 7 0.0 65535 7 0.0 65535 5 0.0 65535最大レート 480000 0.0 0 447443 0.0 0 316800 0.0 0

    目標 baudレート

    周辺モジュール バスクロック 3.579545 MHz

    周辺モジュール バスクロック 3.072 MHz

    周辺モジュール バスクロック 1.8432 MHz

    実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )実際の

    baudレート % 誤差BRG 値

    (10 進数 )110 110.0 -0.01 2033.0 110.0 0.0 1744.0 110.0 0.0 1046.0300 299.9 -0.04 745.0 300.0 0.0 639.0 300.0 0.0 383.0

    1200 1202.8 0.23 185.0 1200.0 0.0 159.0 1200.0 0.0 95.02400 2405.6 0.23 92.0 2400.0 0.0 79.0 2400.0 0.0 47.09600 9727.0 1.32 22.0 9600.0 0.0 19.0 9600.0 0.0 11.0

    19.2 K 18643.5 -2.90 11.0 19200.0 0.0 9.0 19200.0 0.0 5.038.4 K 37286.9 -2.90 5.0 38400.0 0.0 4.0 38400.0 0.0 2.0

    56 K 55930.4 -0.12 3.0115 K 111860.8 -2.73 1.0250 K300 K500 K

    最小レート 3 0.0 65535 3 0.0 65535 2 0.0 65535最大レート 223722 0.0 0 192000 0.0 0 115200 0.0 0

    DS61107G_JP - p. 21-14 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.3.2 BCLKx 出力UART と BCLKx 出力が有効 (UEN ビット (UxMODE) = 11) な場合、BCLKx ピンは16x baud クロックを出力します。この機能は、外部の IrDA エンコーダ / デコーダをサポートするために使います ( 図 21-2 参照 )。スリープ中、BCLKx 出力は LOW 状態を維持します。UART がこのモード (UEN ビット (UxMODE) = 11) で動作している間は、PORTx および TRISx ラッチビットの状態に関係なく、BCLKx は常に出力として機能します。

    図 21-2: UxBRG の設定と BCLKx 出力の関係

    Note: 一部の UART モジュールは BCLKx ピンをサポートしません。ご使用になるデバイスの UART モジュールでこのピンを使えるかどうかは、各デバイス データシート内の「UART」を参照してください。

    (n + 1) / FPB

    PBCLK

    BCLK (BRG = 0)

    BCLK (BRG = 1)

    BCLK (BRG = 2)

    BCLK (BRG = 3)

    BCLK (BRG = 4)

    BCLK (BRG = n)

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-15

  • PIC32 ファミリ リファレンス マニュアル

    21.4 UART のコンフィグレーションUART は標準の非ゼロ復帰 (NRZ) フォーマット (1 個のスタートビット、8 または 9 個のデータビット、1 または 2 個のストップビット ) を使います。ハードウェアはパリティをサポートし、偶数パリティ / 奇数パリティ / パリティなしに設定できます。既定値のパワーオン リセット(POR) 設定は、最も一般的なデータ フォーマットである「8 ビット、パリティなし、1 個のストップビット」(8, N, 1) です。データビット数、スタートビット数、パリティは PDSEL(UxMODE) および STSEL(UxMODE) ビットで指定します。USART は最下位ビット(LSb) から順に送受信します。UART のトランスミッタとレシーバは別々に動作しますが、同じデータ フォーマットと baud レートを使います。

    21.4.1 UART の有効化ON ビット (UxMODE) をセットすると UART モジュールは有効になります。UART のトランスミッタとレシーバは、それぞれ UTXEN ビット (UxSTA) と URXEN ビット(UxSTA) をセットすると有効になります。これらのビットをセットすると、UxTX およびUxRX ピンはそれぞれ出力および入力として設定されます。これは対応する I/O ポートピンのTRISx および PORTx レジスタビットの設定よりも優先されます。

    21.4.2 UART の無効化ON ビットをクリアすると UART モジュールは無効になります。これは全てのリセット後の既定値状態です。UART を無効にすると、全ての UART ピンは PORTx および TRISx レジスタの対応するビットの設定に従ってポートピンとして動作します。

    UART モジュールを無効にするとバッファはエンプティ状態にリセットされ、バッファ内の全てのデータは失われます。

    UART モジュールを無効にすると、モジュールに関連する全てのエラーフラグとステータスフラグはリセットされます。また UxSTA レジスタの URXDA、OERR、FERR、PERR、UTXEN、URXEN、UTXBRK、UTXBF ビットはクリアされ、RIDLE および TRMT ビットはセットされます。ADDEN、URXISEL、UTXISEL を含むその他の制御ビットと UxMODE および UxBRG レジスタはリセットの影響を受けません。 UART モジュールの動作中に ON ビットをクリアすると保留中の送受信は全て中止され、モジュールは上記の状態にリセットされます。UART モジュールを再度有効にすると、モジュールは以前と同じコンフィグレーションで再起動します。

    DS61107G_JP - p. 21-16 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.5 UART トランスミッタ図 21-3 に UART トランスミッタのブロック図を示します。トランスミッタの中核となるのが送信シフトレジスタ (UxTSR) です。UxTSR レジスタには送信 FIFO バッファ (UxTXREG) からデータが転送されます。UxTXREGレジスタにはソフトウェアでデータを書き込みます。UxTSRレジスタ内のデータのストップビットが送信されるまで、FIFO バッファ内の次のデータはUxTSR レジスタに転送されません。ストップビットが送信され次第、UxTXREG レジスタからUxTSR レジスタに次のデータが転送されます ( 送信待ちのデータが存在する場合 )。

    図 21-3: UART トランスミッタのブロック図 (1)

    UTXEN ビット (UxSTA) をセットすると送信が有効になります。UxTXREG レジスタにデータが書き込まれ、かつ baud レート ジェネレータ (UxBRG) がシフトクロックを生成するまで、実際の送信は始まりません ( 図 21-3 参照 )。先に UxTXREG レジスタにデータを書き込んでおけば、UTXEN ビットをセットする事で送信を開始できます。通常、最初の送信開始時に UxTSR レジスタはエンプティであるため、UxTXREG に書き込んだデータは即座に UxTSRに転送されます。送信中に UTXEN ビットをクリアすると送信は中止され、トランスミッタはリセットされます。結果として、UxTX ピンは UTXINV ビット (UxSTA) で定義した状態に戻ります。

    9 ビット送信を選択するには、PDSEL ビット (UxMODE) を「11」に設定する必要があります。

    Note: UxTSR レジスタはデータメモリ内に配置されないため、ユーザ アプリケーションからはアクセスできません。

    Write

    TX8 FIFO Slot(1)

    Load UxTSR

    Transmit Control

    – Control UxTSR– Control Buffer– Generate Flags– Generate Interrupt

    UxTXIF

    Data

    (Start)

    (Stop)

    Parity ParityGenerator

    Transmit Shift Register(UxTSR)

    Divider

    ControlSignals

    Baud Clockfrom Baud RateGenerator

    Internal Data Bus

    UTXBRK

    UxTX

    UxTX

    UxMODE UxSTA

    32

    Write

    Transmit FIFO

    32 9 8 0

    UxCTS(2)

    Note 1: デバイスが 8 段 FIFO を実装しているかどうかは、デバイス データシート内の「UART」を参照してください。2: デバイスが UxCTS ピンを実装しているかどうかは、デバイス データシート内の「ピン配置図」を参照してく

    ださい。

    (up to 8 levels deep) TX4 FIFO Slot

    Note: 9 ビットデータ転送を選択すると「パリティなし」に設定されます。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-17

  • PIC32 ファミリ リファレンス マニュアル

    21.5.1 送信バッファ (UxTXREG)送信バッファは最大8段の深さを持つ9ビット幅のバッファです。送信シフトレジスタ (UxTSR)と合わせて最大 9 段のバッファを構成できます。UxTXREG の内容が UxTSR レジスタに転送されると、 そのバッファ位置に新しいデータを書き込めます。バッファがフルになると UTXBFビット (UxSTA) がセットされます。ユーザ アプリケーションがフル状態のバッファに書き込みを試みても、FIFO は新しいデータを受け付けません。 FIFO は全てのデバイスリセット時にリセットされますが、デバイスの省電力モードへの移行時あるいは省電力モードからの復帰時には影響を受けません。

    21.5.2 送信割り込み送信割り込みフラグ ステータスビット (UxTXIF) は、対応する割り込みフラグステータス レジスタ (IFS) に格納されています。UTXISEL 制御ビット (UxSTA) は、UART 送信割り込みの生成タイミングを指定します。UxTXIF ビットはモジュールを有効にするとセットされます。割り込みモードは動作中に変更可能ですが、バッファがエンプティではない状態での変更は推奨しません。

    UxTXIF フラグビットは UxTXREG レジスタのステータスを示し、TRMT ビット (UxSTA)は UxTSR レジスタのステータスを示します。TRMT ステータスビットは、UxTSR のエンプティ時にセットされる読み出し専用ビットです。このビットには割り込みロジックは関連付けられていないため、UxTSR レジスタがエンプティであるかどうかを判断するには、ユーザ アプリケーションでこのビットをポーリングする必要があります。

    4 段 FIFO を備えた UART モジュールの場合、対応する IFSx レジスタの対応する UxTXIF フラグビットをクリアすれば割り込みをクリアできます。

    8 段 FIFO を備えた UART モジュールでは、UTXISEL 制御ビットで定義した割り込み条件が「真」である限り UxTXIF フラグビットはアサートされ続けます。つまり、これらのモジュールの割り込みをクリアするには、UTXISEL 制御ビットで定義した割り込み条件が「真」ではなくなった事をユーザ アプリケーションで確認してから、対応する UxTXIF フラグビットをクリアする必要があります。

    21.5.3 UART 送信のセットアップUART 送信のセットアップ手順は以下の通りです。1. UxBRG レジスタを適切な baud レートに初期化する (21.3「UART baud レート ジェネレー

    タ」参照 )。2. PDSEL ビット (UxMODE) と STSEL (UxMODE) ビットでデータビット数、

    ストップビット数、パリティを設定する

    3. 送信割り込みを有効にする場合、対応する割り込みイネーブル制御レジスタ (IEC) の UxTXIE制御ビットをセットする。対応する割り込み優先度制御レジスタ (IPC) の UxIP およびUxIS 制御ビットで送信割り込みの割り込み優先度と副優先度を定義する。さらに、UTXISEL ビット (UxSTA) で送信割り込みモードを選択する。

    4. UTXEN ビット (UxSTA) をセットして送信を有効にする (UxTXIF ビットもセットされる )。UART 送信割り込みをサービスするソフトウェア ルーチン内で UxTXIF ビットをクリアする。以後、UxTXIF ビットは UTXISEL 制御ビットにより制御される。

    5. ON ビット (UxMODE) をセットして UART モジュールを有効にする。6. UxTXREG レジスタにデータを書き込む ( 送信開始 )。

    Note: FIFO の段数についてはデバイス データシート内の「UART」を参照してください。

    DS61107G_JP - p. 21-18 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.5.4 ブレーク キャラクタの送信ブレーク キャラクタは 1 個のスタートビットを先頭に 12 個の「0」ビットと 1 個のストップビットで構成されます。UART モジュールを有効にし、UxTXREG にデータを書き込んだ状態で UTXEN (UxSTA) ビットと UTXBRK (UxSTA) ビットをセットすると、フレームブレーク キャラクタが送信されます。ブレーク キャラクタを送信するには、UxTXREG レジスタに対して 1 回のダミー書き込みが必要です。ブレーク キャラクタを送信する目的で UxTXREGレジスタに書き込んだデータ値は無視されます。この書き込みは正しいシーケンスを開始する事だけを目的とし、全てゼロのデータが送信されます。

    ブレーク送信が完了すると、ハードウェアは自動的に UTXBRK ビットをクリアします。このため、ブレーク送信中に次の送信バイト ( 通常、LIN 仕様では同期キャラクタ ) を送信 FIFO にプリロードできます。

    TRMT ビット (UxSTA) は、通常の送信と同様に、送信シフトレジスタがエンプティかどうかを示します。図 21-4 に、ブレーク キャラクタ送信シーケンスのタイミングを示します。

    図 21-4: ブレーク送信シーケンス

    21.5.5 ブレークおよび同期キャラクタの送信シーケンス下記の手順により、ブレーク キャラクタとこれに続く baud レート自動検出同期バイトで構成されたメッセージフレーム ヘッダを送信します。これは LIN バスマスタの典型的なシーケンスです。

    1. UART を必要なモードに設定する (21.5.3「UART 送信のセットアップ」のセットアップ手順を参照 )。

    2. 現在データを送信中である場合、TRMT ビット (UxSTA) をポーリングして送信の終了を 検出する。

    3. UTXEN (UxSTA) および UTXBRK (UxSTA) ビットをセットしてブレーク キャラクタの送信を可能にする。

    4. UxTXREG にダミーキャラクタを書き込んで送信を開始する ( この値は無視される )。5. UxTXREG に 0x55 を書き込む ( 送信 FIFO に同期キャラクタを書き込む )。ブレーク送信後 UTXBRK ビットがハードウェアによりリセットされた後に、同期キャラクタが送信されます。

    Note: ユーザ アプリケーションは、トランスミッタがアイドル (TRMT = 1) に移行した後に UTXBRK ビット (UxSTA) をセットする必要があります。UTXBRK ビットは、他のトランスミッタ動作よりも優先されます。FIFO に送信データを格納した状態で UTXBRK ビットをセットすると、UxTSR レジスタにデータが転送された時点で、UxTSR レジスタに転送された実際の送信データのかわりにブレークキャラクタが送信されます。シーケンスが完了する前にユーザ アプリケーションが UTXBRK ビットをクリアすると、モジュールに予期せぬ挙動が生じる可能性があります。

    Write to UxTXREG

    Start bit bit 0 bit 1 bit 11 Stop bit

    Break

    UxTX

    TRMT bitUTXBRK Sampled Here Auto-Cleared

    UTXBRK bit

    UxTXIF

    BCLKx/16(shift clock)

    Dummy Write

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-19

  • PIC32 ファミリ リファレンス マニュアル

    21.6 データビットの検出

    21.6.1 16X クロックモード (BRGH = 0)16x クロックモードでは、受信データの各ビットは 16 クロックのパルス幅を持ちます。受信データビットの値を検出するために、クロックの 7、8、9 番目の立ち上がりエッジでビットをサンプリングします。これらの立ち上がりエッジは多数決検出エッジと呼ばれます。このモードは 4x クロックモードよりも信頼性に優れます。

    図 21-5: 多数決検出を適用する 16x クロックモード

    21.6.2 4X クロックモード (BRGH = 1)4x クロックモードでは、受信データの各ビットは 4 クロックのパルス幅を持ちます。4x クロックモードではエッジ数が少ないため、多数決検出法を適用しません。従って 1/2 ビット幅位置で受信データを 1 回だけサンプリングします。

    図 21-6: 多数決検出を適用しない 4x クロックモード

    Note: 16x クロックモードでは、クロックの 7、8、9 番目の立ち上がりエッジで各ビットをサンプリングします。

    Idle Start bit bit 0

    MD2

    MD3MD1

    Start bit detected

    16x Clock

    Bit Clock

    Internal Bit Counter(Received Data)

    Start bit bit 0 bit 1

    Sample point

    4x Clock

    Bit Clock

    Internal Bit Counter

    RX

    Note: 4x クロックモードでは、1/2 ビット幅位置で 1 回だけサンプリングします。

    DS61107G_JP - p. 21-20 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.7 UART レシーバレシーバの中核となるのが受信 ( シリアル ) シフトレジスタ (UxRSR) です。UxRX ピンで受信したデータは多数決検出ブロックで処理されます。BRGH = 0モードの場合、多数決検出ブロックは 16x baud レートで動作し、多数決検出法を適用して UxRX ピンの状態 (HIGH または LOW) を判定します。BRGH = 1モードの場合、多数決検出ブロックは 4x baud レートで動作し、1 回のサンプリングで UxRX ピンの状態 (HIGH または LOW) を判定します。UxRX ピンでストップビットを検出すると、UxRSR 内の受信データを受信 FIFO に転送します(FIFO がフルではない場合 )。図 21-7 に UART レシーバのブロック図を示します。受信はURXEN ビット (UxSTA) をセットすると有効になります。

    21.7.1 受信バッファ (UxRXREG)UART レシーバは最大 8 段の 9 ビット幅 FIFO 受信データバッファを備えています。UxRXREGはメモリ内に配置されるため、ユーザ アプリケーションは FIFO の出力にアクセスできます。FIFO がフルの状態で次のワードを UxRSR レジスタにシフトし始めても、この時点ではバッファ オーバーランは発生しません。

    21.7.2 レシーバエラーの対応FIFO がフルの状態で次のキャラクタを UxRSR レジスタに完全にシフトし終えた時点で、オーバーランビット OERR (UxSTA) がセットされます。UxRSR レジスタ内のワードは保持されず、OERR ビットがセットされている限り受信 FIFO への後続の転送は許容されません。後続データの受信を可能にするには、ユーザ ソフトウェアで OERR ビットをクリアする必要があります。

    オーバーラン前に受信したデータを保持するには、受信したキャラクタを全て読み出してからOERR ビットをクリアする必要があります。受信したキャラクタを破棄しても構わなければ、キャラクタを読み出さずに OERR ビットをクリアできます。OERR ビットをクリアすると受信 FIFO はリセットされるため、それまでの受信データは全て失われます。

    受信したストップビットの状態が正しくない場合、フレーミングエラー ステータスビットFERR (UxSTA) がセットされます。バッファの先頭のデータワード ( 現在のワード ) にパリティエラーが見つかると、パリティエラー ステータスビット PERR (UxSTA) がセットされます。例えば、偶数パリティを選択している場合、データ内で検出された「1」の総数が奇数だとパリティエラーが発生します。PERRビットは 9 ビットモードでは効果を持ちません。FERR および PERR ビットは、対応するワードと一緒にバッファリングされます。データワードを読み出す前にこれらのビットを読み出す必要があります。

    21.7.3 受信割り込みUART 受信割り込みフラグ ステータスビット (UxRXIF) は、対応する割り込みフラグステータス レジスタ (IFSx) に格納されています。URXISEL 制御ビット (UxSTA) は、UARTレシーバの割り込み生成タイミングを指定します。

    4 段 FIFO を備えた UART モジュールの場合、対応する IFSx レジスタの対応する UxRXIF フラグビットをクリアすれば割り込みをクリアできます。

    8 段 FIFO を備えた UART モジュールでは、URXISEL 制御ビットで定義した割り込み条件が「真」である限り UxRXIF フラグビットはアサートされ続けます。つまり、これらのモジュールの割り込みをクリアするには、URXISEL 制御ビットで定義した割り込み条件が「真」ではなくなった事をユーザ アプリケーションで確認してから、対応する UxRXIF フラグビットをクリアする必要があります。

    Note: 受信シフトレジスタ (UxRSR) はデータメモリ内に配置されないため、ユーザ アプリケーションからはアクセスできません。

    Note: 受信FIFO内のデータはOERRビットをクリアする前に読み出す必要があります。OERR ビットをクリアすると FIFO はリセットされるため、バッファ内の全てのデータが失われます。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-21

  • PIC32 ファミリ リファレンス マニュアル

    URXDA および UxRXIF ビットは UxRXREG レジスタのステータスを示し、RIDLE ビット(UxSTA) は UxRSR レジスタのステータスを示します。RIDLE ビットは、レシーバがアイドル (UxRSRレジスタがエンプティ)になるとセットされる読み出し専用ビットです。このビットには割り込みは関連付けられていません。従ってユーザ アプリケーションはこのビットをポーリングする事によって UxRSR がアイドル中であるかどうかを判定する必要があります。 URXDA ビット (UxSTA) は受信バッファがエンプティかどうかを示す読み出し専用ビットです。このビットは、受信バッファ内に読み出し可能なキャラクタが 1 つ存在していればセットされます。

    図 21-7 に UART レシーバのブロック図を示します。

    図 21-7: UART レシーバのブロック図 (1)

    RX8 FIFO Slot(1)

    Load UxRSR

    UxMODE

    Receive Buffer Control– Generate Flags– Generate Interrupt

    UxRXIF

    UxRX Receive Shift RegisterControlSignals

    Baud Clockfrom Baud RateGenerator

    UxSTA

    – Shift Data Characters

    to Buffer

    9

    (UxRSR) PE

    RR

    FER

    R

    32Internal Data Bus

    1

    0

    LPBACKFrom UxTX

    32 9 8 0

    Read

    BCLKx/UxRTS(2)

    UxCTS(2) SelectionUEN

    BCLKx

    UEN1 UEN0

    Divider

    UxRTS

    UxCTS

    Note 1: デバイスが 8 段 FIFO を実装しているかどうかは、デバイス データシート内の「UART」を参照してください。2: デバイスが UxRTS および UxCTS ピンを実装しているかどうかは、デバイス データシート内の「ピン配置図」を

    参照してください。

    RX4 FIFO Slot

    • Start bit Detect• Parity Check• Stop bit Detect• Shift Clock Generation• Wake Logic

    DS61107G_JP - p. 21-22 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.7.4 UART 受信のセットアップUART 受信のセットアップ手順は下記の通りです。1. UxBRG レジスタを適切な baud レートに初期化する (21.3「UART baud レート ジェネレー

    タ」参照 )。2. PDSEL(UxMODE) および STSEL (UxMODE) ビットでデータビット数、ス

    トップビット数、パリティを設定する。

    3. 割り込みが必要な場合、対応する割り込みイネーブル制御レジスタ (IEC) の UxRXIE ビットをセットする。対応する割り込み優先度制御レジスタ(IPC)のUxIPおよびUxIS制御ビットで受信割り込みの優先度と副優先度を定義する。さらに、URXISEL ビット (UxSTA) で受信割り込みモードを選択する。

    4. URXEN ビット (UxSTA) をセットして UART レシーバを有効にする。5. ON ビット (UxMODE) をセットして UART モジュールを有効にする。6. 受信割り込みは URXISEL 制御ビットの影響を受けます。受信割り込みを有効にしな

    い場合、ユーザ アプリケーションで URXDA ビット (UxSTA) をポーリングできます。UxRXIF ビットは、UART 受信割り込みをサービスするソフトウェア ルーチン内でクリアする必要があります。

    7. 受信バッファからデータを読み出す。9 ビット送信を選択している場合はワード読み出しを実行し、それ以外の場合はバイト読み出しを実行する。バッファ内にデータが存在すれば URXDA ビットがセットされる。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-23

  • PIC32 ファミリ リファレンス マニュアル

    21.8 UART による 9 ビット通信9 ビット データモードの UART レシーバは、マルチプロセッサ環境での通信に使います。9 ビットデータ モードで ADDEN ビット (UxSTA) をセットすると、レシーバは第 9 ビットが「0」にクリアされているデータを無視できます。

    21.8.1 マルチプロセッサ通信一般的なマルチプロセッサ通信プロトコルは、データバイトとアドレス / 制御バイトを区別します。一般的なスキームでは、データバイトがアドレスなのかデータ情報なのかを判別するために、第 9 データビットを使います。第 9 ビットがセットされていれば、そのデータをアドレスまたは制御情報として処理します。第 9 ビットがクリアされていれば、そのデータワードを先に受信したアドレス / 制御バイトに関連付けられたデータとして処理します。 プロトコルは下記のシーケンスで動作します。

    • マスタデバイスが第 9 ビットをセットしたデータワードを送信する。このデータワードは、スレーブデバイスのアドレスを格納したアドレスワードと見なされる。

    • 通信系統内の全てのスレーブデバイスがアドレスワードを受信し、スレーブアドレス値をチェックする。

    • アドレスワードによって指定されたスレーブデバイスは、マスタデバイスが送信する後続のデータバイトを受信して処理する。他の全てのスレーブデバイスは新たなアドレスワードを受信するまで後続のデータバイトを破棄する。

    21.8.1.1 ADDEN 制御ビットUART レシーバはアドレス検出モードを備えます。このモードでは、UART レシーバは第 9 ビットがクリアされているデータワードを無視します。このモードでは、第 9 ビットがクリアされているデータワードをバッファリングしないため、割り込みオーバーヘッドを低減できます。この機能は、ADDEN ビット (UxSTA) をセットすると有効になります。アドレス検出モードを使うには、UART を 9 ビットデータ モードに設定する必要があります。レシーバを 8 ビットデータ モードに設定した場合、ADDEN ビットは効果を持ちません。

    21.8.1.2 9 ビット送信モードのセットアップ9 ビット送信のセットアップ手順は 8 ビット送信モードと基本的に同じですが、PDSELビット (UxMODE) を「11」に設定するという点で異なります。UxTXREG レジスタへの書き込み ( 送信の開始 ) には、ワード書き込みを実行する必要があります。UART 送信のセットアップの詳細は 21.5.3「UART 送信のセットアップ」を参照してください。

    21.8.1.3 アドレス検出モードを使う 9 ビット受信のセットアップ9 ビット受信のセットアップ手順は 8 ビット受信モードと基本的に同じですが、PDSELビット (UxMODE) を「11」に設定するという点で異なります。UART 受信のセットアップの詳細は 21.7.4「UART 受信のセットアップ」を参照してください。URXISEL ビット (UxSTA) で受信割り込みモードを設定する必要があります。

    アドレス検出モードのセットアップ手順は下記の通りです。

    1. PDSEL ビット (UxMODE

  • セクション 21. UARTU

    AR

    T21

    図 21-8: アドレス検出を使う受信 (ADDEN = 1)

    Startbit bit 1bit 0 bit 8 bit 0Stopbit

    Startbit bit 8 Stop

    bitUxRX (pin)

    Read RcvBuffer Reg.UxRXREG

    UxRXIF(Interrupt Flag)

    Word 1UxRXREG

    bit 8 = 0, Data Byte bit 8 = 1, Address Byte

    Transferto Receive FIFO

    Note: このタイミング図では、データバイトの後にアドレスバイトが続きます。ADDEN = 1かつ bit 8 = 0であるため、データバイトは UxRXREG ( 受信バッファ ) に読み込まれません。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-25

  • PIC32 ファミリ リファレンス マニュアル

    21.9 ブレーク シーケンスWAKE ビット (UxMODE) を「1」にセットすると復帰機能が有効になります。このモードでは、モジュールがスタートビットとデータに続いて無効なストップビットを受信して FERRビットがセットされても、レシーバは有効なストップビットを受信するまで待機し、それまで次のスタートビットを受け付けません。つまり、モジュールは次のスタートビットをラインのブレーク条件であるとは見なしません。全てゼロを格納したキャラクタ (FERR ビットはセットされる ) をブレークと見なします。このブレーク キャラクタはバッファに転送されます。ストップビットを受信するまで、後続の受信は発生しません。WAKE ビットは、13 ビットのブレーク キャラクタの後にストップビットを受信した時点でクリアされます。ストップビットを受信すると、RIDLE が HIGH に遷移します。レシーバは、PDSEL (UxMODE) および STSEL (UxMODE) ビットで定義した値に基づいて特定数のビット時間をカウントして待機します。 ブレークが 13 ビット時間よりも長い場合、PDSEL および STSEL ビットが指定する数のビット時間が経過した時点で受信は完了したと見なします。URXDA および FERR ビットがセットされ、全てゼロのデータが受信 FIFO に読み込まれ、割り込みが生成されます。復帰機能を無効 (WAKE (UxMODE ) = 0) にすると、通常通りにブレークを受信します。全てのビットが「0」のキャラクタがバッファに転送されるとブレークと見なします (FERR ビットはセットされる )。

    21.10 初期化8 ビットモードのトランスミッタ / レシーバの初期化ルーチンを例 21-2 に示します。9 ビットアドレス検出モードのアドレス指定可能 UART の初期化ルーチンを例 21-3 に示します。どちらのサンプルコードでも、UxBGR レジスタに書き込む値は目標 baud レートとデバイス周波数によって決まります。

    例 21-2: 8 ビット送信 / 受信 (UART1)

    例 21-3: 8 ビット送信 / 受信、アドレス検出有効

    U1BRG= BaudRate; // Set Baud rate

    U1STA= 0;U1MODE= 0x8000; // Enable UART for 8-bit data

    // No Parity, 1 Stop bitU1STASET = 0x1400; // Enable Transmit and Receive

    U1BRG= BaudRate; // Set Baud rate

    U1MODE= 0x8006; // Enable UART for 9-bit data// No Parity, 1 Stop bit

    U1STA= 0x1211420; // Address detect enabled // Device Address = 0x21 // Enable Automatic Address Detect mode // Enable Transmit and Receive

    DS61107G_JP - p. 21-26 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.11 その他の UART 機能

    21.11.1 ループバック モードの UARTLPBACK ビット (UxMODE) をセットするとループバック モードが有効になり、UxTX 出力は内部で UxRX 入力に接続されます。ループバック モードに設定すると、UxRX ピンは内部のUART 受信ロジックから切り離されますが、UxTX ピンは通常通りに機能します。ループバック モードは下記の手順で選択します。1. UART を適当な動作モードに設定する (21.5.3「UART 送信のセットアップ」参照 )。2. 送信を有効にする (21.5「UART トランスミッタ」参照 )。3. LPBACK (UxMODE) ビットを「1」にセットしてループバック モードを有効にする。表 21-2 に、UEN ビットの設定とループバック モード動作の関係を示します。

    表 21-2: ループバック モードのピン機能UEN ピン機能、LPBACK = 1(1)

    00 UxRX 入力を UxTX に接続するUxTX ピンは機能するUxRX ピンを無視するUxCTS/UxRTS は未使用 (2)

    01 UxRX 入力を UxTX に接続するUxTX ピンは機能するUxRX ピンを無視するUxRTS ピンは機能する (2)UxCTS は未使用 (2)

    10 UxRX 入力を UxTX に接続するUxTX ピンは機能するUxRX ピンを無視するUxRTS ピンは機能する (2)UxCTS 入力を UxRTS に接続する (2)UxCTS ピンを無視する (2)

    11 UxRX 入力を UxTX に接続するUxTX ピンは機能するUxRX ピンを無視するBCLKx ピンは機能するUxCTS/UxRTS は未使用 (2)

    Note 1: LPBACK ビットは、UART モジュールに関連する他のビットを有効にした後に「1」にセットする必要があります。

    2: デバイスが UxCTS および UxRTS ピンを実装しているかどうかは、デバイス データシート内の「ピン配置図」を参照してください。

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-27

  • PIC32 ファミリ リファレンス マニュアル

    21.11.2 baud レート自動検出機能のサポート ABAUD ビット (UxMODE) をセットすると、システムによる受信キャラクタ baud レートの検出が可能になります。baud レート自動検出機能を有効 (ABAUD = 1) にすると、UART はスタートビットを受信した時点で baud レート自動計測シーケンスを開始します。計算は平均値です。この機能は、自動復帰機能を無効 (WAKE = 0) にしている場合にのみ有効です。また、baud レート自動検出機能を使う場合、LPBACK (UxMODE) ビットを「0」にクリアする必要があります。ABDEN ビットをセットすると BRG カウンタ値がクリアされ、スタートビットを待機します。この場合、スタートビットは HIGH から LOW への遷移に続く LOW から HIGHへの遷移として定義されます。

    baud レート自動検出機能でビットレートを正しく算出するには、スタートビットの次に ASCIIキャラクタ 「U」(0x55) を受信する必要があります。入力信号の非対称性による影響を最小限に抑えるため、LOW ビット時間と HIGH ビット時間の両方で計測を行います。スタートビットの最後 ( 立ち上がりエッジ ) で、BRG カウンタは FPB/8 クロックを使ってカウントアップを始めます。UxRX ピンの 5 番目の立ち上がりエッジで、 所定の BRG 周期中の BRG カウンタ積算値が UxBRG レジスタに転送されます。ABAUD ビットは自動的にクリアされます。シーケンスが完了する前にユーザ アプリケーションが ABAUD ビットをクリアした場合、予期せぬモジュールの挙動が生じる可能性があります。図 21-1 の ABD シーケンスを参照してください。

    図 21-9: baud レートの自動計算

    baud レート自動検出シーケンスの実行中、UART ステートマシンはアイドル状態に保持されます。UxRXIF 割り込みは、URXISEL ビットの設定に関係なく、5 番目の UxRX 立ち上がりエッジでセットされます。受信 FIFO は更新されません。

    21.11.3 ブレーク直後の baud レート検出シーケンスブレークを検出した直後にbaudレート自動検出が発生するようモジュールを設定できます。これを行うには、ABAUD ビット (UxMODE) と WAKE ビット (UxMODE) をセットします。図 21-10 に、ブレーク検出直後の baud レート自動検出シーケンスを示します。WAKE ビットの設定は ABAUD ビットの設定よりも優先されます。

    baud レート自動検出シーケンス中は、UART トランスミッタを使えません。また、ユーザは、送信シーケンスの実行中に ABAUD ビットがセットされる事態を防ぐ必要があります。ABUDビットがセットされた場合の UART モジュールの挙動は予測できません。

    BRG Counter

    UxRX

    ABAUD bit

    bit 0 bit 1

    BRG Clock

    Start

    Auto-ClearedSet by User

    XXXXh 0000h

    Edge 1bit 2 bit 3Edge 2

    bit 4 bit 5Edge 3

    bit 6 bit 7Edge 4

    Stop bitEdge 5

    001Ch

    BRG Register XXXXh 001Ch

    UxRXIF

    Note: ABAUD ビットと WAKE ビットを両方ともセットしておくと、ブレーク キャラクタの次のバイトで baud レート自動検出が発生します。ユーザは、受信キャラクタの baudレートが選択した UxBRGクロック源で生成可能なレンジ内である事を確認する必要があります。

    DS61107G_JP - p. 21-28 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    図 21-10: ブレーク検出直後の baud レート自動検出シーケンス

    Start bit 0 bit 7 Stop

    Idle Break Detect Auto-Baud Rate Detect Idle

    SynchronizationSynchronization

    Auto-Cleared

    Auto-ClearedSet by User

    Set by User

    Q1

    UxRX

    WAKE bit

    ABAUD bit

    UxRXIF

    UART Mode

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-29

  • PIC32 ファミリ リファレンス マニュアル

    21.12 UxCTS および UxRTS 制御ピンの動作UxCTS (送信クリア)およびUxRTS (送信要求)ピンは、UARTモジュールに割り当てられたハードウェア制御ピンです。これら 2 つのピンにより、UART はフロー制御モードと片方向モードで動作できます (21.12.2「フロー制御モードにおける UxRTS ピンの機能」と 21.12.3「片方向モードにおける UxRTS ピンの機能」参照 )。これらのピンは UART とデータ端末装置 (DTE)間の送受信を制御します。

    21.12.1 UxCTS ピンの機能UART の動作中に UxCTS ピンは送信を制御するための入力として機能します。このピンは別のデバイス ( 一般的に PC) により制御されます。UxCTS ピンの設定には UEN ビット(UxMODE) を使います。UEN = 10の場合、UxCTS ピンは入力ピンとして設定されます。UxCTS = 1の場合、トランスミッタは送信シフトレジスタにデータを転送しますが、送信を開始しません。これにより、DTE は DTE 側の要件に応じてコントローラからのデータを制御および受信できます。

    UxCTS ピンは、送信データの変化 (16 baud クロックの開始時 ) に同期してサンプリングされます。送信は UxCTS ピンの状態が LOW としてサンプリングされた時にのみ始まります。UxCTSピンは周辺モジュール用バスクロック (PBCLK) を使って内部でサンプリングされます。従って、UxCTS ピンの最小パルス幅は 1 周辺モジュール用クロックです。しかし、FPB は使用するクロックによって異なるため、最小パルス幅を 1 つの仕様値として定める事はできません。 ユーザ アプリケーションは、対応するポートピンを読み出す事によって UxCTS ピンの状態を読み出す事もできます。

    21.12.2 フロー制御モードにおける UxRTS ピンの機能フロー制御モードでは、DTE の UxRTS ピンを PIC32 の UxCTS ピンに接続し、DTE の UxCTSピンを PIC32 の UxRTS ピンに接続します ( 図 21-11 参照 )。 UxRTS 信号は、デバイスがデータを受信可能な状態であるかどうかを示します。UEN =01または 10の場合、UxRTS は出力として駆動されます。レシーバがデータ受信可能状態であれば、UxRTS ピンはアサート (LOW に駆動 ) されます。デバイスがフロー制御モード中かつRTSMD (UxMODE) = 0の場合、受信バッファがフルではないかOERRビット (UxSTA)がセットされていなければ UxRTS ピンは LOW に駆動されます。RTSMD ビット = 0の場合、デバイスが受信可能状態ではない時 ( 受信バッファがフルまたはシフト中 ) に UxRTS ピンはHIGH に駆動されます。レシーバの FIFO 内に 2 キャラクタ以上の空き位置が存在する場合、UxRTS ピンはアサート (LOW に駆動 ) されます。DTE の UxRTS ピンは PIC32 の UxCTS ピンに接続されており、DTE がデータ受信可能状態になると DTE の UxRTS ピンが PIC32 の UxCTS ピンを LOW に駆動します。データ送信は、UxCTS ピンが LOW に遷移すると始まります (21.12.1「UxCTS ピンの機能」参照 )。

    図 21-11: DTE-DTE 向けの UxRTS/UxCTS フロー制御 (RTSMD = 0、フロー制御モード )

    Note: デバイスが UxCTS および UxRTS ピンを実装しているかどうかは、デバイス データシート内の「ピン配置図」を参照してください。

    UxRTS UxRTS

    UxCTS UxCTS

    DTETypically a PC

    DTETypically Another System or Microcontroller

    I am ready to receive

    I will transmit if OK

    I am ready to receive

    I will transmit if OK

    DS61107G_JP - p. 21-30 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    21.12.3 片方向モードにおける UxRTS ピンの機能片方向モードでは、DCE の UxRTS ピンを PIC32 の UxRTS ピンに接続し、DCE の UxCTS ピンを PIC32 の UxCTS ピンに接続します ( 図 21-12 参照 )。 片方向モードでは、UxRTS 信号は DTE が送信可能状態であるかどうかを示します。受信可能状態の DCE は、UxRTS 信号に対して有効な UxCTS 信号で応答します。DTE は有効な UxCTS信号を受信すると送信を始めます。

    図 21-13 に示すように、片方向モードは IEEE-485 システムでトランスミッタを有効にする際にも使います。UxRTS 信号によって DTE が送信可能状態である事が示されると、ドライバが有効になります。

    UxRTS ピンは出力として設定され、UEN = 01または 10の場合に駆動されます。RTSMD = 1の場合、送信可能なデータが存在 (TRMT = 0) すれば UxRTS ピンがアサート (LOW に駆動 ) されます。RTSMD = 1の場合、トランスミッタがエンプティ (TRMT = 1) であれば UxRTS ピンはネゲート (HIGH に駆動 ) されます。

    図 21-12: DTE-DCE 向けの UxRTS/UxCTS ハンドシェイク (RTSMD = 1、片方向モード )

    図 21-13: IEEE-485 システム向けの UxRTS/UxCTS バス有効化 (RTSMD = 1)

    UxRTS UxRTS

    UxCTS UxCTS

    DTE(Typically a Microcontroller)

    DCE(Typically a Modem)

    May I send something?

    UxRTS active and receiver ready.

    I will transmit if okay. OK, go ahead and send.

    UxRTS

    UxCTS

    DTE(Typically a Microcontroller)

    May I transmit something?

    I will transmit if okay.

    UxTX

    UxRX

    D

    R

    BA

    TTL to RS-485Transceiver

    Integrated CKT

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-31

  • PIC32 ファミリ リファレンス マニュアル

    21.13 赤外線サポートUART モジュールは下記の 2 種類の赤外線 UART をサポートします。 • 外部 IrDA エンコーダ / デコーダデバイスをサポートする IrDA クロック出力 ( レガシーのモ

    ジュール サポート )

    • 完全内蔵 IrDA エンコーダ / デコーダ

    21.13.1 外部 IrDA サポート – IrDA クロックの出力外部の IrDA エンコーダ / デコーダ デバイスをサポートするため、BCLKx ピンで 16x baud クロックを生成できます。UEN = 11に設定して UART モジュールを有効にすると、BCLKxピンは 16x baud クロックを出力します。これを使って IrDA コーデック チップをサポートできます。

    21.13.2 内蔵 IrDA エンコーダ / デコーダUART モジュールは、機能を完備した IrDA エンコーダ / デコーダを内蔵しています。内蔵 IrDAエンコーダ / デコーダ機能は、IREN ビット (UxMODE) を使って有効にします。この機能を有効 (IREN = 1) にすると、受信ピン (UxRX) は赤外線レシーバからの入力として機能し、送信ピン (UxTX) は赤外線トランスミッタへの出力として機能します。

    21.13.2.1 IrDA エンコーダの機能このエンコーダは UART からシリアルデータを取得し、下記の方法でデータを置換します。 • ビットデータ「1」の送信は、16x baud クロックの全 16 クロックで「0」としてエンコード

    されます。

    • ビットデータ「0」の送信は、16x baud クロックの先頭から 7 クロックで「0」、次の 3 クロックで「1」、残りの 6 クロックで「0」としてエンコードされます。

    詳細は図 21-14 と図 21-16 を参照してください。

    21.13.2.2 IrDA 送信の極性IrDA 送信極性の選択には UTXINV ビット (UxSTA) を使います。このビットは、IrDA エンコーダ / デコーダを有効 (IREN = 1) にしている場合にのみモジュールに影響します。通常の送受信を行う場合、UTXINV ビットはレシーバまたはモジュールの動作に影響しません。UTXINV = 0の場合、UxTX ラインのアイドル状態は「0」です ( 図 21-14 参照 )。UTXINV = 1の場合、UxTXラインのアイドル状態は「1」です ( 図 21-15 参照 )。

    図 21-14: IrDA® エンコード スキーム

    図 21-15: 「0」ビットデータの IrDA® エンコード スキーム

    Note: この機能が利用可能かどうかは、デバイス データシート内の「UART」を参照してください。

    UxTX Data

    UxTX

    UxTX Data

    UxTX

    DS61107G_JP - p. 21-32 © 2013 Microchip Technology Inc.

  • セクション 21. UARTU

    AR

    T21

    図 21-16: 16x baud クロックにおける「0」ビットデータの IrDA® エンコード スキーム

    21.13.2.3 IrDA デコーダの機能デコーダは UxRX ピンからシリアルデータを取得し、そのデータをデコード データストリームに置換します。データストリームは、UxRX 入力の立ち下がりエッジの検出に基づいてデコーディングされます。

    UxRX 入力で立ち下がりエッジが検出されるたびに、デコードデータは 16x baud クロックの16 クロックの間 LOW に駆動されます。この 16 クロックが終わる前に次の立ち下がりエッジを検出すると、デコードデータは次の 16 クロックでも LOW を維持します。16 クロック中に立ち下がりエッジが検出されないと、デコードデータは HIGH に駆動されます。デバイスに入力されるデータストリームは、実際のメッセージソースから 16x baud クロックの 7 ~ 8 クロック シフトします。1 クロック分の変動はクロックのエッジ分解能に起因します( 詳細は図 21-17 参照 )。

    図 21-17: IrDA® デコードスキーム

    21.13.2.4 IrDA 受信の極性IrDA信号入力の極性は反転できます。反転しても同じロジックで信号をデコードできますが、この場合、デコード データストリームは、元のメッセージソースから 16x baud クロックの10 ~ 11 クロック シフトします。この場合の 1 クロック分の変動も、クロックのエッジ分解能に起因します ( 詳細は図 21-18 参照 )。

    図 21-18: 極性を反転したデコーディング結果

    Start ofStart of

    ‘0’ Transmit bit16x Baud Clock

    UxTX Data

    UxTX8th Period 11th Period

    16

    Start BRG Tirdel

    Before IrDA® Encoder

    UxRX

    Decoded Data

    (Transmitting Device)

    Periods16

    Periods16

    Periods16

    Periods16

    Periods

    Start BRG Tirdeli

    Before IrDA® Encoder

    UxRX

    Decoded Data

    (Transmitting Device)

    16Periods

    16Periods

    16Periods

    16Periods

    16Periods

    © 2013 Microchip Technology Inc. DS61107G_JP - p. 21-33

  • PIC32 ファミリ リファレンス マニュアル

    21.13.2.5 クロックのジッタジッタまたはデバイス間の微小な周波数差の影響により、16x baud クロックの 16 クロック中に次の立ち下がりビットエッジが検出されない場合があります。この場合、1 クロック幅のパルスがデコード データストリームに発生します。UART はビットの中心付近で多数決検出を行うため、このような場合でもデータには問題を生じません ( 詳細は図 21-19 参照 )。

    図 21-19: クロックジッタによって連続するゼロ状態の間でパルスが発生した例

    21.14 割り込みUART モジュールは、データ通信中に発生するイベントに応じて下記の割り込みを生成できます。

    • レシーバデータ読み出し可能割り込み (UxRXIF がセットされる )このイベントは URXISEL 制御ビット (UxSTA) の設定に基づいて発生します。詳細は 21.7.3「受信割り込み」を参照してください。

    • トランスミッタ バッファ エンプティ割り込み (UxTXIF がセットされる )このイベントは UTXISEL 制御ビット (UxSTA) の設定に基づいて発生します。詳細は 21.5.2「送信割り込み」を参照してください。

    • UART エラー割り込み (UxEIF がセットされる )このイベントは下記のいずれかの場合に発生します。 - パリティエラー PERR (UxSTA) を検出した - フレーミング エラー FERR (UxSTA) を検出した- 受信バッファのオーバーフロー条件 OERR (UxSTA) が発生した

    これらの割り込みフラグは全てソフトウェアでクリアする必要があります。詳細は 21.5.2「送信割り込み」と 21.7.3「受信割り込み」を参照してください。下記の各 UART 割り込みイネーブルビットをセットすると、UART デバイスは割り込み要因として有効になります。

    • UxRXIE• UxTXIE• UxEIE下記の割り込み優先度ビットと割り込み副優先度ビットを設定する必要があります。

    • UxIP (IPC6)、UxIS (IPC6)優先度および副優先度ビットの詳細は『セクション 08. 割り込み』(DS61108) を参照してください。

    21.15 I/O ピンの制御ON ビット (UxMODE)、UTXEN ビット (UxSTA)、URXEN ビット (UxSTA) をセットして UART モジュールを有効にすると、TRIS および LATCH レジスタビットの設定はオーバーライドされ、UART モジュールは UEN ビット (UxMODE) の定義に従ってI/O ピンを制御します。UxTX は出力に設定され、UxRX は入力に設定されます。また、UxCTS および UxRTS を有効にすると、UxCTS ピンは入力として設定され、UxRTS/BLCKx ピンは UxRTS 出力として機能します。BLCKx を有効にすると、UxRTS/BLCKx 出力は 16x baud クロック出力を駆動します。

    Extra Pulse will be Ignored

    UxRX (rx_in)

    Decoded Data

    16Periods

    16Periods

    DS61107G_