
(2)主控模塊與A/D模塊之間采用SPI串行同步通信。SPI的主要初始控制字配置如下:首先開(kāi)啟SPI使能和關(guān)閉SPI中斷使能,工作模式選擇主機(jī)模式,數(shù)據(jù)次序設(shè)為MSB首先發(fā)送,主機(jī)SCK速率設(shè)為fosc/2(fosc為系統(tǒng)主時(shí)鐘)。在進(jìn)行數(shù)據(jù)傳輸時(shí),BCLK信號(hào)作為串行時(shí)鐘來(lái)決定串行傳輸速率。在ADCLRC信號(hào)的同步下,音頻數(shù)據(jù)由ADCDAT傳入主控模塊進(jìn)行壓縮編碼處理。
(3)主控模塊與RF模塊之間采用USART串行異步通信。USART主要初始控制字配置如下:開(kāi)啟發(fā)送使能,同時(shí)關(guān)閉接收使能,工作模式選擇異步奇校驗(yàn)操作模式,波特率設(shè)置為1Mbps,數(shù)據(jù)為8位,停止位為2位。在向RF模塊發(fā)送數(shù)據(jù)時(shí),為保證和接收子系統(tǒng)同步,以ADCLRC信號(hào)作為同步信號(hào)。
(4) 接收子系統(tǒng)與發(fā)送子系統(tǒng)硬件的連接。除了兩個(gè)數(shù)據(jù)傳送端口外,其他連接基本一致。將ATmega48的PB4、PD1與ADCDAT、DATA斷開(kāi),且將PB3(MOSI)與WM8731的DACDAT相連,同時(shí)將PB3設(shè)置為輸出端口。另外,將PD0(RXD)與nRF2401的DATA相連,同時(shí)將PD0設(shè)置為輸入端口。此外,在USART初始設(shè)置上要開(kāi)啟接收使能而關(guān)閉發(fā)送使能即可。
3 主控模塊的軟件流程
由于nRF2401的數(shù)據(jù)傳輸率為1Mbps,而從WM8739對(duì)模擬信號(hào)抽樣量化后的數(shù)據(jù)長(zhǎng)度為16bit,左右聲道的采樣率均為44.1kHz,若不對(duì)數(shù)據(jù)進(jìn)行編碼壓縮,則需要1.41Mbps(16bit×44.1kHz×2)的數(shù)據(jù)傳輸帶寬,顯然超出了RF模塊的數(shù)據(jù)傳輸能力。為了充分利用線路資源,而又不希望明顯降低音頻信號(hào)的質(zhì)量,就要對(duì)數(shù)據(jù)作進(jìn)一步壓縮,本文采用自適應(yīng)差分脈沖編碼調(diào)制ADPCM (Adaptive Difference Pulse Code Modulation)的壓縮算法。
ADPCM是利用樣本與樣本之間的高度相關(guān)性和量化階自適應(yīng)來(lái)壓縮數(shù)據(jù)的一種波形編碼技術(shù),它綜合了APCM的自適應(yīng)特性和DPCM系統(tǒng)的差分特性,是一種性能較好的波形編碼。ADPCM的核心思想是:利用自適應(yīng)改變量化階的大小,即使用小的量化階去編碼小的差值,使用大的量化階去編碼大的差值;使用過(guò)去的樣本值估算下一個(gè)輸入樣本的預(yù)測(cè)值,使實(shí)際樣本值和預(yù)測(cè)值之間的差值總是最小。ADPCM記錄的量化值不是每個(gè)采樣點(diǎn)的幅值,而是該點(diǎn)的幅值與前一個(gè)采樣點(diǎn)幅值之差。這樣16bit的數(shù)據(jù)經(jīng)ADPCM編碼之后只需4bit表示其差值,數(shù)據(jù)壓縮比為4:1。接收端的譯碼器使用與發(fā)送端相同的算法,利用傳送來(lái)的信號(hào)確定量化器和逆量化器中的量化階大小,并且用它來(lái)計(jì)算下一個(gè)接收信號(hào)的預(yù)測(cè)值。ADPCM算法實(shí)現(xiàn)框圖如圖3所示。

為了保證數(shù)據(jù)傳輸?shù)挠行,以及避免其他同頻率信號(hào)的干擾,定義了如表1所示的傳輸數(shù)據(jù)的幀結(jié)構(gòu)。

