Hi,
I previously wrote into the thread "Cannot clear EDMA3 synchronization event input from a GPIO pin", but since the discussion began to slide out of the topic I continue the story here.
I am using the 6638 K2H EVM board rev 4.0. I need to do some AB-synchronized DMA transfers periodically from the EMIF16 memory to the DDR3 memory..
The problem now is that the EDMA sometimes stops reacting to the incoming sync. events. This happens in average to the every 3000th of transfers.
Example:
My peripheral gives 16 sync inputs to the EDMA through the GPIO 11 pin. Each of these 16 events trigger a transfer of 2 X 12 bytes. I repeat this procedure once per second (or 10 000 times per second, it does not matter). It succeeds most of the time.
But then, at some random moment, only 2 events are processed (it's not always 2, it varies randomly between 1-15). When stopping the software with the debugger into the spot where it prepares the next transfer there are never any errors visible in the EDMA error registers, but I can see that the CCNT register in the PaRAM is still > 0; 14 in this example case. With the debugger I can give more events for the EDMA by writing into the ESR-register and the EDMA reacts to them alright --> the CCNT decreases by one after each write.
Below is an oscilloscope image of the problem.
There are 2 transfers visible in the image above,. As seen, the EDMA processes the first transfer OK, but then during the 2nd transfer it suddenly stops working. The peripheral gives all the 16 pulses nicely in both of the cases, but the 2nd transfer the EDMA reacts only to 2 of them.
What can stop EDMA working? As told above there are no visible errors in the EDMA registers but the CCNT still has 14 events to receive and the transfer can still be continued by manually triggering the event with software/debugger.
Best regards,
Ari