我用5509A与AIC23通过MCBSP连接,使用AIC23的DSP模式,但是在接收数据的过程中,发现总是有数据丢失的现象,请问出现这种现象最有可能的原因是什么?具体现象如图所示,中间不连续的地方就是数据丢失
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用的是DMA中断,使能应该是没有问题,我是先使能DMA,再使能MCBSP接收的,我接收的整个流程是这样的,分一块内存,供DMA接收使用,等到接收中断后,将数据从这个接收缓存中挪走,读完后读一下DMACSR重新使能中断,我测试过,数据应该就是在DMA往这个缓存中存的过程中丢的。还有,我不太理解你说的乒乓缓存?这种方式可以配置吗?
乒乓缓存就是设置ping buffer, pong buffer提供效率。
DMA往Ping buffer里放数据, CPU处理pong buffer的数据。
->CPU处理ping buffer的数据,DMA往pong buffer里存数据。
可以参考下面的文档。
http://www.ti.com/lit/an/spra641/spra641.pdf
好像是随机的,我找不到规律,接收到数据后是这样处理的,收到数据后,我在DMA接收中断函数内直接将数据存到外部ram里,其他不处理。我如果直接根据存数据的首地址往下查看的话,依然有中间断的现象。
memory model在compiler手册上有说明。
6.1 Memory
http://www.ti.com/lit/ug/spru281g/spru281g.pdf