河北科技大學 趙 雪 陳國通 馬忠強
基于stm32的頻譜分析儀的設計
河北科技大學 趙 雪 陳國通 馬忠強
提出一種以STM32F407為核心,主要采用FIFO來做高速緩存的方案。高速信號先通過AD采樣,然后先將采樣后的數據給FIFO先緩存處理,然后再通過STM32F407進行加Blackman預處理,再做1024個點FFT進行頻譜分析,最后將數據顯示在LCD12864上,以便進行人機交互。該設計可實現任意波形信號的頻譜顯示,可以自動尋找各諧波分量的幅值,頻率以及相位并進行8位有效數據顯示。由于成本較低,具有一定的應用價值。
stm32F407;FFT;頻譜分析;AD采樣
近年來,頻譜分析儀在汽車,通信信號處理,工業制造等各行各業已成為一種非常有用的工具。一般用示波器觀察一個信號的波形。幅度、頻率等,但對于復雜信號的一些信息無法僅通過波形,幅度,頻率獲取。如果由時域轉至頻域,就能觀察到各個頻率點上的功率幅度大小分布情況。
頻譜分析儀按照原理分為模擬和數字頻譜分析儀。隨著時代的發展,工程應用復雜化,產品更新更快,對于頻譜分析儀的精度要求更高,處理速度要求更快,傳統的模擬頻譜分析儀由于體積龐大,功能單一,價格昂貴已不適應時代需求,正逐步向數字頻譜分析儀發展[1]。目前實現信號的頻譜分析儀的主要方法有:采用通用數字信號處理芯片實現、采用專用DFT/FFT芯片與DSP芯片實現和采用FPGA實現[3]。
本文提出一種利用ARM Cortex M4內核的STM32作為數據處理核心,控制整個頻譜分析系統的設計方案。本系統由前置匹配放大電路,AD采樣電路,高速FIFO緩存電路,以及液晶顯示電路組成。
2.1 MCU處理器的選擇
本設計以ST公司生產的32位的STM32F407為核心DSP處理器件,該芯片具有1MB的Flash閃存空間,196KB的SRAM空間,并且時鐘頻率達到了168MHz。程序運行于168MHz主頻時,通過Flash取指令(不是內部SRAM),通過Dhrysone測試得到210DMIPS,主要采用ART加速器,可以最大限度的消除Flash存儲器較慢從而限制MCU性能的發揮,這可以使CPU可以在所有工作頻率下近乎零等待的方式,從Flash中運行程序。再就是STM32F407帶有硬件FPU處理單元,這樣可以不用軟件算法實現浮點運算,而直接采用硬件來實現浮點運算,這樣就減小了編譯器生成的代碼量,并且使用更方便,浮點數只占用四個字節就可以表示的數據范圍很大,因此不用擔心計算后的數據溢出問題,從而進一步提高運算速度。
2.2 采樣方法的選擇
本設計的采樣時鐘信號選用Linear公司生產的LTC1799提供。LTC1799是一款精準型振蕩器,使用方便。它以單電源的方式工作在2.7V到5.5V,并提供了軌至軌、占空比為50%的方波輸出。CMOS輸出驅動器確保了快速上升/下降時間和軌至軌開關操作。通過電阻器調節設定頻率,電阻阻值在3kΩ~1MΩ的范圍內變化,用以選擇100KHz到33MHz之間的任何一個頻率。三態DIV輸入負責決定驅動輸出之前對主時鐘進行1、10或100分頻。
2.3 高速數據緩存芯片的選擇
高速數據緩存芯片采用FIFO芯片,由IDT公司生產的IDT7205是典型的單向異步FIFO芯片,是一種高速、低功耗的先進先出雙端口存儲緩沖器。這種FIFO芯片內部的雙端口RAM具有2套數據線,分別執行輸入和輸出功能,各自獨立的寫讀指針分別在寫、讀時鐘的控制下順序地從RAM中寫、讀數據。
離散傅里葉變換(DFT):
DFT(離散傅里葉變換)是數字信號分析與處理中的一種重要變換,它可以使數字信號處理在頻域內采用數值運算的方法進行,大大增加了數字信號處理的靈活性,但直接計算DFT的計算量與變換區間長度N的平方成正比,當N較大時,計算量太大,所以在快速傅里葉變換(FFT)出現以前,直接用DFT算法進行譜分析和信號的實時處理是不切實際的[4]。
DFT定義:設x(n)是一個長度為N的有限長數列,定義N點離散傅里葉變換為:

