English
Language : 

PXS20RM Datasheet, PDF (439/1368 Pages) Freescale Semiconductor, Inc – PXS20 Microcontroller
Enhanced Direct Memory Access (eDMA)
6. eDMA engine writes: TCD.saddr = 0x1010, TCD.daddr = 0x2010, TCD.citer = 1
7. eDMA engine writes: TCD.active = 0
8. The channel retires -> one iteration of the major loop
The eDMA goes idle or services next channel.
9. Second hardware (ipd_req) requests channel service
10. The channel is selected by arbitration for servicing
11. eDMA engine writes: TCD.done = 0, TCD.start = 0, TCD.active = 1
12. eDMA engine reads: channel TCD data from local memory to internal register file
13. The source to destination transfers are executed as follows:
a. read_byte(0x1010), read_byte(0x1011), read_byte(0x1012), read_byte(0x1013)
b. write_word(0x2010) -> first iteration of the minor loop
c. read_byte(0x1014), read_byte(0x1015), read_byte(0x1016), read_byte(0x1017)
d. write_word(0x2014) -> second iteration of the minor loop
e. read_byte(0x1018), read_byte(0x1019), read_byte(0x101a), read_byte(0x101b)
f. write_word(0x2018) -> third iteration of the minor loop
g. read_byte(0x101c), read_byte(0x101d), read_byte(0x101e), read_byte(0x101f)
h. write_word(0x201c) -> last iteration of the minor loop -> major loop complete
14. eDMA engine writes: TCD.saddr = 0x1000, TCD.daddr = 0x2000, TCD.citer = 2 (TCD.biter)
15. eDMA engine writes: TCD.active = 0, TCD.done = 1, DMAINT[n] = 1
16. The channel retires -> major loop complete
The eDMA goes idle or services the next channel.
19.4.5 TCD status
19.4.5.1 Minor loop complete
There are two methods to test for minor loop completion when using software initiated service requests.
The first method is to read the TCD.citer field and test for a change. Another method may be extracted
from the sequence shown below. The second method is to test the TCD.start bit AND the TCD.active bit.
The minor loop complete condition is indicated by both bits reading zero after the TCD.start was written
to a one. Polling the TCD.active bit may be inconclusive because the active status may be missed if the
channel execution is short in duration.
The TCD status bits execute the following sequence for a software activated channel:
1. TCD.start = 1, TCD.active = 0, TCD.done = 0 (channel service request via software)
2. TCD.start = 0, TCD.active = 1, TCD.done = 0 (channel is executing)
Freescale Semiconductor
PXS20 Microcontroller Reference Manual, Rev. 1
19-43