Hi,
we are using McASP for communication between a DM648 and
several C6747 DSPs. Every now and then, we run into
trouble with corrupted data.
On C6747 we use McASP 0 with AFIFO driven by DMA, using
one serial data pin towards the C6747 and two serial data
pins towards the DM648, using a 24 MHz McASP clock plus
FSYNC generated by the DM648.
Modifying the C6747 code alters the error frequency so
we think the source of trouble lies within the C6747.
Sometimes the corrupted data towards DM648 looks like
a 32-Bit word (or a fraction thereof) is sent twice instead
of once, so we speculate about a problem with feeding data
into the McASP.
Maybe DMA getting too slow because it is blocked by other
resources and thus the AFIFO may run empty.
We have monitored all error registers that we could find,
checking McASP registers RSTAT and XSTAT, DSP registers
FLTSTAT, BUSERR, and INTXSTAT, EDMA3 registers EMR, QEMR
and CCERR, and EDMA3TC registers ERRSTAT.
None of these gives us an indication of anything going wrong.
However we could not find any register reporting possible
overrun or underrun of the AFIFO. The WFIFOSTS and RFIFOSTS
registers don't report FIFO overrun/underrun, and the McASP
registers RSTAT and XSTAT will probably never report RDMAERR
or ROVRN (or XDMAERR or XUNDRN) when the AFIFO is in use.
So how can we detect/diagnose an overrun/underun condition
inside the AFIFO ?
Thank you,
Christoph