(1)周期性

(2)對稱性

利用DFT的周期性和對稱性可把DFT的計算次數大大減小。

根據以上的結果,就可以計算出:

所對應信號的表達式為:

但是由于所做的點數有限,造成頻譜泄露是必然的。因此并非要計算所有點的幅值,相位以及頻率信息,而只需要計算出各個峰值點的幅值,相位以及頻率即可表示采樣信號各諧波分量的全部信息。
因此算法模塊要實現的功能:保存FFT之后峰值點的實部和虛部,以及峰值點所處的位置這幾組點即可。
4.1 A/D轉換模塊原理圖
A/D轉換使用的是TI公司生產的8位精度的并行AD轉換器TLC5510A。其電路原理圖如圖4.1所示:

圖4.1 A/D轉換模塊原理圖
4.2 高速緩存模塊原理圖
本設計的高速緩存芯片選用IDT司生產的IDT7205,其存儲深度可以達到8KB。其電路原理圖如圖4.3所示:

圖4.2 高速緩存電路
4.3 液晶顯示模塊原理圖
本設計的液晶模塊采用無字庫LCD12864來顯示,其電路原理圖如圖4.4所示:

圖4.3 LCD12864液晶顯示
STM32F407芯片端口雖然可以忍受+5V的電壓,但這不代表其可以識別+5V的高電平,因此在讀+5V的輸入端口電平,需要用電平轉換芯片將+5V轉換成+3.3V的,否則讀出的數據是錯的。但是3.3V屬于高電平,因此其可以驅動+5V工作的數字芯片。
在數字信號處理最重要的就是要驗證數據的準確性和有效性,因此就要使用MATLAB軟件仿真來做數據對比,以判斷STM32F4的計算結果是否準確。
在測試過程中,我們使用被白噪聲污染過的信號經過離散化后的數組,如圖5.1所示,為同一信號256點與1024點FFT之后數據的對比:

圖5.1 同一信號256點與1024點FFT之后數據的對比
由此可知本設計合理,另外,若再設計濾波電路濾除噪聲,實驗結果會更理想。
[1]GANDERTON R.Spectrum analysers today[J].Electronics &power,1978.
[2]LIM H,LEE S.A study on the low-cost digital spectrum analyzer design[C]//Proceedings of 2014 6th International Conference on Electronics,Computer and Artificial Intelligence.Bucharest:IEEE,2014:31-34.
[3]韋炯全.基于FFT的高速電力諧波檢測儀的研制、檢測技術與自動化裝置[D].廣西大學,2011.
[4]萬永革編著.數字信號處理的MATLAB實現(第2版)[M].北京:科學出版社,2012,5.

圖2 紋波及實物圖
使用降壓控制器LM5117芯片和CSD18532KCS MOS場效應管作為DC-DC變換的核心器件。在汽車電源12V直流電壓時,輸出直流電壓5V,輸出電壓偏差在100mV之內,輸出電流最大值為3A,具有過流保護功能,整體電路在輸入12V直流電壓時,穩定降壓輸出5V,負載調整率低至0.2%,電壓調整率低至0.199%,效率高達91.57%,紋波低至30mv。此設計能夠將汽車電源進行高效率的轉換,解決智能手機以及車載電子設備供電不足的困惑。
參考文獻
[1]王兆安,劉進軍主編.電力電子技術[M].機械工業出版社,2012,7.
[2]陳永真,孟麗囡.高效開關電源設計與制作[M].中國電力出版社,2008,3.
[3]寧武,曹洪奎,孟麗囡主編.反激式開關電源原理與設計[M].電子工業出版社,2014,7.
[4]采用模擬電流監視器的寬輸入范圍同步降壓控制器[S]. LM5117數據手冊,2015.
陳國通,男,河北科技大學教授,研究方向:數據交換與傳輸。