李忠廉
(南京郵電大學(xué) 通信與信息工程學(xué)院,南京 210003)
基于WiFi的點(diǎn)對(duì)點(diǎn)雙工音頻傳輸系統(tǒng)
李忠廉
(南京郵電大學(xué)通信與信息工程學(xué)院,南京210003)
WiFi是無(wú)線音頻傳輸中較為理想的傳輸技術(shù),本文介紹了TI公司的CC3200LaunchPad和CC3200BoostPack套件,在此套件平臺(tái)上以SDK例程為基礎(chǔ)編碼,調(diào)試實(shí)現(xiàn)了一種以WiFi為傳輸媒介的新型的點(diǎn)對(duì)點(diǎn)音頻雙工傳輸系統(tǒng)。介紹了硬件平臺(tái)框架、程序的編寫,以及程序的設(shè)計(jì)流程。
WiFi;音頻傳輸方案;CC3200
無(wú)線音頻系統(tǒng)應(yīng)用十分廣泛,所使用的技術(shù)也呈現(xiàn)多樣化。目前常見(jiàn)的無(wú)線傳輸方案包括:紅外傳輸、藍(lán)牙、ZigBee、WiFi。
紅外傳輸方式由于信號(hào)接收對(duì)于傳輸路徑的方向性要求高、節(jié)點(diǎn)的移動(dòng)性差,因此使用上受到約束。它的音頻傳輸方式的特點(diǎn)是簡(jiǎn)單可靠,無(wú)電磁污染;缺點(diǎn)是傳輸距離近(<10 m),傳輸方向性要求高,功耗高,且易受特種光源干擾。藍(lán)牙無(wú)線通信技術(shù)采用跳頻工作方式,成本低,技術(shù)成熟,受到大多數(shù)廠商的支持與推廣,但其最大缺點(diǎn)在于目前大多數(shù)藍(lán)牙設(shè)備通信距離較短(<10 m),功耗較高。Zig-Bee是一種新興的短距離、低速率、低功耗無(wú)線網(wǎng)絡(luò)技術(shù),主要用于近距離無(wú)線連接,也存在一些不足,諸如傳輸范圍小、數(shù)據(jù)傳輸速率低、時(shí)延不易確定。WiFi是目前應(yīng)用最廣泛的無(wú)線局域網(wǎng)標(biāo)準(zhǔn),其最高達(dá)每秒上百兆比特的傳輸速率使之成為高品質(zhì)無(wú)線音頻傳輸?shù)睦硐脒x擇。
CC3200是TI推出的內(nèi)置WiFi連接的微控制器,TI專為物聯(lián)網(wǎng)的開(kāi)發(fā)與應(yīng)用設(shè)計(jì)了這塊集成芯片。在這塊芯片上集成了高性能的ARM Cortex-M4處理器核和WiFi網(wǎng)絡(luò)處理器,CC3200的網(wǎng)絡(luò)通信能力穩(wěn)定可靠,并擁有完整的安全協(xié)議。不僅如此,CC3200平臺(tái)還提供了完整的開(kāi)發(fā)軟件、開(kāi)發(fā)樣例、調(diào)試工具與文檔,是十分理想的開(kāi)發(fā)平臺(tái)[1]。
Cortex-M4處理器的運(yùn)行頻率為80 MHz,并外接多種外設(shè),包括快速并行接口、SPI、UART串口、I2S等。CC3200擁有一個(gè)通用多通道音頻串行接口(Mc ASP),為多通道音頻應(yīng)用優(yōu)化,支持通過(guò)兩個(gè)數(shù)據(jù)引腳進(jìn)行立體聲傳輸,發(fā)送和接收部分可同步工作。而且CC3200的I2S可以配置成DMA方式傳輸,DMA傳送過(guò)程無(wú)需CPU,數(shù)據(jù)可以通過(guò)DMA快速的傳送,這就節(jié)省了CPU資源來(lái)做其他操作,為實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)雙工傳輸音頻提供支撐。
1.1 方案的選型
Simple Link WiFi CC3200 LaunchPad(CC3200LP)是用于CC3200無(wú)線微控制器的開(kāi)發(fā)平臺(tái)。此板使用FTDI器件實(shí)現(xiàn)板載仿真,并且包含提供開(kāi)包即用體驗(yàn)的傳感器,可以使用軟件開(kāi)發(fā)平臺(tái)(本文使用CCS)直接將此板連接到PC。CC3200 LaunchPad作為主控模塊,通過(guò)片內(nèi)外設(shè)接口多通道音頻串行接口I2S可以保證音頻流準(zhǔn)確而低延時(shí)的傳輸。CC3200音頻Booster Pack上的TLV320AIC3254擁有立體聲DAC 100 dB,ADC 93 dB的性能,立體聲輸入輸出,低噪聲干擾PGA,可擴(kuò)展的編程選項(xiàng)等優(yōu)勢(shì)可勝任音頻的編解碼;與CC3200LP配合使用,即可實(shí)現(xiàn)基于WiFi點(diǎn)對(duì)點(diǎn)的音頻傳輸系統(tǒng)。故本文采用CC3200LP+CC3200BP搭建起整套解決方案[2]。
1.2 系統(tǒng)總體方案
在這整套系統(tǒng)里,每一套既可當(dāng)作音頻輸入,也可當(dāng)作音頻輸出,支持同時(shí)收發(fā)音頻流,即點(diǎn)對(duì)點(diǎn)雙工傳輸方式,輸入的音頻流可來(lái)自于板載的MIC、MONO_IN或者是Line_IN輸入端口。開(kāi)發(fā)板則通過(guò)WiFi接收音頻數(shù)據(jù),再在BP上的Line Out端口輸出。套件工作示意圖如圖1所示。
圖1 套件工作示意圖
1.3 硬件模塊的組成
CC3200LP模塊上的主控芯片MCU和CC3200BP上的音頻處理芯片TLV320AIC3254主要引腳連接關(guān)系如圖2所示,其中各部分電路連接都加有0Ω跨接電阻。圖中MCLK是從CC3200發(fā)出的主控芯片的時(shí)鐘同步信號(hào), BCLK是音頻流時(shí)鐘信號(hào),WCLK即FSYNC是音頻流字節(jié)時(shí)鐘同步信號(hào),SCL是同步串行接口的片選信號(hào),SDA是同步串行接口在I2C總線模式下的數(shù)據(jù)輸入。從CC3200的63號(hào)引腳GPIO8輸出到TLV320AIC3254的FSYNC的字節(jié)時(shí)鐘信號(hào),同時(shí)需將AIC3254上的spi_sel引腳接地,選擇其為I2C總線工作模式。
1.4 TI-RTOS
TI-RTOS是TI推出的面向MCU平臺(tái)、基于搶占式多線程內(nèi)核的完整實(shí)時(shí)操作系統(tǒng) ,此操作系統(tǒng)是在一個(gè)名為SYS/BIOS的實(shí)時(shí)多線程內(nèi)核基礎(chǔ)之上構(gòu)建的,提供了實(shí)時(shí)多任務(wù)搶占式調(diào)度機(jī)制,并包含了硬件抽象和實(shí)時(shí)性能分析,可以有效地優(yōu)化目標(biāo)機(jī)的內(nèi)存和CPU使用。在內(nèi)核層之上,TI-RTOS不僅提供了一套設(shè)備驅(qū)動(dòng),還附加了諸如文件系統(tǒng)、網(wǎng)絡(luò)層等組件,使開(kāi)發(fā)者可以將精力集中在應(yīng)用的開(kāi)發(fā)上;另外,TI-RTOS[3]全面集成于TI Code Composer Studio集成型開(kāi)發(fā)環(huán)境(IDE),提供電路板支持套件與開(kāi)發(fā)套件,其中就包括TI MCU Launch-Pad等。
圖2 CC3200LP和CC3200BP硬件連接圖
CC3200的RTOS采用SYS/BIOS的實(shí)時(shí)多線程內(nèi)核,能夠利用硬件中斷、軟件中斷、任務(wù)線程以及后臺(tái)任務(wù)以不同的優(yōu)先級(jí)完成多重任務(wù)??梢詫?duì)每個(gè)系統(tǒng)任務(wù)設(shè)置調(diào)度優(yōu)先級(jí),利用osi_TaskCreate()可以將任務(wù)添加到任務(wù)調(diào)度列表中,系統(tǒng)內(nèi)核會(huì)根據(jù)每個(gè)任務(wù)的優(yōu)先級(jí)和任務(wù)調(diào)度列表有秩序的調(diào)度任務(wù)。因此,將編寫的任務(wù)代碼,設(shè)置優(yōu)先級(jí),任務(wù)調(diào)度則交給系統(tǒng)內(nèi)核完成osi_start(),極大地提高了開(kāi)發(fā)效率。系統(tǒng)流程圖如圖3所示。
圖3 系統(tǒng)流程圖
2.1 開(kāi)發(fā)版的初始化及其他相關(guān)硬件配置
在系統(tǒng)剛上電以后,首先應(yīng)該進(jìn)行的是開(kāi)發(fā)板的初始化,包括設(shè)置中斷向量表、允許處理器中斷、允許中斷,以及初始化MCU。因?yàn)殚_(kāi)發(fā)板采用的是引腳復(fù)用,MCU初始化以后就要進(jìn)行引腳的復(fù)用配置,本套系統(tǒng)中,需要用到I2C總線將DSP音頻處理程序加載到TLV320AIC3254中去,還要用GPIO輸出到LED燈作為指示,這些GPIO引腳共分為4組(A0,A1,A2,A3),通過(guò)每組內(nèi)的偏移地址即可方便地找到對(duì)應(yīng)引腳。使用I2S的兩個(gè)音頻通道,實(shí)現(xiàn)音頻的發(fā)送和接收。
CC3200的外設(shè)時(shí)鐘默認(rèn)是沒(méi)有開(kāi)啟的,這時(shí)要是訪問(wèn)外設(shè)會(huì)引發(fā)總線錯(cuò)誤,因此在用到每個(gè)外設(shè)前都要使能相應(yīng)的外設(shè)時(shí)鐘,其時(shí)鐘頻率是CC3200分頻后所得。TI 的SDK中有完整的外設(shè)API,只需要找到對(duì)應(yīng)庫(kù),就能方便快速地進(jìn)行開(kāi)發(fā)。
在使能外設(shè)時(shí)鐘以后,就可以對(duì)相應(yīng)的外設(shè)進(jìn)行配置。CC3200的各引腳可以根據(jù)預(yù)設(shè)的模式值選擇其復(fù)用類型,模式值范圍是0~13,要配置每個(gè)引腳的功能,查看引腳模式值就可確定。本文中將CC3200的64號(hào)引腳和50號(hào)引腳分別配置為I2S數(shù)據(jù)0和數(shù)據(jù)1通道,其引腳模式值分別為7和6;將53號(hào)的模式值選擇為2,配置其為I2S時(shí)鐘引腳,63號(hào)引腳模式值為7,配置其為I2S幀同步;將1號(hào)引腳和2號(hào)引腳配置為引腳模式1,這樣就完成I2S的硬件配置。各項(xiàng)主要配置情況如下:
本文使用I2C總線TLV320實(shí)現(xiàn)MCU和音頻編解碼器的通信。I2C總線TLV320使用一根雙向串行數(shù)據(jù)線SDA和一根雙向串行時(shí)鐘線SCL,可實(shí)現(xiàn)主、從設(shè)備之間的多主串行雙向通信通信,電氣特性上,SDA上的數(shù)據(jù)必須在SCL高電平時(shí)保持穩(wěn)定,低電平時(shí)可以改變。發(fā)送器發(fā)送數(shù)據(jù)后釋放SDA,接收器接收數(shù)據(jù)后必須在SCL低電平時(shí)將SDA變?yōu)榈碗娖?并在SCL高電平時(shí)保持穩(wěn)定,作為對(duì)發(fā)送器的應(yīng)答。
本文使用I2C_IF_Open()、I2C_IF_Read()、I2C_IF_ Write()分別實(shí)現(xiàn)對(duì)I2C總線的打開(kāi)、讀、寫操作。I2C_IF_ Open()函數(shù)內(nèi)部首先重置了I2C總線,然后根據(jù)選擇設(shè)置I2C總線的傳輸模式,默認(rèn)情況下采用FAST模式,即400 kbps,本文即采用默認(rèn)模式。
2.2 網(wǎng)絡(luò)任務(wù)的配置
網(wǎng)絡(luò)任務(wù)程序中數(shù)據(jù)的封裝采用UDP實(shí)現(xiàn),每一個(gè)數(shù)據(jù)包為1024個(gè)字節(jié)。發(fā)送環(huán)型緩存的內(nèi)存大小RECORD_BUFFER_SIZE設(shè)置為10個(gè)數(shù)據(jù)報(bào)文大小,而接收環(huán)型緩存PLAY_BUFFER_SIZE的內(nèi)存大小設(shè)置為70個(gè)數(shù)據(jù)報(bào)文大小,以充分保證音頻流傳輸連續(xù)性。UDP套接字的數(shù)據(jù)結(jié)構(gòu)中包括socket文件描述符、client地址包、server地址包、client地址包數(shù)據(jù)長(zhǎng)度、server地址包數(shù)據(jù)長(zhǎng)度。
為了實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)傳輸,程序中將每套系統(tǒng)都配置為STA模式。開(kāi)發(fā)板在上電初期,首先要檢測(cè)系統(tǒng)是否為STA模式,如果為AP模式,則要等待AP模式退出,最后利用Configure Mode(ROLE_STA)手動(dòng)配置為STA模式,以保證音頻的點(diǎn)對(duì)點(diǎn)順利傳輸。此外,TI獨(dú)特的SmartConfig[4]技術(shù)允許多個(gè)家用設(shè)備快速高效地連接到WiFi網(wǎng)絡(luò)。嵌入式應(yīng)用通常沒(méi)有用于輸入WiFi網(wǎng)絡(luò)名稱和密碼的顯示屏或鍵盤,而SmartConfig技術(shù)則為用戶提供了將其設(shè)備輕松連接到AP的能力。本文中修改common.h文件中的下列信息,項(xiàng)目重建后會(huì)生成二進(jìn)制文件,燒寫到Flash以后,利用智能手機(jī)上的WiFi-Starter應(yīng)用即可便捷地將設(shè)備連接到AP。
啟動(dòng)網(wǎng)絡(luò)任務(wù)以后,本文設(shè)置全局變量g_ulStatus標(biāo)識(shí)網(wǎng)絡(luò)連接到指定AP與否,當(dāng)網(wǎng)絡(luò)連接正在建立時(shí),用LED的閃爍標(biāo)識(shí);當(dāng)網(wǎng)絡(luò)連接建立完成后,用LED的長(zhǎng)亮標(biāo)識(shí)。在多次嘗試建立連接仍然失敗以后,可嘗試用SmartConfig技術(shù)幫助建立連接。
2.3 音頻流的傳輸接收
配置音頻編解碼器為AIC3254,音頻編解碼器采樣數(shù)據(jù)寬度為16位;采樣速率為16 k Hz;聲道選擇為立體聲AUDIO_CODEC_STEREO;收發(fā)模式選擇為收發(fā)同時(shí)進(jìn)行I2S_MODE_RX_TX;采用DMA方式傳輸;配置音頻輸入為AUDIO_CODEC_MIC_ALL,這樣可以從MONO_ IN、LINE_IN以及MIC三個(gè)信號(hào)源輸入音頻流;音頻輸出為AUDIO_CODEC_SPEAKER_ALL,可以從HEADPHONE_LINE和LINE_OUT輸出音頻流。
音頻編解碼器初始化以后,就需要對(duì)DMA通道進(jìn)行配置,DMA用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的批量數(shù)據(jù)傳輸。CC3200包含的DMA稱為μDMA(微型DMA),具有可乒乓連續(xù)數(shù)據(jù)流存儲(chǔ)特性。μDMA的初始化包括允許μDMA時(shí)鐘,復(fù)位μDMA,注冊(cè)μDMA中斷,允許μDMA設(shè)置通道控制表;設(shè)置通道控制表基址函數(shù)中μDMAControlBaseSet(void*pControl T-able),pControl Table是μDMA通道控制表地址指針。μDMA通道控制表包含μDMA通道的pvSrcEnd Addr源結(jié)束地址指針,pvDstEnd Addr目的結(jié)束地址指針,ulControl通道控制參數(shù),而且通道控制參數(shù)包括傳輸模式、傳輸項(xiàng)大小等參數(shù),本文中設(shè)置傳輸模式為UDMA_MODE_ PINGPANG乒乓模式。這樣系統(tǒng)就可以利用主備用兩個(gè)通道控制交替進(jìn)行DMA傳輸。
此后,本文選擇μDMA的32個(gè)通道中4號(hào)和5號(hào)通道,其通道編碼為2,分別為I2S_RX和I2S_TX;同時(shí),將音頻的發(fā)送環(huán)型緩存和接收環(huán)型緩存區(qū)指針?lè)謩e傳遞為DMA的PingPang傳輸發(fā)送和接收地址。代碼如下:
此后,設(shè)置MAP_I2SEnable(I2S_BASE,I2S_MODE_ TX_RX_SYNC),即I2S同步收發(fā)音頻流,這在硬件及代碼上實(shí)現(xiàn)了音頻流的雙向傳遞。
2.4 編寫系統(tǒng)任務(wù)調(diào)度函數(shù)
將音頻編解碼器和I2S配置完成以后,即可編寫任務(wù)調(diào)度代碼,本文要實(shí)現(xiàn)將輸入音頻流數(shù)據(jù)封裝為UDP數(shù)據(jù)包,經(jīng)WiFi傳輸,接收端的解碼器再將音頻解碼輸出,因此需要編寫網(wǎng)絡(luò)任務(wù)、音頻發(fā)送任務(wù)、音頻接收任務(wù)。網(wǎng)絡(luò)任務(wù)負(fù)責(zé)套件和AP的連接,創(chuàng)建UDP套接字服務(wù)端以及DNS任務(wù)的實(shí)現(xiàn)。音頻發(fā)送任務(wù)包括將數(shù)據(jù)發(fā)送到建立的套接字,將數(shù)據(jù)填充到發(fā)送環(huán)形緩沖區(qū)以及環(huán)形緩沖區(qū)的管理。音頻接收任務(wù)包括從接收的套接字中提取到數(shù)據(jù),寫入到接收環(huán)形緩沖區(qū)等任務(wù)。為了協(xié)調(diào)三個(gè)任務(wù)之間的先后順序,程序設(shè)置一個(gè)全局變量g_loopback,初始時(shí)設(shè)置g_loopback為1,表示循環(huán)模式還未配置好,在網(wǎng)絡(luò)任務(wù)中,當(dāng)套件間連接建立起來(lái),套件分別獲得合法IP以后,置g_loopback為0,表示可以開(kāi)始進(jìn)行音頻流的循環(huán)收發(fā)任務(wù)。以下為音頻接收任務(wù)函數(shù):
本文利用Simple Link WiFi CC3200平臺(tái),與CC3200 BoosterPack結(jié)合,在SDK例程基礎(chǔ)上編碼調(diào)試實(shí)現(xiàn)了一套利用WiFi傳輸音頻的點(diǎn)對(duì)點(diǎn)雙工通信系統(tǒng),為物聯(lián)網(wǎng)音頻流的解決方案提供了一條新的思路。另外,CC3200在物聯(lián)網(wǎng)方向的能力遠(yuǎn)不止于此,它還擁有1個(gè)SD/ MMC接口,4個(gè)通用定時(shí)器,8位并行攝像頭接口,4通道12位模數(shù)轉(zhuǎn)換器,支持16位脈沖寬度調(diào)制,這些特性在家庭自動(dòng)化、安防系統(tǒng)、智能能源、互聯(lián)網(wǎng)網(wǎng)關(guān)、工業(yè)控制、智能插座和儀表計(jì)量等領(lǐng)域都會(huì)有較大范圍的應(yīng)用。
[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
上看,未優(yōu)化的同步計(jì)數(shù)器最高跑到465.55 MHz,而優(yōu)化后可以達(dá)到600.96 MHz,速率提高了將近30%。
經(jīng)過(guò)對(duì)比可以得到結(jié)論,采用并行進(jìn)位優(yōu)化方式的同步計(jì)數(shù)器比未優(yōu)化的計(jì)數(shù)器運(yùn)行速率提高了30%,這對(duì)于要求實(shí)時(shí)性較高的算法而言,具有比較重要的意義。但是速度的提升是以消耗資源為代價(jià)的,優(yōu)化后的算法多使用了25%的邏輯資源。在進(jìn)行算法設(shè)計(jì)的過(guò)程中,可以根據(jù)實(shí)際情況來(lái)選擇使用哪種計(jì)數(shù)器,不單單只是使用一種,特別是在對(duì)資源或者速率要求較高時(shí),要靈活使用。
[1]余孟嘗.數(shù)字電子技術(shù)基礎(chǔ)簡(jiǎn)明教程[M].北京:高等教育出版社,2006.
[2]許雪成.計(jì)數(shù)器在數(shù)字電路中的應(yīng)用[J].科技創(chuàng)新與應(yīng)用, 2016(4):299.
[3]司佑全,張學(xué)文.計(jì)數(shù)器競(jìng)爭(zhēng)冒險(xiǎn)及其處理的仿真分析[J].湖北師范學(xué)院學(xué)報(bào):自然科學(xué)版,2015(1):25-28.
[4]楊欣,萊·諾克斯,王玉鳳,等.電子設(shè)計(jì)從零開(kāi)始[M].2版.北京:清華大學(xué)出版社,2010.
[5]黃繼昌,王東,程寶平,等.常用數(shù)字集成電路應(yīng)用280例[M].北京:中國(guó)電力出版社,2013.
[6]武亞雄.計(jì)數(shù)器在數(shù)字電路中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用, 2013(11):61.
[7]徐忠根,蔣琳,王洽峰,等.一種任意進(jìn)制計(jì)數(shù)器的快速設(shè)計(jì)方法探析[J].電子世界,2012(7):133-134.
[8]胡菊芳,熊春如.任意進(jìn)制同步計(jì)數(shù)器的優(yōu)化設(shè)計(jì)[J].新余高專學(xué)報(bào),2005(2):12-14.
[9]陳學(xué)雄.同步計(jì)數(shù)器快速進(jìn)位電路的設(shè)計(jì)方法[J].臺(tái)州學(xué)院學(xué)報(bào),2003(6):40-42.
[10]夏高峰,薛焱.基于MATLAB-Modelsim-ISE/Quartus的FPGA聯(lián)合開(kāi)發(fā)設(shè)計(jì)[J].航空電子技術(shù),2014(3):5-11.
鐘強(qiáng)(碩士研究生)、劉鵬飛(工程師),主要研究方向?yàn)閿?shù)字信號(hào)處理應(yīng)用。
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
(責(zé)任編輯:楊迪娜2016-04-18)
(責(zé)任編輯:薛士然2016-06-15)