Timing details of DMA transfer in PSoC 3/5 | Cypress Semiconductor
Support & Community
Timing details of DMA transfer in PSoC 3/5
What is the time taken for DMA to transfer N bytes of data on a trigger in PSoC 3/5?
• Ideal time for transferring N bytes of data between memory locations mapped in the same PHUB spoke (Intra spoke) is 2K+5 cycles.
• Ideal time for transferring N bytes of data between memory location mapped in different PHUB spoke (Inter spoke) is K+6 cycles .
where K = N/1 for 8 bit spoke,
K = N/2 for 16 bit spoke
K = N/4 for 32 bit spoke
For spoke details refer PHUB and DMA section of PSoC 3/5 Technical Reference Manual.
Ideal transfer assumes the following.
• Only one DMA channel is active, no competition between DMA channels.
• CPU not competing with DMA channel to access data in source and destination spoke.
• Source or destination peripheral is always free.
• Data width of the source and destination peripheral is same
• Data length (N) is even multiple of spoke data width. This avoids ragged ends where transactions that are less than the width of the spoke must be carried out
• The source and destination start addresses are on a spoke data width boundary. This avoids ragged starts and ends where transactions that are less than the width of the spoke must be carried out
The time taken by DMA for transferring 12 bytes of data from one RAM buffer to another RAM buffer on a trigger in an ideal case is calculated as follows:
Spoke width = 32 bit (Refer TRM -> System spoke) , hence K = 12/4 = 3
For intra spoke transfer time taken = 2K+5 = 2*3+5 = 11 cycles . Hence this transfer will be complete in 11 cycles in an ideal case.