打印
[应用相关]

stm32的fir滤波器实现

[复制链接]
150|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2025-4-18 11:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tpgf 于 2025-4-18 11:31 编辑

滤波器可以对不同频率分量进行处理,对不同频率分量有不同的幅值响应,以此来滤除/保留某些频率的频率分量。

滤波器类型大致可分为四种:低通,高通,带通,带阻。

滤波器总归都是对频率分量进行的处理,也就是在频域范围内的处理,FFT 同样也是显示频域特性的方法。我们用 FFT 理解一下:我构造一个频谱,在我想要保留的
地方,比如 1000Hz 处,将其幅度置为 1,在我想要滤除的地方比如 100Hz 处,将其幅度置为 0,之后将其与采集到的信号经过 FFT 变换后得到的频谱相乘,是不是 1000Hz 的分量*1 仍然等于原分量,而 100Hz 的分量*0 之后就消失了,再通过傅里叶逆变换,将相乘后的结果重新变换到时域中,是不是就滤除了 100Hz 的频率分量,1000Hz 的频率分量则不受影响。

总结说就是设计一个频域滤波器(将想要保留的频率段赋值为 1,其他频率段赋值为 0),将其与含噪声信号的频谱在频域上相乘,再将乘积做傅里叶逆变换,即可实现滤波,这种滤波器叫频域滤波器。

频域相乘的结果等于时域卷积的结果,上述操作可以转换为在时域上进行卷积操作,滤波器的系数也就是相当于自己设计的频谱的傅里叶逆变换,这就是 FIR 滤波器。

滤波器还有另外一种 IIR 滤波器。但是 IIR 滤波器没有线性相位,计算量大,可能发生计算溢出问题,所以 STM32 更适合使用 FIR 滤波器

涉及参量

阶数:滤波器的阶数越高,滤波效果越好,幅频响应更优秀。滤波器系数个数等于 阶数+1。

采样率:采样时钟的频率,必须满足奈奎斯特采样定理,采样率的不同也会影响系数的不同。

截止频率:对于低通高通来说只有一个截止频率,对于带通,带阻来说有两个截止频率,因为涉及频带(频率范围)。

DSP 库函数介绍
void arm_fir_init_f32(
arm_fir_instance_f32 * S,
uint16_t numTaps,
const float32_t * pCoeffs,
float32_t * pState,
uint32_t blockSize)

功能:初始化 FIR

第 1 个参数是 arm_fir_instance_f32 类型结构体变量。

第 2 个参数是滤波器系数的个数。

第 3 个参数是滤波器系数地址。

第 4 个参数是缓冲状态地址。大小为滤波器系数个数+ 每次处理的数据个数 – 1,即为每次处理个数+滤波器阶数

第 5 个参数是每次处理的数据个数,最小可以每次处理 1 个数据,最大可以每次全部处理完。一般选择全部处理完

void arm_fir_f32(
const arm_fir_instance_f32 * S,
const float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize)

功能:实现 FIR 滤波

参数 1:arm_fir_instance_f32 类型结构体变量,必须经过上述函数的初始化才可使用。

参数 2:待滤波的输入数据地址

参数 3:滤波后的输出数据地址

参数 4:每次处理的数据个数,可以选择全部处理完

设计滤波器

可以由 MATLAB 中的滤波器设计工具获取对应的系数,其中提供了fir,iir滤波器的多种设计方法,包括窗函数法,等波纹法等

打开后可以看到界面中显示了响应类型,设计方法,阶数,频率设定,幅频响应等内容

幅值响应显示了信号经过该滤波器之后,不同频率信号的幅值变化。本图中为低通滤波器,可以看到低于Fc=10800Hz的信号在经过该滤波器之后,其幅值并没有变化,高于10800Hz的信号在经过之后,幅值有非常大的衰减,也就是高于10800Hz的信号被滤除了

本例中选择的是低通fir滤波器,采用汉明窗,阶数81,采样频率Fs48000Hz,截止频率Fc10800Hz



设计好滤波器之后,点击上方的目标-生成C头文件,导出为单精度浮点,就可以得到一个包含滤波器系数的h文件,将其复制到stm32的代码中使用。





使用串口分别打印滤波前和滤波后的信号



输入信号为粉色,5KHz的方波,其基波为5KHz的正弦,可以看到绿色信号是滤波之后留下的5KHz正弦波,其余谐波均高于10800Hz,已经被滤除
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2302_77530416/article/details/147144176

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2222

主题

16617

帖子

18

粉丝