GD32W51x User Manual
325
32-bit
single
1 single
transaction
2 single
transactions
3 single
transactions
4 single
transactions
INCR4
ERROR
ERROR
ERROR
1 burst transactions
INCR8
ERROR
ERROR
ERROR
ERROR
INCR16
ERROR
ERROR
ERROR
ERROR
Note:
When
the
transfer
mode
is
peripheral-to-memory,
if
the
PBURST_beats×PWIDTH_bytes = 16, the FIFO counter critical value must not be equal to
‘10’. When receiving a peripheral request, DMA initiates a peripheral burst transfer to entirely
fill the FIFO. Then DMA lanches memory burst transfers to pop three words from the FIFO
depending on the FIFO counter critical value and a word is still remained in the FIFO. There
is no enough space for a peripheral burst transfer and the FIFO counter critical value is not
reached, which make DMA transfer frozen.
Single-data mode
The single-data mode is selected by configuring the MDMEN bit in the DMA_CHxFCTL
register to ‘0’. In this mode, only single transfer is supported to implement the DMA data
access, and the FIFO counter critical value configured in the FCCV bits of the
DMA_CHxFCTL register has no meaning.
In single-data mode, DMA responds the source request only when the FIFO is empty, pushing
the data reading from the source address into the FIFO whatever the source transfer width is.
When the FIFO is not empty, DMA responds the destination request, poping the data from
the FIFO and writing it to the destination address.
Pack/Unpack
In single-data mode, the MWIDTH bits are equal to the PWIDTH bits by force, data
packing/unpacking is not needed.
In multi-data mode, the independent PWIDTH and MWIDTH bits configuration are supported
for flexible DMA transfer. When the PWIDTH bits and the MWIDTH bits are not equal, DMA
reading access and writing access are executed in different transfer width, and DMA
packs/unpacks the data automatically. In DMA transfer operation, only little-endian
addressing for both memory and peripheral is supported.
Suppose the CNT bits are 16, the PWIDTH bits are equal to ‘00’, and both PNAGA and
MNAGA are set. The DMA transfer operations for different MWIDTH are shown in the
Data packing/unpacking when PWIDTH = ‘00’
.