iir matlab 系数,手把手教你用matlab生成STM32官方IIR滤波器的系数(三)

本文详细介绍了如何使用MATLAB生成STM32官方IIR滤波器的系数,并在STM32上实现IIR高通滤波器。通过ADC采集信号,经过IIR滤波程序处理后,数据通过DAC输出,以便于观察和比较输入与滤波后的效果。文章还提供了具体的C代码实现和中断服务程序示例,展示了不同频率输入时的滤波效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节主要介绍如何在STM32上实现一个IIR高通滤波器。

在介绍如何实现STM32的IIR滤波程序之前,再看一下用matlab仿真得到的结果,以下是输入300Hz时的输入和输出(下)。

171123ncjzuod033ffjrwc.png

将输入频率改为100Hz,再看仿真结果:

171125iyamkm6iikimp9d7.png

可以观察到输入300Hz的时候,输出幅值大约为1800,而输入降到100Hz时,输出信号的幅值只有240。

IIR的实现

主要处理过程如下,STM32通过ADC采集一路正弦波信号,采集完成后立即对数据进行处理,然后将处理之后的数据送到DAC数据寄存器,通过DAC1的引脚将处理后的数据用电平方式体现出来,这样就可以对比输入和滤波之后输出的效果。

在了解了IIR滤波器的二阶直接II型结构以后,接下来我们就可以在STM32的DSP库函数中修改IIR的系数了。首先看一下库文件中基于C的IIR函数,如下所示。

void iir_biquad_stm32(u16 *y, u16 *x, int16_t *IIRCoeff, u16 ny)

{

u32 i;

u32 w1_2 = 0, w1_1 = 0, w1;

for (i=0;&nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值