Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203マニュアル_11_DMA
11. ダイレクトメモリアクセス制御
11.1 主な特徴
11.2 機能説明
11.2.1 DMAチャネル処理
11.2.2 プログラム可能なデータ転送・
11.2.3 DMA要求マッピング

11.3 レジスタの説明
11.3.1 DMAy_INTFR
11.3.2 DMAy_INTFCR
11.3.3 DMAy_CFGRx
11.3.4 DMAy_CNTRx
11.3.5 DMAy_PADDRx
11.3.6 DMAy_MADDRx
11.3.7 DMA2_CFGRx
11.3.8 DMA2_CNTRx
11.3.9 DMA2_PADDRx
11.3.10 DMA2_MADDRx
11.3.11 DMA2_EXTEM_INTFR
11.3.12 DMA2_EXTEM_INTFCR

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

11 ダイレクトメモリアクセス制御 (DMA)

この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。
ダイレクトメモリアクセスコントローラ(DMA)は、ペリフェラルとメモリ間、またはメモリ間での高速データ転送方式を提供します。
CPUの介入なしに、DMAを介してデータを高速に転送できるため、CPUリソースを他の処理に使用できます。
DMAコントローラの各チャネルは、1つまたは複数のペリフェラルからのメモリアクセス要求を管理する専用チャネルです。
また、チャネル間の優先順位を調整するためのアービタも備えています。

11.1 主な特徴

・複数の独立した設定可能なチャネル

・各チャネルは専用のハードウェアDMAリクエストに直接接続され、ソフトウェアトリガーをサポートします。

・サイクリックバッファ管理をサポートします。

・複数のチャネル間のリクエストの優先度は、ソフトウェアプログラミングによって設定できます
 (最高、高、中、低)。
 優先度設定が同じ場合は、チャネル番号によって決定されます
 (チャネル番号が小さいほど優先度が高くなります)。

・ペリフェラルからメモリ、メモリからペリフェラル、メモリからメモリへの転送をサポートします。

・フラッシュメモリ、SRAM、ペリフェラルSRAM、APB1、APB2、AHBペリフェラルはすべて、
 アクセス元およびアクセス先として使用できます。

・プログラム可能なデータ転送数:最大65,535




11.2 機能説明

 11.2.1 DMAチャネル処理

 1) 調停優先度
複数の独立したチャネルから生成されたDMA要求は、ロジックまたは構造を介してDMAコントローラに入力され、現在はチャネル要求のみが応答されます。
モジュール内部の調停回路は、チャネル要求の優先度に応じて、開始する周辺機器/メモリアクセスを選択します。
ソフトウェア管理では、アプリケーションプログラムはDMA_CFGRxレジスタのPL[1:0]ビットを設定することで、各チャネルの優先度を独立して設定できます。
優先度には、最高、高、中、低の4つのレベルが含まれます。チャネル間のソフトウェア設定レベルが同じ場合、モジュールの優先度は固定ハードウェアに従って選択されます。
番号の小さいチャネルは、番号の大きいチャネルよりも優先度が高くなります。

 2) DMA構成
DMAコントローラは要求信号を受信すると、要求された周辺機器またはメモリにアクセスし、周辺機器またはメモリとメモリ間のデータ転送を確立します。
主に以下の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動作は継続されます。

 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イベント内容を処理します。

 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)
Source
bit
width
Target
bit
width
Trans
ferred
data
Number
Source:
address
/data
Target:
adress
/data
Tarnsfer operation
転送操作
8840x00/B0
0x01/B1
0x02/B2
0x03/B3
0x00/B0
0x01/B1
0x02/B2
0x03/B3
・ ソースアドレスの増分はソース側で設定されたデータビット幅に揃えられ、値はソースデータのビット幅と等しくなります。

・ ターゲットアドレスの増分はターゲット側で設定されたデータのビット幅に揃えられ、値はターゲットデータのビット幅と等しくなります。

