新闻  |   论坛  |   博客  |   在线研讨会
手把手教你用matlab生成STM32官方IIR滤波器的系数(一)
powermod | 2014-11-18 09:26:22    阅读:7837   发布文章

本文采用的matlab版本为R2008a,芯片采用stm32f103v。

先回顾一下数字信号处理和IIR滤波器的相关知识。

数字信号处理是用数字序列来研究系统的一门技术,不同于模拟信号,数字信号处理起来更加灵活,不仅可以处理一维信号,还可以处理二维、三维以上的信号。这门技术应用非常广泛,如生物医学、声学、雷达、语音通信、数据通信等都采用了数字信号处理技术。

在数字信号处理技术中经常用的一种算法叫IIR滤波器,这种滤波器可以设计成带通、低通和高通滤波,在设计原型上有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数。IIR数字滤波器是一种递归型线形时不变因果系统,其差分方程可以写成

式中x表示输入系列,y表示输出序列。通过z变换,可以得到传递函数

由差分方程可以直接得到下面的信号流图

以上这种形式叫做直接形式I,对应matlab中IIR滤波器结构选项的Direct-Form I,SOS。注:matlab中在命令行输入FDAtool可以打开滤波器设计GUI界面,在Edit菜单栏选项下有“Convert Structure...”选项,点击后可以选择滤波器结构。我们假设设计一个直接I型的1阶滤波,首先选择滤波器结构第一项”Direct-Form I,SOS”,然后将模型实现,点击”Relize Model“,大家又没有发现这个结构和上图的流程图很相似,只要把流程图改为1阶,那么和下面这个图就是一样的了。

在线形非移变系统情况下,级联系统的总输入-输出关系和子系统级联的次序无关,根据这一特性,将y(n)部分与x(n)部分交换可以得到滤波器的第二种直接形式。

由于此时z-1支路的输入相等,因此可以将这两路合并,这样简化流图后得到滤波器的直接形式II。

更一般的,采用级联的二阶形式(这也是matlab和STM32官方库中采用的形式)信号流图如下(2级级联)

以上这种结构就是以后在设计和实现时采用的流图,我们将按照图中的a11、a12...b22来确定STM32官方IIR滤波器的滤波系数。(未完待续,转载自www.mcukey.com)

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客