11 ダイレクトメモリアクセス制御 (DMA)
この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。
ダイレクトメモリアクセスコントローラ(DMA)は、ペリフェラルとメモリ間、またはメモリ間での高速データ転送方式を提供します。
CPUの介入なしに、DMAを介してデータを高速に転送できるため、CPUリソースを他の処理に使用できます。
DMAコントローラの各チャネルは、1つまたは複数のペリフェラルからのメモリアクセス要求を管理する専用チャネルです。
また、チャネル間の優先順位を調整するためのアービタも備えています。
ダイレクトメモリアクセスコントローラ(DMA)は、ペリフェラルとメモリ間、またはメモリ間での高速データ転送方式を提供します。
CPUの介入なしに、DMAを介してデータを高速に転送できるため、CPUリソースを他の処理に使用できます。
DMAコントローラの各チャネルは、1つまたは複数のペリフェラルからのメモリアクセス要求を管理する専用チャネルです。
また、チャネル間の優先順位を調整するためのアービタも備えています。
11.1 主な特徴
・複数の独立した設定可能なチャネル
・各チャネルは専用のハードウェアDMAリクエストに直接接続され、ソフトウェアトリガーをサポートします。
・サイクリックバッファ管理をサポートします。
・複数のチャネル間のリクエストの優先度は、ソフトウェアプログラミングによって設定できます
(最高、高、中、低)。
優先度設定が同じ場合は、チャネル番号によって決定されます
(チャネル番号が小さいほど優先度が高くなります)。
・ペリフェラルからメモリ、メモリからペリフェラル、メモリからメモリへの転送をサポートします。
・フラッシュメモリ、SRAM、ペリフェラルSRAM、APB1、APB2、AHBペリフェラルはすべて、
アクセス元およびアクセス先として使用できます。
・プログラム可能なデータ転送数:最大65,535
・各チャネルは専用のハードウェアDMAリクエストに直接接続され、ソフトウェアトリガーをサポートします。
・サイクリックバッファ管理をサポートします。
・複数のチャネル間のリクエストの優先度は、ソフトウェアプログラミングによって設定できます
(最高、高、中、低)。
優先度設定が同じ場合は、チャネル番号によって決定されます
(チャネル番号が小さいほど優先度が高くなります)。
・ペリフェラルからメモリ、メモリからペリフェラル、メモリからメモリへの転送をサポートします。
・フラッシュメモリ、SRAM、ペリフェラルSRAM、APB1、APB2、AHBペリフェラルはすべて、
アクセス元およびアクセス先として使用できます。
・プログラム可能なデータ転送数:最大65,535
11.2 機能説明
11.2.1 DMAチャネル処理
1) 調停優先度
2) DMA構成
3) サイクルモード
4) DMA処理状態
複数の独立したチャネルから生成されたDMA要求は、ロジックまたは構造を介してDMAコントローラに入力され、現在はチャネル要求のみが応答されます。
モジュール内部の調停回路は、チャネル要求の優先度に応じて、開始する周辺機器/メモリアクセスを選択します。
ソフトウェア管理では、アプリケーションプログラムはDMA_CFGRxレジスタのPL[1:0]ビットを設定することで、各チャネルの優先度を独立して設定できます。
優先度には、最高、高、中、低の4つのレベルが含まれます。チャネル間のソフトウェア設定レベルが同じ場合、モジュールの優先度は固定ハードウェアに従って選択されます。
番号の小さいチャネルは、番号の大きいチャネルよりも優先度が高くなります。
モジュール内部の調停回路は、チャネル要求の優先度に応じて、開始する周辺機器/メモリアクセスを選択します。
ソフトウェア管理では、アプリケーションプログラムはDMA_CFGRxレジスタのPL[1:0]ビットを設定することで、各チャネルの優先度を独立して設定できます。
優先度には、最高、高、中、低の4つのレベルが含まれます。チャネル間のソフトウェア設定レベルが同じ場合、モジュールの優先度は固定ハードウェアに従って選択されます。
番号の小さいチャネルは、番号の大きいチャネルよりも優先度が高くなります。
2) DMA構成
DMAコントローラは要求信号を受信すると、要求された周辺機器またはメモリにアクセスし、周辺機器またはメモリとメモリ間のデータ転送を確立します。
主に以下の3つの動作ステップが含まれます。
設定手順は以下のとおりです。
主に以下の3つの動作ステップが含まれます。
| (1) | 周辺機器データレジスタまたは現在の周辺機器/メモリアドレスレジスタで示されるメモリアドレスからデータをフェッチします。 最初の転送の開始アドレスは、DMA_PADDRxレジスタまたはDMA_MADDRxレジスタで指定された周辺機器ベースアドレスまたはメモリアドレスです。 |
| (2) | 周辺機器データレジスタまたは現在の周辺機器/メモリアドレスレジスタで示されるメモリアドレスにデータを保存します。 最初の転送時の最初のアドレスは、DMA_PADDRxレジスタまたはDMA_MADDRxレジスタで指定された周辺機器ベースアドレスまたはメモリアドレスです。 |
| (3) | 未完了の転送回数を示すDMA_CNTRxレジスタの値をデクリメントします。 各チャネルには3つのDMAデータ転送モードがあります。 ・ ペリフェラルからメモリへ (MEM2MEM=0, DIR=0) ・ メモリからペリフェラルへ (MEM2MEM=0, DIR=1) ・ メモリからメモリへ (MEM2MEM=1) |
| 注: | メモリからメモリへの転送モードでは、ペリフェラルからのリクエスト信号は必要ありません。 このモード (MEM2MEM=1) が設定されると、チャネルがオン (EN=1) になり、データ転送が開始されます。 このモードはサイクルモードをサポートしていません。 |
設定手順は以下のとおりです。
| (1) | DMA_PADDRxレジスタに、ペリフェラルレジスタの初期アドレス、またはメモリ間モード(MEM2MEM=1)のメモリデータアドレスを設定します。 DMA要求が発生すると、このアドレスがデータ転送の送信元アドレスまたは送信先アドレスになります。 |
| (2) | DMA_MADDRxレジスタにメモリデータアドレスを設定します。 DMA要求が発生すると、送信データはこのアドレスから読み取られ、このアドレスに書き込まれます。 |
| (3) | DMA_CNTRxレジスタに送信するデータ数を設定します。 データ転送ごとに、この値は徐々に減少します。 |
| (4) | DMA_CFGRxレジスタのPL[1:0]ビットを介してチャネル優先度を設定します。 |
| (5) | DMA_CFGRxレジスタで、データ転送方向、サイクルモード、周辺装置およびメモリのインクリメンタルモード、周辺装置およびメモリのデータ幅、転送半分完了、転送完了、および転送エラー割り込みイネーブルビットを設定します。 |
| (6) | DMA_CCRxレジスタのENABLEビットをセットして、チャネルxを有効にします。 |
| 注: | DMA_PADDRx/DMA_MADDRx/DMA_CNTRxレジスタおよびDMA_CFGRxレジスタの制御ビット(データ転送方向(DIR)、サイクルモード(位置)、周辺装置およびメモリのインクリメンタルモード(MINC/PINC)など)は、DMAチャネルがオフの場合にのみ設定および書き込み可能です。 |
3) サイクルモード
DMA_CFGRxレジスタのCIRCビットを1に設定して、チャネルデータ転送のサイクリックモード機能を有効にします。
サイクルモードでは、転送データ数が0になると、DMA_CNTRxレジスタの内容が自動的に初期値にリロードされ、内部周辺装置およびメモリアドレスレジスタもDMA_PADDRxレジスタとDMA_MADDRxレジスタで設定された初期アドレス値にリロードされます。
チャネルまたはDMAモードがオフにされるまで、DMA動作は継続されます。
サイクルモードでは、転送データ数が0になると、DMA_CNTRxレジスタの内容が自動的に初期値にリロードされ、内部周辺装置およびメモリアドレスレジスタもDMA_PADDRxレジスタとDMA_MADDRxレジスタで設定された初期アドレス値にリロードされます。
チャネルまたはDMAモードがオフにされるまで、DMA動作は継続されます。
4) DMA処理状態
・ 転送半完了:ハードウェアにより、対応するDMA_INTFRレジスタのHTIFxビットをセットします。
DMA転送回数が初期設定値の半分未満になると、DMA転送半完了フラグが生成されます。 DMA_CCRxレジスタのHTIEビットがセットされている場合、割り込みが生成されます。
ハードウェアはこのフラグを通じてアプリケーションプログラムに通知し、次のデータ転送に備えることができます。
・ 転送完了:ハードウェアにより、対応するDMA_INTFRレジスタのTCIFxビットをセットします。
DMA転送回数が0になると、DMA転送完了フラグが生成されます。
DMA_CCRxレジスタのTCIEビットがセットされている場合、割り込みが生成されます。
・ 転送エラー:ハードウェアにより、対応するDMA_INTFRレジスタのTEIFxビットをセットします。
予約アドレス領域のリード/ライトは、DMA転送エラーとなります。一方、モジュールのハードウェアは、 エラーが発生したチャネルに対応するDMA_CCRxレジスタのENビットを自動的にクリアし、チャネルをオフにします。
DMA_CCRxレジスタにTEIEがセットされている場合は、割り込みが生成されます。
アプリケーションプログラムがDMAチャネルのステータスを照会する場合、まずDMA_INTFRレジスタのGIFxビットにアクセスして、 現在どのチャネルにDMAイベントが発生しているかを判断し、次にそのチャネルの特定のDAMイベント内容を処理します。
DMA転送回数が初期設定値の半分未満になると、DMA転送半完了フラグが生成されます。 DMA_CCRxレジスタのHTIEビットがセットされている場合、割り込みが生成されます。
ハードウェアはこのフラグを通じてアプリケーションプログラムに通知し、次のデータ転送に備えることができます。
・ 転送完了:ハードウェアにより、対応するDMA_INTFRレジスタのTCIFxビットをセットします。
DMA転送回数が0になると、DMA転送完了フラグが生成されます。
DMA_CCRxレジスタのTCIEビットがセットされている場合、割り込みが生成されます。
・ 転送エラー:ハードウェアにより、対応するDMA_INTFRレジスタのTEIFxビットをセットします。
予約アドレス領域のリード/ライトは、DMA転送エラーとなります。一方、モジュールのハードウェアは、 エラーが発生したチャネルに対応するDMA_CCRxレジスタのENビットを自動的にクリアし、チャネルをオフにします。
DMA_CCRxレジスタにTEIEがセットされている場合は、割り込みが生成されます。
アプリケーションプログラムがDMAチャネルのステータスを照会する場合、まずDMA_INTFRレジスタのGIFxビットにアクセスして、 現在どのチャネルにDMAイベントが発生しているかを判断し、次にそのチャネルの特定のDAMイベント内容を処理します。
11.2.2プログラム可能なデータ転送総サイズ/データビット幅/アライメント
DMAの各チャネルの1ラウンドで送信されるデータの合計サイズは、最大65535回までプログラム可能です。
DMA_CNTRxレジスタは、送信するデータ数を示します。
EN=0のとき、設定値を書き込んでください。
EN=1のときにDMA送信チャネルがオンになると、このレジスタは読み取り専用になり、送信ごとに値が徐々に減少します。
周辺機器とメモリの送信データ値は、アドレスポインタの自動インクリメント機能をサポートしており、ポインタのインクリメントはプログラム可能です。
これらによってアクセスされた最初の送信データアドレスは、DMA_PADDRxレジスタとDMA_MADDRxレジスタに格納されます。
DMA_CFGRxレジスタのPINCビットまたはMINCビットを1に設定すると、それぞれ周辺機器アドレス自動インクリメントモードまたはメモリアドレス自動インクリメントモードが有効になります。
PSIZE[1: 0]ビットは、周辺機器アドレスフェッチデータサイズとアドレス自己インクリメントサイズを設定するために使用されます。
MSIZE[1:0]ビットは、メモリアドレスフェッチデータサイズとアドレス自己増加サイズを設定するために使用されます。
8ビット、16ビット、32ビットの3つのオプションがあります。具体的なデータ転送方法は以下の表のとおりです。
表11-1 異なるデータビット幅でのDMA転送(PINC=MINC=1)
DMA_CNTRxレジスタは、送信するデータ数を示します。
EN=0のとき、設定値を書き込んでください。
EN=1のときにDMA送信チャネルがオンになると、このレジスタは読み取り専用になり、送信ごとに値が徐々に減少します。
周辺機器とメモリの送信データ値は、アドレスポインタの自動インクリメント機能をサポートしており、ポインタのインクリメントはプログラム可能です。
これらによってアクセスされた最初の送信データアドレスは、DMA_PADDRxレジスタとDMA_MADDRxレジスタに格納されます。
DMA_CFGRxレジスタのPINCビットまたはMINCビットを1に設定すると、それぞれ周辺機器アドレス自動インクリメントモードまたはメモリアドレス自動インクリメントモードが有効になります。
PSIZE[1: 0]ビットは、周辺機器アドレスフェッチデータサイズとアドレス自己インクリメントサイズを設定するために使用されます。
MSIZE[1:0]ビットは、メモリアドレスフェッチデータサイズとアドレス自己増加サイズを設定するために使用されます。
8ビット、16ビット、32ビットの3つのオプションがあります。具体的なデータ転送方法は以下の表のとおりです。
表11-1 異なるデータビット幅でのDMA転送(PINC=MINC=1)
| Source bit width | Target bit width | Trans ferred data Number |
Source: address /data | Target: adress /data | Tarnsfer operation 転送操作 |
|---|---|---|---|---|---|
| 8 | 8 | 4 | 0x00/B0 0x01/B1 0x02/B2 0x03/B3 | 0x00/B0 0x01/B1 0x02/B2 0x03/B3 |
・ ソースアドレスの増分はソース側で設定されたデータビット幅に揃えられ、値はソースデータのビット幅と等しくなります。 ・ ターゲットアドレスの増分はターゲット側で設定されたデータのビット幅に揃えられ、値はターゲットデータのビット幅と等しくなります。 ・ DMAによるターゲット側へのデータ転送の原則:データサイズが不足する場合は、上位ビットに0を補充します。 データサイズがオーバーフローする場合は、上位ビットを削除します。 ・ データの保存:リトルエンディアン方式。下位バイトは下位アドレスに格納され、上位バイトは上位アドレスに格納されます。 |
| 8 | 16 | 4 | 0x00/B0 0x01/B1 0x02/B2 0x03/B3 | 0x02/00B0 0x04/00B1 0x06/00B3 | |
| 8 | 32 | 4 | 0x00/B0 0x01/B1 0x02/B2 0x03/B3 | 0x00/000000B0 0x04/000000B1 0x08/000000B2 0x0C/000000B3 | |
| 16 | 8 | 4 | 0x00/B1B0 0x02/B2B3 0x04/B5B4 0x06/B7B6 | 0x00/B0 0x01/B2 0x02/B4 0x03/B6 | |
| 16 | 16 | 4 | 0x00/B1B0 0x02/B3B2 0x04/B5B4 0x06/B7B6 | 0x00/B1B0 0x02/B3B2 0x04/B5B4 0x06/B7B6 | |
| 16 | 32 | 4 | 0x00/B1B0 0x02/B3B2 0x04/B5B4 0x06/B7B6 | 0x00/0000B1B0 0x04/0000B3B2 0x08/0000B5B4 0x0C/0000B7B6 | |
| 32 | 8 | 4 | 0x00/B3B2B1B0 0x04/B7B6B5B4 0x08/BBBAB9B8 0x0C/BFBEBDBC | 0x00/B0 0x01/B4 0x02/B8 0x03/BC | |
| 32 | 16 | 4 | 0x00/B3B2B1B0 0x04/B7B6B5B4 0x08/BBBAB9B8 0x0C/BFBEBDBC | 0x00/B1B0 0x02/B5B4 0x04/B9B8 0x06/BDBC | |
| 32 | 32 | 4 | 0x00/B3B2B1B0 0x04/B7B6B5B4 0x08/BBBAB9B8 0x0C/BFBEBDBC | 0x00/B3B2B1B0 0x04/B7B6B5B4 0x08/BBBAB9B8 0x0C/BFBEBDBC |
11.2.3 DMA要求マッピング
Qingke V4F MCU(CH32V30x_D8CおよびCH32V30x_D8)およびARM® CortexTM-M3 MCU(CH32F20x_D8CおよびCH32F20x_D8)
DMAコントローラは18チャネルを提供し、DMA1は7チャネル、DMA2は11チャネルを提供します。
各チャネルは複数のペリフェラル要求に対応しています。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。
図11-2 DMA1 要求マッピング 図11-3 DMA2 要求マッピングDMAコントローラは18チャネルを提供し、DMA1は7チャネル、DMA2は11チャネルを提供します。
各チャネルは複数のペリフェラル要求に対応しています。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。

