<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于stm32f4的高速信號頻譜分析儀

          基于stm32f4的高速信號頻譜分析儀

          作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
          本系統(tǒng)是以STM32F407為核心,主要采用FIFO來做高速緩存。高速信號先通過AD采樣,然后先將采樣后的數(shù)據(jù)給FIFO先緩存處理,然后再通過STM32F407進行加Blackman預處理,再做1024個點FFT進行頻譜分析,最后將數(shù)據(jù)顯示在LCD12864上,以便進行人機交互!該系統(tǒng)可實現(xiàn)任意波形信號的頻譜顯示,以及可以自動尋找各諧波分量的幅值,頻率以及相位并進行8位有效數(shù)據(jù)顯示。

          系統(tǒng)設計任務

          本文引用地址:http://www.ex-cimer.com/article/201611/316133.htm

          一、任務

          設計并制作一個高速頻譜分析儀。

          1系統(tǒng)方案

          本系統(tǒng)由前置匹配放大電路,AD采樣電路,高速FIFO緩存電路,以及液晶顯示電路組成。其中高速數(shù)據(jù)緩存電路,以及高精度的顯示數(shù)據(jù)是本次設計的難點!下面分別論證這幾個模塊的選擇。

          系統(tǒng)框圖

          1.1測量方法的論證與選擇

          1.1.1 MCU處理器的比較與選擇

          DSP處理主要是要考慮到運算速度。

          在處理器的選擇上通??梢圆捎?位,16位或者32位的MCU,但由于在處理信號的過程中,通常會遇到快速傅里葉FFT算法,所以會遇到大量的浮點運算,而且一個浮點數(shù)要占用四個字節(jié),故在處理過程中要占用大量的內(nèi)存,同時浮點運算速度比較慢,所以采用普通的MCU在一定時間內(nèi)難以完成,所以綜合考慮運算速度和內(nèi)存大小等因素。

          本系統(tǒng)采用32位的STM32F407做為核心DSP處理器件,該芯片具有1MB的Flash閃存空間,196KB的SRAM空間,并且時鐘頻率達到了168MHz。程序運行于168MHz主頻時,通過Flash取指令(不是內(nèi)部SRAM),通過Dhrysone測試得到210DMIPS,主要采用ART加速器,可以最大限度的消除Flash存儲器較慢從而限制MCU性能的發(fā)揮,這可以使CPU可以在所有工作頻率下近乎零等待的方式,從Flash中運行程序。還有就是STM32F407帶有硬件FPU處理單元,這樣可以不用軟件算法實現(xiàn)浮點運算,而直接采用硬件來實現(xiàn)浮點運算,這樣就減小了編譯器生成的代碼量,并且使用更方便,浮點數(shù)只占用四個字節(jié)就可以表示的數(shù)據(jù)范圍很大,因此不用擔心計算后的數(shù)據(jù)溢出問題!進一步提高運算速度。

          1.1.2 采樣方法比較與選擇

          方案一 通過DDS集成芯片產(chǎn)生一個頻率穩(wěn)定度和精度相當高的方波信號作為時鐘信號。

          可選用直接數(shù)字頻率合成(DDS)芯片AD9851,AD9851為ADI公司生產(chǎn)的高性能器件,可與單片機通過簡單的接口完成串行或者并行通信??赏瓿赏獠枯斎腩l率控制字與芯片內(nèi)部頻率相位控制字之間的轉(zhuǎn)換,可以非常容易的通過頻率控制字調(diào)整輸出頻率,以及精確的調(diào)整輸出信號的相位,輸出信號幅值穩(wěn)定,但是由于DDS控制也需要占用一部分MCU的IO口資源,并且DDS在價格上成本有點高。

          方案二 直接由MCU產(chǎn)生PWM波做為采樣時鐘信號。

          可直接由STM32F407產(chǎn)生的PWM波,可實現(xiàn)頻率,占空比可調(diào)的方波。最快IO口翻轉(zhuǎn)速度可以達到84MHz,可以輕松實現(xiàn)想要的采樣頻率。由于輸出的是3.3V的幅值的電壓,與外圍芯片相連,需要經(jīng)過電平轉(zhuǎn)換芯片轉(zhuǎn)成5V,才能作為外圍芯片的時鐘信號。

          方案三 采樣時鐘信號選用Linear公司生產(chǎn)的LTC1799提供。

          LTC1799是一款精準型振蕩器,使用方便。它采用2.7V到5.5V單電源工作,并提供了軌至軌、占空比為50%的方波輸出。CMOS輸出驅(qū)動器確保了快速上升/下降時間和軌至軌開關(guān)操作。頻率設定通過電阻器調(diào)節(jié),電阻阻值在 的范圍內(nèi)變化,以選擇處于100KHz到33MHz之間的任何一個頻率。三態(tài)DIV輸入負責決定驅(qū)動輸出之前對主時鐘進行1、10或100分頻。

          綜合上述方案,選擇方案三,采用一片LTC1799來產(chǎn)生15MHz的采樣時鐘信號。

          1.1.3 AD采樣芯片的論證與選擇

          方案一 采用MCU內(nèi)部ADC對采樣信號進行采樣。

          STM32F407內(nèi)部最大轉(zhuǎn)換速率為7.2MSPS,而且被采樣信號的幅值只能在0V到3.3V之間,能測得動態(tài)范圍小,難以滿足要求。

          方案二 采用TI公司的8位TLC5510A作為AD采樣芯片。

          TLC5510A是采用高速CMOS技術(shù),8位的,最大轉(zhuǎn)換速率為20MSPS的AD轉(zhuǎn)換芯片。支持+5V電源供電,內(nèi)部包含采樣保持電路,輸出帶有高阻態(tài)模式,以及帶有內(nèi)部參考電阻。輸出數(shù)據(jù)在時鐘的下降沿有效,數(shù)據(jù)流水線結(jié)構(gòu)導致了2.5個時鐘的延時。而且高速AD普遍價格比較昂貴,在滿足輸入信號在2V以上動態(tài)范圍,TI公司可供申請的高速AD芯片只有TLC5510A這一種。

          綜合上述方案,選擇方案二,在精度要求不高場合,采用TLC5510A作為高速采樣芯片。

          1.1.4 高速數(shù)據(jù)緩存芯片的論證與選擇

          由于15MHz的高速數(shù)據(jù)流,如果中斷來標記數(shù)據(jù)流的地址,由于MCU的中斷響應時間有限,有12個時鐘周期的中斷延時,因此就需要外部存儲器做高速數(shù)據(jù)緩存。

          方案一 采用SRAM芯片作為外部高速數(shù)據(jù)緩存芯片。

          采用IDT71024來做高速緩存,由于SRAM提供了地址線端口和數(shù)據(jù)輸入和輸出端口,如果用MCU來控制的SRAM的地址線,中斷響應不過來是反應不過來,如果用計數(shù)器作為地址計數(shù)器,原理是可以,但是實際操作效果不佳。

          方案二 采用FIFO芯片作為外部高速數(shù)據(jù)緩存芯片。

          IDT7205是單向異步FIFO的典型芯片,由IDT公司生產(chǎn)的,是一種高速、低功耗的先進先出雙端口存儲緩沖器。這種FIFO芯片內(nèi)部的雙端口RAM具有2套數(shù)據(jù)線,分別執(zhí)行輸入和輸出功能,各自獨立的寫讀指針分別在寫、讀時鐘的控制下順序地從RAM中寫、讀數(shù)據(jù)。

          綜合上述方案,選擇方案二,它無地址線,布線簡單,只能是順序存取。

          1. 系統(tǒng)理論分析與計算

          2.1快速傅里葉變換(FFT)

          DFT(離散傅里葉變換)是數(shù)字信號分析與處理中的一種重要變換,它可以使數(shù)字信號處理可以在頻域內(nèi)采用數(shù)值運算的方法進行,大大增加了數(shù)字信號處理的靈活性,但直接計算DFT的計算量與變換區(qū)間長度N的平方成正比,當N較大時,計算量太大,所以在快速傅里葉變換(FFT)出現(xiàn)以前,直接用DFT算法進行譜分析和信號的實時處理是不切實際的。

          DFT的定義:設 是一個長度為N的有限長序列,定義 的N點離散傅里葉變換為

          能提高DFT速度的唯一可利用的是因子 。 稱為旋轉(zhuǎn)因子,可表示為具有以下兩個重要性質(zhì)。

          ①對稱性

          ②周期性

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

          DFT分解法基本上分為兩類:一類是將時間序列X(n) (n 為時間標號)進行逐次分解,由此得到的FFT算法稱為按時間抽取算法,另一類是將傅里葉交換序列X(k) ( k為頻率標號)進行分解,叫做按頻率抽取算法。對每一算法,按基本的蝶形運算的構(gòu)成又可分為基2、基4、基8以及任意因子等的FFT算法。不同基的FFT算法所需的計算量略有差異。之所以說略有差異是指并無數(shù)量級上的差異,甚至無成倍的差別。只是某種基的算法比另一種省幾分之幾而已。

          而本方案采用的就是ST公司官方固件庫里DSP庫中已經(jīng)寫好的關(guān)于FFT的庫函數(shù),調(diào)用的是基4復數(shù)序列1024個點的FFT函數(shù)庫。

          假設FFT之后某點n用復數(shù)表示,那么這個復數(shù)的模就是,相位就是,頻率就是,(其中N表示FFT要做的點數(shù),n表示排序的點,F(xiàn)s為采樣頻率)。根據(jù)以上的結(jié)果,就可以計算出n點,

          所對應信號的表達式為:

          而對于n=1的點信號,是直流分量,幅度即為:

          因此對于直流量要特殊考慮,一是幅值是其它頻率點的2倍,二是直流量不含有相位信息。

          但是由于所做的點數(shù)有限,其會造成頻譜泄露是必然的。因此并非要計算所有點的幅值,相位以及頻率信息,而只需要計算出各個峰值點的幅值,相位以及頻率即可表示采樣信號各諧波分量的全部信息。

          因此算法模塊要實現(xiàn)的功能:保存FFT之后峰值點的實部和虛部,以及峰值點所處的位置這幾組點即可。

          2.2窗函數(shù)的分析與計算

          在頻譜分析過程中,加窗是提高信號分析精度的一個重要措施,對加窗函數(shù)的基本要求:時域為改善截斷處的不連續(xù)狀態(tài)(由于吉布斯現(xiàn)象造成的振蕩);頻域為窗譜的主瓣窄而高,以提高分辨率,旁瓣幅值應小,正負交替接近相等,以減小泄露和假頻。因此在選擇窗函數(shù)的時候,應考慮被分析信號的性質(zhì)和處理要求,如果僅要求精確求出主瓣頻率,而不考慮幅值精度,則可選擇用主瓣寬度比較窄而便于分辨的矩形窗,例如測量物體的自振頻率等;如果分析窄帶信號,且有較強的干擾噪聲,則應選用旁瓣幅度較小的窗函數(shù),如漢寧窗(Hanning)等。

          為了使加窗函數(shù)后的功率譜和幅值譜不受窗函數(shù)的影響,必須根據(jù)一定的原則推導出恢復系數(shù)。加窗后的恢復系數(shù)一般遵守兩個原則之一:幅值相等或能量相等的原則。

          因此加窗模塊要實現(xiàn)的功能:提高采樣信號分析的幅值精度。

          頻譜分析中恢復系數(shù)的使用原則

          在頻譜分析中,根據(jù)不同用途采用不同恢復系數(shù),在進行倍頻程和三分之一倍頻程分析時,為了使頻帶內(nèi)總能量不變,一定要采用能量相等的恢復系數(shù);而進行譜分析時,更關(guān)心的是各峰值頻率對應的幅值,此時只能采用幅值相等的恢復系數(shù)。

          常用的各種窗函數(shù)的恢復系數(shù)

          2.3 A/D采樣的分析與計算

          本系統(tǒng)采用的AD轉(zhuǎn)換芯片為TLC5510A,TLC5510A是采用高速CMOS技術(shù),8位的,最大轉(zhuǎn)換速率為20MSPS的AD轉(zhuǎn)換芯片。支持+5V電源供電,內(nèi)部包含采樣保持電路,輸出帶有高阻態(tài)模式,以及帶有內(nèi)部參考電阻。輸出數(shù)據(jù)在時鐘的下降沿有效,數(shù)據(jù)流水線結(jié)構(gòu)導致了2.5個時鐘的延時。雖然AD轉(zhuǎn)換數(shù)據(jù)輸出有2.5個時鐘延時,但是只要量化的結(jié)果是正確的和數(shù)據(jù)是順序輸出,這個數(shù)據(jù)輸出延時我們可以不用關(guān)心。外部還需要接一個4V的參考電壓,這樣才能量化到0V~4V的輸入信號。TLC5510A引腳圖和時序圖如下:

          圖2.3.1 TLC5510A的引腳圖

          引腳功能描述:

          由于TLC4F的浮點功能,就需要使用固件庫自帶的arm_math.h,這個文件根據(jù)編譯控制項(__FPU_USED == 1)來決定是使用那一種函數(shù)方法:如果沒有使用FPU,那就調(diào)用keil的標準math.h頭文件中定義的函數(shù);如果使用了FPU,那就是用固件庫自帶的優(yōu)化函數(shù)來解決問題。

          在arm_math的開頭部分是有這些編譯控制信息:

          #ifndef _ARM_MATH_H
          #define _ARM_MATH_H
          #define __CMSIS_GENERIC /* disable NVIC and Systick functions */

          #if defined (ARM_MATH_CM4)
          #include "core_cm4.h"
          #elif defined (ARM_MATH_CM3)
          #include "core_cm3.h"
          #elif defined (ARM_MATH_CM0)
          #include "core_cm0.h"
          #else
          #include "ARMCM4.h"
          #warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."
          #endif
          #undef __CMSIS_GENERIC /* enable NVIC and Systick functions */
          #include "string.h"
          #include "math.h"

          就是說如果不使用CMSIS的,就會調(diào)用keil自帶的標準庫函數(shù)。否則就用CMSIS的定義。這里因為是用的STM32F4固件庫還提供了其他很有用的數(shù)學函數(shù),都位于DSP_Lib文件夾。

          3.有時候常會出現(xiàn)編譯錯誤,會出現(xiàn)硬件錯誤,導致MCU鎖住了,下不了程序。

          解決方法就是硬件引導程序恢復

          STM32F407雖然芯片資料說明端口可以忍受+5V的電壓,但這不代表其可以識別+5的高電平,因此在讀+5V的輸入端口電平,需要用電平轉(zhuǎn)換芯片將+5V轉(zhuǎn)換成+3.3V的,否則讀出的數(shù)據(jù)時一個錯的。但是3.3V屬于高電平,因此其可以驅(qū)動+5V工作的芯片。

          參考文獻

          [1] 萬永革編著. 數(shù)字信號處理的MATLAB實現(xiàn)(第2版) 北京:科學出版社,2012.5.

          [2] A.V.奧本海姆著. 離散時間信號處理(第2版) 西安:西安交通大學出版社,2011.9.

          [3] 李群芳著. 單片微型計算機與接口技術(shù)(第3版) 北京:電子工業(yè)出版社,2008.5.

          [4] DSP常用算法的C語言實現(xiàn)

          [5] Andrew Koenig著. C陷阱與缺陷. 北京:人民郵電出版社,2002.9.



          關(guān)鍵詞: stm32f4高速信號頻譜分析

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();