GD32W51x User Manual
315
12.
Direct memory access controller (DMA)
12.1.
Overview
The direct memory access (DMA) controller provides a hardware method of transferring data
between peripherals and/or memory without intervention from the MCU, thereby increasing
system performance by off-loading the MCU from copying large amounts of data and avoiding
frequent interrupts to serve peripherals needing more data or having available data.
Two AHB master interfaces and eight four-word depth 32-bit width FIFOs are presented in
each DMA controller, which achieves a high DMA transmission performance. There are 16
independent channels in the DMA controller (8 for DMA0 and 8 for DMA1). Each channel is
assigned a specific or multiple target peripheral devices for memory access request
management. Two arbiters respectively for memory and peripheral are implemented inside
to handle the priority among DMA requests.
Both the DMA controller and the Cortex-M33 core implement data access through the system
bus. An arbitration mechanism is implemented to solve the competition between these two
masters. When the same peripheral is targeted, the MCU access will be suspended for some
specific bus cycles. A round-robin scheduling algorithm is utilized in the bus matrix to guaranty
at least half the bandwidth to the MCU.
12.2.
Characteristics
Two AHB master interface for transferring data, and one AHB slave interface for
programming DMA.
16 channels (8 for DMA0 and 8 for DMA1), up to 8 peripherals per channel with fixed
hardware peripheral requests.
Support independent single, 4, 8, 16-beat incrementing burst memory and peripheral
transfer.
Support switch-buffer transmission between peripheral and memory.
Software DMA channel priority (low, medium, high, ultra high) and hardware DMA
channel priority (DMA channel 0 has the highest priority and DMA channel 7 has the
lowest priority).
Support independent 8, 16, 32-bit memory and peripheral transfer.
Support independent fixed and increasing address generation algorithm of memory and
peripheral.
Support circular transfer mode.
Support three transfer modes:
–
Read from memory and write to peripheral.
–
Read from peripheral and write to memory.
–
Read from memory and write to memory (only for DMA1).