・ DMAによるターゲット側へのデータ転送の原則:データサイズが不足する場合は、上位ビットに0を補充します。
データサイズがオーバーフローする場合は、上位ビットを削除します。

・ データの保存:リトルエンディアン方式。下位バイトは下位アドレスに格納され、上位バイトは上位アドレスに格納されます。
81640x00/B0
0x01/B1
0x02/B2
0x03/B3
0x02/00B0
0x04/00B1
0x06/00B3
83240x00/B0
0x01/B1
0x02/B2
0x03/B3
0x00/000000B0
0x04/000000B1
0x08/000000B2
0x0C/000000B3
16840x00/B1B0
0x02/B2B3
0x04/B5B4
0x06/B7B6
0x00/B0
0x01/B2
0x02/B4
0x03/B6
161640x00/B1B0
0x02/B3B2
0x04/B5B4
0x06/B7B6
0x00/B1B0
0x02/B3B2
0x04/B5B4
0x06/B7B6
163240x00/B1B0
0x02/B3B2
0x04/B5B4
0x06/B7B6
0x00/0000B1B0
0x04/0000B3B2
0x08/0000B5B4
0x0C/0000B7B6
32840x00/B3B2B1B0
0x04/B7B6B5B4
0x08/BBBAB9B8
0x0C/BFBEBDBC
0x00/B0
0x01/B4
0x02/B8
0x03/BC
321640x00/B3B2B1B0
0x04/B7B6B5B4
0x08/BBBAB9B8
0x0C/BFBEBDBC
0x00/B1B0
0x02/B5B4
0x04/B9B8
0x06/BDBC
323240x00/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 要求マッピング
 表11-2 各DMA1チャネルの周辺機器マッピング表
PeripheralChannel1Channel2Channel3Channel4Channel5Channel6Channel7
ADC1ADC1
SPI1SPI1_RXSPI1_TX
SPI/I2S2SPI/I2S2_RXSPI/I2S2_TX
USART1USART1_TXUSART1_RX
USART2USART2_RXUSART2_TX
USART3USART3_TXUSART3_RX
I2C1I2C1_TXI2C1_RX
I2C2I2C2_TXI2C2_RX
TIM1TIM1_CH1TIM1_CH2TIM1_CH4
TIM1_TRIG
TIM1_COM
TIM1_UPTIM1_CH3
TIM2TIM2_CH3TIM2_UPTIM2_CH1TIM2_CH2
TIM2_CH4
TIM3TIM3_CH3TIM3_CH4
TIM3_UP
TIM3_CH1
TIM3_TRIG
TIM4TIM4_CH1TIM4_CH2TIM4_CH3TIM4_UP

 表11-3 各DMA2チャネルの周辺機器マッピング表1
PeripheralChannel1Channel2Channel3Channel4Channel5Channel6Channel7
TIM5TIM5_CH4
TIM5_TRIG
TIM5_CH3
TIM5_UP
TIM5_CH2TIM5_CH1
TIM6TIM6_UO
TIM7TIM7_UP
TIM8TIM8_CH3
TIM8_UP
TIM8_CH4
TIM8_TRIG
TIM8_COM
TIM8_CH1TIM8_CH2
TIM9TIM9_UPTIM9_CH1
TIM10TIM10_CH4TIM10_TRIG
TIM10_COM
UART4USART4_RXUSART4_TX
UART5USART5_RXUSART5_TX
UART6UART6_RXUART6_TX
UART7
UART8
SPI/I2S3SPI/I2S3_RXSPI/I2S3_TX
SDIOSDIO
DAC1DAC1
DAC2DAC2

 表11-3 各DMA2チャネルの周辺機器マッピング表2
