单片机/MCU论坛
直播中

陆军航空兵

8年用户 802经验值
私信 关注
[问答]

ADSP-BF706例程Audio Filter callback运行出错的原因?怎么解决?

我在BF706板子上运行Audio Filter callback时,出现下面问题
  
请问这是怎么回事呀?但也能下载,就是实现不了滤波的效果。此外,我想通过这个程序中的IIR程序,把a系数变为零,变成fir,但实现不了效果,我的这个思路对吗?
还有一个问题是,我调用fir的子函数,不能实现效果。我给的滤波器的系数是long double型的,由于内部是定点运算,我就采用fract32 long_double_to_fr32 (long double _x);变为定点,我想验证一下转换效果,我就把一个fract32转换为longdouble型,结果printf出是零。

回帖(1)

王强

2024-1-11 18:12:08
出现问题的原因可能有很多,以下是一些常见的可能原因和解决方法:

1. 代码错误:请仔细检查代码中是否有错误,例如数组越界、指针错误、数据类型错误等。可以通过调试工具或打印调试信息来定位错误并解决。

2. 内存不足:如果BF706板子的内存资源不足,可能会导致程序运行出错。请确保程序使用的内存不超过板子的可用内存,可以尝试优化代码,减少内存使用量。

3. 资源冲突:如果程序中使用了与其他模块或外设存在冲突的资源(例如中断、定时器等),可能会导致程序运行出错。请检查程序使用的资源是否与其他模块存在冲突,如果有冲突请重新分配资源或修改程序。

4. 编译器设置错误:请确保编译器的设置正确,例如指令集、优化级别等。不正确的编译器设置可能会导致程序运行出错。

关于您的其他问题:
- 如果要将IIR滤波器转换为FIR滤波器,将a系数设置为零是一个可行的方法。但是请确保进行相应的修改和重新计算滤波器的系数。
- 调用fir的子函数无效的问题可能与代码错误、参数传递不正确等有关。请检查代码是否有错误,并确保正确传递参数给子函数。

关于fract32和long double之间的转换:
- fract32转换为long double时,可能会损失精度。请确保转换代码正确,并可以正常工作。
- 如果将fract32转换为long double后再转换回fract32时结果为零,可能是因为转换过程中发生了精度损失。可以尝试使用其他方法进行转换,或者检查转换过程中是否发生了错误。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分