表11-2 各DMA1チャネルの周辺機器マッピング表
| Peripheral | Channel1 | Channel2 | Channel3 | Channel4 | Channel5 | Channel6 | Channel7 |
|---|---|---|---|---|---|---|---|
| ADC1 | ADC1 | ||||||
| SPI1 | SPI1_RX | SPI1_TX | |||||
| SPI/I2S2 | SPI/I2S2_RX | SPI/I2S2_TX | |||||
| USART1 | USART1_TX | USART1_RX | |||||
| USART2 | USART2_RX | USART2_TX | |||||
| USART3 | USART3_TX | USART3_RX | |||||
| I2C1 | I2C1_TX | I2C1_RX | |||||
| I2C2 | I2C2_TX | I2C2_RX | |||||
| TIM1 | TIM1_CH1 | TIM1_CH2 | TIM1_CH4 TIM1_TRIG TIM1_COM | TIM1_UP | TIM1_CH3 | ||
| TIM2 | TIM2_CH3 | TIM2_UP | TIM2_CH1 | TIM2_CH2 TIM2_CH4 | |||
| TIM3 | TIM3_CH3 | TIM3_CH4 TIM3_UP | TIM3_CH1 TIM3_TRIG | ||||
| TIM4 | TIM4_CH1 | TIM4_CH2 | TIM4_CH3 | TIM4_UP |
表11-3 各DMA2チャネルの周辺機器マッピング表1
| Peripheral | Channel1 | Channel2 | Channel3 | Channel4 | Channel5 | Channel6 | Channel7 |
|---|---|---|---|---|---|---|---|
| TIM5 | TIM5_CH4 TIM5_TRIG | TIM5_CH3 TIM5_UP | TIM5_CH2 | TIM5_CH1 | |||
| TIM6 | TIM6_UO | ||||||
| TIM7 | TIM7_UP | ||||||
| TIM8 | TIM8_CH3 TIM8_UP | TIM8_CH4 TIM8_TRIG TIM8_COM | TIM8_CH1 | TIM8_CH2 | |||
| TIM9 | TIM9_UP | TIM9_CH1 | |||||
| TIM10 | TIM10_CH4 | TIM10_TRIG TIM10_COM | |||||
| UART4 | USART4_RX | USART4_TX | |||||
| UART5 | USART5_RX | USART5_TX | |||||
| UART6 | UART6_RX | UART6_TX | |||||
| UART7 | |||||||
| UART8 | |||||||
| SPI/I2S3 | SPI/I2S3_RX | SPI/I2S3_TX | |||||
| SDIO | SDIO | ||||||
| DAC1 | DAC1 | ||||||
| DAC2 | DAC2 |
表11-3 各DMA2チャネルの周辺機器マッピング表2
| Peripheral | Channel8 | Channel9 | Channel10 | Channel11 |
|---|---|---|---|---|
| TIM5 | ||||
| TIM6 | ||||
| TIM7 | ||||
| TIM8 | ||||
| TIM9 | TIM9_CH4 | TIM9_CH2 | TIM9_TRIG TIM9_COM | TIM9_CH3 |
| TIM10 | TIM10_CH1 | TIM10_CH3 | TIM10_CH2 | TIM10_UP |
| UART4 | ||||
| UART5 | ||||
| UART6 | ||||
| UART7 | UART7_TX | UART7_RX | ||
| UART8 | UART8_TX | UART8_RX | ||
| SPI/I2S3 | ||||
| SDIO | ||||
| DAC1 | ||||
| DAC2 |
Qingke V4B MCU (CH32V20x_D6) および ARM® CortexTM-M3 MCU (CH32F20x_D6)。
DMAコントローラは8つのチャネルを提供します。
各チャネルは複数のペリフェラル要求に対応します。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。
| Peripheral | Channel1 | Channel2 | Channel3 | Channel4 | Channel5 | Channel6 | Channel7 | Channel8 |
|---|---|---|---|---|---|---|---|---|
| ADC1 | ADC1 | |||||||
| SPI1 | SPI1_RX | SPI1_TX | ||||||
| SPI2 | SPI2_RX | SPI2_TX | ||||||
| USART1 | USART1_TX | USART1_RX | ||||||
| USART2 | USART2_RX | USART2_TX | ||||||
| USART3 | USART3_TX | USART3_RX | ||||||
| USART4 | USART4_TX | USART4_RX | ||||||
| I2C1 | I2C1_TX | I2C1_RX | ||||||
| I2C2 | I2C2_TX | I2C2_RX | ||||||
| TIM1 | TIM1_CH1 | TIM1_CH2 | TIM1_CH4 TIM1_TRIG TIM1_COM | TIM1_UP | TIM1_CH3 | |||
| TIM2 | TIM2_CH3 | TIM2_UP | TIM2_CH1 | TIM2_CH2 TIM2_CH4 | ||||
| TIM3 | TIM3_CH3 | TIM3_CH4 TIM3_UP | TIM3_CH1 TIM3_TRIG | |||||
| TIM4 | TIM4_CH1 | TIM4_CH2 | TIM4_CH3 | TIM4_UP |
Qingke V4C MCU (CH32V20x_D8W および CH32V20x_D8) および ARM® CortexTM-M3 MCU (CH32F20x_D8W)。
DMAコントローラは8つのチャネルを提供します。
各チャネルは複数のペリフェラル要求に対応します。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。
| Peripheral | Channel1 | Channel2 | Channel3 | Channel4 | Channel5 | Channel6 | Channel7 | Channel8 |
|---|---|---|---|---|---|---|---|---|
| ADC1 | ADC1 | |||||||
| SPI1 | SPI1_RX | SPI1_TX | ||||||
| SPI2 | SPI2_RX | SPI2_TX | ||||||
| USART1 | USART1_TX | USART1_RX | ||||||
| USART2 | USART2_RX | USART2_TX | ||||||
| USART3 | USART3_TX | USART3_RX | ||||||
| USART4 | USART4_TX | USART4_RX | ||||||
| I2C1 | I2C1_TX | I2C1_RX | ||||||
| I2C2 | I2C2_TX | I2C2_RX | ||||||
| TIM1 | TIM1_CH1 | TIM1_CH2 | TIM1_CH4 TIM1_TRIG TIM1_COM | TIM1_UP | TIM1_CH3 | |||
| TIM2 | TIM2_CH3 | TIM2_UP | TIM2_CH1 | TIM2_CH2 TIM2_CH4 | ||||
| TIM3 | TIM3_CH3 | TIM3_CH4 TIM3_UP | TIM3_CH1 TIM3_TRIG | |||||
| TIM4 | TIM4_CH1 | TIM4_CH2 | TIM4_CH3 | TIM4_UP | ||||
| TIM5 | TIM5_CH2 | TIM5_CH3 | TIM5_CH4 | TIM5_CH1 TIM5_TRIG | TIM5_UP |
11.3 レジスタの説明
表11-5 DMA1関連レジスタ
表11-6 DMA2関連レジスタ
| Name | Access address | Description | Reset value |
|---|---|---|---|
| R32_DMA1_INTFR | 0x40020000 | DMA1 interrupt flag register | 0x00000000 |
| R32_DMA1_INTFCR | 0x40020004 | DMA1 interrupt flag clear register | 0x00000000 |
| R32_DMA1_CFGR1 | 0x40020008 | DMA1 channel1 configuration register | 0x00000000 |
| R32_DMA1_CNTR1 | 0x4002000C | DMA1 channel1 transferred data register | 0x00000000 |
| R32_DMA1_PADDR1 | 0x40020010 | DMA1 channel1 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR1 | 0x40020014 | DMA1 channel1 memory address register | 0x00000000 |
| R32_DMA1_CFGR2 | 0x4002001C | DMA1 channel2 configuration register | 0x00000000 |
| R32_DMA1_CNTR2 | 0x40020020 | DMA1 channel2 transferred data register | 0x00000000 |
| R32_DMA1_PADDR2 | 0x40020024 | DMA1 channel2 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR2 | 0x40020028 | DMA1 channel2 memory address register | 0x00000000 |
| R32_DMA1_CFGR3 | 0x40020030 | DMA1 channel3 configuration register | 0x00000000 |
| R32_DMA1_CNTR3 | 0x40020034 | DMA1 channel3 transferred data register | 0x00000000 |
| R32_DMA1_PADDR3 | 0x40020038 | DMA1 channel3 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR3 | 0x4002003C | DMA1 hannel3 memory address register | 0x00000000 |
| R32_DMA1_CFGR4 | 0x40020044 | DMA1 channel4 configuration register | 0x00000000 |
| R32_DMA1_CNTR4 | 0x40020048 | DMA1 channel4 transferred data register | 0x00000000 |
| R32_DMA1_PADDR4 | 0x4002004C | DMA1 channel4 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR4 | 0x40020050 | DMA1 channel4 memory address register | 0x00000000 |
| R32_DMA1_CFGR5 | 0x40020058 | DMA1 channel5 configuration register | 0x00000000 |
| R32_DMA1_CNTR5 | 0x4002005C | DMA1 channel5 transferred data register | 0x00000000 |
| R32_DMA1_PADDR5 | 0x40020060 | DMA1 channel5 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR5 | 0x40020064 | DMA1 channel5 memory address register | 0x00000000 |
| R32_DMA1_CFGR6 | 0x4002006C | DMA1 channel6 configuration register | 0x00000000 |
| R32_DMA1_CNTR6 | 0x40020070 | DMA1 channel6 transferred data register | 0x00000000 |
| R32_DMA1_PADDR6 | 0x40020074 | DMA1 channel6 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR6 | 0x40020078 | DMA1 channel6 memory address register | 0x00000000 |
| R32_DMA1_CFGR7 | 0x40020080 | DMA1 channel7 configuration register | 0x00000000 |
| R32_DMA1_CNTR7 | 0x40020084 | DMA1 channel7 transferred data register | 0x00000000 |
| R32_DMA1_PADDR7 | 0x40020088 | DMA1 channel7 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR7 | 0x4002008C | DMA1 channel7 memory address register | 0x00000000 |
| R32_DMA1_CFGR8 | 0x40020094 | DMA1 channel8 configuration register | 0x00000000 |
| R32_DMA1_CNTR8 | 0x40020098 | DMA1 channel8 transferred data register | 0x00000000 |
| R32_DMA1_PADDR8 | 0x4002009C | DMA1 channel8 peripheral address register | 0x00000000 |
| R32_DMA1_MADDR8 | 0x400200A0 | DMA1 channel8 memory address register | 0x00000000 |
表11-6 DMA2関連レジスタ
| Name | Access address | Description | Reset value |
|---|---|---|---|
| R32_DMA2_INTFR | 0x40020400 | DMA2 interrupt flag register | 0x00000000 |
| R32_DMA2_INTFCR | 0x40020404 | DMA2 interrupt flag clear register | 0x00000000 |
| R32_DMA2_CFGR1 | 0x40020408 | DMA2 channel1 configuration register | 0x00000000 |
| R32_DMA2_CNTR1 | 0x4002040C | DMA2 channel1 transferred data register | 0x00000000 |
| R32_DMA2_PADDR1 | 0x40020410 | DMA2 channel1 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR1 | 0x40020414 | DMA2 channel1 memory address register | 0x00000000 |
| R32_DMA2_CFGR2 | 0x4002041C | DMA2 channel2 configuration register | 0x00000000 |
| R32_DMA2_CNTR2 | 0x40020420 | DMA2 channel2 transferred data register | 0x00000000 |
| R32_DMA2_PADDR2 | 0x40020424 | DMA2 channel2 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR2 | 0x40020428 | DMA2 channel2 memory address register | 0x00000000 |
| R32_DMA2_CFGR3 | 0x40020430 | DMA2 channel3 configuration register | 0x00000000 |
| R32_DMA2_CNTR3 | 0x40020434 | DMA2 channel3 transferred data register | 0x00000000 |
| R32_DMA2_PADDR3 | 0x40020438 | DMA2 channel3 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR3 | 0x4002043C | DMA2 channel3 memory address register | 0x00000000 |
| R32_DMA2_CFGR4 | 0x40020444 | DMA2 channel4 configuration register | 0x00000000 |
| R32_DMA2_CNTR4 | 0x40020448 | DMA2 channel4 transferred data register | 0x00000000 |
| R32_DMA2_PADDR4 | 0x4002044C | DMA2 channel4 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR4 | 0x40020450 | DMA2 channel4 memory address register | 0x00000000 |
| R32_DMA2_CFGR5 | 0x40020458 | DMA2 channel5 configuration register | 0x00000000 |
| R32_DMA2_CNTR5 | 0x4002045C | DMA2 channel5 transferred data register | 0x00000000 |
| R32_DMA2_PADDR5 | 0x40020460 | DMA2 channel5 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR5 | 0x40020464 | DMA2 channel5 memory address register | 0x00000000 |
| R32_DMA2_CFGR6 | 0x4002046C | DMA2 channel6 configuration register | 0x00000000 |
| R32_DMA2_CNTR6 | 0x40020470 | DMA2 channel6 transferred data register | 0x00000000 |
| R32_DMA2_PADDR6 | 0x40020474 | DMA2 channel6 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR6 | 0x40020478 | DMA2 channel6 memory address register | 0x00000000 |
| R32_DMA2_CFGR7 | 0x40020480 | DMA2 channel7 configuration register | 0x00000000 |
| R32_DMA2_CNTR7 | 0x40020484 | DMA2 channel7 transferred data register | 0x00000000 |
| R32_DMA2_PADDR7 | 0x40020488 | DMA2 channel7 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR7 | 0x4002048C | DMA2 channel7 memory address register | 0x00000000 |
| R32_DMA2_CFGR8 | 0x40020490 | DMA2 channel8 configuration register | 0x00000000 |
| R32_DMA2_CNTR8 | 0x40020494 | DMA2 channel8 transferred data register | 0x00000000 |
| R32_DMA2_PADDR8 | 0x40020498 | DMA2 channel8 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR8 | 0x4002049C | DMA2 channel8 memory address register | 0x00000000 |
| R32_DMA2_CFGR9 | 0x400204A0 | DMA2 channel9 configuration register | 0x00000000 |
| R32_DMA2_CNTR9 | 0x400204A4 | DMA2 channel9 transferred data register | 0x00000000 |
| R32_DMA2_PADDR9 | 0x400204A8 | DMA2 channel9 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR9 | 0x400204AC | DMA2 channel9 memory address register | 0x00000000 |
| R32_DMA2_CFGR10 | 0x400204B0 | DMA2 channel10 configuration register | 0x00000000 |
| R32_DMA2_CNTR10 | 0x400204B4 | DMA2 channel10 transferred data register | 0x00000000 |
| R32_DMA2_PADDR10 | 0x400204B8 | DMA2 channel10 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR10 | 0x400204BC | DMA2 channel10 memory address register | 0x00000000 |
| R32_DMA2_CFGR11 | 0x400204C0 | DMA2 channel11 configuration register | 0x00000000 |
| R32_DMA2_CNTR11 | 0x400204C4 | DMA2 channel11 transferred data register | 0x00000000 |
| R32_DMA2_PADDR11 | 0x400204C8 | DMA2 channel11 peripheral address register | 0x00000000 |
| R32_DMA2_MADDR11 | 0x400204CC | DMA2 channel11 memory address register | 0x00000000 |
| R32_DMA2_EXTEM_INTFR | 0x400204D0 | DMA2 extend interrupt flag register | 0x00000000 |
| R32_DMA2_EXTEM_INTFCR | 0x400204D4 | DMA2 extend interrupt flag clear register | 0x00000000 |
11.3.1 DMAy割り込みフラグレジスタ(DMAy_INTFR)(y=1/2)
DMAx_INTFR = DMAy INTerrupt Flag Register | Access base address 0x40020000 Offset address: 0x04 + (y-1)*0x400
■レジスター内容
ハードウェアによってセットされ、ソフトウェアでCTEIFxビットに書き込むことでこのフラグをクリアできます。
このフラグはハードウェアによってセットされ、ソフトウェアで CHTIFx ビットに書き込むことでクリアされます。
ハードウェアによってセットされ、ソフトウェアでCTCIFxビットに書き込むことでこのフラグをクリアできます。
このフラグはハードウェアによってセットされ、ソフトウェアで CGIFx ビットに書き込むことでクリアされます。
注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | TEIF7 | HTIF7 | TCIF7 | GIF7 | TEIF6 | HTIF6 | TCIF6 | GIF6 | TEIF5 | HTIF5 | TCIF5 | GIF5 | TEIF4 | HTIF4 | TCIF4 | GIF4 | TEIF3 | HTIF3 | TCIF3 | GIF3 | TEIF2 | HTIF2 | TCIF2 | GIF2 | TEIF1 | HTIF1 | TCIF1 | GIF1 | |||
| RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | |||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
TEIFx
チャネルxの送信エラーフラグ(x=1/2/3/4/5/6/7/8)(Transmission error flag of channel x )| 1 | チャネルxで送信エラーが発生しました。 |
| 0 | チャネルxで送信エラーは発生していません。 |
HTIFx
チャネル x の送信半分完了 (x=1/2/3/4/5/6/7/8)(Transmission half completion of channel x)| 1 | チャネル x で送信半分完了イベントが発生しました。 |
| 0 | チャネル x で送信半分完了イベントは発生していません。 |
TCIFx
チャネルxの送信完了フラグ (x=1/2/3/4/5/6/7/8)(Transmission completion flag of channel x)| 1 | チャネルxで送信完了イベントが発生しました。 |
| 0 | チャネルxで送信完了イベントは発生していません。 |
GIFx
チャネル x のグローバル割り込みフラグ (x=1/2/3/4/5/6/7/8) (Global interrupt flag of channel x)| 1 | チャネル x で TEIFx、HTIFx、または TCIFx が生成された。 |
| 0 | チャネル x で TEIFx、HTIFx、または TCIFx は生成されていない。 |
11.3.2 DMAy割り込みフラグクリアレジスタ(DMAy_INTFCR)(y=1/2)
DMAx_INTFCR = DMAy INTerrupt Flag Clear Register | Access base address 0x40020000 Offset address: 0x04 + (y-1)*0x400
■レジスター内容
注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | CTEIF7 | CHTIF7 | CTCIF7 | CGIF7 | CTEIF6 | CHTIF6 | CTCIF6 | CGIF6 | CTEIF5 | CHTIF5 | CTCIF5 | CGIF5 | CTEIF4 | CHTIF4 | CTCIF4 | CGIF4 | CTEIF3 | CHTIF3 | CTCIF3 | CGIF3 | CTEIF2 | CHTIF2 | CTCIF2 | CGIF2 | CTEIF1 | CHTIF1 | CTCIF1 | CGIF1 | |||
| RO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | |||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CTEIFx
チャネル x の送信エラーフラグをクリアします。 (x=1/2/3/4/5/6/7/8) (Clear the transmission error flag of channel x)| 1 | DMA_INTFR レジスタの TEIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CHTIFx
チャネル x の送信半分完了をクリアします。 (x=1/2/3/4/5/6/7/8) (Clear the transmission half completion of channel x)| 1 | DMA_INTFR レジスタの HTIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CTCIFx
チャネル x の送信完了フラグをクリアします。(x=1/2/3/4/5/6/7/8) (Clear the transmission completion flag of channel x)| 1 | DMA_INTFR レジスタの TCIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CGIFx
チャネル x のグローバル割り込みフラグをクリアします。(x=1/2/3/4/5/6/7/8) (Clear the global interrupt flag of channel x)| 1 | DMA_INTFR レジスタの TEIFx/HTIFx/TCIFx/GIFx フラグをクリアします。 |
| 0 | 影響なし。 |
11.3.3 DMAyチャネルx構成レジスタ(DMAy_CFGRx)(x=1/2/3/4/5/6/7/8、y=0?/1? =1/2では)
DMAy_CFGRx = DMAy channelx ConFiGuration Register | Access base address 0x40020000 Offset address: 0x08 + (x-1)*20 + (y-1)*0x400
■レジスター内容
DMA転送エラーが発生すると、ハードウェアによって自動的に0にクリアされ、チャネルは無効になります。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | MEM2MEM | PL | MSIZE | PSIZE | MINC | PINC | CIRC | DIR | TEIE | HTIE | TCIE | EN | |||||||||||||||||||
| RO | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | |||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MEM2MEM
メモリ間モードの有効化(Memory to memory mode enable)| 1 | メモリ間モードを有効にする。 |
| 0 | メモリ間モードを無効にする。 |
PL
チャネル優先度設定(Channel priority level setting)| 00 | 低 |
| 01 | 中 |
| 10 | 高 |
| 11 | 非常に高 |
MSIZE
メモリサイズ設定(Memory size setting)| 00 | 8ビット |
| 01 | 16ビット |
| 10 | 32ビット |
| 11 | 予約済み |
PSIZE
周辺サイズ設定(Peripheral size setting)| 00 | 8ビット |
| 01 | 16ビット |
| 10 | 32ビット |
| 11 | 予約済み |
MINC
メモリインクリメントモードの有効化(Memory increment mode enable)| 1 | メモリインクリメントモードを有効にする。 |
| 0 | メモリインクリメントモードを無効にする。 |
PINC
ペリフェラルインクリメントモードの有効化(Peripheral increment mode enable)| 1 | ペリフェラルインクリメントモードを有効にする。 |
| 0 | ペリフェラルインクリメントモードを無効にする。 |
CIRC
DMAチャネル循環モードの有効化(DMA channel circular mode enable)| 1 | 循環モードを有効にする。 |
| 0 | 循環モードを無効にする。 |
DIR
データ転送方向(Data transfer direction)| 1 | メモリからの読み取り |
| 0 | 周辺機器からの読み取り |
TEIE
転送エラー割り込み有効化制御(Transfer error interrupt enable control)| 1 | 転送エラー割り込みを有効にする。 |
| 0 | 転送エラー割り込みを無効にする。 |
HTIE
ハーフ転送割り込み有効化制御(Half transfer interrupt enable control)| 1 | 送信ハーフ割り込みを有効にする。 |
| 0 | 送信ハーフ割り込みを無効にする。 |
TCIE
転送完了割り込み有効化制御(Transfer complete interrupt enable control)| 1 | 送信完了割り込みを有効にする。 |
| 0 | 送信完了割り込みを無効にする。 |
EN
チャネル有効化制御(Channel enable control)| 1 | チャネル有効化 |
| 0 | チャネル無効化 |
注: Channel8 は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、および CH32V20x_D6 に適用されます。
11.3.4 DMAyチャネルx転送データレジスタ(DMAy_CNTRx)(x=1/2/3/4/5/6/7/8、y=0/1)
DMAy_CNTRx = DMAy ChaNnelx Transferred data Register | Access base address 0x40020000 Offset address: 0x0C + (x-1)*20 + (y-1)*0x400
■レジスター内容
このレジスタは、チャネルが動作していないとき(DMA_CFGRxのEN=0)のみ書き込み可能です。
チャネルが有効になると、レジスタは読み取り専用になり、転送する残りのデータ数を示します(レジスタの内容0は、DMA転送ごとに徐々に減少します)。
チャネルがサイクリックモードの場合、レジスタの内容は自動的に以前の設定値にリロードされます。
注:このレジスタはEN=0の場合にのみ変更できます。EN=1の場合、このレジスタは読み取り専用レジスタであり、現在送信するデータ数を示します。
レジスタの内容が0の場合、チャネルのオン/オフに関わらず、データは送信されません。
チャネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | NDT | ||||||||||||||||||||||||||||||
| RO | RW | ||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
NDT
転送データ数(範囲:0~65535)(Number of data to transfer, range: 0-65535)このレジスタは、チャネルが動作していないとき(DMA_CFGRxのEN=0)のみ書き込み可能です。
チャネルが有効になると、レジスタは読み取り専用になり、転送する残りのデータ数を示します(レジスタの内容0は、DMA転送ごとに徐々に減少します)。
チャネルがサイクリックモードの場合、レジスタの内容は自動的に以前の設定値にリロードされます。
注:このレジスタはEN=0の場合にのみ変更できます。EN=1の場合、このレジスタは読み取り専用レジスタであり、現在送信するデータ数を示します。
レジスタの内容が0の場合、チャネルのオン/オフに関わらず、データは送信されません。
チャネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
11.3.5 DMAyチャネルx周辺アドレスレジスタ(DMAy_PADDRx)(x=1/2/3/4/5/6/7/8)
DMAy_PADDRx = DMAy channelx Peripheral ADDress Register | Access base address 0x40020000 Offset address: 0x10 + (x-1)*20 + (y-1)*0x400
■レジスター内容
ペリフェラルデータ転送の送信元または送信先アドレスとして使用されます。
PSIZE[1:0]='01' (16ビット) の場合、モジュールは自動的にビット0を無視し、操作アドレスは自動的に2バイト境界に設定されます。
PSIZE[1:0]='10' (32ビット) の場合、モジュールは自動的にビット[1:0]を無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0のときのみ変更可能であり、EN=1のときは書き込むことができません。
チャンネル8はCH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PA | |||||||||||||||||||||||||||||||
| RW | |||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PA
ペリフェラルベースアドレス(Peripheral base address)ペリフェラルデータ転送の送信元または送信先アドレスとして使用されます。
PSIZE[1:0]='01' (16ビット) の場合、モジュールは自動的にビット0を無視し、操作アドレスは自動的に2バイト境界に設定されます。
PSIZE[1:0]='10' (32ビット) の場合、モジュールは自動的にビット[1:0]を無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0のときのみ変更可能であり、EN=1のときは書き込むことができません。
チャンネル8はCH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
11.3.6 DMAyチャネルxメモリアドレスレジスタ(DMAy_MADDRx)(x=1/2/3/4/5/6/7/8)
DMAy_MADDRx = DMAy channelx Memory ADDress Register | Access base address 0x40020000 Offset address: 0x14 + (x-1)*20 + (y-1)*0x400
■レジスター内容
MSIZE[1:0]='01'(16ビット)の場合、モジュールはビット0を自動的に無視し、操作アドレスは自動的に2バイト境界に設定されます。
MSIZE[1:0]='10'(32ビット)の場合、モジュールは[1:0]ビットを自動的に無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0のときのみ変更可能であり、EN=1のときは書き込むことができません。
チャンネル8はCH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MA | |||||||||||||||||||||||||||||||
| RW | |||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MA
メモリデータアドレス(データ転送の送信元または転送先アドレス) (Memory data address)MSIZE[1:0]='01'(16ビット)の場合、モジュールはビット0を自動的に無視し、操作アドレスは自動的に2バイト境界に設定されます。
MSIZE[1:0]='10'(32ビット)の場合、モジュールは[1:0]ビットを自動的に無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0のときのみ変更可能であり、EN=1のときは書き込むことができません。
チャンネル8はCH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
11.3.7 DMA2 チャネルx構成レジスタ (DMA2_CFGRx) (x=8/9/10/11)
DMA2_CFGRx = DMA2 channelx ConFiGuration Register | Access base address 0x40020000 Offset address: 0x490 + (x-8)*16
■レジスター内容
DMA転送エラーが発生すると、ハードウェアによって自動的に0にクリアされ、チャネルは無効になります。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | MEM2MEM | PL | MSIZE | PSIZE | MINC | PINC | CIRC | DIR | TEIE | HTIE | TCIE | EN | |||||||||||||||||||
| RO | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | RW | |||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MEM2MEM
メモリ間モードの有効化(Memory to memory mode enable)| 1 | メモリ間モードを有効にする。 |
| 0 | メモリ間モードを無効にする。 |
PL
チャネル優先度設定(Channel priority level setting)| 00 | 低 |
| 01 | 中 |
| 10 | 高 |
| 11 | 非常に高 |
MSIZE
メモリサイズ設定(Memory size setting)| 00 | 8ビット |
| 01 | 16ビット |
| 10 | 32ビット |
| 11 | 予約済み |
PSIZE
周辺サイズ設定(Peripheral size setting)| 00 | 8ビット |
| 01 | 16ビット |
| 10 | 32ビット |
| 11 | 予約済み |
MINC
メモリインクリメントモードの有効化(Memory increment mode enable)| 1 | メモリインクリメントモードを有効にする。 |
| 0 | メモリインクリメントモードを無効にする。 |
PINC
ペリフェラルインクリメントモードの有効化(Peripheral increment mode enable)| 1 | ペリフェラルインクリメントモードを有効にする。 |
| 0 | ペリフェラルインクリメントモードを無効にする。 |
CIRC
DMAチャネル循環モードの有効化(DMA channel circular mode enable)| 1 | 循環モードを有効にする。 |
| 0 | 循環モードを無効にする。 |
DIR
データ転送方向(Data transfer direction)| 1 | メモリからの読み取り |
| 0 | 周辺機器からの読み取り |
TEIE
転送エラー割り込み有効化制御(Transfer error interrupt enable control)| 1 | 転送エラー割り込みを有効にする。 |
| 0 | 転送エラー割り込みを無効にする。 |
HTIE
ハーフ転送割り込み有効化制御(Half transfer interrupt enable control)| 1 | 送信ハーフ割り込みを有効にする。 |
| 0 | 送信ハーフ割り込みを無効にする。 |
TCIE
転送完了割り込み有効化制御(Transfer complete interrupt enable control)| 1 | 送信完了割り込みを有効にする。 |
| 0 | 送信完了割り込みを無効にする。 |
EN
チャネル有効化制御(Channel enable control)| 1 | チャネル有効化 |
| 0 | チャネル無効化 |
注: CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、CH32V30x_D8C に適用されます。
11.3.8 DMA2 チャネルx転送データレジスタ (DMA2_CNTRx) (x=8/9/10/11)
DMA2_CNTRx = DMA2 ChaNnelx Transferred data Register | Access base address 0x40020000 Offset address:
■レジスター内容
このレジスタは、チャネルが動作していないとき(DMA_CFGRxのEN=0)のみ書き込み可能です。
チャネルが有効になると、レジスタは読み取り専用になり、転送する残りのデータ数を示します(レジスタの内容は、DMA転送ごとに徐々に減少します)。
チャネルがサイクリックモードの場合、レジスタの内容は自動的に以前の設定値にリロードされます。
注:このレジスタはEN=0の場合にのみ変更できます。EN=1の場合、このレジスタは読み取り専用レジスタであり、現在送信するデータ数を示します。
レジスタの内容が0の場合、チャネルのオン/オフに関わらず、データは送信されません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | NDT | ||||||||||||||||||||||||||||||
| RO | RW | ||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
NDT
転送データ数(範囲:0~65535)(Number of data to transfer, range: 0-65535)このレジスタは、チャネルが動作していないとき(DMA_CFGRxのEN=0)のみ書き込み可能です。
チャネルが有効になると、レジスタは読み取り専用になり、転送する残りのデータ数を示します(レジスタの内容は、DMA転送ごとに徐々に減少します)。
チャネルがサイクリックモードの場合、レジスタの内容は自動的に以前の設定値にリロードされます。
注:このレジスタはEN=0の場合にのみ変更できます。EN=1の場合、このレジスタは読み取り専用レジスタであり、現在送信するデータ数を示します。
レジスタの内容が0の場合、チャネルのオン/オフに関わらず、データは送信されません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
11.3.9 DMA2 チャネルx周辺アドレスレジスタ (DMA2_PADDRx) (x=8/9/10/11)
DMA2_PADDRx = DMA2 channelx Peripheral ADDress Register | Access base address 0x40020000 Offset address: 0x498 + (x-8)*16
■レジスター内容
ペリフェラルデータ転送の送信元または送信先アドレスとして使用されます。
PSIZE[1:0]='01' (16ビット) の場合、モジュールは自動的にビット0を無視し、操作アドレスは自動的に2バイト境界に設定されます。
PSIZE[1:0]='10' (32ビット) の場合、モジュールは自動的にビット[1:0]を無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0の場合にのみ変更可能であり、EN=1の場合には書き込むことができません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PA | |||||||||||||||||||||||||||||||
| RW | |||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PA
ペリフェラルベースアドレス(Peripheral base address)ペリフェラルデータ転送の送信元または送信先アドレスとして使用されます。
PSIZE[1:0]='01' (16ビット) の場合、モジュールは自動的にビット0を無視し、操作アドレスは自動的に2バイト境界に設定されます。
PSIZE[1:0]='10' (32ビット) の場合、モジュールは自動的にビット[1:0]を無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0の場合にのみ変更可能であり、EN=1の場合には書き込むことができません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
11.3.10 DMA2 チャネルxメモリアドレスレジスタ (DMA2_MADDRx) (x=8/9/10/11)
DMA2_MADDRx = DMA2 channelx Memory ADDress Register | Access base address 0x40020000 Offset address: 0x49C + (x-8)*16
■レジスター内容
MSIZE[1:0]='01'(16ビット)の場合、モジュールはビット0を自動的に無視し、操作アドレスは自動的に2バイト境界に設定されます。
MSIZE[1:0]='10'(32ビット)の場合、モジュールは[1:0]ビットを自動的に無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0の場合にのみ変更可能であり、EN=1の場合には書き込むことができません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MA | |||||||||||||||||||||||||||||||
| RW | |||||||||||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MA
メモリデータアドレス(データ転送の送信元または転送先アドレス) (Memory data address)MSIZE[1:0]='01'(16ビット)の場合、モジュールはビット0を自動的に無視し、操作アドレスは自動的に2バイト境界に設定されます。
MSIZE[1:0]='10'(32ビット)の場合、モジュールは[1:0]ビットを自動的に無視し、操作アドレスは自動的に4バイト境界に設定されます。
注:このレジスタはEN=0の場合にのみ変更可能であり、EN=1の場合には書き込むことができません。
CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、およびCH32V30x_D8Cに適用されます。
11.3.11 DMA2拡張割り込みフラグレジスタ(DMA2_EXTEM_INTFR)
DMA2_EXTEM_INTFR = DMA2 EXTEnd INTerrupt Flag Register | Access base address 0x40020000 Offset address: 0x4D0
■レジスター内容
ハードウェアによってセットされ、ソフトウェアでCTEIFxビットに書き込むことでこのフラグをクリアできます。
このフラグはハードウェアによってセットされ、ソフトウェアで CHTIFx ビットに書き込むことでクリアされます。
ハードウェアによってセットされ、ソフトウェアでCTCIFxビットに書き込むことでこのフラグをクリアできます。
このフラグはハードウェアによってセットされ、ソフトウェアで CGIFx ビットに書き込むことでクリアされます。
注: CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、CH32V30x_D8C に適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | TEIF11 | HTIF11 | TCIF11 | GIF11 | TEIF10 | HTIF10 | TCIF10 | GIF10 | TEIF9 | HTIF9 | TCIF9 | GIF9 | TEIF8 | HTIF8 | TCIF8 | GIF8 | |||||||||||||||
| RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | RO | |||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
TEIFx
チャネルxの送信エラーフラグ (x=8/9/10/11)(Transmission error flag of channel x )| 1 | チャネルxで送信エラーが発生しました。 |
| 0 | チャネルxで送信エラーは発生していません。 |
HTIFx
チャネル x の送信半分完了 (x=8/9/10/11)(Transmission half completion of channel x)| 1 | チャネル x で送信半分完了イベントが発生しました。 |
| 0 | チャネル x で送信半分完了イベントは発生していません。 |
TCIFx
チャネルxの送信完了フラグ (x=8/9/10/11)(Transmission completion flag of channel x)| 1 | チャネルxで送信完了イベントが発生しました。 |
| 0 | チャネルxで送信完了イベントは発生していません。 |
GIFx
チャネル x のグローバル割り込みフラグ (x=8/9/10/11) (Global interrupt flag of channel x)| 1 | チャネル x で TEIFx、HTIFx、または TCIFx が生成された。 |
| 0 | チャネル x で TEIFx、HTIFx、または TCIFx は生成されていない。 |
注: CH32F20x_D8、CH32F20x_D8C、CH32V30x_D8、CH32V30x_D8C に適用されます。
11.3.12 DMA2拡張割り込みフラグクリアレジスタ(DMA2_EXTEM_INTFCR)
DMA2_EXTEM_INTFCR = DMA2 EXTEnd INTerrupt Flag Clear Register | Access base address 0x40020000 Offset address: 0x4D4
■レジスター内容
注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Reserved | CTEIF11 | CHTIF11 | CTCIF11 | CGIF11 | CTEIF10 | CHTIF10 | CTCIF10 | CGIF10 | CTEIF9 | CHTIF9 | CTCIF9 | CGIF9 | CTEIF8 | CHTIF8 | CTCIF8 | CGIF8 | |||||||||||||||
| RO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | WO | |||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CTEIFx
チャネル x の送信エラーフラグをクリアします。 (x=8/9/10/11) (Clear the transmission error flag of channel x)| 1 | DMA_INTFR レジスタの TEIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CHTIFx
チャネル x の送信半分完了をクリアします。 (x=8/9/10/11) (Clear the transmission half completion of channel x)| 1 | DMA_INTFR レジスタの HTIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CTCIFx
チャネル x の送信完了フラグをクリアします。(x=8/9/10/11) (Clear the transmission completion flag of channel x)| 1 | DMA_INTFR レジスタの TCIFx フラグをクリアします。 |
| 0 | 影響なし。 |
CGIFx
チャネル x のグローバル割り込みフラグをクリアします。(x=8/9/10/11) (Clear the global interrupt flag of channel x)| 1 | DMA_INTFR レジスタの TEIFx/HTIFx/TCIFx/GIFx フラグをクリアします。 |
| 0 | 影響なし。 |
注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。