PeripheralChannel8Channel9Channel10Channel11
TIM5
TIM6
TIM7
TIM8
TIM9TIM9_CH4TIM9_CH2TIM9_TRIG
TIM9_COM
TIM9_CH3
TIM10TIM10_CH1TIM10_CH3TIM10_CH2TIM10_UP
UART4
UART5
UART6
UART7 UART7_TXUART7_RX
UART8UART8_TXUART8_RX
SPI/I2S3
SDIO
DAC1
DAC2

Qingke V4B MCU (CH32V20x_D6) および ARM® CortexTM-M3 MCU (CH32F20x_D6)。
DMAコントローラは8つのチャネルを提供します。
各チャネルは複数のペリフェラル要求に対応します。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。
PeripheralChannel1Channel2Channel3Channel4Channel5Channel6Channel7Channel8
ADC1ADC1
SPI1SPI1_RXSPI1_TX
SPI2SPI2_RXSPI2_TX
USART1USART1_TXUSART1_RX
USART2USART2_RXUSART2_TX
USART3USART3_TXUSART3_RX
USART4USART4_TXUSART4_RX
I2C1I2C1_TXI2C1_RX
I2C2I2C2_TXI2C2_RX
TIM1TIM1_CH1TIM1_CH2TIM1_CH4
TIM1_TRIG
TIM1_COM
TIM1_UPTIM1_CH3
TIM2TIM2_CH3TIM2_UPTIM2_CH1TIM2_CH2
TIM2_CH4
TIM3TIM3_CH3TIM3_CH4
TIM3_UP
TIM3_CH1
TIM3_TRIG
TIM4TIM4_CH1TIM4_CH2TIM4_CH3TIM4_UP

Qingke V4C MCU (CH32V20x_D8W および CH32V20x_D8) および ARM® CortexTM-M3 MCU (CH32F20x_D8W)。
DMAコントローラは8つのチャネルを提供します。
各チャネルは複数のペリフェラル要求に対応します。
対応するペリフェラルレジスタの対応するDMA制御ビットを設定することで、各ペリフェラルのDMA機能を個別にオン/オフに切り替えることができます。
PeripheralChannel1Channel2Channel3Channel4Channel5Channel6Channel7Channel8
ADC1ADC1
SPI1SPI1_RXSPI1_TX
SPI2SPI2_RXSPI2_TX
USART1USART1_TXUSART1_RX
USART2USART2_RXUSART2_TX
USART3USART3_TXUSART3_RX
USART4USART4_TXUSART4_RX
I2C1I2C1_TXI2C1_RX
I2C2I2C2_TXI2C2_RX
TIM1TIM1_CH1TIM1_CH2TIM1_CH4
TIM1_TRIG
TIM1_COM
TIM1_UPTIM1_CH3
TIM2TIM2_CH3TIM2_UPTIM2_CH1TIM2_CH2
TIM2_CH4
TIM3TIM3_CH3TIM3_CH4
TIM3_UP
TIM3_CH1
TIM3_TRIG
TIM4TIM4_CH1TIM4_CH2TIM4_CH3TIM4_UP
TIM5TIM5_CH2TIM5_CH3TIM5_CH4TIM5_CH1
TIM5_TRIG
TIM5_UP




11.3 レジスタの説明

