UG-1262
Rev. B | Page 174 of 312
SRC_DEC = 0
DST_DEC = 0
0xFFFF
0x0000
LAST DATA
N
FIRST DATA
0xFFFF
0x0000
LAST DATA
DSP
N
FIRST DATA
SRC_DEC = 1
DST_DEC = 0
0xFFFF
0x0000
LAST DATA
N
FIRST DATA
0xFFFF
0x0000
LAST DATA
DCP
N
FIRST DATA
SRC_DEC = 0
DST_DEC = 1
0xFFFF
0x0000
LAST DATA
SOURCE
END
POINTER
SOURCE
END
POINTER
SOURCE
END
POINTER
SOURCE
END
POINTER
N
FIRST DATA
0xFFFF
0x0000
LAST DATA
DCP
N
FIRST DATA
SRC_DEC = 1
DST_DEC = 1
0xFFFF
0x0000
LAST DATA
N
FIRST DATA
0xFFFF
0x0000
LAST DATA
SOURCE
END
POINTER
N
FIRST DATA
1667
5-
242
Figure 48. Image Decrement
Aborting DMA Transfers
It is possible to abort a DMA transfer that is in progress by writing to the bit in the EN_CLR register that corresponds to the channel that
must be aborted. Do not set CFG to 0, because this action can corrupt the DMA structures.
ENDIAN OPERATION
The DMA controller performs a transfer by default by using a little endian approach. However, this default behavior can be changed by
setting the corresponding channel bit in the BS_SET register. The endian operation is referred to as byte swap.
Byte Swap Disabled
Byte swap is disabled by default, in which case, the data transfer is considered to be little endian. Data arriving from a peripheral is placed
in sequence starting from the LSB of a 32-bit word. For example, if 16 bytes of data arrive at the SPI as 0x01 (start), 0x02, 0x03, 0x04 …
0x0F, 0x10, it is stored by the DMA in memory as follows:
04_03_02_01
08_07_06_05
0C_0B_0A_09
10_0F_0E_0D
Byte Swap Enabled
Byte swap happens on 32-bit data boundaries. The transfer size must be a multiple of 4. Byte swap and address decrement cannot be used
together for any channel. If used together, DMA data transfer operation is unpredictable. When using byte swap, ensure that the source data
address is constant for the full data transfer. Byte swap functionality is independent of DMA transfer size and can be 8-bit, 16-bit, or 32-bit.
If 16 bytes of data arrive at the SPI as 0x01(start), 0x02, 0x03, 0x04 … 0x0F, 0x10, the data is stored by the DMA in memory as follows:
01_02_03_04
05_06_07_08
09_0A_0B_0C
0D_0E_0F_10
DMA CHANNEL ENABLE AND DISABLE
Before issuing a DMA request, the DMA channel must be enabled. Otherwise, the DMA request for the corresponding channel is driven
as a DMA_DONE interrupt. Any DMA channel can be enabled by writing to the corresponding bit in the EN_SET register. The DMA
controller disables the channel when the corresponding DMA_DONE interrupt is generated. However, the user can disable any channel
by writing to the corresponding bit in the EN_CLR register.