8.4.5 Simple Inter-Channel Synchronization
The LDMA controller features synchronization structures which allow differing channels and/or hardware events to pause a DMA se-
quence, and wait for a synchronizing event to restart it.
In this example DMA channel 0 and 1 are tasked with the transfer of different sets of data. Channel 0 has two transfer structures, and
channel 1 just one, but channel 0 must wait until channel 1 has completed its transfer before it starts its second transfer structure.
Pausing channel 0 is accomplished by inserting a sync wait structure between the two transfer structures. This sync structure waits on
SYNCTRIG[7] to be set by a sync set/clear structure which is controlled by channel 1. Sync structures do not transfer data, they can
only set, clear, or wait to match the SYNCTRIG[7:0] bits. Note that sync structures cannot decrement loop counter.
LDMA_SYNC
SYNCTRIG=0x0 (at time 0)
LDMA_CH0
Structure A @ 0x00 Structure B @ 0x10 Structure C @ 0x20
CTRL CTRL CTRL
STRUCTTYPE=XFER STRUCTTYPE=SYNC STRUCTTYPE=XFER
LINK LINK LINK
LINKADDR[29:0]=0x00000004 LINKADDR[29:0]=0x00000008 LINKADDR[29:0]=NA
LINK=1 LINK=1 LINK=0
DST
MATCHEN=0x80
MATCHVAL=0x80 (waits for SYNCTRIG[7]=1)
LDMA_CH1
Structure Y @ 0x30 Structure Z @ 0x40
CTRL CTRL
STRUCTTYPE=XFER STRUCTTYPE=SYNC
LINK LINK
LINKADDR[29:0]=0x00000010 LINKADDR=NA
LINK=1 LINK=0
SRC
SRCCLR=0x0
SRCSET=0x80 (sets SYNCTRIG[7])
Reference Manual
LDMA - Linked DMA Controller
silabs.com
| Building a more connected world.
Rev. 1.1 | 173