表11-5 DMA1関連レジスタ
NameAccess addressDescriptionReset value
R32_DMA1_INTFR0x40020000DMA1 interrupt flag register0x00000000
R32_DMA1_INTFCR0x40020004DMA1 interrupt flag clear register0x00000000
R32_DMA1_CFGR10x40020008DMA1 channel1 configuration register0x00000000
R32_DMA1_CNTR10x4002000CDMA1 channel1 transferred data register0x00000000
R32_DMA1_PADDR10x40020010DMA1 channel1 peripheral address register0x00000000
R32_DMA1_MADDR10x40020014DMA1 channel1 memory address register0x00000000
R32_DMA1_CFGR20x4002001CDMA1 channel2 configuration register0x00000000
R32_DMA1_CNTR20x40020020DMA1 channel2 transferred data register0x00000000
R32_DMA1_PADDR20x40020024DMA1 channel2 peripheral address register0x00000000
R32_DMA1_MADDR20x40020028DMA1 channel2 memory address register0x00000000
R32_DMA1_CFGR30x40020030DMA1 channel3 configuration register0x00000000
R32_DMA1_CNTR30x40020034DMA1 channel3 transferred data register0x00000000
R32_DMA1_PADDR30x40020038DMA1 channel3 peripheral address register0x00000000
R32_DMA1_MADDR30x4002003CDMA1 hannel3 memory address register0x00000000
R32_DMA1_CFGR40x40020044DMA1 channel4 configuration register0x00000000
R32_DMA1_CNTR40x40020048DMA1 channel4 transferred data register0x00000000
R32_DMA1_PADDR40x4002004CDMA1 channel4 peripheral address register0x00000000
R32_DMA1_MADDR40x40020050DMA1 channel4 memory address register0x00000000
R32_DMA1_CFGR50x40020058DMA1 channel5 configuration register0x00000000
R32_DMA1_CNTR50x4002005CDMA1 channel5 transferred data register0x00000000
R32_DMA1_PADDR50x40020060DMA1 channel5 peripheral address register0x00000000
R32_DMA1_MADDR50x40020064DMA1 channel5 memory address register0x00000000
R32_DMA1_CFGR60x4002006CDMA1 channel6 configuration register0x00000000
R32_DMA1_CNTR60x40020070DMA1 channel6 transferred data register0x00000000
R32_DMA1_PADDR60x40020074DMA1 channel6 peripheral address register0x00000000
R32_DMA1_MADDR60x40020078DMA1 channel6 memory address register0x00000000
R32_DMA1_CFGR70x40020080DMA1 channel7 configuration register0x00000000
R32_DMA1_CNTR70x40020084DMA1 channel7 transferred data register0x00000000
R32_DMA1_PADDR70x40020088DMA1 channel7 peripheral address register0x00000000
R32_DMA1_MADDR70x4002008CDMA1 channel7 memory address register0x00000000
R32_DMA1_CFGR80x40020094DMA1 channel8 configuration register0x00000000
R32_DMA1_CNTR80x40020098DMA1 channel8 transferred data register0x00000000
R32_DMA1_PADDR80x4002009CDMA1 channel8 peripheral address register0x00000000
R32_DMA1_MADDR80x400200A0DMA1 channel8 memory address register0x00000000

