周靜雷,孫長城
(西安工程大學電子信息學院,西安710048)
基于STM32的音頻播放與記錄控制器設計
周靜雷,孫長城
(西安工程大學電子信息學院,西安710048)
傳統的揚聲器產品質量測試實驗需要用到功率實驗儀、聲卡和電腦等較多配套硬件設備,導致測試過程復雜、成本較高,不利于功率實驗儀的便攜式發展。針對上述問題,設計以STM32為核心芯片,控制音頻處理芯片WM8978循環讀取外擴SRAM里已存儲的音頻文件,持續產生模擬測試信號,實現播放功能。模擬測試信號經過處理后驅動揚聲器工作,揚聲器的工作電壓和工作電流由采集電路獲取并送給WM8978進行AD采集,采集的數據存儲到外部SRAM里,待上位機調用,實現記錄功能。設計通過USB與電腦進行數據傳輸,支持播放與記錄同時進行,實現了聲卡功能,能夠降低揚聲器測試成本。
高速USB;微控制器STM32;播放;記錄;I2S協議;靜態存儲器SRAM
揚聲器在出廠前需要進行產品質量測試,傳統的測試工具有電腦、聲卡和揚聲器功率測試儀等一整套測試裝備,缺點是測試裝備較多、成本較高、測試流程繁瑣。為了降低成本,同時促進揚聲器老化實驗裝備的便攜式發展,本控制器嵌入在功率實驗儀平臺上,基于STM32F407微控制器實現音頻的播放與記錄,實現聲卡功能,從而取代聲卡。
2.1 系統總體介紹
本控制器設計是以揚聲器功率實驗儀為平臺,基于STM32f407為核心芯片的嵌入式系統。上位機通過算法生成的音頻測試信號,通過USB傳輸給嵌入式系統實現播放,同時對回采信號進行錄音并通過USB傳回上位機,整個過程不需要聲卡。
控制器設計是以STM32F407為主控芯片,這款芯片以Cortex-M4為內核,擁有1024KB的FLASH、192KB的SRAM、2個DAM控制器(共16個通道)、兩個全雙工的I2S、3個IIC以及一個FSMC接口等外設,豐富的外設功能完全滿足了設計需求[1]。
2.2 系統框圖
系統框圖如圖1所示。圖中上位機軟件是在C++Builder環境下開發的,以圖形界面的形式展示出用戶的需求。PC通過高速USB與音頻發生器進行通信,將音頻文件下傳給STM32f407微控制器并存儲到外擴的SRAM芯片IS62WV102416里,在音頻播放時芯片WM8978循環讀取SRAM里的數據,持續產生模擬測試信號。模擬測試信號先進入功率實驗儀進行信號調理,之后再進入功率放大器進行功率放大以驅動揚聲器工作。通過功率實驗儀采集電路得到揚聲器的工作電壓和工作電流并由芯片WM8978進行模數轉換,最后通過高速USB傳回上位機,完成記錄功能。控制器整體上實現音頻信號的數模轉換和模數轉換功能,能夠取代聲卡。

圖1 本設計的系統框圖
由于STM32F407自帶的192KB的SRAM,容量較小,無法滿足本設計需求,因此需要外擴SRAM。本控制器選用的STM32f407自帶有一個靈活的靜態存儲控制器FSMC,該接口支持8位、16位以及32位的SRAM存儲器[2]。本設計選用的是ISSI公司生產的2MB內存的芯片IS62WV102416,該芯片有20根地址線,16根數據線,實現對芯片的讀和寫。SRAM相比于SD卡和SPI FLASH最大優點是在不影響使用壽命的基礎上實現多次擦寫。在本設計正常工作時,上位機軟件算法生成音頻數據由USB傳輸并存儲到外擴的內存SRAM里,在播放時,循環讀取SRAM里的數據[3]。
4.1 集成電路內置音頻總線
集成電路內置音頻總線,即I2S總線,是用于數字音頻設備之間的音頻數據傳輸的標準總線,應用廣泛。它的特點是設計成沿獨立導線傳輸時鐘和數據信號,以此將時鐘與數據信號分離,避免了因為時差而引起的失真。本音頻信號發生器采用的微控制器STM32F407自帶有2個全雙工的I2S接口,支持半雙工和全雙工通信,支持主從模式及16位、24位、32位的音頻數據格式。該微控制器I2S接口與SPI接口部分公用,工作時,只需設置相關寄存器即可開啟I2S,設計需要開啟I2S的全雙工工作模式[4]。
4.2 音頻處理模塊
該模塊是實現音頻發生器的關鍵部分,以音頻處理芯片WM8978為核心。WM8978是一款全功能的音頻處理器,自帶有一個HI-FI級的數字信號處理內核,支持增強3D硬件環繞音效,以及5頻段的硬件均衡器,改善音質效果顯著,同時還有濾波功能,有效濾除噪音信號。最大的優點是音頻處理芯片WM8978支持播放和記錄同時工作。STM32F407通過IIC總線實現對WM8978的控制。IIC總線是兩線式串行總線,用于連接微控制器和外圍設備,由數據線SDA和時鐘SCL構成的串行總線可發送和接收數據[5]。WM8978通過I2S接口,即數字音頻接口,與STM32F407以及外擴的SRAM相配合進行音頻數據的發送和接收。設計是在I2S總線全雙工模式下,在STM32f407自帶的SRAM里開辟兩個緩沖區用于存放即將播放的數據,實現音頻的流暢播放。音頻處理模塊設計如圖2所示。

