李忠廉
(南京郵電大學 通信與信息工程學院,南京 210003)
基于WiFi的點對點雙工音頻傳輸系統
李忠廉
(南京郵電大學通信與信息工程學院,南京210003)
WiFi是無線音頻傳輸中較為理想的傳輸技術,本文介紹了TI公司的CC3200LaunchPad和CC3200BoostPack套件,在此套件平臺上以SDK例程為基礎編碼,調試實現了一種以WiFi為傳輸媒介的新型的點對點音頻雙工傳輸系統。介紹了硬件平臺框架、程序的編寫,以及程序的設計流程。
WiFi;音頻傳輸方案;CC3200
無線音頻系統應用十分廣泛,所使用的技術也呈現多樣化。目前常見的無線傳輸方案包括:紅外傳輸、藍牙、ZigBee、WiFi。
紅外傳輸方式由于信號接收對于傳輸路徑的方向性要求高、節點的移動性差,因此使用上受到約束。它的音頻傳輸方式的特點是簡單可靠,無電磁污染;缺點是傳輸距離近(<10 m),傳輸方向性要求高,功耗高,且易受特種光源干擾。藍牙無線通信技術采用跳頻工作方式,成本低,技術成熟,受到大多數廠商的支持與推廣,但其最大缺點在于目前大多數藍牙設備通信距離較短(<10 m),功耗較高。Zig-Bee是一種新興的短距離、低速率、低功耗無線網絡技術,主要用于近距離無線連接,也存在一些不足,諸如傳輸范圍小、數據傳輸速率低、時延不易確定。WiFi是目前應用最廣泛的無線局域網標準,其最高達每秒上百兆比特的傳輸速率使之成為高品質無線音頻傳輸的理想選擇。
CC3200是TI推出的內置WiFi連接的微控制器,TI專為物聯網的開發與應用設計了這塊集成芯片。在這塊芯片上集成了高性能的ARM Cortex-M4處理器核和WiFi網絡處理器,CC3200的網絡通信能力穩定可靠,并擁有完整的安全協議。不僅如此,CC3200平臺還提供了完整的開發軟件、開發樣例、調試工具與文檔,是十分理想的開發平臺[1]。
Cortex-M4處理器的運行頻率為80 MHz,并外接多種外設,包括快速并行接口、SPI、UART串口、I2S等。CC3200擁有一個通用多通道音頻串行接口(Mc ASP),為多通道音頻應用優化,支持通過兩個數據引腳進行立體聲傳輸,發送和接收部分可同步工作。而且CC3200的I2S可以配置成DMA方式傳輸,DMA傳送過程無需CPU,數據可以通過DMA快速的傳送,這就節省了CPU資源來做其他操作,為實現點對點雙工傳輸音頻提供支撐。
1.1 方案的選型
Simple Link WiFi CC3200 LaunchPad(CC3200LP)是用于CC3200無線微控制器的開發平臺。此板使用FTDI器件實現板載仿真,并且包含提供開包即用體驗的傳感器,可以使用軟件開發平臺(本文使用CCS)直接將此板連接到PC。CC3200 LaunchPad作為主控模塊,通過片內外設接口多通道音頻串行接口I2S可以保證音頻流準確而低延時的傳輸。CC3200音頻Booster Pack上的TLV320AIC3254擁有立體聲DAC 100 dB,ADC 93 dB的性能,立體聲輸入輸出,低噪聲干擾PGA,可擴展的編程選項等優勢可勝任音頻的編解碼;與CC3200LP配合使用,即可實現基于WiFi點對點的音頻傳輸系統。故本文采用CC3200LP+CC3200BP搭建起整套解決方案[2]。
1.2 系統總體方案
在這整套系統里,每一套既可當作音頻輸入,也可當作音頻輸出,支持同時收發音頻流,即點對點雙工傳輸方式,輸入的音頻流可來自于板載的MIC、MONO_IN或者是Line_IN輸入端口。開發板則通過WiFi接收音頻數據,再在BP上的Line Out端口輸出。套件工作示意圖如圖1所示。