表11-6 DMA2関連レジスタ
NameAccess addressDescriptionReset value
R32_DMA2_INTFR0x40020400DMA2 interrupt flag register0x00000000
R32_DMA2_INTFCR0x40020404DMA2 interrupt flag clear register0x00000000
R32_DMA2_CFGR10x40020408DMA2 channel1 configuration register0x00000000
R32_DMA2_CNTR10x4002040CDMA2 channel1 transferred data register0x00000000
R32_DMA2_PADDR10x40020410DMA2 channel1 peripheral address register 0x00000000
R32_DMA2_MADDR10x40020414DMA2 channel1 memory address register 0x00000000
R32_DMA2_CFGR20x4002041CDMA2 channel2 configuration register0x00000000
R32_DMA2_CNTR20x40020420DMA2 channel2 transferred data register0x00000000
R32_DMA2_PADDR20x40020424DMA2 channel2 peripheral address register 0x00000000
R32_DMA2_MADDR20x40020428DMA2 channel2 memory address register 0x00000000
R32_DMA2_CFGR30x40020430DMA2 channel3 configuration register0x00000000
R32_DMA2_CNTR30x40020434DMA2 channel3 transferred data register0x00000000
R32_DMA2_PADDR30x40020438DMA2 channel3 peripheral address register 0x00000000
R32_DMA2_MADDR30x4002043CDMA2 channel3 memory address register 0x00000000
R32_DMA2_CFGR40x40020444DMA2 channel4 configuration register0x00000000
R32_DMA2_CNTR40x40020448DMA2 channel4 transferred data register0x00000000
R32_DMA2_PADDR40x4002044CDMA2 channel4 peripheral address register 0x00000000
R32_DMA2_MADDR40x40020450DMA2 channel4 memory address register 0x00000000
R32_DMA2_CFGR50x40020458DMA2 channel5 configuration register0x00000000
R32_DMA2_CNTR50x4002045CDMA2 channel5 transferred data register0x00000000
R32_DMA2_PADDR50x40020460DMA2 channel5 peripheral address register 0x00000000
R32_DMA2_MADDR50x40020464DMA2 channel5 memory address register 0x00000000
R32_DMA2_CFGR60x4002046CDMA2 channel6 configuration register0x00000000
R32_DMA2_CNTR60x40020470DMA2 channel6 transferred data register0x00000000
R32_DMA2_PADDR60x40020474DMA2 channel6 peripheral address register 0x00000000
R32_DMA2_MADDR60x40020478DMA2 channel6 memory address register 0x00000000
R32_DMA2_CFGR70x40020480DMA2 channel7 configuration register0x00000000
R32_DMA2_CNTR70x40020484DMA2 channel7 transferred data register0x00000000
R32_DMA2_PADDR70x40020488DMA2 channel7 peripheral address register 0x00000000
R32_DMA2_MADDR70x4002048CDMA2 channel7 memory address register 0x00000000
R32_DMA2_CFGR80x40020490DMA2 channel8 configuration register0x00000000
R32_DMA2_CNTR80x40020494DMA2 channel8 transferred data register0x00000000
R32_DMA2_PADDR80x40020498DMA2 channel8 peripheral address register 0x00000000
R32_DMA2_MADDR80x4002049CDMA2 channel8 memory address register 0x00000000
R32_DMA2_CFGR90x400204A0DMA2 channel9 configuration register0x00000000
R32_DMA2_CNTR90x400204A4DMA2 channel9 transferred data register0x00000000
R32_DMA2_PADDR90x400204A8DMA2 channel9 peripheral address register 0x00000000
R32_DMA2_MADDR90x400204AC DMA2 channel9 memory address register 0x00000000
R32_DMA2_CFGR100x400204B0DMA2 channel10 configuration register0x00000000
R32_DMA2_CNTR100x400204B4DMA2 channel10 transferred data register 0x00000000
R32_DMA2_PADDR100x400204B8DMA2 channel10 peripheral address register0x00000000
R32_DMA2_MADDR100x400204BC DMA2 channel10 memory address register0x00000000
R32_DMA2_CFGR110x400204C0DMA2 channel11 configuration register0x00000000
R32_DMA2_CNTR110x400204C4DMA2 channel11 transferred data register 0x00000000
R32_DMA2_PADDR110x400204C8DMA2 channel11 peripheral address register0x00000000
R32_DMA2_MADDR110x400204CC DMA2 channel11 memory address register0x00000000
R32_DMA2_EXTEM_INTFR0x400204D0DMA2 extend interrupt flag register0x00000000
R32_DMA2_EXTEM_INTFCR0x400204D4DMA2 extend interrupt flag clear register0x00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
ReservedTEIF7HTIF7TCIF7GIF7 TEIF6HTIF6TCIF6GIF6TEIF5HTIF5TCIF5GIF5 TEIF4HTIF4TCIF4GIF4TEIF3HTIF3TCIF3GIF3 TEIF2HTIF2TCIF2GIF2TEIF1HTIF1TCIF1GIF1
RORORORORO RORORORORORORORO RORORORORORORORO RORORORORORORORO
00000000 00000000 00000000 00000000

TEIFx

チャネルxの送信エラーフラグ(x=1/2/3/4/5/6/7/8)(Transmission error flag of channel x )
1チャネルxで送信エラーが発生しました。
0チャネルxで送信エラーは発生していません。
ハードウェアによってセットされ、ソフトウェアでCTEIFxビットに書き込むことでこのフラグをクリアできます。

