基于AVR 8位單片機的短距離立體聲數(shù)字音頻無線傳輸系統(tǒng)開發(fā)
與相同傳輸距離的有線音頻傳輸系統(tǒng)相比,無線音頻傳輸系統(tǒng)減少了線纜的開銷,傳輸距離也不再受線纜長度的限制,解決了有線音頻傳輸布線困難、影響美觀和浪費線纜等問題,而且占用空間小、能耗低、使用更加靈活、方便。因此,短距離無線通信已成為當前研究的一個熱點。ISM(Industrial Scientific Medical)2.4GHz(2.4G~2.4835GHz)頻段, 由于具有較高的帶寬和相對較低的實現(xiàn)成本,在各種產(chǎn)品中得到了廣泛的應(yīng)用。但這種通用性也產(chǎn)生了性能下降與成本增加等問題。目前國內(nèi)外同類無線技術(shù)方案主要是基于藍牙技術(shù)的產(chǎn)品方案以及一些小廠商提供的基于2.4GHz的產(chǎn)品方案。在一些特定的應(yīng)用中,追求的目標是更低的成本與更高的音質(zhì), 對通用性的要求并不高, 采用藍牙或無線局域網(wǎng)技術(shù)則顯然不合適。而在音頻信號處理過程中,由于其數(shù)據(jù)量大,處理算法復(fù)雜,實時性要求比較高,當今一些小廠商提供的基于2.4GHz的產(chǎn)品方案[1]實現(xiàn)成本相應(yīng)較高。
基于以上特點,本著先進性、科學(xué)性、穩(wěn)定性、經(jīng)濟性相統(tǒng)一的原則,本文設(shè)計一種低成本、適用面廣的無線數(shù)字音頻傳輸系統(tǒng)。
1 數(shù)字音頻無線傳輸系統(tǒng)方案設(shè)計
本系統(tǒng)以MCU主控模塊為核心,由發(fā)送子系統(tǒng)和接收子系統(tǒng)組成。發(fā)送部分從音頻輸出設(shè)備采集音頻信號,經(jīng)過A/D轉(zhuǎn)換模塊將模擬信號轉(zhuǎn)換為數(shù)字音頻信號,再通過SPI接口將數(shù)字音頻信號傳至主控模塊進行壓縮編碼處理,壓縮完成的數(shù)據(jù)成幀后經(jīng)串行口傳送給射頻芯片,經(jīng)過射頻芯片內(nèi)部的一系列處理后,將控制信號和音頻數(shù)據(jù)發(fā)送出去(發(fā)送的數(shù)據(jù)需要進行一定的功率放大處理,以達到較好的傳輸效果)。接收部分的工作是其逆過程。系統(tǒng)原理框圖如圖1所示。
2 系統(tǒng)各模塊的硬件設(shè)計與實現(xiàn)
2.1 A/D和D/A轉(zhuǎn)換模塊設(shè)計及初始配置
A/D和D/A轉(zhuǎn)換模塊選擇WOLFSON 公司的WM8739和WM8731器件。WM8731是一款帶有集成耳機驅(qū)動器的極低功耗、高質(zhì)量音頻編碼解碼器,專為便攜數(shù)字音頻應(yīng)用而設(shè)計。該器件可以提供CD音質(zhì)的音頻錄音和回放,為16Ω的負載提供50mW的輸出功率;帶有一個片上時鐘發(fā)生器,支持多種時鐘模式,通過一個16MHz時鐘,該器件可以直接生成44.1kHz、48kHz和96kHz等采樣率,以及MP3標準定義的其他采樣率,完全不需要一個獨立的鎖相環(huán)(phase locked loop)或晶振,支持其他公用的主時鐘頻率,例如12.288MHz。而WM8739與WM8731不同的是,它并沒有將A/D轉(zhuǎn)化和D/A轉(zhuǎn)化集成在一起,它只能用作A/D轉(zhuǎn)換模塊,其他性能與WM8731相同,其價格較WM8731便宜。
芯片的初始配置如下:
硬件配置:CSB(Pin20)及MODE(Pin19)均配置為低電平(兩線制傳輸)。
軟件配置:工作模式選擇從機模式,數(shù)據(jù)順序選擇MSB首先發(fā)送,采樣率控制模式選擇正常模式384分頻,核時鐘同主時鐘一樣(由主控模塊提供,為16MHz),這樣由核時鐘384分頻即可得到左右聲道的44.1kHz的采樣頻率,該頻率是標準CD 音源的采樣頻率。
其他的軟件配置字均為缺省值。該配置字由SDIN和SCLK寫入,具體規(guī)則可參考芯片使用手冊[2]。
2.2 RF發(fā)送/接收模塊設(shè)計及初始配置
RF發(fā)送/接收模塊,選擇NORDIC公司的nRF2401。nRF2401[3]芯片與藍牙一樣,都工作在2.4GHz自由頻段,能夠在全球無線市場暢通無阻;支持多點間通信,最高傳輸速率達1Mbps,而且比藍牙具有更高的傳輸速度;采用SoC方法設(shè)計,只需少量外圍元件即可組成射頻收發(fā)電路。
對該芯片的初始配置如下:對發(fā)送和接收模塊的激活模式分別選擇transmit模式和receive模式,通信模式選擇Direct模式,頻率通道初始配置為2.4GHz,輸出功率增益選擇為-10dBm,晶振頻率選擇16MHz,RF數(shù)據(jù)傳輸速率選擇1Mbps。
其他的軟件配置字均為缺省值。其配置字由DATA端口串行逐位寫入。
2.3 MCU主控模塊及系統(tǒng)接口設(shè)計
MCU主控模塊選擇ATMEL公司的AVR ATmega48[4]。AVR ATmega48是高性能、低功耗的8位AVR微處理器,采用先進的RISC結(jié)構(gòu),131 條指令,大多數(shù)指令的執(zhí)行時間為單個時鐘周期,32×8通用工作寄存器,只需兩個時鐘周期的硬件乘法器;4KB的系統(tǒng)內(nèi)可編程 Flash和256B的EEPROM,擦寫壽命均為10 000次;512B的片內(nèi)SRAM;具有獨立鎖定位的可選Boot代碼區(qū),通過片上Boot程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程,真正的同時讀寫操作;兩個具有獨立預(yù)分頻器和比較器功能的8 位定時器/ 計數(shù)器,一個具有預(yù)分頻器、比較功能和捕捉功能的16 位定時器/ 計數(shù)器,可編程的串行USART 接口,可工作于主機/從機模式的SPI 串行接口。系統(tǒng)接口設(shè)計如下:
(1)如圖2所示將三個模塊連接在一起。在對各個模塊進行初始配置之前,要按照圖2所示的端口連接方向正確設(shè)置端口的輸入輸出模式,然后要對系統(tǒng)的各個時鐘作正確的配置。系統(tǒng)主時鐘由16MHz的外部晶振產(chǎn)生,將外部晶振接ATmega48的PB6和PB7即可。MCLK可由PB0的第二功能將16MHz的系統(tǒng)時鐘輸出,此時鐘將作為WM8739的工作時鐘。ADCLRC可利用PB1的第二功能的定時器輸出比較功能,將該計數(shù)器的上限設(shè)為191即可產(chǎn)生44.1kHz的采樣率對比時鐘。BCLK可利用PB5的第二功能將主時鐘二分頻得到SPI 8MHz總線時鐘。
(2)主控模塊與A/D模塊之間采用SPI串行同步通信。SPI的主要初始控制字配置如下:首先開啟SPI使能和關(guān)閉SPI中斷使能,工作模式選擇主機模式,數(shù)據(jù)次序設(shè)為MSB首先發(fā)送,主機SCK速率設(shè)為fosc/2(fosc為系統(tǒng)主時鐘)。在進行數(shù)據(jù)傳輸時,BCLK信號作為串行時鐘來決定串行傳輸速率。在ADCLRC信號的同步下,音頻數(shù)據(jù)由ADCDAT傳入主控模塊進行壓縮編碼處理。
(3)主控模塊與RF模塊之間采用USART串行異步通信。USART主要初始控制字配置如下:開啟發(fā)送使能,同時關(guān)閉接收使能,工作模式選擇異步奇校驗操作模式,波特率設(shè)置為1Mbps,數(shù)據(jù)為8位,停止位為2位。在向RF模塊發(fā)送數(shù)據(jù)時,為保證和接收子系統(tǒng)同步,以ADCLRC信號作為同步信號。
(4) 接收子系統(tǒng)與發(fā)送子系統(tǒng)硬件的連接。除了兩個數(shù)據(jù)傳送端口外,其他連接基本一致。將ATmega48的PB4、PD1與ADCDAT、DATA斷開,且將PB3(MOSI)與WM8731的DACDAT相連,同時將PB3設(shè)置為輸出端口。另外,將PD0(RXD)與nRF2401的DATA相連,同時將PD0設(shè)置為輸入端口。此外,在USART初始設(shè)置上要開啟接收使能而關(guān)閉發(fā)送使能即可。
3 主控模塊的軟件流程
由于nRF2401的數(shù)據(jù)傳輸率為1Mbps,而從WM8739對模擬信號抽樣量化后的數(shù)據(jù)長度為16bit,左右聲道的采樣率均為44.1kHz,若不對數(shù)據(jù)進行編碼壓縮,則需要1.41Mbps(16bit×44.1kHz×2)的數(shù)據(jù)傳輸帶寬,顯然超出了RF模塊的數(shù)據(jù)傳輸能力。為了充分利用線路資源,而又不希望明顯降低音頻信號的質(zhì)量,就要對數(shù)據(jù)作進一步壓縮,本文采用自適應(yīng)差分脈沖編碼調(diào)制ADPCM (Adaptive Difference Pulse Code Modulation)的壓縮算法。
ADPCM是利用樣本與樣本之間的高度相關(guān)性和量化階自適應(yīng)來壓縮數(shù)據(jù)的一種波形編碼技術(shù),它綜合了APCM的自適應(yīng)特性和DPCM系統(tǒng)的差分特性,是一種性能較好的波形編碼。ADPCM的核心思想是:利用自適應(yīng)改變量化階的大小,即使用小的量化階去編碼小的差值,使用大的量化階去編碼大的差值;使用過去的樣本值估算下一個輸入樣本的預(yù)測值,使實際樣本值和預(yù)測值之間的差值總是最小。ADPCM記錄的量化值不是每個采樣點的幅值,而是該點的幅值與前一個采樣點幅值之差。這樣16bit的數(shù)據(jù)經(jīng)ADPCM編碼之后只需4bit表示其差值,數(shù)據(jù)壓縮比為4:1。接收端的譯碼器使用與發(fā)送端相同的算法,利用傳送來的信號確定量化器和逆量化器中的量化階大小,并且用它來計算下一個接收信號的預(yù)測值。ADPCM算法實現(xiàn)框圖如圖3所示。
為了保證數(shù)據(jù)傳輸?shù)挠行?,以及避免其他同頻率信號的干擾,定義了如表1所示的傳輸數(shù)據(jù)的幀結(jié)構(gòu)。
數(shù)據(jù)幀的總長度為64B,其中幀頭為1B,用于射頻芯片進行幀同步的前導(dǎo)碼,3B,用于USART進行幀同步的同步碼,3B作為地址碼。另外為了保證接收端解碼后的數(shù)據(jù)的連續(xù)性,整個程序流程將引入“雙緩存區(qū)結(jié)構(gòu)”即存儲區(qū)和發(fā)送區(qū),在發(fā)送一幀數(shù)據(jù)(位于發(fā)送區(qū))的同時,要完成對當前幀數(shù)據(jù)的壓縮編碼及存儲(存于存儲區(qū)),在存儲區(qū)放滿之后要將該存儲區(qū)則變?yōu)榘l(fā)送區(qū),而原來的發(fā)送區(qū)變?yōu)樾碌拇鎯^(qū)。在一幀的結(jié)尾還要產(chǎn)生一個CRC循環(huán)校驗碼,便于在接收端判斷傳送數(shù)據(jù)是否正確有效。接收端收到數(shù)據(jù)時,要先通過地址碼判斷數(shù)據(jù)是否有效,其余過程為發(fā)送端的逆過程。發(fā)送子系統(tǒng)程序流程如圖4所示。
為避免在2.4GHz公共頻段上容易出現(xiàn)的對音質(zhì)的干擾,本系統(tǒng)提供了頻點選擇功能,有125個頻點可選。如果系統(tǒng)在工作過程中,發(fā)現(xiàn)有較強的噪音出現(xiàn),即在當前頻點存在干擾影響輸出音質(zhì)時,可選擇新的工作頻點,以保持產(chǎn)品良好的使用效果。
4 實驗結(jié)果與結(jié)論
本系統(tǒng)的設(shè)計充分利用了ATmega48豐富的片上外設(shè),方便地實現(xiàn)了對語音芯片WM8739/8731和單片無線收發(fā)芯片nRF2401的連接。本系統(tǒng)應(yīng)用于點對點的無線數(shù)據(jù)傳輸中,系統(tǒng)工作于ISM頻段,有125個可選頻點,44.1Kbps數(shù)字音頻采樣率,16bit樣本量化級,20Hz~20kHz頻率響應(yīng),音頻輸出達到CD音質(zhì)效果,有效傳輸距離達到100m,有障礙物情況下能達到40m。
本系統(tǒng)為無線傳輸系統(tǒng)提供了一種比較實用且經(jīng)濟的解決方案,可以廣泛地應(yīng)用于無線耳機、話筒,小范圍內(nèi)的廣播、家庭影院的后置音箱、多功能會議廳、多房間無線音響系統(tǒng),無線教室教學(xué)系統(tǒng)等場合。
評論