[其他ST产品] STM32 FIR滤波器 极速配置

[复制链接]
481|4
 楼主| 初级工程渣 发表于 2023-6-29 01:50 | 显示全部楼层 |阅读模式
STM32 keil极速配置DSP环境.
  1. #define TEST_LENGTH_SAMPLES  256  
  2. #define BLOCK_SIZE            32
  3. #define NUM_TAPS              31
  4. uint32_t blockSize = BLOCK_SIZE;

  5. uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;
  6. //滤波器系数
  7. float32_t firCoeffs32[31]={     -0.0596890992291,  0.01922048736923,  0.02810082687996,  0.03637702168568,
  8.     0.03706910163303,  0.02596964515718, 0.004205451277836, -0.02145632110683,
  9.    -0.04020442189748, -0.04108647252668, -0.01723828241568,  0.03066860468989,
  10.       0.093885028725,   0.1571901056882,   0.2038713950264,   0.2211008218426,
  11.      0.2038713950264,   0.1571901056882,    0.093885028725,  0.03066860468989,
  12.    -0.01723828241568, -0.04108647252668, -0.04020442189748, -0.02145632110683,
  13.    0.004205451277836,  0.02596964515718,  0.03706910163303,  0.03637702168568,
  14.     0.02810082687996,  0.01922048736923,  -0.0596890992291};
  15.          static float32_t testOutput[TEST_LENGTH_SAMPLES];
  16.          static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];
  17.                 float32_t  *inputF32, *outputF32;
  18.                 float32_t * pState;


 楼主| 初级工程渣 发表于 2023-6-29 01:51 | 显示全部楼层
while
  1. arm_fir_instance_f32 S;
  2. arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize);
  3. inputF32 = &testInput_f32[0];
  4. outputF32 = &testOutput[0];
  5.         for(i=0; i < numBlocks; i++)
  6.                 {
  7.                                 arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);
  8.                 }
 楼主| 初级工程渣 发表于 2023-6-29 01:51 | 显示全部楼层
方波滤成正弦波,下图最开始的部分是群延迟,推迟了15个点,
注意了
这会导致后面想对滤波后的图像进行FFT操作时,曲线不准
 楼主| 初级工程渣 发表于 2023-6-29 01:51 | 显示全部楼层
 楼主| 初级工程渣 发表于 2023-6-29 01:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

821

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部