Single Block Transfer With Single Microblock

  1. 1.Read the XDMAC Global Channel Status Register (XDMAC_GS) to select a free channel.
  2. 2.Clear the pending Interrupt Status bit(s) by reading the selected XDMAC Channel x Interrupt Status Register (XDMAC_CISx).
  3. 3.Write the XDMAC Channel x Source Address Register (XDMAC_CSAx) for channel x.
  4. 4.Write the XDMAC Channel x Destination Address Register (XDMAC_CDAx) for channel x.
  5. 5.Program field UBLEN in the XDMAC Channel x Microblock Control Register (XDMAC_CUBCx) with the number of data.
  6. 6.Program the XDMAC Channel x Configuration Register (XDMAC_CCx):
    1. a.Clear XDMAC_CCx.TYPE for a memory-to-memory transfer, otherwise set this bit.
    2. b.Configure XDMAC_CCx.MBSIZE to the memory burst size used.
    3. c.Configure XDMAC_CCx.SAM and DAM to Memory Addressing mode.
    4. d.Configure XDMAC_CCx.DSYNC to select the peripheral transfer direction.
    5. e.Configure XDMAC_CCx.CSIZE to configure the channel chunk size (only relevant for peripheral synchronized transfer).
    6. f.Configure XDMAC_CCx.DWIDTH to configure the transfer data width.
    7. g.Configure XDMAC_CCx.SIF, XDMAC_CCx.DIF to configure the master interface used to read data and write data, respectively.
    8. h.Configure XDMAC_CCx.PERID to select the active hardware request line (only relevant for a peripheral synchronized transfer).
    9. i.Set XDMAC_CCx.SWREQ to use a software request (only relevant for a peripheral synchronized transfer).
  7. 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. 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. 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. 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.