摘 要: 基于STM32F429單片機(jī)控制系統(tǒng)設(shè)計了一款可遠(yuǎn)距離精確控制頻率和幅度值的音頻信號發(fā)生器。該發(fā)生器通過PC控制面板,按照要求輸入所需頻率、幅度值,借助以太網(wǎng)把控制命令遠(yuǎn)距離地傳輸給該發(fā)生器,經(jīng)發(fā)生器的處理,把音頻模擬信號傳輸給被測設(shè)備。與傳統(tǒng)音頻信號發(fā)生器相比,該發(fā)生器可同時輸出兩路相同的音頻信號,不用粗調(diào)、細(xì)調(diào),直接在PC控制面板上輸入所需幅度頻率即可,而且能遠(yuǎn)距離控制。
關(guān)鍵詞: STM32F429;數(shù)字信號合成;PC端控制面板
0 引言
為了對客觀世界的聲音信息進(jìn)行拾取、記錄、放大和傳輸,研制了聲音信號處理設(shè)備。聲音信號處理設(shè)備處理的對象是人耳聲頻域(20 Hz~20 kHz)內(nèi)的音頻信號,音頻信號發(fā)生器是測量聲音信號及處理設(shè)備性能指標(biāo)必不可少的儀器。早期音頻信號發(fā)生器由基本的LC振蕩電路及外圍電路組成,結(jié)構(gòu)簡單、成本較低,但設(shè)備笨重、頻率精度不高。目前常用的音頻信號發(fā)生器普遍由單片機(jī)及外圍電路組成,頻率穩(wěn)定,但都通過粗調(diào)、細(xì)調(diào)改變幅度、頻率,操作麻煩,不能馬上改變變量到所需值的大小。
針對傳統(tǒng)音頻信號發(fā)生器的缺點,本文采用一款性價比高、功耗低的ARM Cortex-M4控制芯片[1],制作了一臺智能音頻信號發(fā)生器。該發(fā)生器的頻率、幅度連續(xù)可調(diào),按步進(jìn)1 Hz、1 mV線性變化,兼具頻率、幅度穩(wěn)定的優(yōu)點;通過PC端控制面板,直接輸入幅度、頻率值,就能快速地得到所需要的音頻信號,精度高[2];一改信號發(fā)生器必須近距離調(diào)試的缺點,可通過以太網(wǎng)直接遠(yuǎn)距離操控。
1 總體設(shè)計
該音頻信號發(fā)生器采用模塊化設(shè)計,通過調(diào)用各個功能模塊,實現(xiàn)主控計算機(jī)可遠(yuǎn)距離快速控制音頻信號發(fā)生器輸出信號的幅度、頻率值。該系統(tǒng)以ARM Cortex-M4為核心,系統(tǒng)總體框圖如圖1所示。
2 硬件設(shè)計
該音頻信號發(fā)生器通過主控計算機(jī)的控制面板輸入控制幅度、頻率值的指令,通過以太網(wǎng)快速遠(yuǎn)距離傳輸?shù)叫盘柊l(fā)生器,控制數(shù)字合成音頻信號的幅度、頻率值,最終通過音頻輸出端口輸出所需音頻信號。
2.1 控制芯片
控制系統(tǒng)的核心STM32F429是以ARM Cortex-M4為內(nèi)核的新型微控制器芯片,它的停止模式電流降至100 μA(典型值),降低了停止模式的電流消耗,可延長便攜應(yīng)用電池的壽命,頻率高達(dá)180 MHz,擁有市場領(lǐng)先的性能和圖形處理功能。該芯片包含3個12 bit A/D轉(zhuǎn)換器,多達(dá)24個通道,轉(zhuǎn)換速率為2.4 MSPS,在掃描模式下,自動轉(zhuǎn)換在選定的一組模擬輸入中進(jìn)行;還包括2個12 bit D/A轉(zhuǎn)換器,可獨立或同時轉(zhuǎn)換。同時集成了大部分存儲器控制器,可外接一個高速SDRAM作為內(nèi)存擴(kuò)充,有很高的性價比。
2.2 遠(yuǎn)距離控制電路
以太網(wǎng)遠(yuǎn)距離控制是整個控制系統(tǒng)中的一個重要部分。該發(fā)生器通過以太網(wǎng)與PC連接,操控PC控制面板,按照要求輸入所需的幅度、頻率值,通過以太網(wǎng)把控制命令遠(yuǎn)距離地傳輸給音頻信號發(fā)生器,達(dá)到遠(yuǎn)程控制的目的[3]。
該以太網(wǎng)接口芯片DP83848CVV是一個全功能自適應(yīng)網(wǎng)絡(luò)連接速度10/100 Mb/s的單端口物理器件,允許設(shè)備使用所需操作電源的絕對最小值,提供低功耗性能。該芯片包括一個25 MHz的時鐘輸出,使應(yīng)用程序含有最少的外部器件,進(jìn)而降低成本;同時支持10BASE-T和100BASE-TX的以太網(wǎng)協(xié)議,以確保與其他基于以太網(wǎng)標(biāo)準(zhǔn)解決方案的兼容性和互操作性。
2.3 SDRAM
同步動態(tài)隨機(jī)存儲器SDRAM與系統(tǒng)總線同步,無等待周期,而且是雙存儲體結(jié)構(gòu),讀取效率得到成倍提高。SDRAM體積小、速度快、容量大、價格低,是比較理想的內(nèi)存擴(kuò)展器件[4-5]。
該系統(tǒng)采用的SDRAM為MT48LC32M16A2P-7E,它的內(nèi)存高達(dá)256 MB,在時鐘頻率66 MHz、100 MHz、133 MHz之間兼容,所有信號寄存在系統(tǒng)時鐘的上升沿,自動預(yù)載,時鐘使能CKE中的停用時鐘提供預(yù)充電掉電和自刷新操作,在斷電和自刷新模式下,包括CLK的輸入緩沖區(qū)被禁用,提供低待機(jī)功耗。對每一行自動刷新的循環(huán)周期為64 ms,刷新命令一次對一行有效,發(fā)送間隔為7.812 5 μs,從而提供無縫、高速、隨機(jī)訪問操作。A0~A11作為SDRAM的行地址線,同時A0~A7又復(fù)用為列地址線,BA0和BA1作為bank選擇線,應(yīng)用讀、寫或預(yù)充電命令。其控制接口如圖2所示。
信號采樣頻率為48 kHz,每個樣點采用16 bit量化,如果最小頻率分辨率為1 Hz,所需查表的大小為48 k×16 bit,共需48 k×16 bit的RAM空間。顯然SDRAM的存儲空間足夠使用,也便于以后該發(fā)生器對方波、三角波等波形的擴(kuò)展。
3 軟件設(shè)計
整個系統(tǒng)采用模塊化設(shè)計,除主程序外,各功能子程序分別執(zhí)行PC端輸入控制命令、以太網(wǎng)傳輸、SDRAM內(nèi)存擴(kuò)展、正弦查詢表映射、數(shù)模轉(zhuǎn)換等相應(yīng)功能,系統(tǒng)主程序流程如圖3所示。
3.1 PC端控制
信號發(fā)生器可產(chǎn)生正弦波、方波、三角波等規(guī)則波形信號,本信號發(fā)生器僅以正弦波為例。
音頻信號發(fā)生器的PC控制端采用Java技術(shù),因為它可跨平臺操作,具有卓越的通用性、高效性,所以設(shè)計的PC控制端具有界面友好、操作簡單、成本低、容易實現(xiàn)等優(yōu)點。所設(shè)計的PC控制界面如圖4所示,部分程序如下:
JPanel jp0,jp1;
JPanel jp2,jp3;
JLabel j0,j1,j2;
JTextField txt1,txt2;
JButton Bopen,Bclose;
public TianComm(){
jp0=new JPanel();
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
j1=new JLabel("頻率(Hz):");
//輸入頻率值,單位為Hz
j2=new JLabel("幅度(mV):");
//輸入幅度值,單位為mV
txt1=new JTextField(10);
txt2=new JTextField(10);
Bopen=new JButton("打開");//打開控制面板
Bclose=new JButton("關(guān)閉");//關(guān)閉控制面板
…}
對控制界面進(jìn)行操作時應(yīng)注意以下事項:
?。?)“打開”和“關(guān)閉”按鈕分別代表打開和關(guān)閉控制端;
?。?)頻率以Hz為單位,分辨率為1 Hz,假如頻率為2 000 Hz,就在頻率欄填寫2 000;幅度以mV為單位,分辨率為1 mV,假如需要1 V,則在幅度行輸入1 000,然后按回車鍵即可。
3.2 數(shù)字合成音頻信號
直接采用數(shù)字技術(shù)合成正弦音頻信號,不僅在轉(zhuǎn)換速度上要優(yōu)于一般電路,在合成精度上也要優(yōu)于一般振蕩電路,而且具有與標(biāo)準(zhǔn)頻率源相同的頻率準(zhǔn)確度和穩(wěn)定度。輸出信號頻率通??砂词M(jìn)制數(shù)字選擇,最高能達(dá)11位數(shù)字的極高分辨力[6-7]。
信號發(fā)生部分由主機(jī)產(chǎn)生數(shù)字音頻流,通過STM32F429自帶的數(shù)模轉(zhuǎn)換功能獲得所需的模擬信號。在數(shù)字音頻處理中,聲音和數(shù)據(jù)的轉(zhuǎn)換有多種方式,本設(shè)計采用脈沖編碼調(diào)制(PCM),不進(jìn)行壓縮數(shù)據(jù)便可完成此功能,數(shù)據(jù)以常見的波形(WAVE)格式保存。關(guān)于頻率設(shè)置的部分程序如下:
int FreSwitch(uint16_t fre)
{
switch(fre){
case 20:
FreIndex=0;
VS1003_SineTest(2,SIN_SAMPLE_RATE_25600,1);
//20 Hz break;
case 21:
FreIndex=1;
VS1003_SineTest(2,SIN_SAMPLE_RATE_16000,2);
//21 Hz
break;
case 22 :
FreIndex=2;
VS1003_SineTest(2,SIN_SAMPLE_RATE_40320,1);
// 22 Hz
break;
…}
4 實物調(diào)試
整個研究過程通過了模擬試驗及系統(tǒng)軟硬件設(shè)計,最終實現(xiàn)預(yù)期目標(biāo)。
該信號發(fā)生器的截止頻率設(shè)定為20 kHz,大于20 kHz的信號都是干擾信號,通過較大幅度的衰減進(jìn)行濾除,從而保證較小的信號諧波失真。
接通電源后,通過計算機(jī)控制信號發(fā)生器的信號頻率、幅值等參數(shù),通過以太網(wǎng)把控制命令字傳輸給發(fā)生器,發(fā)生器對控制字進(jìn)行周期性掃描,頻率、幅度控制字需要轉(zhuǎn)換成二進(jìn)制,傳送到單片機(jī)STM32F429,接到命令后通過正弦查詢表映射成數(shù)字量信號,通過單片機(jī)本身的數(shù)模轉(zhuǎn)換功能即可得到所需的音頻信號。由于輸出后的正弦信號會出現(xiàn)失真現(xiàn)象,需通過濾波器進(jìn)行濾波,從而得到正確的正弦信號。
通過示波器對設(shè)計的音頻信號發(fā)生器發(fā)出的音頻信號進(jìn)行采集,結(jié)果如表1所示。
設(shè)置頻率為10 kHz、幅值為1 Vpp,用一臺示波器來對比傳統(tǒng)音頻信號發(fā)生器與本文所設(shè)計的音頻信號發(fā)生器的波形曲線,如圖5所示。
通過測試,本設(shè)計實現(xiàn)的音頻信號發(fā)生器的基本功能達(dá)到了預(yù)期效果,其頻率響應(yīng)為±0.4 dB,失真度控制在0.5%,而傳統(tǒng)音頻信號發(fā)生器的失真度在20 Hz~100 Hz時≤0.8%,在100 Hz~20 kHz時≤0.5%。
5 結(jié)論
本文設(shè)計的音頻信號發(fā)生器具有操作簡單、信號穩(wěn)定、精度高、體積小、便于攜帶等特點,可應(yīng)用于電聲器件的聽音測試、揚(yáng)聲器的老化試驗等各種音頻電子測量和控制場合。通過PC控制端直接輸入所需音頻信號的幅度、頻率值,借助以太網(wǎng)遠(yuǎn)距離控制,而不必每次親臨現(xiàn)場,也不必每次通過粗調(diào)、細(xì)調(diào)即可達(dá)到要求。通過集線器可同時輸出多路相同音頻信號,對多臺相同儀器進(jìn)行測量。利用數(shù)字合成技術(shù)合成音頻信號,簡化電路,具有與標(biāo)準(zhǔn)頻率源相同的頻率準(zhǔn)確度和穩(wěn)定度;也可合成方波、三角波等規(guī)則波形,只需在PC控制面板上添加信號類型選擇項即可實現(xiàn)硬件的單一化、軟件的多元化,節(jié)約成本。
參考文獻(xiàn)
[1] 黃智偉,王兵,朱衛(wèi)華.STM32F 32位ARM微控制器應(yīng)用設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,2012.
[2] 倪禎浩,盧博友,田澤.基于ARM的信號發(fā)生器人機(jī)交互系統(tǒng)設(shè)計[J].微計算機(jī)信息,2007(23):134-136.
[3] 王廷堯.以太網(wǎng)技術(shù)與應(yīng)用[M].北京:人民郵電出版社,2005.
[4] 陳焱輝.嵌入式SDRAM控制器設(shè)計研究[D].西安:西安電子科技大學(xué),2009.
[5] 田豐,鄧建國,李巍,等.SDRAM控制器的設(shè)計與VHDL實現(xiàn)[J].電子技術(shù)應(yīng)用,2005,31(2):74-77.
[6] 吉強(qiáng).基于DDS技術(shù)音頻正弦信號發(fā)生器的設(shè)計[J].器件與電路,2012(36):33-37.
[7] 王瑜,郝迎吉,呼靳宏.基于8051F330的音頻信號發(fā)生器的設(shè)計與實現(xiàn)[J].國外電子元器件,2007(10),43-46.