请问一下TI的工程师:
我们公司之前的音频处理方案是使用C6748的mcasp接一路I2Scodec,mcbsp接一路PCM格式的codec。最后分别通过edma的asp和bsp总线进行数据搬运,然后做运算。现在我们的方案要改一下,需要外接6~8个mic所以现在只用mcasp总线连接3~4个codec,而且都用i2s连接。
我评估了一下主要的修改在asp的驱动上,需要把pinset和axr0~axr7的通道再重新分配一下。dma这块我检查了一下好像不需要怎么改动。唯一不太确定是是dma的buf数据排列和事件触发的机制。首先说下时间触发机制。我的edma目前只绑定了mcasp的Tx和Rx两个事件,但是我的接收通道接了4路codec,那么每次事件更新是其中一路codec的数据更新了还是4个一起都更新了传递到DSP?
第二个是DMA里面buf的数据排列,之前只接收一路I2S的时候比较清楚,buf里面就是I2S的左右通道数据像下面这样:L1|R1(L1 表示第一路i2s左通道数据)
现在我接了4路I2S的dma里面的buf是不是4个通道i2s这样排序的?
L1|R1|L2|R2|L3|R3|L4|R4|
我只需要把每次搬运的数据量乘以4就可以了,其他的事件触发和链可以不修改。
因为我们新的板子还在打板,要清明后一周才能回来,所以想在硬件邮寄回来之前把问题搞清楚。请ti了解这个工程师帮我看看。
taoyu:
回复 Tony Tang:
谢谢tony,那是我理解错了。这样的话一个通道的帧同步和4个通道的帧同步其实一样都是1个事件。我只需要把buf取值的数据调整一下,再把buf扩大4倍就可以了,其他的dma的设置不需要修改。
Tony Tang:
回复 taoyu:
是的。一个事件一定要把MCASP FIFO里的数据读完。比如你用的4条RX,那么一个接收事件,就要读4个数。 另外,你会用到McASP的FIFO吗?