基于SPCE061A的車載DVD播放器設(shè)計與實現(xiàn)
摘要:介紹了基于凌陽單片機SPCE061A的車載多碟DVD播放器的硬件結(jié)構(gòu)設(shè)計和系統(tǒng)軟件設(shè)計,詳細(xì)闡述了MCU與DVD多碟碟盒(CDC)之間的通信以及聲音控制器的軟件實現(xiàn),同時還分析了該設(shè)計方案的獨特方面。本設(shè)計方案現(xiàn)場測試結(jié)果令人滿意。
關(guān)鍵字:車載DVD播放器;SPCE061A;微控制器
1 引言
近幾年來,我國汽車產(chǎn)業(yè)發(fā)展迅猛,汽車相關(guān)的電子產(chǎn)品市場日趨龐大。車載DVD作為新一代汽車影音市場消費潮流的代表,發(fā)展前景相當(dāng)廣闊。目前在中國銷售的汽車影音系統(tǒng)以外資品牌居多,國內(nèi)品牌較少。因此,研究并開發(fā)出一套有自主特色的車載DVD控制系統(tǒng),有其實際應(yīng)用價值。本文為此設(shè)計并實現(xiàn)一套基于凌陽單片機SPCE061A的車載多碟DVD播放器。
2 系統(tǒng)硬件
本文介紹的車載多碟DVD系統(tǒng),其硬件結(jié)構(gòu)圖如圖1所示:虛線右方為車載多碟DVD播放器的硬件結(jié)構(gòu)框圖,它以凌陽16位單片機SPCE061A為核心,集成了DVD控制模塊、FM/AM收音模塊、聲音控制模塊、LCD顯示模塊、鍵盤模塊以及紅外遙控處理模塊;虛線左方為多碟DVD機盒,它受控于DVD播放器,負(fù)責(zé)音/視頻解碼,提供音頻信號以及PAL/NTSC制式的視頻信號,實時返回當(dāng)前播放信息。
接下來介紹一下組成DVD播放器系統(tǒng)的幾個主要功能模塊。
2.1 微控制器SPCE061A[1]
SPCE061A是凌陽科技推出的一款16位結(jié)構(gòu)的微控制器。它功耗小,系統(tǒng)處于備用狀態(tài)(睡眠狀態(tài))時的耗電僅為2μA/3.6V;內(nèi)置2K字SRAM和32K字的FLASH;2個16位可編程定時器/計數(shù)器;2個10位DAC(數(shù)/模轉(zhuǎn)換)輸出通道;2個16位通用可編程輸入/輸出端口IOA和IOB;豐富的中斷資源:定時器A/B中斷、時基中斷、2個外部中斷以及觸鍵喚醒中斷;7通道10位電壓模/數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模/數(shù)轉(zhuǎn)換器;具備串行設(shè)備接口(SIO);可通過鎖相環(huán)PLL振蕩器選擇系統(tǒng)時鐘信號;低電壓復(fù)位功能和低電壓檢測功能;WatchDog功能等。與其它單片機相比,SPCE061A是一款資源豐富、功能強大、集成度高的微控制器,采用此款單片機作為本系統(tǒng)的微控制器具有較高的性價比。
2.2 面板模塊
包括按鍵電路和紅外接收電路兩部分,其中鍵盤部分共有16個用戶按鍵。為了合理利用SPCE061A的I/O端口資源和8路A/D資源,這里采用電阻陣列電路,當(dāng)不同按鍵按下時得到不同的電壓,并通過兩路A/D (IOA2和IOA3)來采集按鍵的電壓信號。由于部分按鍵具有長按/短按復(fù)用功能,因此設(shè)置一路A/D專門負(fù)責(zé)采集短按鍵信號,另一路A/D負(fù)責(zé)采集具有復(fù)用功能的按鍵信號,根據(jù)A/D轉(zhuǎn)換得到的電壓值,查表判別出對應(yīng)的功能鍵值。
本系統(tǒng)的紅外遙控碼采用UPD6122編碼方式,即引導(dǎo)碼由一個9ms 的低電平和一個4.5ms 的高電平構(gòu)成,緊跟引導(dǎo)碼的是8位系統(tǒng)碼、8位系統(tǒng)反碼、8位功能碼以及8位功能碼的反碼。紅外接收電路將接收到的紅外信號經(jīng)過光電轉(zhuǎn)換、解調(diào)以及整形,最終得到脈沖數(shù)據(jù)。連接紅外碼數(shù)據(jù)的IOB3(外部中斷2)在常態(tài)下為高電平輸入狀態(tài)。當(dāng)脈沖數(shù)據(jù)到達(dá)時,產(chǎn)生下降沿觸發(fā)MCU外部中斷2,這時啟動定時器B開始接收串行遙控數(shù)據(jù)。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
2.3 聲音控制模塊
聲音控制模塊分為聲音控制器與功率放大器兩部分,其中聲音控制器的輸出信號輸入到功率放大器進(jìn)行放大。本設(shè)計采用Philips公司的TEA6320[2]芯片作為聲音處理控制芯片。這是一款適用于車載音響電路的具有高保真度的聲音衰減控制電路,通過I2C總線控制實現(xiàn)立體聲預(yù)放大功能。它最多可有4路雙聲道的聲音源輸入和1路單聲道的聲音源輸入,本系統(tǒng)共有三路聲音源:DVD聲音源、收音聲音源和麥克風(fēng)輸入。
功率放大器選用TDA7384A[3]芯片。該芯片適用于車載音響放大電路,能放大4路信號,具有失真小、輸出噪聲低、大功率輸出(每路通道的功率可達(dá)35W/4Ω)等特點。此外,管腳ST-BY和MUTE可控制功率放大器的工作狀態(tài):當(dāng)ST-BY和MUTE都為高電平,則功率放大器處于工作模式;當(dāng)ST-BY和MUTE都為低電平,則功率放大器停止工作。
2.4 LCD顯示模塊
采用芯片CS1685[4]作為液晶顯示的驅(qū)動電路,直接驅(qū)動156段的LCD。本設(shè)計中將SPCE061A的串行設(shè)備輸入輸出端口SIO作為MCU與LCD之間的數(shù)據(jù)通信接口,以字節(jié)為單位連續(xù)發(fā)送顯示數(shù)據(jù)。其中IOB0為時鐘端口(SCK),IOB1為數(shù)據(jù)端口(SDA),分別與芯片的63腳CL(同步時鐘)和64腳DI(傳輸數(shù)據(jù))直接相連。
3 系統(tǒng)軟件
3.1 軟件結(jié)構(gòu)設(shè)計
一個系統(tǒng)性能的好壞跟系統(tǒng)軟件的整體設(shè)計密不可分。為了實現(xiàn)系統(tǒng)功能的穩(wěn)定性和易擴展性,本系統(tǒng)軟件設(shè)計遵循以下幾點編程原理:
(1)消息驅(qū)動的編程模式。整個軟件系統(tǒng)由主程序、中斷服務(wù)程序和功能子程序三大部分組成,其中中斷服務(wù)程序僅負(fù)責(zé)設(shè)置標(biāo)志位,向主程序的消息隊列添加相應(yīng)信息。主程序若檢測到標(biāo)志位,則執(zhí)行對應(yīng)功能。采用這種編程模式,大大減少了中斷處理程序占用的時間,避免發(fā)生事件沖突,提高了系統(tǒng)響應(yīng)的及時性和精確性。
(2)各個功能子程序模塊化。功能塊與功能塊之間的信息通過入口參數(shù)、出口參數(shù)來傳遞,使模塊間具有很好的獨立性。
(3)主程序中,每次循環(huán)結(jié)束時清除看門狗計數(shù)器WatchDog,防止因異常情況而發(fā)生程序“跑飛”的現(xiàn)象。系統(tǒng)主程序設(shè)計流程框圖如圖2所示。
圖2 系統(tǒng)主程序流程框圖
SPCE061A的系統(tǒng)時鐘頻率由32768Hz的實時時鐘經(jīng)過PLL倍頻電路產(chǎn)生,通過對寄存器P_SystemClock單元編程可選擇不同的系統(tǒng)時鐘頻率和CPU時鐘頻率。由于默認(rèn)狀態(tài)下系統(tǒng)時鐘頻率fosc=24.576 MHz,并且上電復(fù)位或系統(tǒng)從睡眠狀態(tài)被喚醒后,默認(rèn)的CPU時鐘頻率為fosc/8。考慮到系統(tǒng)的穩(wěn)定性,本設(shè)計方案選用24.576 MHz作為系統(tǒng)時鐘頻率,fosc/8作為CPU時鐘頻率。
3.2 MCU與多碟DVD機之間的通信
車載多碟DVD播放器中,如何實時控制DVD機的播放/暫停、停止、選取上/下碟等功能是本設(shè)計的核心部分。DVD機與MCU之間的通信數(shù)據(jù)采用脈寬調(diào)制(PWM)波形,根據(jù)脈沖不同的寬度決定是“0”或是“1”。為了及時、準(zhǔn)確地發(fā)送控制碼,選擇采用外部中斷1(IOB2)和定時器A,實現(xiàn)控制碼字的發(fā)送跟接收。發(fā)送控制字時,根據(jù)當(dāng)前比特數(shù)據(jù)是“0”還是“1”,設(shè)置BUS電平為低或高,同時設(shè)置定時器的初始值,啟動定時器。由于DVD機播放時,每隔1秒左右返回播放信息,如當(dāng)前碟號、當(dāng)前播放時間等。為了及時收到返回的信息,利用外部中斷1下降沿觸發(fā)方式,當(dāng)有信息返回時,BUS線由常態(tài)高電平變?yōu)榈碗娖剑a(chǎn)生一個外部中斷請求信號。MCU檢測到外部中斷信號,則開始接收數(shù)據(jù)。接收數(shù)據(jù)時,定時器用來計量相鄰比特的間隔,判斷是否接收超時。若在接收數(shù)據(jù)過程中進(jìn)入定時器中斷,則表示接收超時。
3.3 聲音控制器程序設(shè)計
由于SPCE061A無I2C總線接口,所以分別用兩個I/O口模擬I2C總線的數(shù)據(jù)線SDA和時鐘線SCL,對TEA6320寫入不同的控制字,實現(xiàn)音量控制、低音控制、高音控制、左右平衡/前后平衡控制、靜音控制和響度開關(guān)控制等功能。I2C總線寫入格式如圖3所示,其中該芯片的從地址MAD為80H;子地址SAD從00H到07H,對應(yīng)的寄存器依次為音量/響度(Vol/Loud)控制寄存器、前右聲道(FFR)控制寄存器、前左聲道(FFL)控制寄存器、后右聲道(FRR)控制寄存器、后左聲道(FRL)控制寄存器、低音(Bass)控制寄存器、高音(Treble)控制寄存器和聲道選擇(Switch)控制寄存器。SAD后的一個字節(jié)是寫入相應(yīng)寄存器的控制字。TEA6320提供三種靜音方式:一種是利用管腳12實現(xiàn)硬件靜音,一種是利用Switch控制字的最高位GMU直接實現(xiàn)整體靜音,還有一種是由Vol/Loud控制字的最高位ZCM和GMU組合來實現(xiàn)靜音功能。最后一種靜音方式可實現(xiàn)直接靜音或過零點靜音。
圖3 TEA6320 I2C總線控制字格式
各個功能的軟件實現(xiàn)原理基本相同,這里只介紹TEA6320的初始化。圖4是初始化的軟件流程圖。由于TEA6320在寫入的數(shù)據(jù)超過1個字節(jié)時,子地址能自動遞增,所以只要SAD取00H,8個控制字依次寫入對應(yīng)的控制寄存器即可完成。特別要注意,每次電路上電復(fù)位后,均要對TEA6320的8個寄存器初始化。初始化完畢,后續(xù)寫入的控制字才會有效。
圖4 TEA6320初始化軟件流程
4 系統(tǒng)設(shè)計方案的獨特性
4.1 節(jié)能設(shè)計
任何電子產(chǎn)品,節(jié)約能源永遠(yuǎn)是設(shè)計者追求的目標(biāo)。利用SPCE061A的IOA0~IOA7觸鍵喚醒功能,設(shè)置IOA2、IOA3作為采集鍵盤電壓信號的兩路A/D。若在一定時間間隔內(nèi)沒有按鍵按下,則關(guān)閉系統(tǒng)時鐘(PLL振蕩器),轉(zhuǎn)入睡眠狀態(tài)。若系統(tǒng)接收到喚醒信號,則接通PLL振蕩器,同時CPU響應(yīng)喚醒事件的處理。觸鍵喚醒的設(shè)計方法降低了系統(tǒng)的功耗。
4.2 電源檢測
由于車載電子工作環(huán)境的特殊性,供應(yīng)的電源往往不穩(wěn)定,尤其是電壓過高時對車載電子器件的損傷較大。利用SPCE061A低電壓復(fù)位(LVR)和低電壓監(jiān)測(LVD)功能,當(dāng)檢測到電源不穩(wěn)或電壓不在工作范圍內(nèi)時,顯示屏提示電源錯誤的信息,系統(tǒng)進(jìn)入關(guān)機模式,避免由于電源不穩(wěn)造成器件的損壞。
4.3 軟件更新
凌陽單片機SPCE061A內(nèi)嵌有32K字的FLASH ROM,只要在電路面板上引出程序下載接口,可隨時實現(xiàn)軟件更新,軟件升級相當(dāng)方便。
4.4 實時音量顯示
不同于市面上很多產(chǎn)品采用的音量模擬顯示方式,本文介紹的系統(tǒng)能真實地反映出當(dāng)前音量。通過對左右聲道音量的電壓采集以及AD轉(zhuǎn)換,在LCD的音量指示區(qū)實時準(zhǔn)確地顯示音量大小。
5 結(jié)束語
本文介紹的車載多碟DVD播放器系統(tǒng)實現(xiàn)了設(shè)計模塊化、通用化,同時亦具有自身的特色。目前整個系統(tǒng)已經(jīng)順利通過測試階段,現(xiàn)場測試結(jié)果令人滿意。
參考文獻(xiàn)
[1] 羅亞非等 凌陽16位單片機應(yīng)用基礎(chǔ) 北京航空航天大學(xué)出版社 2003
[2] Data Sheet of TEA6320 Philips Semiconductors Dec 1995
[3] Data Sheet of TDA7384A STMicroelectronic Mar 1999
[4] Data Sheet of CS1685 無錫華潤矽科微電子有限公司 2003