圖2 本控制器音頻處理模塊
開啟音頻處理芯片WM8978的DAC和ADC功能。數字音頻播放后進入功率實驗儀進行調理,再經過功放進行功率放大以驅動揚聲器工作。功率實驗儀將采集到的揚聲器工作電壓和工作電流送回WM8978進行AD采集,采集數據存放于另外開辟的兩個緩沖區內進行相關處理,再通過中斷處理將采集數據送到外擴的SRAM,實現記錄功能。音頻播放和記錄同時進行,實現了聲卡功能。
本設計要實現上位機音頻測試信號的下傳和錄音數據的上傳功能,數據量較大,對USB通信速度有很高要求,因此采用了高速USB實現設備與上位機的通信。由于STM32f407本身集成了USB OTG HS模塊,且該模塊嵌入了ULPI接口用于連接外部的HS PHY,因此STM32f407支持高速USB,但內部沒有集成高速PHY芯片,因此要實現基于STM32-f407的高速USB功能,在硬件上需要外接芯片,這里選擇了USB3300,這樣就可以支持高速USB傳輸數據了[6]。高速USB通信模塊原理圖如圖3所示。
通信模塊實現兩個端點,一個Bulk In,一個Bulk Out,端點大小為512Byte。上位機驅動程序通過Bulk Out發送4字節數據,其含義為下位機即將向上位機傳輸的數據量,設備接收到4字節的數據后,循環將數據通過Bulk In端點發送給上位機,每次最高能發送64Byte,每一次發送數據前都會檢測上一次數據是否發送完成。上位機這時就循環讀取數據,每次讀取的數據量必須和設備每次發送的數據一致,直到數據傳輸完成。傳輸速度可高達40MByte/s,滿足本設計的數據傳輸需求。

圖3 本控制器的USB通信模塊
6.1 軟件總體設計
軟件設計采用了USCOS,即實時多任務操作系統。該系統是一個基于ROM運行的、可裁剪的、搶占式、實時多任務內核,具有很強的移植性,適合于微處理器和控制器[7]。所謂任務,即死循環,UCOSII支持的任務多達255個,這些任務由操作系統進行調度管理,使這些任務輪流占用CPU,而不是同時占用,任何時刻,只有一個任務能夠占用CPU,從而達到并發工作的狀態。軟件設計編寫了三個任務,即播放任務、記錄任務和數據上傳任務,每一個任務都有優先級和任務堆棧,這三個任務由操作系統按照任務優先級進行調度運行。在創建自己的任務之前,必須先創建開始任務,然后通過開始任務創建自己的任務,之后開始任務就掛起。軟件總體設計流程圖如圖4所示。

圖4 軟件總體設計流程圖
6.2 音頻播放與記錄數據的處理程序設計
控制器的音頻播放軟件設計是在STM32f407自帶的192KB內存里開辟2個緩沖區:PlayBuffer1和PlayBuffer2,在音頻播放前,微控制器MCU讀取存儲在外部SRAM里的音頻數據來填滿這兩個緩沖區;播放時,通過I2S的DMA功能將其中一個緩沖區的數據送給音頻處理芯片WM8978進行播放;傳送完時,進入中斷對緩沖區再次填充。與此同時DMA正在傳送另外一個緩沖區的數據,這樣不斷交替傳送和填充,即能夠流暢的實現音頻播放。對于記錄功能的軟件設計同樣是在STM32f407自帶內存開辟另外兩個緩沖區:RecordBuffer1和Record-Buffer2,用于存放音頻處理芯片WM8978模數轉換的數據。工作過程是:當一個緩沖區填滿以后進入到中斷處理,把數據寫到外部SRAM里;同時新采集的數據往另外一個緩沖區填充,同樣填滿以后進入到中斷處理。這樣不斷循環交替,實現對記錄數據的及時處理[8]。控制器的音頻數據處理示意圖如圖5所示。

