陳亞都,王洋洋,李 瑞
(航空工業西安航空計算技術研究所,陜西 西安 710065)
音頻采集系統是將麥克風等設備產生的模擬音頻信號轉換為計算機可以識別的信號,需要經過采集、量化以及編碼3個步驟,編碼后將數字碼流通過串行總線傳輸給計算機,實現信號的采集。隨著音頻技術在航空領域的應用,對音頻采集系統提出了特殊需求。目前,航空機載音頻采集系統存在音頻信號失真高、噪聲大、采集通道不足等問題,因此將音頻信號的失真、降噪等問題作為設計的重點,設計一種基于STM32的多通道、低失真以及低噪聲的音頻接口模塊[1]。
基于STM32的音頻接口模塊主要實現多路音頻信號的采集、輸出以及存儲等功能,主要包括電源電路、微控制單元(Micro Controller Unit,MCU)外圍輔助電路、音頻編解碼電路、4路差分運放電路以及4路單端運放電路,如圖1所示。

圖1 模塊整體方案框架
選用STM32F769作為音頻接口模塊的核心,其擁有2個串行音頻接口(Serial Audio Interface,SAI),具有靈活性高、配置多樣等特點。通過差分運放電路將麥克風采集的4路單端音頻信號轉換成差分音頻信號,在音頻編解碼電路實現串行音頻信號的編解碼。通過SAI接口實現MCU與音頻編解碼芯片的數據傳輸,通過單端運放電路將輸出的模擬音頻信號放大輸出,實現音頻信號的采集、處理、輸出以及存儲[2-4]。
MCU外圍輔助電路主要實現MCU的啟動、復位、調試以及數據存儲等功能,并向MCU提供時鐘信號。使用外部25 MHz晶振為MCU提供時鐘,通過LTC1726實現音頻接口模塊的看門狗功能,通過LTM6315實現音頻接口模塊的上電復位和手動復位功能。MCU通過串行外設接口(Serial Peripheral Interface,SPI)總線驅動串行Flash(W25Q128FVFIG),實現音頻數據的存儲。選用串行調試(Serial Wire Debug,SWD)接口,通過MAX232實現串口通信功能。
選用的音頻編解碼芯片CS4244需要輸入差分模擬音頻信號,因此需要設計4路差分運放電路。以通道1為例,使用差分驅動器AD8139將單端信號轉換成差分信號,為了減少信號的失真和噪聲,設計了濾波電路和阻抗匹配處理,然后輸入給差分驅動器AD8139,最后輸出差分音頻信號[5]。
STM32F769每一路SAI接口具有2個獨立的音頻子模塊,每個子模塊擁有4個信號線,可以工作于異步模式或同步模式。為了加快音頻數據的寫入/讀取速度,將一路SAI接口的2個子模塊配置為同步模式,實現全雙工通信。此時2個子模塊的部分信號線可以共用,分別為串行數據輸入(Serial Data Input,SDI)、串行數據輸出(Serial Data Output,SDO)、SCK、FS以及MCLK,其余未用到的信號線得到釋放。音頻信號輸入輸出流程如圖2所示。

圖2 音頻信號輸入輸出流程
輸入的4路差分音頻電路經過內部4路模數轉換器(Analog-to-Digital Converter,ADC)處理,輸出串行音頻信號。通過I2C總線對CS4244配置后,CS4244將音頻數據流輸出到SDO信號線,MCU讀取SDI信號線上的數據,并將其存儲在SAI自帶的FIFO中,至此完成音頻數據采集。在完成降噪和消除回聲處理后,MCU可以將音頻數據流輸出至SDO信號線,通過CS4244內部集成的DAC輸出4路差分音頻信號[6-8]。
本次設計采用TI公司設計的差分放大器TL082,其具有高輸入阻抗、低諧波失真以及短路保護等特點。以通道1為例,其使用±15 V電壓供電,CS4244輸出差分音頻信號后經過差分放大器TL082處理,最終輸出單端音頻信號。此外,為了進一步提高輸出音頻信號的質量,輸出的單端音頻信號需要經過濾波、降噪等處理,以便獲得清晰的音頻輸出信號[9,10]。
電源電路能夠實現模塊的供電和掉電指示功能,主要包括輸入保護及濾波模塊、掉電指示模塊、輔助電源模塊、浪涌保護模塊以及多路直流/直流(Direct Current/Direct Current,DC/DC)變換模塊。掉電指示模塊能夠檢測輸入電源的電壓質量,在輸入電壓過低時通過信號燈變化指示供電狀態。浪涌保護模塊能夠在電路出現尖峰電壓時及時關閉主功率輸入電路,防止對后級電路造成損傷。多路DC/DC變換模塊主要用于輸出±15 V、+5 V、+3.3 V以及1.8 V電壓。
模塊軟件部分主要實現音頻信號的采集、降噪、消除回聲、輸出以及存儲等功能,軟件設計流程如圖3所示。

圖3 軟件設計流程
MCU初始化部分主要實現模塊上電后時鐘配置、外設初始化等。音頻編解碼芯片驅動部分使用Audio_Init_Config()函數實現音頻編解碼芯片的初始化配置,包括采樣率、工作模式、采樣寬度等配置信息,使用Audio_Data_Read( )函數實現信號的采集,使用Audio_Data_Write( )函數實現信號的輸出。SAI接口配置部分主要實現串行音頻接口配置,使其滿足時分復用(Time-Division Multiplexing,TDM)協議,能夠完成音頻數據的讀取和寫入,使用HAL_SAI_Init( )函數完成接口的初始化配置,使用HAL_SAI_Transmit( )函數和HAL_SAI_Receive( )函數實現數據的發送和讀取。
在不同頻率的音頻信號下,驗證音頻接口模塊輸出音頻信號的失真度。正常情況下,當音頻信號的失真度小于3%時,即可認為該音頻信號具有較高的質量。以通道1為例,使用專用音頻測試儀向輸入端連續注入頻率為0.5~6.0 kHz、幅值為400 mV的正弦音頻信號,測試輸出端的失真度,結果如表1所示。

表1 音頻測試失真度結果
由表1可知,在輸入0.5~6.0 kHz的正弦音頻信號后,音頻接口模塊輸出端的失真度均小于2%,能夠滿足高質量輸出音頻的需求,具有較好的應用效果。
機載音頻采集系統中,音頻信號失真度是非常重要的衡量指標,圍繞該指標設計一種多通道、低失真以及低噪聲的音頻接口方案,并進行了相關音頻接口測試。結果表明,所設計的音頻接口模塊輸出端的失真度較低,能夠滿足高質量輸出音頻的需求,具有良好的應用前景。