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操作时,曲线不准


在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花椒且喵酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值