使用STM32实现实时数字滤波器(FIR)

首先是生成不同周期的正弦波:

        由于定时器设置为250us进入一次中断,每秒可进入中断4000次,为了生成25HZ的正弦信号,一个周期内生成160个数据;为了生成200HZ的正弦信号,一个周期内生成20个数据,故代码如下:

    sin_1=arm_sin_f32(3.141592654*i/80)+1;//25HZ 信号
    sin_2=arm_sin_f32(3.141592654*i/10)+1;//200HZ 干扰

     if(i==161)
      {
          i=1;
      }

25HZ_sin

200HZ_sin

         然后将200HZ_sin缩小0.4倍以后同25HZ_sin混合到一起:

200HZ_sin同25HZ_sin混合以后的波形

         通过matlab设计所需滤波器参数,然后生成所需数组,并导入单片机:

matlab生成数组数据

 然后将滤波器的输入值设置为每次混合波形的计算值,将输出数据发送至上位机,并显示成波。

滤波后波形

滤波前后对比

滤波后和25HZ_sin对比

2023/05/10于西安

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32实现实时数字滤波器(FIR)

发表评论