HTIFx

チャネル x の送信半分完了 (x=1/2/3/4/5/6/7/8)(Transmission half completion of channel x)
1チャネル x で送信半分完了イベントが発生しました。
0チャネル x で送信半分完了イベントは発生していません。
このフラグはハードウェアによってセットされ、ソフトウェアで CHTIFx ビットに書き込むことでクリアされます。

TCIFx

チャネルxの送信完了フラグ (x=1/2/3/4/5/6/7/8)(Transmission completion flag of channel x)
1チャネルxで送信完了イベントが発生しました。
0チャネルxで送信完了イベントは発生していません。
ハードウェアによってセットされ、ソフトウェアでCTCIFxビットに書き込むことでこのフラグをクリアできます。

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 は生成されていない。
このフラグはハードウェアによってセットされ、ソフトウェアで CGIFx ビットに書き込むことでクリアされます。
注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
ReservedCTEIF7CHTIF7CTCIF7CGIF7 CTEIF6CHTIF6CTCIF6CGIF6CTEIF5CHTIF5CTCIF5CGIF5 CTEIF4CHTIF4CTCIF4CGIF4CTEIF3CHTIF3CTCIF3CGIF3 CTEIF2CHTIF2CTCIF2CGIF2CTEIF1CHTIF1CTCIF1CGIF1
ROWOWOWOWO WOWOWOWOWOWOWOWO WOWOWOWOWOWOWOWO WOWOWOWOWOWOWOWO
00000000 00000000 00000000 00000000

CTEIFx

チャネル x の送信エラーフラグをクリアします。 (x=1/2/3/4/5/6/7/8) (Clear the transmission error flag of channel x)
1DMA_INTFR レジスタの TEIFx フラグをクリアします。
0影響なし。

CHTIFx

チャネル x の送信半分完了をクリアします。 (x=1/2/3/4/5/6/7/8) (Clear the transmission half completion of channel x)
1DMA_INTFR レジスタの HTIFx フラグをクリアします。
0影響なし。

CTCIFx

チャネル x の送信完了フラグをクリアします。(x=1/2/3/4/5/6/7/8) (Clear the transmission completion flag of channel x)
1DMA_INTFR レジスタの TCIFx フラグをクリアします。
0影響なし。

CGIFx

チャネル x のグローバル割り込みフラグをクリアします。(x=1/2/3/4/5/6/7/8) (Clear the global interrupt flag of channel x)
1DMA_INTFR レジスタの TEIFx/HTIFx/TCIFx/GIFx フラグをクリアします。
0影響なし。

注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
Reserved MEM2MEMPLMSIZEPSIZEMINCPINCCIRC DIRTEIEHTIETCIEEN
RO RWRWRWRWRWRWRW RWRWRWRWRW
00000000 00000000 00000000 00000000

MEM2MEM

メモリ間モードの有効化(Memory to memory mode enable)
1メモリ間モードを有効にする。
0メモリ間モードを無効にする。

PL

チャネル優先度設定(Channel priority level setting)
00
01
10
11非常に高

MSIZE

メモリサイズ設定(Memory size setting)
008ビット
0116ビット
1032ビット
11予約済み

PSIZE

周辺サイズ設定(Peripheral size setting)
008ビット
0116ビット
1032ビット
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チャネル無効化
DMA転送エラーが発生すると、ハードウェアによって自動的に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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
ReservedNDT
RORW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
PA
RW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
MA
RW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
Reserved MEM2MEMPLMSIZEPSIZEMINCPINCCIRC DIRTEIEHTIETCIEEN
RO RWRWRWRWRWRWRW RWRWRWRWRW
00000000 00000000 00000000 00000000

MEM2MEM

メモリ間モードの有効化(Memory to memory mode enable)
1メモリ間モードを有効にする。
0メモリ間モードを無効にする。

