朱 巍,周 龍
(武漢輕工大學(xué)電氣與電子工程學(xué)院,湖北武漢430023)
大多數(shù)傳統(tǒng)音箱體積較大,不能隨身攜帶,又需要電源支持,要用光盤作為載體播放歌曲,但是容量卻不大,大部分產(chǎn)品能夠播放的格式也僅限于MP3,隨著電子技術(shù)的迅速發(fā)展,客戶對音響提出了功能多樣化、操作人性化的更高要求[1]。功能單一的音箱已經(jīng)無法滿足人們的日常需求。新型多功能藍(lán)牙音箱的出現(xiàn),徹底打破了人們對音箱的認(rèn)識。
設(shè)計采用AU6210作為主控芯片,是多應(yīng)用、高性能音頻SOC芯片,片上系統(tǒng)基于高性能增強(qiáng)型51 MCU運(yùn)行。AU6210具有增強(qiáng)型8051內(nèi)核,支持USB2.0,有兩組MMC/SD插口可以讀取MP3格式及FAT16或者FAT32文件系統(tǒng),通過I2C接口控制USB/SD控制器,將其中的MP3文件送至內(nèi)置MP3解碼器進(jìn)行解碼[2],支持多設(shè)備掉電記憶,IO口復(fù)用,集成FM Receiver等等強(qiáng)大功能。其功能示意圖如圖1所示。
將AU6210與另一種主控芯片AU7860對比,內(nèi)部集成有FM模塊是AU6210的一大優(yōu)勢;時鐘晶體采用單32.768 kHz晶體,相對于AU7860的12 MHz而言有著EMI輻射低的優(yōu)勢;與此同時,AU6210支持軟、硬關(guān)機(jī),15μA超低功耗RTC,換電池不掉記憶,低功耗充電指示,耳機(jī)輸出免電容,Line-In高壓通道以及8路觸摸按鍵等功能,而這些都是AU7860所無法做到的。
圖1 AU6210功能模塊示意圖
需要使用者注意的是AU6210的OTP存儲容量只有32 kB,比AU7860的64 kB小一倍,需要程序員在編寫程序時更加注重結(jié)構(gòu)的優(yōu)化。
AU6210主控模塊非常的人性化,可以根據(jù)客戶的不同要求,設(shè)計出多種多樣的音箱,大部分功能是可以根據(jù)需求自由組合任意增刪的。當(dāng)確定了需要的模塊功能后,就可以進(jìn)行硬件電路設(shè)計了。系統(tǒng)所有功能組合模塊如圖2所示。
圖2 系統(tǒng)功能組合模塊示意圖
1.2.1 電源模塊
本設(shè)計在電源方面的核心是如何最大限度的在不影響使用品質(zhì)的前提下,降低功耗、提高電池的續(xù)航時間。
AU6210芯片內(nèi)置LDO模塊,只需要提供一組LDO輸入電源(3.35—5.5 V)。在 LDO輸入端輸入電壓為5 V時,LDO最大輸出電流為150 mA,功耗相對很低。與此同時,AU6210內(nèi)置低功耗RTC硬件模塊,為系統(tǒng)提供實(shí)時時鐘、鬧鐘以及休眠模式和Power Down模式下的喚醒功能,在不使用時,MCU將停止工作,進(jìn)入Power Down模式,低功耗運(yùn)行時鐘鬧鐘,隨時響應(yīng)喚醒信號。進(jìn)入藍(lán)牙模式時MCU會啟動藍(lán)牙模塊,退出藍(lán)牙模式時藍(lán)牙模塊將進(jìn)入待機(jī)狀態(tài)。
1.2.2 按鍵模塊
本設(shè)計按鍵是通過電壓檢測端口來實(shí)行按鍵的區(qū)分,其原理如圖3所示。
圖3 按鍵模塊原理圖
每個按鍵對應(yīng)串聯(lián)的電阻值各不相同,當(dāng)按下按鍵時,就會將檢測到的電壓值傳送給MCU,MCU就會通過該值判斷按下的是哪個按鍵,從而執(zhí)行與之相對應(yīng)的操作。
AU6210在按鍵模塊的優(yōu)勢在于可以同時擁有兩組AD按鍵,用兩個GPIO端口進(jìn)行控制,每組十一個按鍵,一共二十二個按鍵可以滿足各種復(fù)雜的功能需求。而AU7860只有一組AD按鍵。
1.2.3 插卡模塊
此模塊便是便攜式多媒體音箱最早出現(xiàn)時的核心功能,在插入SD/MMC卡、U盤等存儲有音樂文件的存儲設(shè)備后,音箱便可以自動開始播放能夠識別的音樂文件。其優(yōu)點(diǎn)就是不受自身存儲容量限制。
當(dāng)然,現(xiàn)在的音箱插卡模塊不僅僅只有讀取的功能,當(dāng)外接USB數(shù)據(jù)線之后,音箱可以扮演讀卡器的角色,可以直接更新SD卡、U盤等插在音箱上存儲設(shè)備的數(shù)據(jù);音箱也可以像手機(jī)一樣,插上USB之后直接開始為電池充電。其自帶的聲卡也讓音質(zhì)更優(yōu)秀。
1.2.4 藍(lán)牙模塊
本設(shè)計藍(lán)牙模塊要將藍(lán)牙芯片state引腳、電源引腳、多功能引腳以及按鍵控制引腳對應(yīng)接入主控AU6210,以實(shí)現(xiàn)對其控制。其原理圖如圖4所示。
圖4 藍(lán)牙連接主控示意圖
藍(lán)牙模塊的引入使得本文設(shè)計的音箱在實(shí)用性與多樣性方面更上一層樓。其一是更加優(yōu)化了客戶體驗音箱的快感:當(dāng)音箱切換到藍(lán)牙模式時,會自動回連上次連接的手機(jī),當(dāng)連接成功后,便可播放手機(jī)中的音樂并實(shí)現(xiàn)了小范圍的遙控式雙向操作。不僅可以直接在手機(jī)中控制媒體音樂的播放,同時也可以用音箱的按鍵來控制。其二是本文設(shè)計的音箱完全可以替代藍(lán)牙耳機(jī):該音箱實(shí)現(xiàn)了回?fù)茈娫?、接聽電話、拒接電話的?qiáng)大功能,自帶MIC可以即時通話。
1.2.5 收音機(jī)模塊
本設(shè)計采用的是E8035收音機(jī)模塊,這一類型的收音機(jī)模塊在單一芯片上高度集成了所有關(guān)鍵射頻組件,只需少量的配套原件便可完成功能,節(jié)約了PCB板空間,并且自身價格低廉,極大的降低了生產(chǎn)成本[3]。
1.2.6 LED 顯示模塊
AU6210的IO內(nèi)部帶有下拉電流源,可以免電阻直接驅(qū)動LED發(fā)光二極管,或者LED數(shù)碼管。兩個下拉電流源分別為1.7 mA和2.4mA。一共可以有 0 mA、1.7 mA、2.4 mA 和 4.1 mA 四種電流源強(qiáng)度可以調(diào)節(jié)。
AU6210最多可以驅(qū)動 6COM、8SEG的 LED屏,這代表著AU6210可以驅(qū)動四到六位的數(shù)字顯示和十多個圖標(biāo)顯示,功能強(qiáng)大。但是需要注意的是在外接模塊較多時要注意IO口的配置,必要時可以連接擴(kuò)展芯片,以免IO口不足,無法完成設(shè)計需求。
一個完整的多功能藍(lán)牙音箱設(shè)計只有硬件設(shè)計還不能工作,必須由燒入AU6210的程序控制系統(tǒng)的運(yùn)作。本設(shè)計系統(tǒng)軟件是采用C語言為主、匯編語言為輔,使用KeilμVision 4軟件進(jìn)行編譯,主函數(shù)是一個while循環(huán)函數(shù),其流程如圖5所示。
圖5 主函數(shù)循環(huán)圖
系統(tǒng)初始化過程在編寫程序過程中非常重要,不能忽略,主要包括系統(tǒng)時鐘、GPIO口、計時器、中斷、按鍵等外接模塊的初始化。如果忘記初始化或者初始化不徹底,那么在音箱運(yùn)行過程中可能會出現(xiàn)各種難以查找的錯誤。
系統(tǒng)初始化在開機(jī)讀取斷電記憶之后,主循環(huán)開始之前進(jìn)行,只執(zhí)行一次。以一個IO口的初始化設(shè)置為例,程序如下。
SetGpioRegBit(GPIO_A_IN,1< <0);
ClrGpioRegBit(GPIO_A_OUT,1< <0);
ClrGpioRegBit(GPIO_A_PU,1< <0);
ClrGpioRegBit(GPIO_A_PD,1< <0);
ClrGpioRegBit(GPIO_A_DS,1< <0);
AU6210一共有5組IO口,除了普通的作用外,大部分IO口具有復(fù)用功能,但是在一個時間只能有一個功能,而不能重疊。需要注意的是,所有的GPIO口都是雙向傳輸?shù)?,上電默認(rèn)都是輸入狀態(tài),內(nèi)部的上、下拉電阻通過軟件來控制,通過DS寄存器來配置強(qiáng)弱兩檔電阻值。部分GPIO內(nèi)部集成了1.7 mA和2.4 mA兩個下拉電流源驅(qū)動LED管或者LED屏,并且該驅(qū)動為免電阻直驅(qū)。
AU6210芯片中,GPIO_X_PU和GPIO_X_PD表示GPIO的上拉和下拉配置寄存器,GPIO上的電平≤1.40 V判斷為邏輯0,≥1.60 V判斷為邏輯1,設(shè)邏輯閥值約為1.5 V,針對于該值,弱上下拉折算阻值(約)為85 kΩ,強(qiáng)上拉/下拉折算阻值(約)為24 kΩ,強(qiáng)、弱兩檔通過GPIO_X_DS寄存器配置,相應(yīng)位為1時為強(qiáng)檔,X可以是任意一個GPIO口。將GPIO_B的第三口配置為帶強(qiáng)上拉的輸入端口示例如下:
SetGpioRegBit(GPIO_B_IE,1< <3);
ClrGpioRegBit(GPIO_B_OE,1< <3);
ClrGpioRegBit(GPIO_B_PU,1< <3);
ClrGpioRegBit(GPIO_B_PD,1< <3);
SetGpioRegBit(GPIO_B_DS,1< <3);
主循環(huán)是一個while函數(shù),用while(1){}使系統(tǒng)一直運(yùn)行直到得到跳出命令。在編寫程序時需要注意在任何一個死循環(huán)或者較長的循環(huán)中,一定要喂狗,以免系統(tǒng)自動重啟。部分主循環(huán)程序如下。
AU6210最多可以支持3路PWM通道同時輸出,可應(yīng)用于觸摸屏?xí)r鐘,蜂鳴器,LED呼吸效果等。其中GPIO_A[0]與GPIO_D[5]、GPIO_A[1]與GPIO_D[6]、GPIO_A[2]與 GPIO_D[7]不能同時使用。
呼吸燈主要是通過占空比調(diào)節(jié)燈光亮暗,打開PWM通道的函數(shù)為VOID PwmEnableChannel(PWM_OUT PUT_SEL PwmOutSel),對應(yīng)的將Enable換成Disable則是禁止某個通道。配置PWM通道用到VOID PwmConfigChannel(PWM_OUTPUT_SEL Pwm OutSel,BYTE ClkSel,WORD Div,WORD Duty),其中ClkSel為時鐘源選擇,一般為0∶12×106Hz或者1∶46 875 Hz,Div為分頻比,Duty為占空比。
所有代碼都是從底層調(diào)用,配置完后需立即調(diào)用PwmEnableChannel()函數(shù)方能生效。
LED屏掃描程序是測試階段用在主函數(shù)執(zhí)行之前的一段代碼,完成功能后注釋。掃描程序功能是讓數(shù)碼管按COM和SEG的順序逐一點(diǎn)亮,相對于硬件逐一導(dǎo)通的測試方式,能節(jié)約大量時間,并且提高準(zhǔn)確度。6COM、8SEG的掃描程序如下:
主控通過配置IO口的高、低電平控制藍(lán)牙的工作狀態(tài),利用中斷檢測藍(lán)牙的工作狀態(tài)。MCU通過MFB腳專門控制藍(lán)牙模塊開關(guān),進(jìn)入藍(lán)牙模式時,MCU給MFB一個持續(xù)3 s的高電平再拉低,藍(lán)牙就進(jìn)入啟動狀態(tài),再給一個持續(xù)3 s的高電平拉低則關(guān)閉藍(lán)牙。控制按鍵則是給一個200 ms的低電平再拉高則表示有按鍵按下。
STATE1和STATE2輸出信號是由高、低電平組成,有通話、配對中、配對成功、待機(jī)、播歌、播歌暫停幾種狀態(tài),不同的狀態(tài)信號不同,MCU將定期檢測來做出相應(yīng)操作。下面是一段藍(lán)牙模塊的初始化程序,配置各個IO口初始電平,切換音頻通道并開機(jī):
VER_FUNC_BIT_LOW();
WaitMs(3000);
VER_FUNC_BIT_HIGH();
VOL_PREV_BIT_HIGH();
VOL_NEXT_BIT_HIGH();
PLAY_PAUSE_BIT_HIGH();
SET_A6A7_FMIN();
InDacChannelSel(DAC_CH_FMIN_A6A7);
筆者所設(shè)計的音箱,不僅擁有收音機(jī)、MP3播放、AUX-IN、USB聲卡播放等功能,全面實(shí)現(xiàn)了多功能音箱的多媒體讀取、播放,自身還集成了藍(lán)牙耳機(jī)的功能;音箱擁有LED屏幕實(shí)時顯示音箱工作狀態(tài),使用簡單,操作便捷,按鍵清晰、簡潔,適合各類人群;PWM呼吸燈效果更是酷炫時尚,令人賞心悅目。本設(shè)計經(jīng)過試用并且實(shí)際運(yùn)用后證明完全可行,并且運(yùn)行穩(wěn)定,在此設(shè)計基礎(chǔ)上微調(diào)的成品也有許多已經(jīng)批量生產(chǎn)。
但是此設(shè)計受限于AU6210的OTP存儲空間,需要盡可能的優(yōu)化代碼,減小代碼空間,也因此不能同時連接所有模塊來運(yùn)行,這是此設(shè)計的不足之處。觸摸控制是多功能藍(lán)牙音箱將來發(fā)展的必經(jīng)途徑,藍(lán)牙音箱的發(fā)展有著良好的前景。
[1]石鑫焱,劉權(quán),曹成茂.數(shù)字車載音箱系統(tǒng)設(shè)計[J].微型機(jī)與應(yīng)用,2011,30(19):19-21.
[2]陳永降,朱維杰.基于BU9435KV的車載音箱系統(tǒng)設(shè)計[J].電子技術(shù),2008(11):18-20.
[3]肖寧,呂盼稂,王余濤,等.基于TEF6606車載收音機(jī)模塊設(shè)計[J].微型機(jī)與應(yīng)用,2010(8):32-35.