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