PL

チャネル優先度設定(Channel priority level setting)
00
01
10
11非常に高

MSIZE

メモリサイズ設定(Memory size setting)
008ビット
0116ビット
1032ビット
11予約済み

PSIZE

周辺サイズ設定(Peripheral size setting)
008ビット
0116ビット
1032ビット
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チャネル無効化
DMA転送エラーが発生すると、ハードウェアによって自動的に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:
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
ReservedNDT
RORW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
PA
RW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
MA
RW
00000000 00000000 00000000 00000000

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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
Reserved TEIF11HTIF11TCIF11GIF11TEIF10HTIF10TCIF10GIF10 TEIF9HTIF9TCIF9GIF9TEIF8HTIF8TCIF8GIF8
RO RORORORORORORORO RORORORORORORORO
00000000 00000000 00000000 00000000

TEIFx

チャネルxの送信エラーフラグ (x=8/9/10/11)(Transmission error flag of channel x )
1チャネルxで送信エラーが発生しました。
0チャネルxで送信エラーは発生していません。
ハードウェアによってセットされ、ソフトウェアでCTEIFxビットに書き込むことでこのフラグをクリアできます。

HTIFx

チャネル x の送信半分完了 (x=8/9/10/11)(Transmission half completion of channel x)
1チャネル x で送信半分完了イベントが発生しました。
0チャネル x で送信半分完了イベントは発生していません。
このフラグはハードウェアによってセットされ、ソフトウェアで CHTIFx ビットに書き込むことでクリアされます。

TCIFx

チャネルxの送信完了フラグ (x=8/9/10/11)(Transmission completion flag of channel x)
1チャネルxで送信完了イベントが発生しました。
0チャネルxで送信完了イベントは発生していません。
ハードウェアによってセットされ、ソフトウェアでCTCIFxビットに書き込むことでこのフラグをクリアできます。

GIFx

チャネル x のグローバル割り込みフラグ (x=8/9/10/11) (Global interrupt flag of channel x)
1チャネル x で TEIFx、HTIFx、または TCIFx が生成された。
0チャネル x で TEIFx、HTIFx、または TCIFx は生成されていない。
このフラグはハードウェアによってセットされ、ソフトウェアで CGIFx ビットに書き込むことでクリアされます。

注: 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
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
Reserved CTEIF11CHTIF11CTCIF11CGIF11CTEIF10CHTIF10CTCIF10CGIF10 CTEIF9CHTIF9CTCIF9CGIF9CTEIF8CHTIF8CTCIF8CGIF8
RO WOWOWOWOWOWOWOWO WOWOWOWOWOWOWOWO
00000000 00000000 00000000 00000000

CTEIFx

チャネル x の送信エラーフラグをクリアします。 (x=8/9/10/11) (Clear the transmission error flag of channel x)
1DMA_INTFR レジスタの TEIFx フラグをクリアします。
0影響なし。

CHTIFx

チャネル x の送信半分完了をクリアします。 (x=8/9/10/11) (Clear the transmission half completion of channel x)
1DMA_INTFR レジスタの HTIFx フラグをクリアします。
0影響なし。

CTCIFx

チャネル x の送信完了フラグをクリアします。(x=8/9/10/11) (Clear the transmission completion flag of channel x)
1DMA_INTFR レジスタの TCIFx フラグをクリアします。
0影響なし。

CGIFx

チャネル x のグローバル割り込みフラグをクリアします。(x=8/9/10/11) (Clear the global interrupt flag of channel x)
1DMA_INTFR レジスタの TEIFx/HTIFx/TCIFx/GIFx フラグをクリアします。
0影響なし。

注: チャンネル8は、CH32V20x_D8、CH32V20x_D8W、CH32F20x_D8W、CH32F20x_D6、およびCH32V20x_D6に適用されます。





































更新日 2025/12/06 16:28  管理者 平林 剛Hirabayashi Takeshi