在线时间2 小时
UID324107
ST金币0
蝴蝶豆0
注册时间2011-5-4
初级会员
- 最后登录
- 1970-1-1
|
发表于 2013-6-8 09:48:48
|
显示全部楼层
a0a.1 0b0c
回复:关于STM32 DSP库系数的获取
第一:采用MATLAB设计出你所需要的IIR滤波器,通过[S,G]=tf2sos(B,A)将直接型转换到级联型
第二:由于CMSIS-DSP要就系数在[+1 -1)之间,且分母a系数a1k和a2k,与matlab不同,需要把两系数
变号,而为了使系数b0k、b1k、b2k、a1k、a2k在[+1 -1)之间,需要对所以系数除2缩放,每除2一次
滤波器系数PostShift加一,其启始为0。,详细细节请参考"CMSIS-DSP"使用指南。
第三:设计时由于G系数固定为1,而MATLAB得出的不为1,需将G系数分解到若干个二阶子系统函数的
分子向量中。
第四: 根据设计ADC的位数不同需合理选择滤波器的位数 如:
arm_biquad_cascade_df1_f32
arm_biquad_cascade_df1_fast_q15
arm_biquad_cascade_df1_fast_q31
arm_biquad_cascade_df1_q15
arm_biquad_cascade_df1_q31
arm_biquad_cas_df1_32x64_q31
其中arm_biquad_cas_df1_32x64_q31为高精度滤波器,运算耗时较大,不一般不选用
而快速型的速度虽快,但滤波特性不好
对于F4来说
arm_biquad_cascade_df1_f32
是不错的选择 |
|