圖1 套件工作示意圖
1.3 硬件模塊的組成
CC3200LP模塊上的主控芯片MCU和CC3200BP上的音頻處理芯片TLV320AIC3254主要引腳連接關系如圖2所示,其中各部分電路連接都加有0Ω跨接電阻。圖中MCLK是從CC3200發出的主控芯片的時鐘同步信號, BCLK是音頻流時鐘信號,WCLK即FSYNC是音頻流字節時鐘同步信號,SCL是同步串行接口的片選信號,SDA是同步串行接口在I2C總線模式下的數據輸入。從CC3200的63號引腳GPIO8輸出到TLV320AIC3254的FSYNC的字節時鐘信號,同時需將AIC3254上的spi_sel引腳接地,選擇其為I2C總線工作模式。
1.4 TI-RTOS
TI-RTOS是TI推出的面向MCU平臺、基于搶占式多線程內核的完整實時操作系統 ,此操作系統是在一個名為SYS/BIOS的實時多線程內核基礎之上構建的,提供了實時多任務搶占式調度機制,并包含了硬件抽象和實時性能分析,可以有效地優化目標機的內存和CPU使用。在內核層之上,TI-RTOS不僅提供了一套設備驅動,還附加了諸如文件系統、網絡層等組件,使開發者可以將精力集中在應用的開發上;另外,TI-RTOS[3]全面集成于TI Code Composer Studio集成型開發環境(IDE),提供電路板支持套件與開發套件,其中就包括TI MCU Launch-Pad等。

圖2 CC3200LP和CC3200BP硬件連接圖
CC3200的RTOS采用SYS/BIOS的實時多線程內核,能夠利用硬件中斷、軟件中斷、任務線程以及后臺任務以不同的優先級完成多重任務。可以對每個系統任務設置調度優先級,利用osi_TaskCreate()可以將任務添加到任務調度列表中,系統內核會根據每個任務的優先級和任務調度列表有秩序的調度任務。因此,將編寫的任務代碼,設置優先級,任務調度則交給系統內核完成osi_start(),極大地提高了開發效率。系統流程圖如圖3所示。

圖3 系統流程圖
2.1 開發版的初始化及其他相關硬件配置
在系統剛上電以后,首先應該進行的是開發板的初始化,包括設置中斷向量表、允許處理器中斷、允許中斷,以及初始化MCU。因為開發板采用的是引腳復用,MCU初始化以后就要進行引腳的復用配置,本套系統中,需要用到I2C總線將DSP音頻處理程序加載到TLV320AIC3254中去,還要用GPIO輸出到LED燈作為指示,這些GPIO引腳共分為4組(A0,A1,A2,A3),通過每組內的偏移地址即可方便地找到對應引腳。使用I2S的兩個音頻通道,實現音頻的發送和接收。
CC3200的外設時鐘默認是沒有開啟的,這時要是訪問外設會引發總線錯誤,因此在用到每個外設前都要使能相應的外設時鐘,其時鐘頻率是CC3200分頻后所得。TI 的SDK中有完整的外設API,只需要找到對應庫,就能方便快速地進行開發。

在使能外設時鐘以后,就可以對相應的外設進行配置。CC3200的各引腳可以根據預設的模式值選擇其復用類型,模式值范圍是0~13,要配置每個引腳的功能,查看引腳模式值就可確定。本文中將CC3200的64號引腳和50號引腳分別配置為I2S數據0和數據1通道,其引腳模式值分別為7和6;將53號的模式值選擇為2,配置其為I2S時鐘引腳,63號引腳模式值為7,配置其為I2S幀同步;將1號引腳和2號引腳配置為引腳模式1,這樣就完成I2S的硬件配置。各項主要配置情況如下:

本文使用I2C總線TLV320實現MCU和音頻編解碼器的通信。I2C總線TLV320使用一根雙向串行數據線SDA和一根雙向串行時鐘線SCL,可實現主、從設備之間的多主串行雙向通信通信,電氣特性上,SDA上的數據必須在SCL高電平時保持穩定,低電平時可以改變。發送器發送數據后釋放SDA,接收器接收數據后必須在SCL低電平時將SDA變為低電平,并在SCL高電平時保持穩定,作為對發送器的應答。
本文使用I2C_IF_Open()、I2C_IF_Read()、I2C_IF_ Write()分別實現對I2C總線的打開、讀、寫操作。I2C_IF_ Open()函數內部首先重置了I2C總線,然后根據選擇設置I2C總線的傳輸模式,默認情況下采用FAST模式,即400 kbps,本文即采用默認模式。
2.2 網絡任務的配置
網絡任務程序中數據的封裝采用UDP實現,每一個數據包為1024個字節。發送環型緩存的內存大小RECORD_BUFFER_SIZE設置為10個數據報文大小,而接收環型緩存PLAY_BUFFER_SIZE的內存大小設置為70個數據報文大小,以充分保證音頻流傳輸連續性。UDP套接字的數據結構中包括socket文件描述符、client地址包、server地址包、client地址包數據長度、server地址包數據長度。

