English
Language : 

PXS20RM Datasheet, PDF (438/1368 Pages) Freescale Semiconductor, Inc – PXS20 Microcontroller
Enhanced Direct Memory Access (eDMA)
c. read_byte(0x1004), read_byte(0x1005), read_byte(0x1006), read_byte(0x1007)
d. write_word(0x2004) -> second iteration of the minor loop
e. read_byte(0x1008), read_byte(0x1009), read_byte(0x100a), read_byte(0x100b)
f. write_word(0x2008) -> third iteration of the minor loop
g. read_byte(0x100c), read_byte(0x100d), read_byte(0x100e), read_byte(0x100f)
h. write_word(0x200c) -> last iteration of the minor loop -> major loop complete
6. eDMA engine writes: TCD.saddr = 0x1000, TCD.daddr = 0x2000, TCD.citer = 1 (TCD.biter)
7. eDMA engine writes: TCD.active = 0, TCD.done = 1, DMAINT[n] = 1
8. The channel retires
The eDMA goes idle or services next channel.
19.4.4.2 Multiple requests
The next example is the same as the previous example, with the exception of transferring 32 bytes via two
hardware requests. The only fields that change are the major loop iteration count and the final address
offsets. The DMAis programmed for two iterations of the major loop transferring 16 bytes per iteration.
After the channel’s hardware requests is enabled in the DMAERQ register, channel service requests are
initiated by the slave device.
TCD.citer = TCD.biter = 2
TCD.slast = -32
TCD.dlast_sga = -32
This would generate the following sequence of events:
1. First hardware (ipd_req) request for channel service
2. The channel is selected by arbitration for servicing
3. eDMA engine writes: TCD.done = 0, TCD.start = 0, TCD.active = 1
4. eDMA engine reads: channel TCD data from local memory to internal register file
5. The source to destination transfers are executed as follows:
a. read_byte(0x1000), read_byte(0x1001), read_byte(0x1002), read_byte(0x1003)
b. write_word(0x2000) -> first iteration of the minor loop
c. read_byte(0x1004), read_byte(0x1005), read_byte(0x1006), read_byte(0x1007)
d. write_word(0x2004) -> second iteration of the minor loop
e. read_byte(0x1008), read_byte(0x1009), read_byte(0x100a), read_byte(0x100b)
f. write_word(0x2008) -> third iteration of the minor loop
g. read_byte(0x100c), read_byte(0x100d), read_byte(0x100e), read_byte(0x100f)
h. write_word(0x200c) -> last iteration of the minor loop
19-42
PXS20 Microcontroller Reference Manual, Rev. 1
Freescale Semiconductor