圖5 控制器音頻數據處理示意圖
6.3 測試音頻信號的生成
揚聲器功率實驗儀中所需要的音頻測試信號有高斯白噪聲、粉紅噪聲、模擬節目信號、連續對數掃頻信號、線性掃頻信號、偽隨機信號等。上述音頻信號由上位機以C++Builder為開發環境,用C++進行編程的方法實現,生成的音頻信號取樣頻率為44.1K,以16位的量化位數WAV文件形式保存,用于控制器的音頻播放[9]。WAV是計算機領域最常用的數字化聲音文件格式之一,符合RIFF文件規范。
基于STM32F407微控制器,通過外接高速USB芯片USB3300,與上位機高速通信,實現上位機待測試音頻文件的高速下傳及數據上傳。通過IIC總線控制音頻處理芯片WM8978,通過I2S總線以及FSMC控制器實現WM8978與SRAM的音頻數據傳輸,實現音頻播放與記錄功能。因此本控制器可以取代傳統的聲卡設備,降低了測試成本,有助于簡化和完善測試方法,有利于揚聲器功率實驗儀的便攜式發展。
[1]劉波文.ARM Contex-M3應用開發實例詳解[M].北京:電子工業出版社,2011. Liu bo-wen.ARM Contex-M3 application development example explanation[M].Beijing:electronic industry press, 2011.
[2]趙星.STM32基于FSMC的SRAM擴展技術[J].工業控制計算機,2015,28(6):102-103. Zhao xing.STM32 SRAM based on FSMC extension technology[J].Industrial control computer,2015,28(6):102-103.
[3]王鐵流,李宗方,陳東升.基于STM32的USB數據采集模塊的設計與實現[J].測控技術,2009,28(8):37-40. Wang tie-liu,Li zong-fang,Chen dong-shen.Based on the USB data acquisition module design and implementation of STM32 [J].Journal of measurement and control technology, 2009,28(8):37-40.
[4]邵富杰,張國利,周勇.基于I2S總線實現嵌入式語音采集與回放[J].微計算機信息,2011,27(6):72-74. Shao fu-jie,Zhang guo-li,Zhou yong.Implementation based on I2S bus embedded phonic acquisition and playback[J]. Microcomputer information,2011,27(6):72-74.
[5]毛建華,魏巍.IIC總線主發主收模式運用[J].西安郵電大學學報,2013,18(3):38-41. Mao jian-hua,Wei wei.Main hair main charge mode using IIC bus[J].Journal of xi'an university of posts and telecommunications,2013,19(3):38-41.
[6]劉炎,馮蕙力,葉梧.通用串行總線(USB)原理及接口設計[J].電子技術應用,2000(12):56-58. Liu yan,Feng hui-li,Ye wu.Universal serial bus(USB)principle and interface design[J].Journal of electronic technology applications,2000(12):56-58.
[7]秦珀石.嵌入式實時操作系統的應用研究[D].武漢:武漢理工大學,2003. Qin po-shi.he application of embedded real-time operating system research[D].Wuhan:wuhan university of technology, 2003.
[8]Bruce Bartlett Jenn.實用錄音技術(第五版)[M].北京:人民郵電出版社,2010. Bruce Bartlett Jenn.Practical recording technology(fifth edition)[M].Beijing:people's posts and telecommunications publishing house,2010.
[9]劉濱.C++Builder 5高級編程實例精解[M].北京:國防工業出版社,2001. Liu bin.C++Builder 5 advanced programming instance extract solution [M].Beijing:national defence industry press, 2001.
Design on Audio Playback and Recording Controller Based on STM32
Zhou Jinglei,Sun Changcheng
(Electronic Information College,Xi’an Polytechnic University,Xi’an 710048,China)
The complicated test procedure and the higher cost,in the traditional loudspeaker aging test experiment,caused by using power meter,sound card,computer and other facilities,are unfavourable for portable development of the power apparatus.According to the above problems,the STM32 is used as the core chip to control the audio processing chip WM8978 to read out the audio files stored in the extended SRAM for producing simulation testing signals continuously and realizing the function of playing;the simulation test signal is processed to drive the speakers.And the working voltage and working current of the speaker are collected for AD sampling by WM8978,the acquired data is stored in the external SRAM for the function recording.The data transmission is conducted with the computer by USB with audio playing and recording at the same time.It realizes the function of the sound card and reduces the test cost of the speaker.
High speed USB;STM32 micro controller;Play;Record;I2S agreement;Static SRAM memory
10.3969/j.issn.1002-2279.2017.01.017
TP273
B
1002-2279-(2017)01-0067-04
周靜雷(1978-),男,陜西省寶雞市人,博士,副教授,碩士生導師,主研方向:電聲學,聲頻測量。孫長城(1990-),男,江蘇省鹽城市人,碩士研究生。研究方向:嵌入式系統研發。
2016-06-16