為了實現點對點傳輸,程序中將每套系統都配置為STA模式。開發板在上電初期,首先要檢測系統是否為STA模式,如果為AP模式,則要等待AP模式退出,最后利用Configure Mode(ROLE_STA)手動配置為STA模式,以保證音頻的點對點順利傳輸。此外,TI獨特的SmartConfig[4]技術允許多個家用設備快速高效地連接到WiFi網絡。嵌入式應用通常沒有用于輸入WiFi網絡名稱和密碼的顯示屏或鍵盤,而SmartConfig技術則為用戶提供了將其設備輕松連接到AP的能力。本文中修改common.h文件中的下列信息,項目重建后會生成二進制文件,燒寫到Flash以后,利用智能手機上的WiFi-Starter應用即可便捷地將設備連接到AP。

啟動網絡任務以后,本文設置全局變量g_ulStatus標識網絡連接到指定AP與否,當網絡連接正在建立時,用LED的閃爍標識;當網絡連接建立完成后,用LED的長亮標識。在多次嘗試建立連接仍然失敗以后,可嘗試用SmartConfig技術幫助建立連接。
2.3 音頻流的傳輸接收
配置音頻編解碼器為AIC3254,音頻編解碼器采樣數據寬度為16位;采樣速率為16 k Hz;聲道選擇為立體聲AUDIO_CODEC_STEREO;收發模式選擇為收發同時進行I2S_MODE_RX_TX;采用DMA方式傳輸;配置音頻輸入為AUDIO_CODEC_MIC_ALL,這樣可以從MONO_ IN、LINE_IN以及MIC三個信號源輸入音頻流;音頻輸出為AUDIO_CODEC_SPEAKER_ALL,可以從HEADPHONE_LINE和LINE_OUT輸出音頻流。
音頻編解碼器初始化以后,就需要對DMA通道進行配置,DMA用來提供在外設和存儲器之間或者存儲器和存儲器之間的批量數據傳輸。CC3200包含的DMA稱為μDMA(微型DMA),具有可乒乓連續數據流存儲特性。μDMA的初始化包括允許μDMA時鐘,復位μDMA,注冊μDMA中斷,允許μDMA設置通道控制表;設置通道控制表基址函數中μDMAControlBaseSet(void*pControl T-able),pControl Table是μDMA通道控制表地址指針。μDMA通道控制表包含μDMA通道的pvSrcEnd Addr源結束地址指針,pvDstEnd Addr目的結束地址指針,ulControl通道控制參數,而且通道控制參數包括傳輸模式、傳輸項大小等參數,本文中設置傳輸模式為UDMA_MODE_ PINGPANG乒乓模式。這樣系統就可以利用主備用兩個通道控制交替進行DMA傳輸。
此后,本文選擇μDMA的32個通道中4號和5號通道,其通道編碼為2,分別為I2S_RX和I2S_TX;同時,將音頻的發送環型緩存和接收環型緩存區指針分別傳遞為DMA的PingPang傳輸發送和接收地址。代碼如下:


此后,設置MAP_I2SEnable(I2S_BASE,I2S_MODE_ TX_RX_SYNC),即I2S同步收發音頻流,這在硬件及代碼上實現了音頻流的雙向傳遞。
2.4 編寫系統任務調度函數
將音頻編解碼器和I2S配置完成以后,即可編寫任務調度代碼,本文要實現將輸入音頻流數據封裝為UDP數據包,經WiFi傳輸,接收端的解碼器再將音頻解碼輸出,因此需要編寫網絡任務、音頻發送任務、音頻接收任務。網絡任務負責套件和AP的連接,創建UDP套接字服務端以及DNS任務的實現。音頻發送任務包括將數據發送到建立的套接字,將數據填充到發送環形緩沖區以及環形緩沖區的管理。音頻接收任務包括從接收的套接字中提取到數據,寫入到接收環形緩沖區等任務。為了協調三個任務之間的先后順序,程序設置一個全局變量g_loopback,初始時設置g_loopback為1,表示循環模式還未配置好,在網絡任務中,當套件間連接建立起來,套件分別獲得合法IP以后,置g_loopback為0,表示可以開始進行音頻流的循環收發任務。以下為音頻接收任務函數:


