TI中文支持网
TI专业的中文技术问题搜集分享网站

C6748 EDMA触发次数及响应时间问题

大家好,

       目前,在使用EDMA传输的时候遇到个奇怪的问题,问题描述如下:

 1、采用Link方式发送数据包,使能传输完成中断。在每次完成中断中在进行触发下一包数据的传输。

2、当发送数据包为46个之内时,程序运转正常,发送数据包增加一个或者是多触发一次edma传输 时,程序运行就会出现规律的延迟。

3、增大和减小发送数据包的大小并不会对程序有任何影响。

这个不符合我对EDMA的认知啊,望各位大侠指点!!!!!!

注:因为实际使用时是一个连续的音频流,所以稍有一点时间的延迟都会对音频听觉效果产生影响。

Tony Tang:

#1. 怎么在中断中触发?Link不是自动的么?应该由音频接口的事件来触发啊。

#2. 程序延时是什么意思?还是听到的声音有延时?

#3. 整个数据流是什么样的?

join join:

回复 Tony Tang:

1、linK传输完成后,进入中断,在中断中继续触发发送。采用A同步传输,源地址更新,传输数据,音频接口事件触发每次传输。在中断中触发的是下一个包的数据发送。

2、就是说输出音频文件能够听到规律的噪音,由延时造成。

3、数据流就是一个包一个包传输,一次传输只传输一包数据。

问题就是在多发一个包就会造成音频输出的噪音,改变包的大小对音频没有影响。

这到底是怎么回事?

望多多指教,谢谢

Tony Tang:

回复 join join:

那么在中断中更新EDMA参数时,此时是没有正确数据给音频口的,这时音频输出什么呢?

不明白你说的在中断中触发下一个包的数据发送是什么意思。EDMA的触发应该是I2S口事件自动触发的。

join join:

回复 Tony Tang:

中断中更新EDMA参数时,此时音频口无数据输出。

edma的触发是由mcasp产生事件触发的,当我将数据传输完成后,在中断中触发的是下一包数据的触发。

Tony Tang:

回复 join join:

join joinedma的触发是由mcasp产生事件触发的,当我将数据传输完成后,在中断中触发的是下一包数据的触发

这句话是否有点矛盾呢?到底是事件触发,还是在中断中鉵发,你说的的在中断中鉵发是指软件触发,还是说配置EDMA参数?

join join:

回复 Tony Tang:

事件触发啊,并不矛盾,我在中断中主要还是从新配置了一些EDMA的参数。

Tony Tang:

回复 join join:

Link模式用Ping-Pong buffer应该不用动态更新参数表的。在中断里应该是通知应用去处理数据。

假如更新参数,我理解这时EDMA已经停了,如果这样,此时怎么响应McBSP接口呢?等配完EDMA,不是就over flow/underrun了吗?

join join:

回复 Tony Tang:

1.更新参数是EDMA停止,MCASP没有数据过来,其保持事件触发状态。另一方面,中断处理中继续触发传输。可以说这块使用的LINK并不起作用,中断处理完毕后(时间很快50个周期),程序继续执行,由mcasp的事件触发新的传输。问题是edma中断中触发49之后,再没多一个都会引起固定频率的噪音。

赞(0)
未经允许不得转载:TI中文支持网 » C6748 EDMA触发次数及响应时间问题
分享到: 更多 (0)