萬小川



摘要 以巴特沃斯帶阻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.