摘 要: 利用32位STM32F103 ARM和快速傅里葉變換(FFT)算法,,實(shí)現(xiàn)了音樂頻率幅度彩燈指示器的設(shè)計(jì),,該彩燈指示器可以指示不同的頻率等級(jí)和音量等級(jí)。整個(gè)系統(tǒng)采用模塊化設(shè)計(jì),,電路功能實(shí)現(xiàn)較好,,只要接入信號(hào)就能測(cè)量,無(wú)需過多的人為操作,。測(cè)試結(jié)果驗(yàn)證了FFT算法的準(zhǔn)確性, 進(jìn)一步證實(shí)了所設(shè)計(jì)的系統(tǒng)對(duì)音頻信號(hào)不同的頻段等級(jí)和音量等級(jí)具有較好的指示效果,,具有較好的實(shí)用性。
關(guān)鍵詞: STM32F103單片機(jī),;FFT算法,;音樂信號(hào);幅度,;頻率,;LED燈
本文主要討論了音樂頻率幅度彩燈指示器的設(shè)計(jì)與制作,設(shè)定音量等級(jí)為32級(jí),,頻率等級(jí)為15級(jí),,每一頻率等級(jí)下的音量等級(jí)又分為31級(jí);以嵌入式單片機(jī)STM32F103作為主控制核心,,以音樂信號(hào)自動(dòng)增益,、電壓抬高,、真有效值測(cè)量、LCD顯示,、按鍵等作為輔助硬件電路,;采用快速傅里葉變換FFT(Fast Fourier Transform)理論對(duì)音樂信號(hào)進(jìn)行詳細(xì)的頻域分析和處理。在此方案下完成音樂頻率幅度彩燈指示器的設(shè)計(jì)后,,以信號(hào)發(fā)生器產(chǎn)生的標(biāo)準(zhǔn)正弦波,、方波以及手機(jī)播放的任意MP3音樂(即音頻信號(hào))作為輸入信號(hào)進(jìn)行現(xiàn)場(chǎng)測(cè)試,實(shí)驗(yàn)結(jié)果驗(yàn)證了設(shè)計(jì)題目的全部基礎(chǔ)和提高要求,,具有較好的音樂信號(hào)頻率等級(jí)和幅度等級(jí)指示效果,。
1 理論分析和計(jì)算
1.1 快速傅里葉變換原理
快速傅里葉變換(FFT)是1965年由J.W.庫(kù)利和T.W.圖基提出的[1-3]計(jì)算離散傅里葉變換(DFT)的一種快速算法,其實(shí)質(zhì)是根據(jù)離散傅氏變換的奇,、偶,、虛、實(shí)等特性進(jìn)行改進(jìn)的一種DFT算法,。計(jì)算有限長(zhǎng)信號(hào)序列x(n)的離散傅里葉變換時(shí),,其正變換式如下所示:
2 系統(tǒng)硬件設(shè)計(jì)
2.1 總體設(shè)計(jì)
所設(shè)計(jì)系統(tǒng)的總體原理圖如圖1所示。其中,,ARM控制器采用ST公司生產(chǎn)的STM32F103芯片,,內(nèi)有2個(gè)12 bit的A/D轉(zhuǎn)換器、7個(gè)定時(shí)器,、9個(gè)通信接口,,最高工作頻率72 MHz,足以滿足設(shè)計(jì)需求,;音頻信號(hào)的峰-峰值范圍為0~Vmax,,Vmax的大小根據(jù)需要設(shè)定,頻率范圍為50 Hz~10 kHz,。為了避免輸入信號(hào)過小和保證輸入信號(hào)的幅值為正,,需要對(duì)其進(jìn)行自動(dòng)增益和抬高電壓預(yù)處理,預(yù)處理后的音頻信號(hào)的峰-峰值范圍約為0~3 V,,然后經(jīng)過A/D采樣,,快速傅里葉(FFT)變換,得到不同的等級(jí)的頻率和音量,,經(jīng)過串口輸出,;點(diǎn)陣電路大小為32×64,采用AT89S51單片機(jī)對(duì)其控制[4-6],。在LED陣列中,,其中前15列表示15個(gè)頻率等級(jí),第16列表示總音量等級(jí);另采用一行16個(gè)LED燈,,用其亮度指示每個(gè)頻段下音量的強(qiáng)弱,。整體電路采用模塊化設(shè)計(jì),簡(jiǎn)單易懂,,易于調(diào)試和實(shí)現(xiàn)系統(tǒng)要求,。
2.2 主要單元電路
采用STM32F103 ARM芯片,配置外部5 V的直流電源和晶振電路就可以構(gòu)成單片機(jī)最小控制系統(tǒng)電路,,限于篇幅,,其最小系統(tǒng)電路圖忽略,文中主要介紹關(guān)鍵的硬件單元電路,,即音頻信號(hào)預(yù)處理電路和電壓真有效測(cè)量電路,,限于篇幅,僅介紹電路組成及功能,,硬件單元電路圖忽略。
2.2.1 音頻信號(hào)預(yù)處理電路
音頻信號(hào)預(yù)處理電路主要包含兩個(gè)部分:電壓自動(dòng)增益電路,、電壓抬高電路,。由于輸入音頻信號(hào)的電壓范圍(峰-峰值)為0~5 V,當(dāng)音頻信號(hào)電壓的峰-峰值比較小時(shí),,信號(hào)的幅值較小,,受外界信號(hào)干擾大,容易引起測(cè)量不準(zhǔn),,所以要采用放大電路,。設(shè)計(jì)中選用OP2365組成三級(jí)增益可調(diào)的放大電路,電壓增益可調(diào)范圍分為四檔:10 mV~200 mV,,70 mV~750 mV,,200 mV~2 V和300 mV~5 V。當(dāng)輸入音頻信號(hào)電壓值較小時(shí),,就選擇增益較大的一檔進(jìn)行調(diào)節(jié),;當(dāng)輸入音頻信號(hào)電壓值較大時(shí),就不需要再對(duì)信號(hào)放大,。另外,,音頻信號(hào)采樣時(shí),要求輸入信號(hào)的電壓范圍不能有負(fù)值,,并保證被轉(zhuǎn)換電壓的幅值范圍在STM32F103芯片自帶的A/D轉(zhuǎn)換器的處理范圍內(nèi),,這就需要對(duì)輸入信號(hào)電壓負(fù)值進(jìn)行抬高處理,保證信號(hào)電壓為正值,。經(jīng)過抬高處理后,,正弦信號(hào)的負(fù)峰值點(diǎn)剛好和橫軸相交,抬高電壓值vtg=3.3 V。
2.2.2 真有效值電壓檢測(cè)電路
交流電壓的真有效值是通過電路對(duì)輸入交流電壓進(jìn)行“平方—求平均值—開平方”的運(yùn)算而得到的,。設(shè)計(jì)中采用AD736和OP07組成真有效值電壓檢測(cè)電路,。AD736是經(jīng)過激光修正的單片精密真有效值A(chǔ)C/DC轉(zhuǎn)換器,準(zhǔn)確度較高,、頻率特性較好,。OP07芯片是一種低噪聲、非斬波穩(wěn)零的雙極性運(yùn)算放大器集成電路,,具有低失調(diào),、高開環(huán)增益的特性。實(shí)際測(cè)試中,,該電路測(cè)量正弦波電壓的綜合誤差不超過±3%,。假設(shè)輸入信號(hào)的峰值為vmax,則有效值,,檢測(cè)出峰值后,,按照比例進(jìn)行放大。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件采用模塊化設(shè)計(jì),,分為主程序和子程序兩大部分,。主控制芯片采用STM32F103,由于處理器速度較快,,所以采用C語(yǔ)言編程,,方便簡(jiǎn)單。子程序包括A/D采樣,、周期性判斷,、FFT變換、延時(shí),、LED驅(qū)動(dòng),、LCD顯示等。系統(tǒng)程序流程圖如圖2所示,,限于篇幅,,文中僅介紹FFT變換子程序。系統(tǒng)通過模式選擇按鍵進(jìn)入不同的功能,。對(duì)頻率的指示采用兩種頻率等級(jí)計(jì)算方法:線性方法和對(duì)數(shù)方法,。線性方法是在最低頻率點(diǎn)和最大頻率點(diǎn)之間進(jìn)行15等分,得到各個(gè)頻率點(diǎn)及其對(duì)應(yīng)的幅度,,然后根據(jù)這些頻點(diǎn)計(jì)算出中心頻率點(diǎn)及其對(duì)應(yīng)的幅度,;對(duì)數(shù)方式是在最低頻率點(diǎn)和最大頻率點(diǎn)之間采用對(duì)數(shù)函數(shù)計(jì)算15個(gè)頻率等級(jí)點(diǎn)及其對(duì)應(yīng)的幅度。同時(shí),,系統(tǒng)也采用了按鍵模式來(lái)控制各個(gè)頻段對(duì)應(yīng)的音量強(qiáng)弱,。系統(tǒng)輸入信號(hào)自動(dòng)增益的檔位、按鍵模式、對(duì)各個(gè)頻點(diǎn)下的幅度及總的幅度會(huì)顯示在LCD液晶屏上,。
4 測(cè)試方法與結(jié)果分析
測(cè)試中,,輸入信號(hào)經(jīng)過音頻輸入預(yù)處理電路,系統(tǒng)處理的電壓在0~3.3 V范圍內(nèi),。同時(shí),,在硬件系統(tǒng)測(cè)試之前,要驗(yàn)證自編的FFT算法對(duì)信號(hào)處理的準(zhǔn)確性,。
首先任意選擇一個(gè)WAV音頻信號(hào)進(jìn)行自編FFT程序的測(cè)試,。測(cè)試中借助了MATLAB軟件中自帶的FFT子程序,設(shè)定一個(gè)采用頻率,,選取不同的采樣點(diǎn)128和1 024,,應(yīng)用MATLAB進(jìn)行頻譜分析,觀察采樣點(diǎn)選擇不同信號(hào)對(duì)頻域分析的影響,,得到的仿真結(jié)果如圖3所示,。對(duì)其進(jìn)行信號(hào)頻譜分析的結(jié)果與自編FFT程序在STM32F103單片機(jī)上運(yùn)行的結(jié)果進(jìn)行數(shù)據(jù)對(duì)比分析,測(cè)試數(shù)據(jù)誤差小于0.1%,,頻譜圖形狀幾乎與MATLAB仿真波形一致,,證實(shí)了自編FFT算法的正確性。
結(jié)合仿真分析結(jié)果,,對(duì)系統(tǒng)選定的采樣頻率為fs=23.81 kHz,采樣點(diǎn)數(shù)為1 024,,又知輸入信號(hào)的最大頻率為10 kHz,,則測(cè)定的采樣頻率fs>20 kHz,滿足香農(nóng)采樣定理,,故fs選定符合理論分析結(jié)果,。在此采樣頻率下,最小采樣頻點(diǎn)為23.25 Hz,,最大采樣頻點(diǎn)為10.74 kHz,,分別采用線性方法和對(duì)數(shù)方法實(shí)現(xiàn)頻率分析和處理。
然后采用方波和不同頻率的正弦波作為輸入信號(hào),,對(duì)FFT變換結(jié)果進(jìn)行量化,,根據(jù)能量定理,檢驗(yàn)各頻率點(diǎn)對(duì)應(yīng)的功率值,;同時(shí)觀察最大幅值在數(shù)組的位置P,,以及被測(cè)信號(hào)頻率f、采樣頻率fs,、采樣點(diǎn)數(shù)N(測(cè)試中取N=1 024)之間的關(guān)系是否滿足公式f=(fs/N)×P,。對(duì)系統(tǒng)運(yùn)行得到的頻譜分析數(shù)據(jù)與采用MATLAB軟件進(jìn)行FFT分析的結(jié)果進(jìn)行對(duì)比,觀測(cè)到兩種方法在相同頻點(diǎn)處信號(hào)的幅度和功率數(shù)據(jù)變化不大,由此驗(yàn)證了所設(shè)計(jì)的STM32F103單片機(jī)系統(tǒng)進(jìn)行信號(hào)頻域分析的準(zhǔn)確性,。
最后,,任意選擇手機(jī)播放的男聲、女聲演唱的MP3歌曲作為輸入信號(hào)進(jìn)行測(cè)試,,觀測(cè)播放時(shí)15個(gè)頻率等級(jí),、每一個(gè)頻率等級(jí)下31個(gè)等級(jí)的音量強(qiáng)弱的LED指示情況以及32個(gè)總音量等級(jí)的LED指示情況,觀察音樂幅度,、頻率的LED指示效果,,根據(jù)運(yùn)行情況進(jìn)行程序調(diào)試,同時(shí)觀測(cè)LCD顯示的最大4個(gè)功率(即幅度值)所在的頻率點(diǎn)以及總功率并記錄數(shù)據(jù),。
以正弦信號(hào)作為輸入信號(hào)的總功率測(cè)量和單個(gè)頻率分量測(cè)量得到的結(jié)果分別如表1和表2所示,,測(cè)試結(jié)果表明測(cè)試數(shù)據(jù)和用電腦模擬的結(jié)果很接近。
應(yīng)用STM32F103 ARM最小控制系統(tǒng)和快速傅里葉變換(FFT)算法,,并結(jié)合LED點(diǎn)陣技術(shù),,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)音樂頻率幅度彩燈指示器。系統(tǒng)的硬件電路采用模塊化設(shè)計(jì),,各模塊之間串口少,,調(diào)試方便;音頻輸入信號(hào)預(yù)處理電路具有自動(dòng)增益和電壓抬高功能,,頻率等級(jí)分析方法分為線性均分和對(duì)數(shù)處理兩種,,可以通過按鍵進(jìn)行方法選擇,同時(shí)頻率等級(jí)的大小由LED燈的個(gè)數(shù)指示,,且指示結(jié)果較準(zhǔn)確,;每一頻段的大小及該頻段下音量的強(qiáng)弱和所有頻段下的總音量強(qiáng)弱都能由LED燈的亮度變化進(jìn)行指示。分別采用標(biāo)準(zhǔn)方波信號(hào)和正弦信號(hào)進(jìn)行測(cè)試,,同時(shí)借助MATLAB的FFT分析結(jié)果,,驗(yàn)證了自編FFT算法在STM32F103單片機(jī)系統(tǒng)中運(yùn)行的準(zhǔn)確性,然后應(yīng)用任意音頻輸入信號(hào)進(jìn)行測(cè)試,,測(cè)試結(jié)果實(shí)現(xiàn)了比賽題目的基礎(chǔ)要求和提高要求,,證實(shí)了所設(shè)計(jì)的音樂頻率幅度指示器具有較好的頻率等級(jí)和音量等級(jí)指示效果,而且整個(gè)系統(tǒng)的設(shè)計(jì)方案與實(shí)現(xiàn)都具有重要的理論研究意義和實(shí)用意義,。
參考文獻(xiàn)
[1] 周圍,,姚麗娜.基于FFT變換的快速信道估計(jì)算法[J].重慶郵電大學(xué)學(xué)報(bào),2010,,22(5):551-554.
[2] 鄧小平,,張賢,譚書偉,,等.基于FFT算法的音頻信號(hào)分析儀[EB/OL].(2011-03-15).[2011-06-05].http://www.paper.edu.cn.
[3] 王平,,江華麗,,鄭孔華,等.基于單片機(jī)的音頻信號(hào)分析儀的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),,2009(19):122-124.
[4] 周杰英,,陳曉帆,王濤,,等.點(diǎn)陣LED多功能動(dòng)態(tài)顯示實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,,2010,29(9):36-40.
[5] 張立科.單片機(jī)典型外圍器件及應(yīng)用實(shí)例[M].北京:人民郵電出版社,,2006.
[6] 吳國(guó)偉.嵌入式操作系統(tǒng)原理及應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,,2007.