一、Fdatool系数生成方法
将滤波器参数设置好后,点击Design Fiter生成IIR滤波系数,然后依次点击菜单栏Targets-Generate C header入下图所示:
二、生成系数使用方法
生成的系数保存为fdacoefs.h头文件,内容为:
根据IIR使用说明,需要让b的系数都乘以增益G。同时根据Dsplib中IIR函数对系数的引用说明,需要将系数归一化到-32767——+32767,因此需要将系数都乘以32767.同时放置系数的数组h需要按照【a1,a2,b2,b0,b1.....】顺序,因此可使用下面函数将fdacoefs.h头文件中的系数初始化在h数组中。
/***********************将FDATOOL生成的IIR参数整合到h数组中*************************************/
void Int_h(void)
{
Int16 i=0;
#if 0
Int16 x=(NBIQ-1); //h的值逆序
for(i=0;i<NBIQ*5;i+=5)
{
h[i]=DEN_a[x*2+1][1] * 32767; //a1*32767
h[i+1]=DEN_a[x*2+1][2] * 32767; //a2*32767
h[i+2]=NUM_b[x*2+1][2] * 32767 * NUM_b[x*2][0]; //b2*32767*G
h[i+3]=NUM_b[x*2+1][0] * 32767 * NUM_b[x*2][0]; //b0*32767*G
h[i+4]=NUM_b[x*2+1][1] * 32767 * NUM_b[x*2][0]; //b1*32767*G
x--;
}
#endif
Int16 x=0; //h的值正序
for(i=0;i<NBIQ*5;i+=5)
{
h[i]=DEN_a[x*2+1][1] * 32767; //a1*32767
h[i+1]=DEN_a[x*2+1][2] * 32767; //a2*32767
h[i+2]=NUM_b[x*2+1][2] * 32767 * NUM_b[x*2][0]; //b2*32767*G
h[i+3]=NUM_b[x*2+1][0] * 32767 * NUM_b[x*2][0]; //b0*32767*G
h[i+4]=NUM_b[x*2+1][1] * 32767 * NUM_b[x*2][0]; //b1*32767*G
x++;
}
}