EasyManua.ls Logo

ST SPC560P34 - Channel Linking

ST SPC560P34
936 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Enhanced Direct Memory Access (eDMA) RM0046
422/936 Doc ID 16912 Rev 5
and/or group priorities are treated as equal (or more exactly, constantly rotating) when
round-robin arbitration mode is selected.
The TCD.ACTIVE bit for the preempted channel remains asserted throughout the
preemption. The preempted channel is temporarily suspended while the preempting
channel executes one iteration of the major loop. Two TCD.ACTIVE bits set at the same time
in the overall TCD map indicates a higher priority channel is actively preempting a lower
priority channel.
18.7.7 Channel linking
Channel linking (or chaining) is a mechanism where one channel sets the TCD.START bit of
another channel (or itself) thus initiating a service request for that channel. This operation is
automatically performed by the eDMA engine at the conclusion of the major or minor loop
when properly enabled.
The minor loop channel linking occurs at the completion of the minor loop (or one iteration of
the major loop). The TCD.CITER.E_LINK field determines whether a minor loop link is
requested. When enabled, the channel link is made after each iteration of the minor loop
except for the last.
When the major loop is exhausted, only the major loop channel link fields are used to
determine whether to make a channel link. For example, with the initial fields of:
TCD.CITER.E_LINK = 1
TCD.CITER.LINKCH = 0xC
TCD.CITER value = 0x4
TCD.MAJOR.E_LINK = 1
TCD.MAJOR.LINKCH = 0x7
channel linking executes as:
1. Minor loop done set channel 12 TCD.START bit
2. Minor loop done set channel 12 TCD.START bit
3. Minor loop done set channel 12 TCD.START bit
4. Minor loop done, major loop done set channel 7 TCD.START bit
When minor loop linking is enabled (TCD.CITER.E_LINK = 1), the TCD.CITER field uses a
nine bit vector to form the current iteration count.
When minor loop linking is disabled (TCD.CITER.E_LINK = 0), the TCD.CITER field uses a
15-bit vector to form the current iteration count. The bits associated with the
TCD.CITER.LINKCH field are concatenated onto the CITER value to increase the range of
the CITER.
Note: After configuration, the TCD.CITER.E_LINK bit and the TCD.BITER.E_LINK bit must be
equal or a configuration error is reported. The CITER and BITER vector widths must be
equal to calculate the major loop, half-way done interrupt point.
Table 199 summarizes how a DMA channel can “link” to another DMA channel, i.e, use
another channel’s TCD, at the end of a loop.

Table of Contents

Related product manuals