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