本文利用Simple Link WiFi CC3200平臺,與CC3200 BoosterPack結合,在SDK例程基礎上編碼調試實現了一套利用WiFi傳輸音頻的點對點雙工通信系統,為物聯網音頻流的解決方案提供了一條新的思路。另外,CC3200在物聯網方向的能力遠不止于此,它還擁有1個SD/ MMC接口,4個通用定時器,8位并行攝像頭接口,4通道12位模數轉換器,支持16位脈沖寬度調制,這些特性在家庭自動化、安防系統、智能能源、互聯網網關、工業控制、智能插座和儀表計量等領域都會有較大范圍的應用。
[1]Texas Instruments.CC3200 SimpleLink Wi-Fi and Internetof-Things Solution,a Single-Chip Wireless MCU[EB/OL]. [2016-04].http://www.ti.com/lit/ds/symlink/cc3200. pdf.
[2]Texas Instruments.CC3200 SimpleLink Wi-Fi and Io T Solution,A SingleChip Wireless MCU-Audio Booster Pack User 's Guide[EB/OL].[2016-04].http://www.ti.com.cn/cn/ lit/ug/swru383/swru383.pdf.
[3]Texas Instruments.TI-RTOS 2.14 User’s Guide[EB/OL]. [2016-04].http://www.ti.com/lit/ug/spruhd4j/spruhd4j. pdf.
[4]Texas Instruments.CC3200 SimpleLink Wi-Fi and Internetof Things Solution,a Single Chip Wireless MCU Technical Reference Manual[EB/OL].[2016-04].http://www.ti. com/lit/ug/swru367b/swru367b.pdf.
22
上看,未優化的同步計數器最高跑到465.55 MHz,而優化后可以達到600.96 MHz,速率提高了將近30%。
經過對比可以得到結論,采用并行進位優化方式的同步計數器比未優化的計數器運行速率提高了30%,這對于要求實時性較高的算法而言,具有比較重要的意義。但是速度的提升是以消耗資源為代價的,優化后的算法多使用了25%的邏輯資源。在進行算法設計的過程中,可以根據實際情況來選擇使用哪種計數器,不單單只是使用一種,特別是在對資源或者速率要求較高時,要靈活使用。
[1]余孟嘗.數字電子技術基礎簡明教程[M].北京:高等教育出版社,2006.
[2]許雪成.計數器在數字電路中的應用[J].科技創新與應用, 2016(4):299.
[3]司佑全,張學文.計數器競爭冒險及其處理的仿真分析[J].湖北師范學院學報:自然科學版,2015(1):25-28.
[4]楊欣,萊·諾克斯,王玉鳳,等.電子設計從零開始[M].2版.北京:清華大學出版社,2010.
[5]黃繼昌,王東,程寶平,等.常用數字集成電路應用280例[M].北京:中國電力出版社,2013.
[6]武亞雄.計數器在數字電路中的應用[J].數字技術與應用, 2013(11):61.
[7]徐忠根,蔣琳,王洽峰,等.一種任意進制計數器的快速設計方法探析[J].電子世界,2012(7):133-134.
[8]胡菊芳,熊春如.任意進制同步計數器的優化設計[J].新余高專學報,2005(2):12-14.
[9]陳學雄.同步計數器快速進位電路的設計方法[J].臺州學院學報,2003(6):40-42.
[10]夏高峰,薛焱.基于MATLAB-Modelsim-ISE/Quartus的FPGA聯合開發設計[J].航空電子技術,2014(3):5-11.
鐘強(碩士研究生)、劉鵬飛(工程師),主要研究方向為數字信號處理應用。
Peer-to-peer Duplexing Audio Transmission System Based on WiFi
Li Zhonglian
(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)
WiFi is an ideal technology for the wireless audio transmission,the CC3200LaunchPad and CC3200BoostPack kits are introduced.In the paper,taking the SDK routine as the basic encoder,a new point audio duplex transmission system with WiFi transmission medium is achieved.The construction of hardware platform,the realization of software program and design process are introduced.
WiFi;audio transmission scheme;CC3200
TP368
A
(責任編輯:楊迪娜2016-04-18)
(責任編輯:薛士然2016-06-15)