文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.181931
中文引用格式: 周靜雷,李騰飛,,馮源. 可用于電聲測試系統(tǒng)的專業(yè)音頻接口設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2019,45(1):105-108.
英文引用格式: Zhou Jinglei,,Li Tengfei,,F(xiàn)eng Yuan. Design of professional audio interface available for electroacoustic testing system[J]. Application of Electronic Technique,2019,,45(1):105-108.
0 引言
電聲測試系統(tǒng)主要用于測試揚(yáng)聲器,、傳聲器等產(chǎn)品的電聲性能,,是電聲產(chǎn)品研發(fā)和生產(chǎn)過程中不可缺少的設(shè)備。電聲測試系統(tǒng)一般需要借助于聲卡來實(shí)現(xiàn)音頻信號的模數(shù)和數(shù)模轉(zhuǎn)換[1-2],。聲卡設(shè)計(jì)上更側(cè)重于音質(zhì)效果,,聲卡的音效處理功能在電聲測試中是用不到的,使電聲測試系統(tǒng)增加了不必要的成本,;一般聲卡需借助于同步協(xié)議才能完成連續(xù)掃頻測試[2],。開發(fā)電聲測試系統(tǒng)專用音頻接口,有利于提高電聲測試精度,簡化測試流程,,并降低成本,。本文設(shè)計(jì)的音頻接口上位機(jī)軟件使用C++程序設(shè)計(jì)語言設(shè)計(jì),提供了接口函數(shù),,可供電測量系統(tǒng)軟件調(diào)用,。高速USB2.0接口通信,能夠以較快的速度傳輸音頻數(shù)據(jù)[3],。下位機(jī)以STM32F429作為主控芯片,,該芯片有FMC接口,可擴(kuò)展SDRAM用于存儲(chǔ)音頻數(shù)據(jù)[4],;使用WM8978音頻編解碼器實(shí)現(xiàn)對音頻信號的數(shù)模和模數(shù)轉(zhuǎn)換,,該芯片采用了Δ-Σ技術(shù)[5],能夠?qū)崿F(xiàn)16位和24位采樣精度,,最高支持192 kHz采樣率,,滿足了電聲測試系統(tǒng)的需求[4-7]。
1 音頻接口工作原理
在電聲測試系統(tǒng)中,,音頻接口的作用實(shí)現(xiàn)D/A和A/D轉(zhuǎn)換功能,,為電聲測量儀器提供激勵(lì)信號,并將輸入的信號轉(zhuǎn)化為音頻數(shù)據(jù),,供計(jì)算機(jī)軟件分析,,音頻接口錄音和播放功能流程如圖1所示。下位機(jī)能夠通過識別不同采樣率,、不同采樣精度,、不同聲道數(shù)的wav文件對音頻編解碼器進(jìn)行配置,按上位機(jī)的要求執(zhí)行錄音或播放功能,。
2 音頻接口硬件設(shè)計(jì)
如圖2所示,,音頻接口由4路2通道音頻接口組成,總共有8個(gè)輸入通道和8個(gè)輸出通道,,因此能夠用于揚(yáng)聲器功率試驗(yàn)系統(tǒng)[8-9]等需要多通道測試的電聲測試系統(tǒng)中,,軟件通過4個(gè)2位DIP開關(guān)分配的設(shè)備ID號對4路2通道音頻接口進(jìn)行區(qū)分,4路2通道音頻接口的USB接口匯總到一個(gè)USB HUB上,,USB HUB通過1路USB接口與計(jì)算機(jī)相連,,減少了對計(jì)算機(jī)USB接口數(shù)量的需求。
圖3是使用1路2通道音頻接口的電聲測試系統(tǒng),,每個(gè)2通道音頻接口能夠?qū)崿F(xiàn)單聲道或立體聲錄音和播放,,錄音和播放功能既能單獨(dú)進(jìn)行,又能同步進(jìn)行,。音頻接口的主控芯片為STM32F429,,通過I2C串行總線對音頻編解碼器的功能進(jìn)行設(shè)置;通過I2S內(nèi)置音頻總線與音頻編解碼器WM8978進(jìn)行音頻數(shù)據(jù)傳輸;通過ULPI接口外擴(kuò)1片USB PHY芯片USB3300,,實(shí)現(xiàn)高速模式的USB2.0通信,;通過FMC靈活存儲(chǔ)控制器接口外擴(kuò)1片內(nèi)存大小為32 MB的SDRAM芯片W9825G6KH-6,存儲(chǔ)音頻數(shù)據(jù),。
3 音頻接口軟件設(shè)計(jì)
3.1 下位機(jī)軟件設(shè)計(jì)
下位機(jī)軟件基于STM32標(biāo)準(zhǔn)庫設(shè)計(jì),,程序流程圖如圖4所示。實(shí)驗(yàn)證明,,硬件上電之后首先要延時(shí)一段時(shí)間才能對硬件進(jìn)行初始化,否則會(huì)導(dǎo)致音頻編解碼器初始化失敗,,這是因?yàn)閃M8978芯片上電后需要一定的時(shí)間啟動(dòng),,硬件啟動(dòng)之后I2C才能寫入配置命令。
硬件初始化配置如圖5所示,。為了使錄音和播放能夠同步進(jìn)行,,主I2S為從I2S提供時(shí)鐘,使主控芯片能夠與音頻編解碼器進(jìn)行同步全雙工通信,,但是導(dǎo)致了錄音和播放的采樣率只能相同,。為了不間斷地進(jìn)行錄音或播放,主I2S和從I2S都配置為DMA雙緩沖模式[6],,CPU對DMA的一個(gè)緩沖區(qū)進(jìn)行讀寫時(shí),,不必停止錄音或播放,DMA可以使用另一個(gè)緩沖區(qū),。USB初始化為高速模式的USB2.0 CDC設(shè)備,,USB接收音頻數(shù)據(jù)使用的是在SDRAM中申請的數(shù)據(jù)接收緩沖區(qū)。
硬件初始化完成后,,下位機(jī)會(huì)等待USB連接,,期間LED燈不斷閃爍。USB連接之后LED燈常亮,,當(dāng)下位機(jī)接收到上位機(jī)的命令之后會(huì)根據(jù)命令值執(zhí)行相應(yīng)的功能,,這些功能如下:
(1)查詢設(shè)備狀態(tài)功能,能夠向上位機(jī)返回播放狀態(tài),、錄音狀態(tài),、設(shè)備ID號、播放音量,、采樣率,、采樣精度等信息。其中錄音狀態(tài)包括錄音關(guān)閉,、錄音開啟,、同步錄音、錄音完成4種狀態(tài),播放狀態(tài)包括播放關(guān)閉和播放開啟2種狀態(tài),。
(2)設(shè)置采樣方式功能,,設(shè)置錄音和播放的采樣精度為24位或16位,采樣率為8 kHz~192 kHz,。
(3)播放開關(guān)和錄音開關(guān)功能,,從I2S使用的是主I2S的時(shí)鐘信號,這樣做可以保證錄音和播放的同步,,但是造成了主I2S關(guān)閉后,,從I2S不能使用的問題。解決這個(gè)問題的方法是,,硬件初始化完成后,,主I2S不斷發(fā)送DMA緩沖區(qū)的數(shù)據(jù)到音頻編解碼器,如果要打開播放功能,,只需向主I2S的DMA緩沖區(qū)寫入音頻數(shù)據(jù)即可,,如果要關(guān)閉播放功能,則寫入空數(shù)據(jù),。如果通過關(guān)閉從I2S的方法關(guān)閉錄音,,會(huì)導(dǎo)致無法確定下一次從I2S開啟后,傳輸?shù)牡谝粋€(gè)數(shù)據(jù)屬于哪個(gè)輸入通道,,造成錄音數(shù)據(jù)的左右聲道不確定,,因此只能通過控制CPU是否讀取從I2S緩沖區(qū)數(shù)據(jù)的方式控制錄音功能的開啟或關(guān)閉,只需使用一個(gè)錄音開關(guān)標(biāo)志位就能做到這一點(diǎn),。
(4)同步錄音功能,,同時(shí)開啟播放和錄音功能,錄音和播放采用的是相同的時(shí)鐘信號,,理論上能夠?qū)崿F(xiàn)錄音和播放的完全同步,。
3.2 上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件分為主線程和通信線程,主線程能夠查找接入計(jì)算機(jī)的USB設(shè)備,,并將音頻接口的USB設(shè)備句柄添加到通信線程,。主線程提供的接口函數(shù)能夠?qū)⒂脩魧υO(shè)備操作的信息發(fā)送到通信線程,通信線程根據(jù)查詢到的設(shè)備運(yùn)行狀態(tài)信息和從主線程接收的設(shè)備操作信息決定要向下位機(jī)發(fā)送的控制命令類型以及如何進(jìn)行數(shù)據(jù)傳輸,。
上位機(jī)軟件具體工作流程如圖6所示,,為了實(shí)現(xiàn)熱插拔功能,上位機(jī)軟件開啟后首先向主窗體注冊USB CDC設(shè)備,,上位機(jī)軟件就可以通過接收Windows操作系統(tǒng)的WM_DEVICECHANG消息識別USB插拔事件,。上位機(jī)軟件通過調(diào)用libusb庫函數(shù)實(shí)現(xiàn)USB通信[10],主線程首先要初始化libusb庫,,然后查找USB總線和總線上的設(shè)備,,根據(jù)設(shè)備描述符篩選出音頻接口,,依次打開所有的音頻接口獲得其USB設(shè)備的句柄,并查詢其設(shè)備號,,通過設(shè)備號可以得知當(dāng)前句柄對應(yīng)的音頻接口通道,。主線程將設(shè)備句柄和對應(yīng)的設(shè)備號傳送給通信線程,通信線程就可以對4路2通道音頻接口分別進(jìn)行操作了,。最后軟件進(jìn)入等待操作狀態(tài),,用戶對USB設(shè)備進(jìn)行插拔后軟件會(huì)重新查找設(shè)備。用戶通過設(shè)備接口函數(shù)進(jìn)行操作之后,,主線程會(huì)將設(shè)備的操作信息發(fā)送到通信線程中,。
通信線程建立后會(huì)不停地查詢設(shè)備狀態(tài)信息,判斷USB通信是否正常并查詢下位機(jī)的運(yùn)行狀態(tài),。接收到主線程的設(shè)備操作信息之后,,通信線程會(huì)將其與設(shè)備狀態(tài)信息進(jìn)行對比,根據(jù)信息的不同之處,,向下位機(jī)發(fā)送相應(yīng)的命令或進(jìn)行數(shù)據(jù)傳輸。這種設(shè)計(jì)方案保證了上位機(jī)和下位機(jī)運(yùn)行狀態(tài)的同步,,使整個(gè)系統(tǒng)運(yùn)行更加穩(wěn)定,。
4 性能測試
4.1 信號輸出性能測試
計(jì)算機(jī)分別使用PreSonus AudioBox 1818 VSL專業(yè)聲卡和音頻接口輸出正弦信號,使用APx525音頻分析儀分別測量其總諧波失真,,測量結(jié)果如圖7所示,,音頻接口在整個(gè)音頻頻段輸出激勵(lì)信號的總諧波失真均低于專業(yè)聲卡,在1 000 Hz處的總諧波失真為-77 dB,,而專業(yè)聲卡為-53.7 dB,。
4.2 信號采集性能測試
分別將聲卡和音頻接口用于電聲測量系統(tǒng)中,采集由音頻分析儀信號源輸出的正弦信號,,測量電壓如圖8所示,,在10 Hz~20 kHz的范圍內(nèi),音頻接口的幅頻特性與專業(yè)聲卡類似,,20 kHz以上性能優(yōu)于專業(yè)聲卡,。
4.3 同步錄音功能驗(yàn)證
上位機(jī)軟件讀取波形為1 kHz正弦信號,采樣率為48 000 Hz,,采樣精度為16位,,時(shí)長為1 s的wav文件之后,如圖9所示,,在第1個(gè)和第48 000個(gè)音頻數(shù)據(jù)點(diǎn)處插入標(biāo)記,。然后將音頻接口輸入和輸出通道相連,使用同步錄音功能直接對輸出信號進(jìn)行同步采集,,采集到圖10所示的波形,。圖9和圖10的標(biāo)記值在相同的位置,,說明音頻接口的同步錄音功能能夠?qū)崿F(xiàn)錄音和播放完全同步。
5 結(jié)論
本文設(shè)計(jì)的音頻接口與PreSonus AudioBox 1818 VSL專業(yè)聲卡相比,,輸出通道的總諧波失真更低,,輸入通道的幅頻特性更好,能夠?qū)崿F(xiàn)錄音和播放的完全同步,,同時(shí)又具有成本低的優(yōu)點(diǎn),,完全可以取代專業(yè)聲卡用于電聲測量系統(tǒng)。
參考文獻(xiàn)
[1] 胡良紅.揚(yáng)聲器電聲參數(shù)綜合檢測系統(tǒng)研制[D].桂林:桂林電子科技大學(xué),,2015.
[2] 郭慶,,楊東奇,徐翠鋒.揚(yáng)聲器電聲參數(shù)自動(dòng)測試系統(tǒng)的設(shè)計(jì)[J].科學(xué)技術(shù)與工程,,2015,,15(34):56-63.
[3] 馮劍鋒,張波,,楊東凱.基于高速USB3300接口的FPGA數(shù)據(jù)采集器設(shè)計(jì)與實(shí)現(xiàn)[C].全國信號和智能信息處理與應(yīng)用學(xué)術(shù)會(huì)議會(huì)刊,,2013.
[4] 田谞,王宏偉,,其木蘇榮.基于STM32F429的音頻信號發(fā)生器[J].微型機(jī)與應(yīng)用,,2014(24):87-90.
[5] 張瑜,孟慶楠,,楊開宇,,等.基于Δ-Σ技術(shù)和FPGA的數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù)應(yīng)用,2011,,37(6):141-144.
[6] 周靜雷,,孫長城.基于STM32的音頻播放與記錄控制器設(shè)計(jì)[J].微處理機(jī),2017,,38(1):67-70.
[7] 劉麗.嵌入式WM8960音頻驅(qū)動(dòng)及多線程播放器的設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),,2015.
[8] 周靜雷,王浩,,李倩,,等.大功率揚(yáng)聲器單元的功率試驗(yàn)系統(tǒng)設(shè)計(jì)[J].國外電子測量技術(shù),2018,,37(5):89-92.
[9] 楊軍.關(guān)于揚(yáng)聲器功率試驗(yàn)的一些新趨勢[J].電聲技術(shù),,2017(Z4).
[10] 李生.基于SOPC的嵌入式數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)[D].杭州:杭州電子科技大學(xué),2012.
作者信息:
周靜雷,,李騰飛,,馮 源
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安710048)