APP下载

一种基于STM32的巴特沃斯带阻IIR滤波算法的实现

2018-02-28万小川

电子技术与软件工程 2018年13期
关键词:上位机

万小川

摘要 以巴特沃斯带阻IIR滤波器为例,给出了一种IIR数字滤波器从用MATLAB编程求解算法滤波到利用STM32将其实现的一般方法。并通过STM32的串口将滤波后的信号发送给上位机,通过LABVIEW将实时滤波后的信号显示出来,并与滤波前的信号进行对比,以验证滤波效果。实验结果表明成功用STM32将巴特沃斯带阻IIR滤波器实现,且滤波效果与仿真结果十分吻合。

【关键词】带阻 IIR滤波器 滤波算法 STM32处理器 上位机

滤波器在信号处理、控制系统中,有着十分重要的作用。传统的信号处理都是基于模拟信号的处理。随着计算机技术的飞速发展,尤其是嵌入式技术的飞速发展,将传统的滤波器、控制器应用于嵌入式计算机中则显得十分必要。因为不管传统的滤波算法还是控制算法都是用模拟电路来实现的,这样对于有些复杂的算法,需要很多电子元器件,会占据更多电路板的面积,而且一个滤波电路只能实现一种滤波算法,如果条件改变则需重新绘制电路,这样会增加人力与物力的成本。而如果将滤波算法用嵌入式处理器来实现则会避免这个问题,因为不管滤波算法如何复杂、条件如何改变,只需更改软件而己,不需要对外围电路做任何修改。

嵌入式处理器很多,其中典型的是TI公司的F28XXX系列的DSP和意法半导体公司的以Cortex-M为内核的STM32系列处理器。相比STM32,DSP拥有更强的浮点运算能力,但是价格却比STM32高。之所以选择STM32作为底层实现是因为本设计的无限冲击响应(IIR)滤波器阶数不高,不需要像高阶有限冲击响应(FIR)滤波器那样做大量的卷积运算,使用STM32完全能满足运算性能,故没必要使用价格更高的DSP。处理器具体型号为STM32F103ZET6。

在信号处理、控制算法理论分析中,MATLAB被广泛应用,然而MATLAB生成的程序M文件并不能直接作用于硬件,即使将MATLAB程序生成C程序,但也不能生成直接驱动底层硬件的驱动程序。因此在信号处理中适合用MATLAB从顶层在理论上去设计和计算,然后将MATLAB运算得到的参数运用到底层硬件处理器中己达到信号处理的目的。这是相对高效的处理方法,因为嵌入式系统要求实时性,底层硬件没必要去做一些跟顶层参数求解相关的运算,这样即提高了嵌入式的工作效率,也保证了其实时性。

1 数字滤波器滤波原理

l.1 数字信号的产生

滤波器(filter)是一个用来去除信号中一些不需要的频率成分的装置或系统,按照其功能可划分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器。按照其脉冲响应是否有限可分为有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器。

由数字滤波器的离散傅里叶变换:

2.2 IIR数字滤波器的设计流程

一个IIR数字滤波器一般有两种设计方法:

(1)脉冲响应不变法;

(2)双线性变换法。

本文采用的是双线性变换法。所谓双线性变换是指,传递函数的拉式变换s频域与z变换z域的一种频域映射或变换。采用公式如下:接近。其中计算得:nu=[ 0.0669,0.1541,0.6203,1.007 7,2.1925,2.6497,3.9447,3.5 921,3.9447,2.6497,2.1925,1.0077,0.6203,0.1541, 0.0669]; de=[1.0000,1.4791,2.95 08,3.132 6,4.1819,3463 3,3.33 85,2.1602,1.6307,0.8029,0.4695,0.1628,0.0729,0.0140,0.0045].

3 STM32实现

由于本设计旨在验证用STM32实现滤波算法,故免去了AD和DA环节,待滤波的滤波器输入信号由STM32内部产生,然后再将经过滤波算法得到滤波后的信号发送给上位机以查看滤波效果。其原理图为图3。

STM32软件主要包括初始化、定时器中断函数。定时器的定时时间为采样时间,定时器中断函数主要包括产生输入信号、运算滤波算法以及串口发送滤波后信号。

4 分析与总结

本设计旨在通过以巴特沃斯带阻IIR滤波器为例,说明用STM32实现IIR滤波器滤波算法的设计方法和过程,通过验证,成功用STM32将通过MATLAB设计得到的滤波算法实现。如果要设计完整的滤波器,还应增加AD和DA模块。对于用硬件实现数字滤波器的一般方法都是先采用MATLAB作为顶层设计,设计其滤波算法,不论是FIR滤波器还是IIR滤波器,然后再利用硬件将其实现。不同的是IIR滤波器是通过Z变换得到输入信号和输出信号的差分方程,而FIR滤波器是得到单位冲击响应序列,一般利用窗函数法,然后与输入信号做卷积得到输出信号。但只要得到了滤波器的差分方程或單位冲击响应序列,不管是用STM32、DSP、FPGA实现,还是用一般的单片机实现都变得简单,只是各种硬件运算能力的差异。

参考文献

[l]Sanjit K.Mitra著,彭启琮选.Digitalsignal processing[M].清华大学出版社.2012.

[2]Weeks M.Digital Signal ProcessingUsing MATLAB and Wavelets (ElectricalEngineering) [M] . Infinity SciencePress, 2006.

[3]Proakis J G,Manolakis D G. "DigitalSignal Processing - Principles,Algorithms & Applications" ,FourthEdition, Pearson Education,PrenticeHall, 2007. [J]. 2015.

[4] Proakis J. Essentials of DigitalSignal Processing Using MATLAB,Adapted International StudentEdition [J]. 2012.

猜你喜欢

上位机
基于单片机的无线液位监测系统
基于单片机的远程控制智能浇水系统