數(shù)據(jù)幀的總長(zhǎng)度為64B,其中幀頭為1B,用于射頻芯片進(jìn)行幀同步的前導(dǎo)碼,3B,用于USART進(jìn)行幀同步的同步碼,3B作為地址碼。另外為了保證接收端解碼后的數(shù)據(jù)的連續(xù)性,整個(gè)程序流程將引入“雙緩存區(qū)結(jié)構(gòu)”即存儲(chǔ)區(qū)和發(fā)送區(qū),在發(fā)送一幀數(shù)據(jù)(位于發(fā)送區(qū))的同時(shí),要完成對(duì)當(dāng)前幀數(shù)據(jù)的壓縮編碼及存儲(chǔ)(存于存儲(chǔ)區(qū)),在存儲(chǔ)區(qū)放滿之后要將該存儲(chǔ)區(qū)則變?yōu)榘l(fā)送區(qū),而原來(lái)的發(fā)送區(qū)變?yōu)樾碌拇鎯?chǔ)區(qū)。在一幀的結(jié)尾還要產(chǎn)生一個(gè)CRC循環(huán)校驗(yàn)碼,便于在接收端判斷傳送數(shù)據(jù)是否正確有效。接收端收到數(shù)據(jù)時(shí),要先通過(guò)地址碼判斷數(shù)據(jù)是否有效,其余過(guò)程為發(fā)送端的逆過(guò)程。發(fā)送子系統(tǒng)程序流程如圖4所示。

為避免在2.4GHz公共頻段上容易出現(xiàn)的對(duì)音質(zhì)的干擾,本系統(tǒng)提供了頻點(diǎn)選擇功能,有125個(gè)頻點(diǎn)可選。如果系統(tǒng)在工作過(guò)程中,發(fā)現(xiàn)有較強(qiáng)的噪音出現(xiàn),即在當(dāng)前頻點(diǎn)存在干擾影響輸出音質(zhì)時(shí),可選擇新的工作頻點(diǎn),以保持產(chǎn)品良好的使用效果。
4 實(shí)驗(yàn)結(jié)果與結(jié)論
本系統(tǒng)的設(shè)計(jì)充分利用了ATmega48豐富的片上外設(shè),方便地實(shí)現(xiàn)了對(duì)語(yǔ)音芯片WM8739/8731和單片無(wú)線收發(fā)芯片nRF2401的連接。本系統(tǒng)應(yīng)用于點(diǎn)對(duì)點(diǎn)的無(wú)線數(shù)據(jù)傳輸中,系統(tǒng)工作于ISM頻段,有125個(gè)可選頻點(diǎn),44.1Kbps數(shù)字音頻采樣率,16bit樣本量化級(jí),20Hz~20kHz頻率響應(yīng),音頻輸出達(dá)到CD音質(zhì)效果,有效傳輸距離達(dá)到100m,有障礙物情況下能達(dá)到40m。
本系統(tǒng)為無(wú)線傳輸系統(tǒng)提供了一種比較實(shí)用且經(jīng)濟(jì)的解決方案,可以廣泛地應(yīng)用于無(wú)線耳機(jī)、話筒,小范圍內(nèi)的廣播、家庭影院的后置音箱、多功能會(huì)議廳、多房間無(wú)線音響系統(tǒng),無(wú)線教室教學(xué)系統(tǒng)等場(chǎng)合。
參考文獻(xiàn)
[1] 胡應(yīng)宏,曾慶喜,楊英杰. 基于TMS32OC55O9 DSP的無(wú)線語(yǔ)音傳輸采集傳輸系統(tǒng)[J]. 東北電力大學(xué)學(xué)報(bào),2006,26(2):65-68.
[2] WOLFSON Corp. Portable internet audio CODEC with headphone driver and programmable sample rates WM8731/WM8731L Rev. 4.0. http://www.wolfsonmicro.com.2005.
[3] Nordic Corp. Single chip 2.4GHz radio transceiver nRF2401A Rev. 1.0,http://www.nordicsemi.no.2004.
[4] Atmel Corp. 8-bit AVR microcontroller with 8K Bytes in-system programmable flash ATmega48/V Rev. 2545G-AVR-06/06,http://www.atmel.com.2006.





