1.Read the XDMAC Global Channel Status Register (XDMAC_GS) to select a free channel.
2.Clear the pending Interrupt Status bit(s) by reading the selected XDMAC Channel x Interrupt Status Register (XDMAC_CISx).
3.Write the XDMAC Channel x Source Address Register (XDMAC_CSAx) for channel x.
4.Write the XDMAC Channel x Destination Address Register (XDMAC_CDAx) for channel x.
5.Program field UBLEN in the XDMAC Channel x Microblock Control Register (XDMAC_CUBCx) with the number of data.
6.Program the XDMAC Channel x Configuration Register
(XDMAC_CCx):
a.Clear XDMAC_CCx.TYPE for a memory-to-memory transfer, otherwise set this
bit.
b.Configure XDMAC_CCx.MBSIZE to the memory burst size used.
c.Configure XDMAC_CCx.SAM and DAM to Memory Addressing mode.
d.Configure XDMAC_CCx.DSYNC to select the peripheral transfer direction.
e.Configure XDMAC_CCx.CSIZE to configure the channel chunk size (only relevant for
peripheral synchronized transfer).
f.Configure XDMAC_CCx.DWIDTH to configure the transfer data width.
g.Configure XDMAC_CCx.SIF,
XDMAC_CCx.DIF to configure the master interface used to read data and write data,
respectively.
h.Configure XDMAC_CCx.PERID to select the active hardware request line (only
relevant for a peripheral synchronized transfer).
i.Set XDMAC_CCx.SWREQ to use a software request (only relevant for a peripheral
synchronized transfer).
7.Clear the following five registers:
XDMAC Channel x Next Descriptor Control Register
(XDMAC_CNDCx)
XDMAC Channel x Block Control Register (XDMAC_CBCx)
XDMAC Channel x Data Stride Memory Set Pattern Register
(XDMAC_CDS_MSPx)
XDMAC Channel x Source Microblock Stride Register
(XDMAC_CSUSx)
XDMAC Channel x Destination Microblock Stride Register
(XDMAC_CDUSx)
This indicates that the linked list is
disabled, there is only one block and striding is disabled.
8.Enable the Microblock interrupt by writing a ‘1’ to bit BIE in the XDMAC Channel x Interrupt Enable Register (XDMAC_CIEx). Enable the Channel x Interrupt Enable bit by writing a ‘1’ to bit IEx in the XDMAC Global Interrupt Enable Register (XDMAC_GIE).
9.Enable channel x by writing a ‘1’ to bit ENx in the XDMAC Global Channel Enable Register (XDMAC_GE). XDMAC_GS.STx (XDMAC Channel x Status bit) is set by hardware.
10.Once completed, the DMA channel sets XDMAC_CISx.BIS (End of Block Interrupt Status bit) and generates an interrupt. XDMAC_GS.STx is cleared by hardware. The software can either wait for an interrupt or poll the channel status bit.