|
1、硬件平台是M33核的EFR32bg22;
2、项目中ADC信号采集一直存在低频干扰,目前想通过FIR的高通滤波器进行滤除,Matlab仿真是可以改善信号的,现在打算移植到嵌入式软件中,发现滤波后的结果与Matlab的前面几十个点明显对不上,看了DSP教程,也没发现问题,
想请教各位大神给予指点?数据为1024点,采样率为1199.652Hz,滤波器为截止频率为10Hz的63阶高通滤波器。
#define BLOCK_SIZE 1
#define FIR_ORDER 63
void TestFilter(FLOAT *sVTXDataArray)
{
UINT16 usIndex;
UINT16 usXLoop;
arm_fir_instance_f32 S;
float *inputF32, *outputF32;
float firStateF32[BLOCK_SIZE + FIR_ORDER - 1];
inputF32 = (FLOAT *)sVTXDataArray;
outputF32 = (FLOAT *)OutTest;
/* Call FIR init function to initialize the instance structure. */
arm_fir_init_f32(&S, FIR_ORDER, (float32_t *)&HPFfirCoeffs[0] /*滤波器系数*/, &firStateF32[0] /*临时数组*/, BLOCK_SIZE);
/* ----------------------------------------------------------------------
** Call the FIR process function for every blockSize samples
** ------------------------------------------------------------------- */
for(usIndex = 0; usIndex < 1024/BLOCK_SIZE; usIndex++)
{
arm_fir_f32(&S, inputF32 + (usIndex * BLOCK_SIZE), outputF32+ (usIndex * BLOCK_SIZE), BLOCK_SIZE);
}
}
|
|