STM32 FIR滤波器 极速配置

STM32 keil极速配置DSP环境.

 #define TEST_LENGTH_SAMPLES  256  
 #define BLOCK_SIZE            32
 #define NUM_TAPS              31 
 uint32_t blockSize = BLOCK_SIZE;
 
 uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;
 //滤波器系数
 float32_t firCoeffs32[31]={
    
         -0.0596890992291,  0.01922048736923,  0.02810082687996,  0.03637702168568,
    0.03706910163303,  0.02596964515718, 0.004205451277836, -0.02145632110683,
   -0.04020442189748, -0.04108647252668, -0.01723828241568,  0.03066860468989,
      0.093885028725,   0.1571901056882,   0.2038713950264,   0.2211008218426,
     0.2038713950264,   0.1571901056882,    0.093885028725,  0.03066860468989,
   -0.01723828241568, -0.04108647252668, -0.04020442189748, -0.02145632110683,
   0.004205451277836,  0.02596964515718,  0.03706910163303,  0.03637702168568,
    0.02810082687996,  0.01922048736923,  -0.0596890992291};
	 static float32_t testOutput[TEST_LENGTH_SAMPLES];
	 static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];
		float32_t  *inputF32, *outputF32;
		float32_t * pState;

while

arm_fir_instance_f32 S;
arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize);
inputF32 = &testInput_f32[0];
outputF32 = &testOutput[0];
	for(i=0; i < numBlocks; i++)
		{
    
    
				arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);
		}

方波滤成正弦波,这最开始的部分是群延迟,推迟了15个点,
注意了
这会导致后面想对滤波后的图像进行FFT操作时,曲线不准


在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Harry_CHL/article/details/120553608