IMPORTANT: Cypress Developer Community is transitioning on October 20th. To learn more and be prepared for this change, check out our latest announcement.
Showing results for 
Search instead for 
Did you mean: 

PSoC 5, 3 & 1 MCU

Not applicable

  Intra-spoke DMA of > 16 bytes requires a ping-ponging of servicing between the source and destination engines within the DMA logic. The reason is there is a 16 byte internal FIFO that fills up by the source engine after which control is switched to the destination engine to empty that out. This is repeated until the burst is satisfied. This ping-ponging has to occur because both engines are operating on the same spoke.


This normally works fine. But, if a previous DMA request is still being serviced by the destination engine and before the request is finished,  the source engine for the new request may hit the FIFO limit. At that point since the destination engine is still working on an old DMA context it doesn't yet signal that the new request is an intra-spoke DMA. In the absence of this indication the source engine fails to send a "go" signal to the destination engine to empty out the FIFO for the new intra-spoke DMA request. The destination engine therefore sits idle and this causes the source engine to hang indefinitely since there is no room in the FIFO to do anymore work.


So its always better to have burst count <=16.

0 Replies