セクション 31. dma コントローラ - microchip...

54
© 2013 Microchip Technology Inc. DS61117G_JP - p. 31-1 DMA コントローラ 31 セクション 31. DMA コントローラ ハイライト 本セクションには以下の主要項目を記載しています。 31.1 はじめに....................................................................................................................... 31-2 31.2 ステータス / 制御レジスタ........................................................................................... 31-6 31.3 動作モード ................................................................................................................. 31-29 31.4 チャンネルの制御 ...................................................................................................... 31-40 31.5 割り込み..................................................................................................................... 31-45 31.6 省電力モードとデバッグモード中の動作 .................................................................. 31-47 31.7 各種リセットの影響................................................................................................... 31-47 31.8 関連アプリケーション ノート ................................................................................... 31-48 31.9 改訂履歴..................................................................................................................... 31-49 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Upload: others

Post on 29-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • DM

    Aコ

    ント

    ロー

    31

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

    セクション 31. DMA コントローラ

    ハイライト

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

    31.1 はじめに....................................................................................................................... 31-231.2 ステータス / 制御レジスタ........................................................................................... 31-631.3 動作モード ................................................................................................................. 31-2931.4 チャンネルの制御 ...................................................................................................... 31-4031.5 割り込み..................................................................................................................... 31-4531.6 省電力モードとデバッグモード中の動作 .................................................................. 31-4731.7 各種リセットの影響................................................................................................... 31-4731.8 関連アプリケーション ノート ................................................................................... 31-4831.9 改訂履歴..................................................................................................................... 31-49

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-1

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

    31.1 はじめにダイレクトメモリ アクセス (DMA) コントローラは、CPU を介さずに周辺モジュール間のデータ転送を可能にするバスマスタ モジュールです。メモリに配置された全ての PIC32 内蔵モジュールは、DMA 転送のソースにもデスティネーションにもなる事ができます。例えば、メモリや周辺バス (PBUS) デバイス (SPI、UART 等 ) がこれに該当します。DMA モジュールの主な特長は以下の通りです。• 最大 8 チャンネルを提供 ( チャンネル数はデバイスによって異なる。各チャンネルは同一機

    能を持ち、下記を備える )- 自動的にインクリメントするソースおよびデスティネーション アドレスレジスタ- ソースおよびデスティネーション ポインタ

    • 最大 64 Kbyte の割り込みなしデータ転送をサポート ( デバイスによって異なる )• 柔軟なデータ転送

    - バイトレベルの最小転送サイズ- ワード境界制約のないソースおよびデスティネーション

    • 固定優先度のチャンネル調停• 柔軟な DMA チャンネル動作モード

    - 手動 ( ソフトウェア ) または自動 ( 割り込み ) DMA 要求- ワンショットまたは自動再送ブロック転送モード- チャンネルを連係するチャンネル チェーンモード

    • 柔軟な DMA 要求- DMA 要求源として任意の周辺モジュール割り込み要因を選択可能- チャンネルごとの DMA 要求源として任意の割り込みを選択可能- DMA 転送中止要求源として任意の周辺モジュール割り込み要因を選択可能- データパターン一致時に自動的に転送を終了可能

    • 各種の DMA チャンネル ステータス割り込み- DMA チャンネル ブロック転送完了- ソース エンプティまたは 1/2 エンプティ- デスティネーション フルまたは 1/2 フル- 外部イベントによる DMA 転送中止- 無効な DMA アドレス生成

    • 下記情報を提供する DMA デバッグ サポート機能- DMA チャンネルが直前にアクセスしたアドレス- 直前にデータを転送した DMA チャンネル

    • CRC 生成モジュール- 任意のチャンネルに割り当て可能- ソースから読み出したデータのバイト順を変更可能 ( 一部デバイスのみ )- 柔軟に構成可能- CRC 計算

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

    本書の内容がお客様のご使用になるデバイスに対応しているかどうかは、最新デバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」の冒頭に記載している注意書きでご確認ください。

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

    DS61117G_JP - p. 31-2 © 2013 Microchip Technology Inc.

    http://www.microchip.com

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    DMA コントローラは下記の特長も備えます。• ソースとデスティネーションのサイズを別々に設定可能• メモリ - メモリ間の転送• メモリ - 周辺モジュール間の転送• チャンネルの自動有効化• イベントによる転送の開始 / 停止• パターンマッチ検出• チャンネル チェーンモード

    31.1.1 DMA 動作DMA チャンネルは、CPU を介さずにソースからデスティネーションへデータを転送します。ソースとデスティネーションの開始アドレスは別々に定義します。

    ソースとデスティネーションのサイズも別々に設定でき、転送するバイト数はソースおよびデスティネーションのサイズとは無関係です。 転送はソフトウェアまたは割り込み要求によって開始できます。ユーザは DMA 転送の開始用にデバイス上の任意の割り込みを選択できます。

    転送が始まると、DMA コントローラはセル転送 ( サイズはセルサイズ レジスタで定義 ) を実行し、ブロックの全てのバイト ( サイズはソースまたはデスティネーション サイズのどちらか大きい方 ) の転送が完了するまでチャンネルは無効になりません。チャンネルが無効になると、次に有効になるまで後続の転送は行えません。

    DMA チャンネルは、ソースとデスティネーション用に別々のポインタを使って、現在のワード位置を保持します。

    ソース / デスティネーション ポインタが 1/2 サイズに達するか、ソース / デスティネーションカウンタが終端に達した時点で割り込みを生成できます。

    DMA 転送はソフトウェア、パターンマッチ、任意の割り込みイベントのいずれかによって中止できます。転送はアドレスエラー検出時にも停止します。

    図 31-1 に、代表的な DMA 転送を示します。この例では、最初にソースのサイズ (DCHxSSIZ)とデスティネーションのサイズ (DCHxDSIZ)をそれぞれ4バイトと2バイトに設定しています。これにより、ブロック転送のサイズは 4 バイトとなります。次にソースレジスタ (DCHxSSA)とデスティネーション レジスタ (DCHxDSA) に開始アドレスを設定します。ソースアドレスは、配列名付きバッファの SRAM 物理アドレスです。デスティネーション アドレスは、PMDIN(PMP 出力バッファ ) の物理メモリアドレスです。セルサイズ (DCHxCSIZ) は 2 バイトに設定します。つまり、4 バイトのブロック転送は 2 回の 2 バイトセル転送によって完了します。DMA転送の開始イベントは「PMP 書き込み」に設定しています。つまり、PMP 書き込みが発生するとセル転送が始まります。DCHxCON レジスタの CHAEN ビットを「1」にセットする事で、ブロック転送完了後も DMA チャンネルを自動的に有効にできます。DCHxECON レジスタのCFORCE ビットに「1」を書き込む事で、DMA 転送を手動で開始できます。チャンネルを自動的に有効にする場合、ブロック転送が終了すると、次のブロック転送の最初のセル転送を開始する前に、全てのチャンネルレジスタが初期設定状態にリセットされます。チャンネルを自動的に有効にしない場合、ブロック転送が終了すると DMA チャンネルは無効になります。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-3

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

    図 31-1: ソースからデスティネーションへの代表的な DMA 転送

    Source Size (DCHxSSIZ) = 4 bytesSource Address (DCHxSSA) = _VirtToPhys(&Buffer[0])

    Destination Size (DCHxDSIZ) = 2 bytesDestination Address (DCHxDSA) = _VirtToPhys(&PMDIN)

    Cell Size (DCHxCSIZ) = 2 bytesTransfer Event (DCHxECON bits (CHSIRQ)) = PMP Write

    Cell Transfer 1

    PMP Write Event

    PMP Write Event

    Yes

    No

    DMA Disabled

    Block Transfer

    PMP1 2 3 4 1 2

    Cell Transfer 2

    PMPSRAM1 2 3 4 3 4

    Auto-enable(CHAEN bit = 1)

    Force (set CFORCE = 1) Transfer Event (PMP Inactive)

    Note: _VirtToPhys関数は一例であり、これに限定されません。

    DS61117G_JP - p. 31-4 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    図 31-2: DMA モジュールのブロック図

    Channel 0 Control

    Channel 1 Control

    Channel n Control

    SEL

    SEL

    Y

    I0

    I1

    I2

    In

    INT

    PIC32 CPU

    IS DS DMA

    Global Control(DMACON)

    Priority Interrupt Controller

    Bus Matrix

    Flash Memory Data RAMPeripheral

    Prio

    rity

    Arb

    itrat

    ion

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-5

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

    31.2 ステータス / 制御レジスタ

    DMA モジュールは下記の特殊機能レジスタ (SFR) を備えます。• DMACON: DMA コントローラ制御レジスタ

    このレジスタは、対応する DMA チャンネルを設定します。

    • DMASTAT: DMA ステータス レジスタこのレジスタは、直前に発生した読み出しまたは書き込み転送のステータスを格納します。

    • DMAADDR: DMA アドレスレジスタこのレジスタは、直前の DMA 転送のアドレスを格納します。

    • DCRCCON: DMACRC 制御レジスタこのレジスタは、DMA の CRC を制御します。

    • DCRCDATA: DMA CRC データレジスタこのレジスタは、CRC ジェネレータの初期値を設定します。このレジスタへの書き込みはCRC ジェネレータをシードします。このレジスタからの読み出しは CRC の現在の値を返します。

    • DCRCXOR: DMA CRCXOR イネーブル レジスタこのレジスタは、CRC 計算用の生成多項式を定義します。

    • DCHxCON: DMA チャンネル x 制御レジスタこのレジスタは、対応する DMA チャンネルのコンフィグレーションを制御します。

    • DCHxECON: DMA チャンネル x イベント制御レジスタこのレジスタは、対応する DMA チャンネルのイベントを制御します。

    • DCHxINT: DMA チャンネル x 割り込み制御レジスタこのレジスタは、対応する DMA チャンネルの DMA 割り込みを制御します。

    • DCHxSSA: DMA チャンネル x ソース開始アドレスレジスタこのレジスタは、対応する DMA チャンネルのソース開始アドレスを設定します。

    • DCHxDSA: DMA チャンネル x デスティネーション開始アドレスレジスタこのレジスタは、対応する DMA チャンネルのデスティネーション開始アドレスを設定します。

    • DCHxSSIZ: DMA チャンネル x ソース サイズレジスタこのレジスタは、対応する DMA チャンネルのソースサイズを設定します。

    • DCHxDSIZ: DMA チャンネル x デスティネーション サイズレジスタこのレジスタは、対応する DMA チャンネルのデスティネーション サイズを設定します。

    • DCHxSPTR: DMA チャンネル x ソース ポインタレジスタこのレジスタは、対応する DMA チャンネルのソースの現在位置のアドレスを格納します。

    • DCHxDPTR: DMA チャンネル x デスティネーション ポインタレジスタこのレジスタは、対応する DMA チャンネルのデスティネーションの現在位置のアドレスを格納します。

    • DCHxCSIZ: DMA チャンネル x セルサイズ レジスタこのレジスタは、対応する DMA チャンネルのイベントあたりの転送可能バイト数を設定します。

    • DCHxCPTR: DMA チャンネル x セルポインタ レジスタこのレジスタは、対応する DMA チャンネルの直前のイベントから現在までに転送されたバイト数をカウントします。

    • DCHxDAT: DMA チャンネル x パターンデータ レジスタこのレジスタは、対応する DMA チャンネルのパターンマッチに使用する値を格納します。データがこの値に一致した時点で転送を終了させる事ができます。

    Note: PIC32 の各デバイスは 1 つまたは複数の DMA チャンネルを備えます。制御 / ステータスビット、レジスタの名前に含まれる添え字「x」はチャンネルの番号を表します。詳細は各デバイス データシート内の「ダイレクトメモリ アクセス コントローラ」を参照してください。

    DS61117G_JP - p. 31-6 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    表 31-1 に、DMA モジュールに関連するレジスタをまとめて示します。各レジスタの詳細な説明は、この表の後に記載しています。

    表 31-1: DMA レジスタのまとめ アドレスオフセット

    レジスタ名ビットレンジ

    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

    0x00 DMACON(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 ON — — SUSPEND DMABUSY(2) — — —

    7:0 — — — — — — — —

    0x10 DMASTAT 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 — — — — — DMAWCH(3)

    7:0 — — — — RDWRDMARCH(3)

    DMACH(3)

    0x20 DMAADDR 31:24 DMAADDR

    23:16 DMAADDR

    15:8 DMAADDR

    7:0 DMAADDR

    0x30 DCRCCON(1) 31:24 — — BYTO1(2) BYTO0(2) WBO(2) — — BITO(2)

    23:16 — — — — — — — —

    15:8 — — — PLEN(3)

    7:0 CRCEN CRCAPP CRCTYP(2) — — CRCCH(3)

    0x40 DCRCDATA(1) 31:24 DCRCDATA(3)

    23:16 DCRCDATA(3)

    15:8 DCRCDATA(3)

    7:0 DCRCDATA(3)

    0x50 DCRCXOR(1) 31:24 DCRCXOR(3)

    23:16 DCRCXOR(3)

    15:8 DCRCXOR(3)

    7:0 DCRCXOR(3)

    0x60 DCHxCON(1) 31:24 CHPIGN

    23:16 — — — — — — — —

    15:8 CHBUSY(2) — CHPIGNEN — CHPATLEN — — CHCHNS

    7:0 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI

    0x70 DCHxECON(1) 31:24 — — — — — — — —

    23:16 CHAIRQ

    15:8 CHSIRQ

    7:0 CFORCE CABORT PATEN SIRQEN AIRQEN — — —

    0x80 DCHxINT(1) 31:24 — — — — — — — —

    23:16 CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE

    15:8 — — — — — — — —

    7:0 CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF

    凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記Note 1: このレジスタに対応するクリア / セット / 反転レジスタのアドレスは、それぞれ 0x4 / 0x8 / 0xC バイトオフセットしています。これら

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

    2: 一部のデバイスではこのビットを利用できません。ご使用になるデバイスの DMA チャンネル数については、デバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    3: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-7

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

    0x90 DCHxSSA(1) 31:24 CHSSA

    23:16 CHSSA

    15:8 CHSSA

    7:0 CHSSA

    0xA0 DCHxDSA 31:24 CHDSA

    23:16 CHDSA

    15:8 CHDSA

    7:0 CHDSA

    0xB0 DCHxSSIZ(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHSSIZ(3)

    7:0 CHSSIZ(3)

    0xC0 DCHxDSIZ(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHDSIZ(3)

    7:0 CHDSIZ(3)

    0xD0 DCHxSPTR 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHSPTR(3)

    7:0 CHSPTR(3)

    0xE0 DCHxDPTR 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHDPTR(3)

    7:0 CHDPTR(3)

    0xF0 DCHxCSIZ(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHCSIZ(3)

    7:0 CHCSIZ(3)

    0x100 DCHxCPTR 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHCPTR(3)

    7:0 CHCPTR(3)

    0x110 DCHxDAT(1) 31:24 — — — — — — — —

    23:16 — — — — — — — —

    15:8 CHPDAT

    7:0 CHPDAT

    表 31-1: DMA レジスタのまとめ ( 続き ) アドレスオフセット

    レジスタ名ビットレンジ

    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

    凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記Note 1: このレジスタに対応するクリア / セット / 反転レジスタのアドレスは、それぞれ 0x4 / 0x8 / 0xC バイトオフセットしています。これら

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

    2: 一部のデバイスではこのビットを利用できません。ご使用になるデバイスの DMA チャンネル数については、デバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    3: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    DS61117G_JP - p. 31-8 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-1: DMACON: DMA コントローラ制御レジスタビットレンジ

    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 U-0 R/W-0 R/W-0 U-0 U-0 U-0

    ON — — SUSPEND DMABUSY(1) — — —

    7:0U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

    — — — — — — — —

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15 ON: DMA ON ビット

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

    bit 14-13 未実装 :「0」として読み出しbit 12 SUSPEND: DMA サスペンドビット

    1 = DMA 転送をサスペンドして CPU からデータバスへの連係したアクセスを許可する0 = DMA は通常動作する

    bit 11 DMABUSY: DMA モジュール ビジービット (1)

    1 = DMA モジュールはアクティブ0 = DMA モジュールは無効でありデータを転送中ではない

    bit 10-0 未実装 :「0」として読み出し

    Note 1: 一部のデバイスではこのビットを利用できません。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-9

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

    レジスタ 31-2: DMASTAT: DMA ステータス レジスタビットレンジ

    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 R-0 R-0 R-0

    — — — — — DMAWCH(1)

    7:0

    U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0

    — — — — RDWR(1)DMARCH(1)

    DMACH(1)

    凡例 :

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

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

    bit 31-11 未実装 :「0」として読み出しbit 10-8 DMAWCH: DMA 書き込みチャンネルビット (1)

    これらのビットは、直前にアクティブであった DMA 書き込みチャンネルの番号を格納します。bit 7-4 未実装 :「0」として読み出しbit 3 RDWR: 読み / 書きステータスビット (1)

    1 = 直前の DMA バスアクセスで読み出した0 = 直前の DMA バスアクセスで書き込んだ

    bit 2-0 DMARCH: DMA 読み出しチャンネルビット (1)

    これらのビットは、直前の読み出しを実行した DMA チャンネルの番号を格納します。bit 2-0 DMACH: DMA チャンネルビット (1)

    これらのビットは、直前にアクティブであった DMA チャンネルの番号を格納します。

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    DS61117G_JP - p. 31-10 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-3: DMAADDR: DMA アドレスレジスタビットレンジ

    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:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    DMAADDR

    23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    DMAADDR

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

    DMAADDR

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

    DMAADDR

    凡例 :

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

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

    bit 31-0 DMAADDR: DMA モジュール アドレスビット

    Note: このレジスタは、直前の DMA アクセスのアドレスを格納します。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-11

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

    レジスタ 31-4: DCRCCON: DMACRC 制御レジスタビットレンジ

    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 R/W-0 R/W-0 R/W-0 U-0 U-0 R/W-0

    — — BYTO(1) WBO(1,2) — — BITO(1)

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

    — — — — — — — —

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

    — — — PLEN(2)

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

    CRCEN CRCAPP(2) CRCTYP(1) — — CRCCH(1)

    凡例 :

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

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

    bit 31-30 未実装 :「0」として読み出しbit 29-28 BYTO: CRC バイト順選択ビット (1)

    11 = ハーフワード境界を中心にバイト順をスワップする (ハーフワード順はソースのまま、各ハーフワード内のバイト順を反転する )

    10 = ワード境界を中心にハーフワードをスワップする (ハーフワード順を反転し、各ハーフワード内のバイト順はソースのまま )

    01 = ワード境界を中心にバイト順をスワップする ( ソースのバイト順を完全に反転する )00 = スワップしない ( ソースのバイト順のまま )

    bit 27 WBO: CRC 書き込みバイト順選択ビット (1,2)

    1 = BYTO の定義に従ってバイト順を変更したソースデータをデスティネーションに書き込む0 = バイト順を変更せずにソースデータをデスティネーションに書き込む

    bit 26-25 未実装 :「0」として読み出しbit 24 BITO: CRC ビット順選択ビット (4)

    1 = 最下位ビット (LSb) から順番に ( つまり逆順に ) チェックサム /CRC を計算する0 = 最上位ビット (MSb) から順番に ( つまり正順に ) チェックサム /CRC を計算する

    bit 23-13 未実装 :「0」として読み出しbit 12-8 PLEN: 多項式長ビット (2)

    CRCTYP (DCRCCON) = 1 (CRC モジュールは IP ヘッダモード ) の場合 :これらのビットは未使用

    CRCTYP (DCRCCON) = 0 (CRC モジュールは LFSR モード ) の場合 :これらのビットは [ 多項式長 -1] を表す

    bit 7 CRCEN: CRC イネーブルビット1 = CRC モジュールを有効にする ( チャンネル転送は CRC モジュールを経由する )0 = CRC モジュールを無効にする ( チャンネル転送は CRC モジュールを経由しない )

    bit 6 CRCAPP: CRC アペンドモード ビット (2)1 = DMA はデータをソースから CRC に転送するが、デスティネーションには転送しない。ブロック転送

    が完了すると、DMA は CRC 計算値を CHxDSA が指定するアドレスに書き込む0 = DMAはデータをソースからデスティネーションにCRCを経由して書き込む(デスティネーションへの

    書き込みバイト順は WBO の設定に従う )

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    2: WBO = 1の場合、バイト順変更なし転送はサポートされず、CRCAPP ビットはセットできません。

    DS61117G_JP - p. 31-12 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    bit 5 CRCTYP: CRC タイプ選択ビット (1)

    1 = CRC モジュールは IP ヘッダ チェックサムを計算する0 = CRC モジュールは LFSR CRC を計算する

    bit 4-3 未実装 :「0」として読み出しbit 2-0 CRCCH: CRC チャンネル選択ビット (1)

    111 = CRC をチャンネル 7 に割り当てる110 = CRC をチャンネル 6 に割り当てる101 = CRC をチャンネル 5 に割り当てる100 = CRC をチャンネル 4 に割り当てる011 = CRC をチャンネル 3 に割り当てる010 = CRC をチャンネル 2 に割り当てる001 = CRC をチャンネル 1 に割り当てる000 = CRC をチャンネル 0 に割り当てる

    レジスタ 31-4: DCRCCON: DMACRC 制御レジスタ ( 続き )

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    2: WBO = 1の場合、バイト順変更なし転送はサポートされず、CRCAPP ビットはセットできません。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-13

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

    レジスタ 31-5: DCRCDATA: DMA CRC データレジスタビットレンジ

    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:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    DCRCDATA(1)

    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

    DCRCDATA(1)

    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

    DCRCDATA(1)

    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

    DCRCDATA(1)

    凡例 :

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

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

    bit 31-0 DCRCDATA: CRC データレジスタ ビット (1)

    このレジスタへの書き込みは CRC ジェネレータをシードします。このレジスタからの読み出しは CRC の現在の値を返します。PLEN を超えるビットの読み出し値「0」です。

    CRCTYP (DCRCCON) = 1 (CRC モジュールは IP ヘッダモード ) の場合 :IP ヘッダ チェックサム情報は下位 16 ビットに格納され、上位 16 ビットは常に「0」です。このレジスタに書き込まれたデータは変換され、読み出しは 1 の補数表現値 ( つまり現在の IP ヘッダ チェックサム値 )を返します。

    CRCTYP (DCRCCON) = 0 (CRC モジュールは LFSR モード ) の場合 :PLEN を超えるビットの読み出し値は「0」です。

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    DS61117G_JP - p. 31-14 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-6: DCRCXOR: DMA CRCXOR イネーブル レジスタビットレンジ

    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:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    DCRCXOR(1)

    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

    DCRCXOR(1)

    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

    DCRCXOR(1)

    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

    DCRCXOR(1)

    凡例 :

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

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

    bit 31-0 DCRCXOR: CRC XOR レジスタビット (1)

    CRCTYP (DCRCCON) = 1 (CRC モジュールは IP ヘッダモード ) の場合 :このレジスタは未使用です。

    CRCTYP (DCRCCON) = 0 (CRC モジュールは LFSR モード ) の場合 :1 = シフトレジスタへの XOR 入力を有効にする0 = シフトレジスタへの XOR 入力を無効にする ( 前段からレジスタにデータを直接シフトインする )

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-15

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

    レジスタ 31-7: DCHxCON: DMA チャンネル x 制御レジスタビットレンジ

    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:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-0x R/W-x

    CHPIGN

    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 U-0 R/W-0 U-0 U-0 R/W-0

    CHBUSY(1) — CHPIGNEN — CHPATLEN — — CHCHNS(2)

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

    CHEN(3) CHAED CHCHN CHAEN — CHEDET CHPRI

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

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

    bit 31-24 CHPIGN: チャンネル レジスタ データビットパターンマッチ時転送終了モード :CHPIGNEN ビットをセットした場合、パターンマッチ判定中にこのビットフィールドで定義されている値に一致したバイトは無視されます。つまりパターンマッチ ロジックが有効であり、かつ CHPIGEN ビットがセットされている場合、CHPIGN に一致するバイトが読み出されると、パターンマッチ ロジックはこれを「ドントケア」として扱います。

    bit 23-16 未実装 :「0」として読み出しbit 15 CHBUSY: チャンネル ビジービット (1)

    1 = チャンネルはアクティブまたは有効0 = チャンネルは非アクティブまたは無効

    bit 14 未実装 :「0」として読み出しbit 13 CHPIGNEN: パターンマッチ バイト無視イネーブルビット

    1 = パターンマッチが有効な場合、CHPIGN ビットに一致したバイトを「ドントケア」として扱う0 = この機能を無効にする

    bit 12 未実装 :「0」として読み出しbit 11 CHPATLEN: パターン長ビット

    1 = 2 バイト長0 = 1 バイト長

    bit 8 CHCHNS: チェーン チャンネル選択ビット (2)

    1 = 優先度が低い方のチャンネルに向かってチェーンする (CH2 の転送が完了すると CH1 が有効になる )0 = 優先度が高い方のチャンネルに向かってチェーンする (CH0 の転送が完了すると CH1 が有効になる )

    bit 7 CHEN: チャンネル イネーブルビット (3)

    1 = チャンネルを有効にする0 = チャンネルを無効にする

    bit 6 CHAED: 無効中チャンネル イベント検出ビット1 = チャンネルが無効中であってもチャンネル転送開始 / 中止イベントを検出して保留する0 = チャンネルが無効中であればチャンネル転送開始 / 中止イベントを無視する

    bit 5 CHCHN: チャンネル チェーン イネーブルビット1 = チャンネル チェーンを有効にする0 = チャンネル チェーンを無効にする

    Note 1: 一部のデバイスではこのビットを利用できません。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    2: チェーン 選択ビットは、チャンネル チェーンを有効 (CHCHN = 1)にしている場合にのみ効力を持ちます。3: このビットをクリアしてチャンネルを無効にした場合、実行中のトランザクションが完了してチャンネル

    が実際に無効になるまでに数クロックサイクルを要する場合があります。従ってユーザ アプリケーションは、CHBUSY ビット ( 一部デバイスのみ実装 ) をポーリングして、チャンネルが実際に無効になった事を検出する必要があります。

    DS61117G_JP - p. 31-16 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    bit 4 CHAEN: チャンネル自動有効化ビット1 = ブロック転送完了後もチャンネルを有効なままにする0 = ブロック転送完了時にチャンネルを無効にする

    bit 3 未実装 :「0」として読み出しbit 2 CHEDET: チャンネル イベント検出ビット

    1 = イベントを検出した0 = イベントは検出していない

    bit 1-0 CHPRI: チャンネル優先度ビット11 = チャンネルの優先度は 3 ( 最優先 )10 = チャンネルの優先度は 2 01 = チャンネルの優先度は 100 = チャンネルの優先度は 0

    レジスタ 31-7: DCHxCON: DMA チャンネル x 制御レジスタ ( 続き )

    Note 1: 一部のデバイスではこのビットを利用できません。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    2: チェーン 選択ビットは、チャンネル チェーンを有効 (CHCHN = 1)にしている場合にのみ効力を持ちます。3: このビットをクリアしてチャンネルを無効にした場合、実行中のトランザクションが完了してチャンネル

    が実際に無効になるまでに数クロックサイクルを要する場合があります。従ってユーザ アプリケーションは、CHBUSY ビット ( 一部デバイスのみ実装 ) をポーリングして、チャンネルが実際に無効になった事を検出する必要があります。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-17

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

    レジスタ 31-8: DCHxECON: DMA チャンネル x イベント制御レジスタビットレンジ

    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:16R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

    CHAIRQ

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

    CHSIRQ

    7:0S-0 S-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0

    CFORCE CABORT PATEN SIRQEN AIRQEN — — —

    凡例 : S = セット可能ビットR = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-24 未実装 :「0」として読み出しbit 23-16 CHAIRQ: チャンネル転送中止 IRQ ビット

    11111111 = 割り込み 255 が発生すると実行中の転送を中止して CHAIF フラグをセットする•••00000001 = 割り込み 1 が発生すると実行中の転送を中止して CHAIF フラグをセットする00000000 = 割り込み 0 が発生すると実行中の転送を中止して CHAIF フラグをセットする

    bit 15-8 CHSIRQ: チャンネル転送開始 IRQ ビット11111111 = 割り込み 255 が発生すると DMA 転送を開始する•••00000001 = 割り込み 1 が発生すると DMA 転送を開始する00000000 = 割り込み 0 が発生すると DMA 転送を開始する

    bit 7 CFORCE: DMA 転送開始ビット1 = このビットに「1」を書き込む事で DMA 転送を強制的に開始する0 = このビットは常に「0」として読み出される

    bit 6 CABORT: DMA 転送中止ビット1 = このビットに「1」を書き込む事で DMA 転送を強制的に中止する0 = このビットは常に「0」として読み出される

    bit 5 PATEN: チャンネル パターンマッチ転送中止イネーブルビット1 = パターンマッチが発生すると転送を中止して CHEN ビットをクリアする0 = パターンマッチを無効にする

    bit 4 SIRQEN: チャンネル転送開始 IRQ イネーブルビット1 = CHSIRQ ビットで指定されている番号の割り込みが発生するとチャンネル セル転送を開始する0 = CHSIRQ ビットで指定されている番号の割り込みが発生しても無視する ( 転送を開始しない )

    bit 3 AIRQEN: チャンネル中止 IRQ イネーブルビット1 = CHAIRQ ビットで指定されている番号の割り込みが発生するとチャンネル転送を中止する0 = CHAIRQ ビットで指定されている番号の割り込みが発生しても無視する ( 転送を中止しない )

    bit 2-0 未実装 :「0」として読み出し

    DS61117G_JP - p. 31-18 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-9: DCHxINT: DMA チャンネル x 割り込み制御レジスタビットレンジ

    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:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE

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

    — — — — — — — —

    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

    CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF

    凡例 :

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

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

    bit 31-24 未実装 :「0」として読み出しbit 23 CHSDIE: チャンネルソース完了割り込みイネーブルビット

    1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 22 CHSHIE: チャンネルソース 1/2 エンプティ割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 21 CHDDIE: チャンネル デスティネーション完了割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 20 CHDHIE: チャンネル デスティネーション 1/2 フル割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 19 CHBCIE: チャンネル ブロック転送完了割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 18 CHCCIE: チャンネルセル転送完了割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 17 CHTAIE: チャンネル転送中止割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 16 CHERIE: チャンネル アドレスエラー割り込みイネーブルビット1 = この割り込みを有効にする0 = この割り込みを無効にする

    bit 15-8 未実装 :「0」として読み出しbit 7 CHSDIF: チャンネルソース完了割り込みフラグビット

    1 = チャンネル ソースポインタがソースの終端に達した (CHSPTR = CHSSIZ)0 = この割り込みは保留されていない

    bit 6 CHSHIF: チャンネルソース 1/2 エンプティ割り込みフラグビット1 = チャンネル ソースポインタがソースの 1/2 エンプティ位置に達した (CHSPTR = CHSSIZ/2) 0 = この割り込みは保留されていない

    bit 5 CHDDIF: チャンネル デスティネーション完了割り込みフラグビット1 = チャンネル デスティネーション ポインタがデスティネーションの終端に達した (CHDPTR = CHDSIZ) 0 = この割り込みは保留されていない

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-19

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

    bit 4 CHDHIF: チャンネル デスティネーション 1/2 フル割り込みフラグビット1 = チャンネル デスティネーション ポインタがデスティネーションの1/2フル位置に達した(CHDPTR=CHDSIZ/2) 0 = この割り込みは保留されていない

    bit 3 CHBCIF: チャンネル ブロック転送完了割り込みフラグビット1 = ブロック転送が完了した (CHSSIZまたはCHDSIZバイト (どちらか大きい方 )を転送した )、または、

    パターンマッチ イベントが発生した 0 = この割り込みは保留されていない

    bit 2 CHCCIF: チャンネル セル転送完了割り込みフラグビット1 = セル転送が完了した (CHCSIZ バイトを転送した ) 0 = この割り込みは保留されていない

    bit 1 CHTAIF: チャンネル転送中止割り込みフラグビット1 = CHAIRQ ビットで指定されている番号の割り込みを検出したため DMA 転送を中止した 0 = この割り込みは保留されていない

    bit 0 CHERIF: チャンネル アドレスエラー割り込みフラグビット1 = チャンネル アドレスエラーを検出した ( ソースまたはデスティネーション アドレスのどちらかが無

    効 )0 = この割り込みは保留されていない

    レジスタ 31-9: DCHxINT: DMA チャンネル x 割り込み制御レジスタ ( 続き )

    DS61117G_JP - p. 31-20 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-10: DCHxSSA: DMA チャンネル x ソース開始アドレスレジスタビットレンジ

    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:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    CHSSA(1)

    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

    CHSSA(1)

    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

    CHSSA(1)

    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

    CHSSA(1)

    凡例 :

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

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

    bit 31-0 CHSSA: チャンネルソース開始アドレスビット (1)

    チャンネルソース開始アドレスを格納します。

    Note 1: ソースの物理アドレスを指定する必要があります。

    レジスタ 31-11: DCHxDSA: DMA チャンネル x デスティネーション開始アドレスレジスタビットレンジ

    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:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

    CHDSA(1)

    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

    CHDSA(1)

    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

    CHDSA(1)

    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

    CHDSA(1)

    凡例 :

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

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

    bit 31-0 CHDSA: チャンネル デスティネーション開始アドレスビットチャンネル デスティネーション開始アドレスを格納します。

    Note 1: デスティネーションの物理アドレスを指定する必要があります。

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

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

    レジスタ 31-12: DCHxSSIZ: DMA チャンネル x ソース サイズレジスタビットレンジ

    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

    CHSSIZ(1)

    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

    CHSSIZ(1)

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHSSIZ: チャンネル ソースサイズ ビット (1)

    1111111111111111 = ソースサイズは 65,535 バイト•••0000000000000010 = ソースサイズは 2 バイト0000000000000001 = ソースサイズは 1 バイト0000000000000000 = ソースサイズは 65,536 バイト

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    DS61117G_JP - p. 31-22 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-13: DCHxDSIZ: DMA チャンネル x デスティネーション サイズレジスタビットレンジ

    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

    CHDSIZ(1)

    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

    CHDSIZ(1)

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHDSIZ: チャンネル デスティネーション サイズビット (1)

    1111111111111111 = デスティネーション サイズは 65,535 バイト•••0000000000000010 = デスティネーション サイズは 2 バイト0000000000000001 = デスティネーション サイズは 1 バイト0000000000000000 = デスティネーション サイズは 65,536 バイト

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-23

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

    レジスタ 31-14: DCHxSPTR: DMA チャンネル x ソース ポインタレジスタビットレンジ

    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-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    CHSPTR(2)

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

    CHSPTR(2)

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHSPTR: チャンネル ソース ポインタビット (2)

    1111111111111111 = ポインタはソースのバイト 65,535 を指している•••0000000000000001 = ポインタはソースのバイト 1 を指している0000000000000000 = ポインタはソースのバイト 0 を指している

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    Note: パターンマッチ検出モードでは、このレジスタはパターンマッチ検出時にリセットされます。

    DS61117G_JP - p. 31-24 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-15:DCHxDPTR: DMA チャンネル x デスティネーション ポインタレジスタビットレンジ

    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-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    CHDPTR(1)

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

    CHDPTR(1)

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHDPTR: チャンネル デスティネーション ポインタビット (1)

    1111111111111111 = ポインタはデスティネーションのバイト 65,535 を指している•••0000000000000001 = ポインタはデスティネーションのバイト 1 を指している0000000000000000 = ポインタはデスティネーションのバイト 0 を指している

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-25

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

    レジスタ 31-16:DCHxCSIZ: DMA チャンネル x セルサイズ レジスタビットレンジ

    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

    CHCSIZ(1)

    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

    CHCSIZ(1)

    凡例 :

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

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

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHCSIZ: チャンネル セルサイズビット (1)

    1111111111111111 = イベントあたり 65,535 バイトを転送する•••0000000000000010 = イベントあたり 2 バイトを転送する0000000000000001 = イベントあたり 1 バイトを転送する0000000000000000 = イベントあたり 65,536 バイトを転送する

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    DS61117G_JP - p. 31-26 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    レジスタ 31-17:DCHxCPTR: DMA チャンネル x セルポインタ レジスタビットレンジ

    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-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

    CHCPTR(1)

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

    CHCPTR(1)

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHCPTR: チャンネル セル転送進捗ポインタビット (1)

    1111111111111111 = 直前のイベントから現在までに 65,535 バイトを転送した•••0000000000000001 = 直前のイベントから現在までに 1 バイトを転送した0000000000000000 = 直前のイベントから現在までに 0 バイトを転送した

    Note 1: 一部のデバイスでは使えないビットもあります。詳細はデバイス データシート内の「ダイレクトメモリアクセス (DMA) コントローラ」を参照してください。

    Note: パターンマッチ検出モードでは、このレジスタはパターンマッチ検出時にリセットされます。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-27

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

    レジスタ 31-18:DCHxDAT: DMA チャンネル x パターンデータ レジスタビットレンジ

    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

    CHPDAT

    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

    CHPDAT

    凡例 :

    R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

    bit 31-16 未実装 :「0」として読み出しbit 15-0 CHPDAT: チャンネルデータ レジスタビット

    パターンマッチ転送終了モードの場合 :パターンマッチ発生時に転送を終了させるには、パターンマッチの判定に使用するデータをこのレジスタに書き込んでおく必要があります。

    その他の全てのモードの場合 :未使用

    DS61117G_JP - p. 31-28 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    31.3 動作モードDMA ジュールは下記の動作モードを備えます。• 標準転送モード• パターンマッチ モード• チャンネル チェーンモード• チャンネル自動有効化モード• 特殊機能モジュール (SFM) モード : LFSR CRC、IP ヘッダ チェックサムこれらの動作モードは相互排他的ではなく、複数のモードを同時に有効にできます。例えば、DMA コントローラはチャンネル チェーンモードを使って CRC 計算を実行し、パターンマッチ検出時に転送を終了できます。

    本書では、DMA コントローラの動作に関して下記の用語を使います。• イベント : DMA 転送を開始または中止させる事ができる任意のシステムイベント• トランザクション : 読み出しおよび書き込み動作で構成されるワード転送 ( 最大 4 バイト )• セル転送 : DMA チャンネルがイベント 1 回あたりに転送するバイト数 (DCHxCSIZ レジスタ

    で指定 )。セル転送は 1 つまたは複数のトランザクションによって構成される。• ブロック転送 : チャンネルが有効になった後に転送するバイト数。バイト数は DCHxSSIZ ま

    たは DCHxDSIZ ( どちらか大きい方 ) によって決まる。ブロック転送は 1 つまたは複数のセル転送によって構成される。

    31.3.1 標準転送モード DMA チャンネルは、CPU を介さずにソースからデスティネーションにデータを転送します。チャンネルソース開始アドレスレジスタ (DCHxSSA) は、ソースの開始物理アドレスを定義します。チャンネル デスティネーション開始アドレスレジスタ (DCHxDSA) は、デスティネーションの開始物理アドレスを定義します。ソースおよびデスティネーションのサイズは、それぞれ DCHxSSIZ および DCHxDSIZ レジスタを使って別々に設定します。セル転送は下記の場合に始まります。

    • ソフトウェアがチャンネルの CFORCE ビット (DCHxECON) をセットした場合 • SIRQEN ビット (DCHxECON) = 1の場合に、CHSIRQ ビットで指定されている番号の割

    り込みイベントが発生した場合 (DMA 転送を開始する割り込みは任意に選択可能 ) イベントが発生して DMA 転送が始まると、DCHxCSIZ バイトが転送されます ( セル転送 )。DMA チャンネルは、DCHxSSIZ または DCHxDSIZ バイト ( どちらか大きい方 ) を転送し終えるまで ( つまりブロック転送が完了するまで )、有効なままです。DCHxSSIZ および DCHxDSIZ( どちらか大きい方 ) よりも DCHxCSIZ の方が大きい場合、DCHxSSIZ または DCHxDSIZ バイト ( どちらか大きい方 ) を転送します。チャンネルが無効になると、再び有効 (CHEN = 1) になるまで後続の転送は実行できません。 各チャンネルは、DCHxSPTR および DCHxDPTR ポインタを使って、ソースおよびデスティネーションから転送されたワード数をカウントします。ソースまたはデスティネーション ポインタがサイズの 1/2 (DCHxSSIZ/2 または DCHxDSIZ/2) に達した時点、あるいはソースまたはデスティネーション カウンタが終端に達した時点で、割り込みが発生します。これらの割り込みが発生すると、対応する割り込みフラグビット (CHSHIF (DCHxINT)、CHDHIF (DCHxINT)、CHSDIF (DCHxINT)、CHDDIF (DCHxINT)) がセットされます。DMA 転送要求は下記によってリセットできます。• CABORT ビット (DCHxECON) への書き込み ( セット )(31.4.6「チャンネルのリセット」

    参照 )• パターンマッチの発生 ( パターンマッチが有効 (31.3.2「パターンマッチ転送終了モード」参

    照 )かつチャンネル自動有効化モードビットCHAEN (DCHxCON)がクリアされている場合 )

    • CHAIRQ ビット (DCHxECON) で指定されている番号の割り込みイベントの発生(AIRQEN ビット (DCHxECON) がセットされている場合 )

    • アドレスエラーの検出• セル転送の完了• ブロック転送の完了 ( チャンネル自動有効化モードが無効 (CHAEN = 0) の場合 )

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-29

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

    チャンネル転送中止割り込みが発生すると、チャンネル転送中止割り込みフラグ CHTAIF ビット (DCHxINT) がセットされます。これにより、ユーザは DMA 転送が中止された事を検出し、その転送を復元できます。転送の中止が要求された時点で実行中であったトランザクションは完了します。

    ソースおよびデスティネーション ポインタは、転送の進捗に従って更新されます。これらのポインタは読み出し専用であり、下記の場合にリセットされます。

    • チャンネルソース アドレス (DCHxSSA)が更新された場合 (ソースポインタ (DCHxSPTR)がリセットされる )

    • デスティネーション アドレス (DCHxDSA) が更新された場合 ( デスティネーション ポインタ(DCHxDPTR) がリセットされる )

    • CABORT ビット (DCHxECON) への書き込みによってチャンネル転送が中止された場合

    例 31-1: DMA チャンネルを標準転送モード向けに初期化するサンプルコード

    Note: チャンネル イベント挙動の詳細は表 31-2 を参照してください。

    /* The following code example illustrates the DMA channel 0 configuration for a data transfer.*/

    IEC1CLR=0x00010000;// disable DMA channel 0 interruptsIFS1CLR=0x00010000;// clear existing DMA channel 0 interrupt flag

    DMACONSET=0x00008000;// enable the DMA controllerDCH0CON=0x3;// channel off, pri 3, no chaining

    CH0ECON=0;// no start or stop irq’s, no pattern match

    // program the transferDCH0SSA=0x1d010000;// transfer source physical addressDCH0DSA=0x1d020000;// transfer destination physical addressDCH0SSIZ=200;// source size 200 bytesDCH0DSIZ=200;// destination size 200 bytesDCH0CSIZ=200;// 200 bytes transferred per event

    DCH0INTCLR=0x00ff00ff;// clear existing events, disable all interruptsDCH0CONSET=0x80;// turn channel on

    // initiate a transferDCH0ECONSET=0x00000080;// set CFORCE to 1

    // do something else

    // poll to see that the transfer was done

    while(TRUE){

    register int pollCnt;// use a poll counter.// continuously polling the DMA controller in a tight // loop would affect the performance of the DMA transfer

    int dmaFlags=DCH0INT;if( (dmaFlags&0xb){ // one of CHERIF (DCHxINT), CHTAIF (DCHxINT)

    // or CHBCIF (DCHxINT) flags setbreak;// transfer completed

    }pollCnt=100;// use an adjusted value herewhile(pollCnt--);// wait before reading again the DMA controller

    }

    // check the transfer completion result

    DS61117G_JP - p. 31-30 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    31.3.1.1 割り込みとポインタの更新

    トランザクションが完了するたびにソースおよびデスティネーション ポインタは更新され、割り込みフラグビットがセットまたはクリアされます。トランザクション中にポインタが 1/2 サイズ位置を通過すると、対応する割り込みフラグビットが更新されます。

    ポインタは下記の場合にリセットされます。

    • 全てのデバイスリセット時• DMA が無効 (ON ビット (DMACON) = 0) になった時• ブロック転送完了時 (CHAEN ビット (DCHxCON) の状態は無関係 )• パターンマッチによる転送終了時 (CHAEN ビット (DCHxCON) の状態は無関係 )• CABORT フラグビット (DCHxECON) に「1」が書き込まれた時• ソースまたはデスティネーション アドレスが更新された時

    31.3.2 パターンマッチ転送終了モード パターンマッチ転送終了モードを使うと、トランザクション中に書き込まれたデータがDCHxDAT レジスタで定義されている特定のパターンに一致した時点で転送を終了できます。パターンマッチはブロック転送の完了と同様に扱われます (CHBCIF ビット (DCHxINT) がセットされ、CHEN ビット (DCHxCON) はクリアされる )。この機能を使うと、可変データサイズが要求されるアプリケーションで DMA チャンネルを容易にセットアップできます。この機能が役立つ代表例として、UART を使って外部ホストへ定期的に一連のメッセージ ( 最大メッセージサイズは 86 キャラクタ ) を送信するシステムを想定します。この場合、チャンネルのパラメータを下記のように設定します。

    • DCHxSSIZ を 87 バイトに設定 – 予期せぬバッファ オーバーフローが発生すると、適切に対応するよう CPU プログラムに対して割り込みを生成します。

    • DCHxDSIZ を 1 バイトに設定• デスティネーション アドレスを UART TXREG に設定• DCHxDAT を 0x00 に設定 - バイトレーンで NULL 文字を検出すると転送は停止する• CHSIRQビット(DCHxECON)をUART「割り込みバッファ エンプティ」IRQに設定する• SIRQENビット (DCHxECON)をセットする - チャンネルは転送開始割り込みイベントに

    応答する

    • 開始アドレスを転送するメッセージの先頭アドレスに設定する• チャンネルを有効にする (CHEN ビット (DCHxCON) = 1) • CFORCE ビット (DCHxECON) をセットしてセル転送を開始すると、UART は最初のバ

    イトを送信する

    • UART が 1 バイトを送信するたびに送信バッファ エンプティ割り込みが発生し、この割り込みによってソースから UART への次のバイト転送が始まる

    • DMA チャンネルがバイトレーン内に NULL 文字を検出すると、トランザクションが完了した後にチャンネルは無効になる

    パターンマッチはソースデータのバイトレーンとは無関係です。ソースバッファ内の「任意の」バイトが DCHxDAT に一致すれば、パターンマッチが検出されます。すると、トランザクションが完了した後に、ソースから読み出されたデータがデスティネーションに書き込まれます。

    31.3.2.1 パターンマッチ無視モードCHPATLEN ビットを備えたデバイスでは、パターン長を 8 ビット幅または 16 ビット幅に設定できます。このパターン長は、DCHxCON レジスタの CHPATLEN ビットで定義します。CHPATLEN ビットを「1」にセットした場合、パターンマッチ無視モードを使えます。パターンマッチ バイト無視イネーブルビット (CHPIGNEN) をセットし、かつセル転送中の転送終了バターンマッチの検出を有効にした場合、チャンネル レジスタデータ ビット (CHPIGN)値とのパターンマッチが発生すると、転送中のデータは「ドントケア」として扱われます。この機能を使うと、例えばラインの終端とキャリッジリターンの間にスペース文字を検出した場合に、そのデータを無視できます。ラインの終端が「X」、キャリッジリターンが「Y」として既知である場合、CHPIGN ビットを「_」に設定しておくと、DMA セル転送中に「X_Y」が転送された時点で転送終了パターンマッチが検出され、SFM は X と Y の間のゼロを無視します。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-31

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

    例 31-2: パターンマッチ転送モード向けに DMA チャンネルを初期化するサンプルコード

    31.3.3 チャンネル チェーンモード チャンネル チェーンは DMA チャンネルの動作を拡張します。このモードでは、転送中のチャンネル ( マスタ チャンネル ) から隣接チャンネル ( スレーブ チャンネル ) に転送を連鎖させる事ができます。マスタ チャンネルのブロック転送が完了すると (CHBCIFビット (DCHxINT)がセットされると )、スレーブ チャンネルが有効になります。この時点でスレーブ チャンネルにイベントが発生すると、セル転送が始まります。スレーブチャンネルで既にイベントが保留中である場合、セル転送は即座に始まります。

    スレーブ チャンネルの「チェーン」ステータスに関係なく、マスタ チャンネルの割り込みフラグ (CHBCIF ビット (DCHxINT)) は通常通りセットされます。CHSDIE/CHDDIE/CHBCIEビット (DCHxINT) のいずれかがセットされていれば、マスタチャンネルは DMA 転送の終了時に割り込みを生成できます。

    各チャンネルには自然順序優先度が割り当てられ、チャンネル 0 が最高優先度を持ちます。CHCHN ビット (DCHxCON) を「1」にセットするとチャンネル チェーンが有効になります。CHCHNS ビット (DCHxCON) は、次に有効にする隣接チャンネル ( 自然順序優先度が高い方か低い方か ) を指定します。CHAEDビット (DCHxCON)をセットすると、DMAモジュールはチャンネルが無効中であってもイベントを検出します。この機能は、チャンネル チェーンモードにおいてマスタ チャンネルの転送完了後ただちにスレーブ チャンネルで転送を開始する必要がある場合に、特に便利です。

    チャンネル チェーンを使うと便利な事例を以下に挙げます。1. 周辺モジュール内のデータを別の周辺モジュールに転送する場合 ( 例 : データを UART1 か

    ら SRAM へ DMA チャンネル 0 を介して 9600 baud で転送し、このデータを SRAM からUART2 へ DMA チャンネル 1 を介して 19200 baud で転送 )この場合、両方のチャンネルの CHAED ビットをセットします。チャンネル 0 で最終バイトの送信が完了すると、UART2 はチャンネル 1 のイベント検出ビット CHEDET(DCHxCON) をセットします。チャンネル 0 が転送を完了すると、チャンネル 1 が有効になり、即座にデータ転送を開始します。

    2. A/D コンバータがデータをバッファ ( チャンネル 0 に接続 ) に転送する場合 デスティネーション バッファ 0 がフルになると ( ブロック転送が完了すると )、チャンネル 1が有効になり、次の変換結果はバッファ 1 に転送されます。この場合、CHAED は有効にしません。これを有効にすると、チャンネル 0 で最後に転送されたワードがチャンネル 1 で再度転送されます。これは、A/D コンバータ割り込みイベントが両方のチャンネルのイベント検出フラグ (CHEDET) をセットするためです。

    /* The following code example illustrates the DMA channel 0 configuration for data transfer with pattern match enabled.Transfer from the UART1 a ended string, at most 200 characters long */

    IEC1CLR=0x00010000;// disable DMA channel 0 interruptsIFS1CLR=0x00010000;// clear any existing DMA channel 0 interrupt flag

    DMACONSET=0x00008000;// enable the DMA controllerDCH0CON=0x03;// channel off, priority 3, no chaining

    DCH0ECON=(27

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    例 31-3: チャンネル チェーンモード向けに DMA チャンネルを初期化するサンプルコード/* The following code example illustrates the DMA channel 0 configuration for data transfer with pattern match enabled.DMA channel 0 transfer from the UART1 to a RAM buffer while DMA channel 1 transfers data from the RAM buffer to UART2.Transferred strings are at most 200 characters long.Transfer on UART2 starts as soon as the UART1 transfer is completed.*/

    unsigned char myBuff;// transfer buffer

    IEC1CLR=0x00010000;// disable DMA channel 0 interruptsIFS1CLR=0x00010000;// clear any existing DMA channel 0 interrupt flag

    DMACONSET=0x00008000;// enable the DMA controller

    DCH0CON=0x3;// channel 0 off, priority 3, no chainingDCH1CON=0x62;// channel 1 off, priority 2

    // chain to higher priority// (channel 0), enable events detection while disabled

    DCH0ECON=(27

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

    31.3.4 チャンネル自動有効化モード チャンネル自動有効化モードを使うと、ブロック転送完了後あるいはパターンマッチ発生後もチャンネルをアクティブなままにできます。これにより、ブロック転送が完了するたびにチャンネルを再度有効にする手間が省けます。このモードを使う場合、チャンネルを有効にする(CHEN ビット (DCHxCON) をセットする ) 前に CHAEN ビット (DCHxCON) をセットしておく必要があります。この場合、ブロック転送が正常に完了してもチャンネルは無効になりません。それ以外の動作は標準転送モードと同じです。 このモードを有効にした場合、下記が発生した後もチャンネルは有効なままです。

    • ブロック転送の完了• パターンマッチの検出前述のように、これらが発生するとチャンネル ポインタはリセットされます。このモードは、繰り返しパターンマッチを検出するアプリケーションで便利に使えます。

    31.3.5 特殊機能モジュール (SFM) モード DMA モジュールは、1 つの特殊機能モジュール (SFM) を内蔵しています。全てのチャンネルはこのモジュールを共有します。

    図 31-3 に示すように、SFM は下記のブロックを備えます。• リニア フィードバック シフトレジスタ (LFSR) CRC• IP ヘッダ チャックサム• バイト並べ換え• ビット並べ換え

    図 31-3: 特殊機能モジュール (SFM)

    一部のデバイスの SFM は、柔軟に構成可能な 16 ビットまたは 32 ビット CRC ジェネレータです。SFM は、CRCCH ビットを使って任意の DMA チャンネルに割り当てる事ができます。SFMは CRCEN ビット (DCRCCON) をセットすると有効になります。必要に応じて WBO ビットをセットする事で、ソースからのデータのバイト順を変更できます。データは、CRCTYP ビット (DCRCCON) の設定に基づいて LFSR CRC または IP ヘッダチェックサム ブロックに入力されます ( 図 31-3 参照 )。

    Note: CHAEN ビットは現在有効なチャンネルが自動的に無効になる事を防ぎますが、このビットをセットしただけでチャンネルが有効になるわけではありません。チャンネルはソフトウェアで有効にする必要があります。

    Data In

    ByteReordering

    LFSR CRC

    BYTO

    CRCDATA

    CRCAPP

    WBO

    Data Out

    Bit ReorderingBITO

    Note: 「CRCAPP = 1かつ WBO = 1」は無効です。

    00

    01

    10

    IP HeaderChecksum

    DS61117G_JP - p. 31-34 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    さらに、SFM は割り当てられた DMA チャンネルの挙動を変更します。CRCAPP ビット(DCRCCON) により、下記の 2 通りのチャンネル挙動を選択できます。• バックグラウンド モード : 標準の DMA 挙動を維持したまま、CRC をバックグラウンドで計

    算します (31.3.5.1「CRC バックグラウンド モード (CRCAPP = 0)」参照 )。• アペンドモード : ソースから読み出したデータをデスティネーションに書き込まず、CRC

    データを CRC データレジスタに累算します。累算した CRC 値は、ブロック転送完了時にDCHxDSA が指定するアドレスに書き込まれます (31.3.5.2「CRC アペンドモード(CRCAPP = 1)」参照 )。

    デスティネーションにデータを書き込む際にバイト順を変更するかどうかは、WBO ビット(DCRCCON) で選択します。WBO ビットをクリアすると、データはソースのバイト順のままデスティネーションに書き込まれます。WBO ビットをセットすると、デスティネーションに書き込まれるデータのバイト順は、CRC バイト順選択 (BYTO) ビット (DCRCCON)の定義に従って変更されます。

    チャンネルを有効にする前に DCRCDATA レジスタに書き込む事で、SFM ジェネレータをシードできます。

    IP ヘッダ チェックサム モード (CRCTYP = 1) の場合、書き込まれたデータは 1 の補数表現でチェックサムの現在値として読み戻されます。

    DCRCDATA 内の CRC 値は、CRC 生成中にいつでも読み出せますが、転送完了後の読み出し値だけが有効です。

    31.3.5.1 CRC バックグラウンド モード (CRCAPP = 0)このモードでは、DMA チャンネルの転送動作は維持されます。DMA はソースから読み出したデータを CRC モジュール経由でデスティネーションに書き込みます。デスティネーションへの書き込みバイト順は WBO ビットの設定に従います。このモードでは、計算された CRC 値はブロック転送終了時に DCRCDATA レジスタで保持されます。このモードを使うと、データをソースアドレスからデスティネーション アドレスへ転送しながら CRC を計算できます。データソースには、周辺モジュール内のメモリバッファまたは FIFOを使えます。デスティネーションにも、メモリバッファまたは FIFO を使えます。データ転送が完了すると、ユーザは CRC 計算値を読み出して、これを送信データにアペンドするか、受信した CRC データを確認できます。バックグラウンド モードは、CRC モジュールが長時間拘束される可能性があります。例えば、UART データストリームに割り当てた場合、UART データストリームが完了するまで、別のチャンネルで SFM を使う事はできません。

    Note: 一部のデバイスでは、この機能を利用できません。詳細はデバイス データシート内の「ダイレクトメモリ アクセス (DMA) コントローラ」を参照してください。

    Note 1: CRC 計算の実行中に DMA 転送が中止された場合、次の CRC 計算の前に DMAチャンネルをリセットする必要があります。あるいは、同じチャンネルまたは別の未使用チャンネルを後続バイト (2 バイト以上 ) の転送用に設定してから転送を再開して完了させる事もできます。転送が完了すると、CRC モジュールは次のCRC 計算を開始できます。

    2: CRC計算の実行中にDMAチャンネルが無効 (CHEN = 0)になった場合、DCRCDATAレジスタ内の値は更新されません。この場合、同じチャンネルまたは別の未使用チャンネルを後続バイト (2 バイト以上 ) の転送用に設定してから転送を再開して完了させる事ができます。転送が完了すると、DCRCDATA 値は転送停止が発行されるまでに処理されたバイト数を正しく反映します。DMA アドレスレジスタを読み出すと、現在の CRC 値のアドレスレンジを特定できます。

    © 2013 Microchip Technology Inc. DS61117G_JP - p. 31-35

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

    例 31-4: バックグラウンド モードで DMA LFSR CRC 計算を行うサンプルコード/* The following code example illustrates a DMA calculation using the CRC background mode.Data is transferred from a 200 bytes Flash buffer to a RAM buffer and the CRC is calculated while the transfer takes place.*/

    unsigned int blockCrc;// CRC of the Flash block

    IEC1CLR=0x00010000;// disable DMA channel 0 interruptsIFS1CLR=0x00010000;// clear any existing DMA channel 0 interrupt flag

    DMACONSET=0x00008000;// enable the DMA controller

    DCRCDATA=0xffff;// seed the CRC generatorDCRCXOR=0x1021;// Use the standard CCITT CRC 16 polynomial:X^16+X^12+X^5+1DCRCCON=0x0f80;// CRC enabled, polynomial length 16, background mode

    // CRC attached to the DMA channel 0.

    DCH0CON=0x03;// channel off, priority 3, no chainingDCH0ECON=0;// no start irqs, no match enabled

    // program channel transferDCH0SSA=VirtToPhys(flashBuff);// transfer source physical addressDCH0DSA=VirtToPhys(ramBuff);// transfer destination physical addressDCH0SSIZ=200;// source sizeDCH0DSIZ=200;// destination sizeDCHOCSIZ=200;// 200 bytes per event

    DCH0INTCLR=0x00ff00ff;// DMA0: clear events, disable interrupts

    DCH0CONSET=0x80;// channel 0 on

    // initiate a transferDCH0ECONSET=0x00000080;// set CFORCE to 1

    // do something else while the transfer takes place// poll to see that the transfer was done

    BOOL error=FALSE;while(TRUE){register int pollCnt;// don’t poll in a tight loopint dmaFlags=DCH0INT;if( (dmaFlags& 0x3){ // CHERIF (DCHxINT) or CHTAIF (DCHxINT set

    error=TRUE;// error or aborted...break;

    }else if (dmaFlags&0x8)

    { // CHBCIF (DCHxINT) setbreak; // transfer completed normally

    }pollCnt=100;// use an adjusted value herewhile(pollCnt--);// wait before polling again}

    if(!error){blockCrc=DCRDATA;// read the CRC of the transferred Flash block}else{

    // process error}

    DS61117G_JP - p. 31-36 © 2013 Microchip Technology Inc.

  • セクション 31. DMA コントローラD

    MAコ

    ント

    ロー

    31

    31.3.5.2 CRC アペンドモード (CRCAPP = 1)このモードでは、DMA はソースデータを CRC モジュールに入力しますが、デスティネーション アドレスには書き込みません。しかし、ブロック転送が完了するかパターンマッチが発生すると、DMA は CRC 値をデスティネーション アドレスに書き込みます。CRC アペンドモードの使用方法は以下の通りです。• ソースバッファだけに基づいてブロック転送が完了したかどうかを判断し、デスティネー

    ション アドレス (DCHxDSA) は生成した CRC 値の書き込み先アドレスとしてのみ使う。• デスティネーション サイズ (DCHxDSIZ) は 4 以下に制限される

    - DCHxDSIZ が 4 よりも大きい場合、4 バイトだけが書き込まれる- DCHxDSIZ が 4 よ