各位工程师,我在DM642的板子上使用AIC23B和MCASP做音频信号的回响测试和FIR滤波时出现很大的杂声,望大家帮忙看看是什么原因:
问题描述:
1、将采集进来的数据不经任何处理直接发送出去,声音很清晰,且无杂声;
2、当测试简单的回响时,将回响信号x和原始信号y进行一个简单的算法,比如a=(x+3*y)/4,再把a通过XBUF播放出去,这是出现了很大的杂声,但是当算法设定为a=x+3*y或者a=x+y时,有没有杂声出现,可以很清晰的听到回响的效果
3、当测试FIR低通滤波时,将采集的音频信号和一个已知的低通滤波器系数相乘后发出时,就出现了很大的杂声
因为回响和FIR滤波在C6713上测试时是没杂声的,因为在C6713上的数据类型均是使用的float,一开始我以为是数据类型不对,所以将数据类型也修改为float,问题还是没有解决,后来有尝试了不同的数据类型,比如unsigned int等,问题同样没能解决。
各位工程师,你们有没有遇到过这问题,遇到后你们是怎么解决的。或者你们觉得问题出在哪?
Tony Tang:
你的音频数据是怎么接收的?查询还是中断的方式一个一个的收的吗?如果是这样,就可能是因为处理来不及的原因。
li wan1:
回复 Tony Tang:
是通过中断的方式一个一个接收的,以前使用6713的时候也是用的中断一个一个接收的,没出现这个问题啊!!之前以为是数据计算精度的问题,因为dm642是定点器件,所以改用官网提供的C64x+的rst中的计算函数来处理,还是没有声音。我也专门计算了一下它的计算精度,最大的误差是万分之7,应该还可以接受啊,不算大。您的意思还是要使用EDMA的方式吗?
Tony Tang:
回复 li wan1:
如果你的应用允许数据按帧处理而不是按单个数据处理,强烈建议用EDMA。
另外,为什么要用DM642处理音频,而不用新器件,比如C6748之类的?
li wan1:
回复 Tony Tang:
DM642在处理音频上有什么不利的地方吗?您能说明一下吗,是不是因为它定点器件的原因?手头上就这么个新的基于DM642的开发板,没办法,只能用它了,您的建议还是使用浮点器件是吗?