I have an 840 byte buffer of data that I am DMAing to the McBSP1 TX on a C6424 for output to an external device. The clock rate to the McBSP is set to 6 Mhz and the transfer occurs about every 2 milliseconds so there is no issue with having enough time to transfer the data. Most of the time there is no problem with sending the data, however, approximately 10% of the time the first 4 (sometimes 8) bytes of the data do not get transferred. It feels like in the cases where data is missing that the McBSP is just not ready to transmit at the time of the first word(s) of the DMA. I have tried several experiments to resolve the issue. Some experiments have reduced the number of buffers that are corrupted but none completely solved the problem.
Experiments:
1) while( ! ( MCBSP1_SPCR & MCBSP_SPCR_XRDY) ); prior to triggering the DMA seemed to help quit a bit.
2) placing the buffer in non-cached IRAM did not help at all
3) disabling interrupts around the trigger helped.
Thanks in advance for any possible ideas.