基于MC68HC908KX2的ICG模塊的應(yīng)用研究
引言
從8位單片機誕生至今,已近30年,由于芯片技術(shù)的發(fā)展使得單片機處理速度越來越快。MPU發(fā)展中表現(xiàn)出來的速度是以時鐘頻率越來越高為標志的,而單片機則有所不同,為提高單片機抗干擾能力,降低噪聲,降低時鐘頻率而不犧牲運算速度是單片機技術(shù)發(fā)展的追求。一些8051單片機兼容廠商改善了單片機的內(nèi)部時序,在不提高時鐘頻率的條件下,使運算速度提高了很多,Motorola單片機則使用了鎖相環(huán)技術(shù)或內(nèi)部倍頻技術(shù)使內(nèi)部總線速度大大高于時鐘產(chǎn)生器的頻率。例如MC68HC08單片機使用4.9 MHz外部振蕩器而內(nèi)部時鐘達32 MHz,而M68K系列32位單片機使用32 kHz的外部振蕩器頻率可實現(xiàn)內(nèi)部時鐘達16 MHz以上。Motorola單片機突出的特點之一是在同樣速度下所用的時鐘頻率較Intel類單片機低很多,因而使得高頻噪聲低,抗干擾能力強,更適合用于工控領(lǐng)域及惡劣的環(huán)境。而作為8位單片機家族中的一員,MC68HC908KX2提供了ICG(內(nèi)部時鐘發(fā)生器)模塊,無需外接任何時鐘產(chǎn)生器件的情況下,通過軟件設(shè)置即可實現(xiàn)所需的時鐘信號。
1 ICG模塊的特點及設(shè)置方法
在無需任何外部元件情況下,MC68HC908KX2芯片的ICG模塊能夠給微控制器提供穩(wěn)定的時鐘源,ICG模塊通過CGMXCLK引腳為系統(tǒng)監(jiān)控模塊、低電壓禁止模塊和其他模塊提供振蕩時鐘輸出。ICG模塊產(chǎn)生的時鐘信號也提供給系統(tǒng)集成模塊,用于產(chǎn)生總線時鐘。此外,ICG模塊還產(chǎn)生時基時鐘,該信號被用于時基模塊。
1.1 ICG模塊的特點
a) 可選的外部時鐘信號發(fā)生器,一個引腳接外部時鐘源或兩個引腳接晶振,端口引腳可實現(xiàn)多路轉(zhuǎn)換。
b) ICG以正常頻率(307.2±25%)kHz的整數(shù)倍輸出可編程的頻率。
c) 頻率調(diào)整寄存器可以2%變化量對頻率進行調(diào)整。
d) 總線時鐘通過軟件選擇內(nèi)部或外部時鐘源,總線頻率范圍是:(76.8±25%)kHz~(9.75±25%)MHz,增加率為76.8 kHz。
e) 對內(nèi)部和外部時鐘源都可實現(xiàn)時鐘監(jiān)控。
1.2 ICG模塊的設(shè)置方法
ICG模塊通過設(shè)置可產(chǎn)生(307.2±25%)kHz的低頻時基時鐘信號IBASE,然后通過設(shè)定ICG模塊的頻率倍數(shù)寄存器(ICGMR)的數(shù)值,得到系統(tǒng)所需的時鐘信號ICLK。
使用內(nèi)部時鐘模塊通過以下步驟進行:
1) 轉(zhuǎn)換時鐘源
在兩個時鐘源都處于使能和穩(wěn)定狀態(tài)時,可以從一個時鐘源轉(zhuǎn)到另一個時鐘源。轉(zhuǎn)換過程為:使能所要采用的時鐘源;等待該時鐘源穩(wěn)定;轉(zhuǎn)換時鐘;禁止前一個時鐘源。該實現(xiàn)過程的匯編代碼為(以從內(nèi)部時鐘源轉(zhuǎn)到外部為例):
2) 使能時鐘監(jiān)控電路
在許多應(yīng)用中,需要時鐘監(jiān)控電路在某個時鐘源未激活的狀態(tài)下通知系統(tǒng)自動使用另一個已經(jīng)激活的時鐘源,避免使系統(tǒng)運行發(fā)生故障。使用時鐘監(jiān)控模塊的前提是ECGON和ICGON位都置1,其設(shè)置過程為:使能可用的時鐘源;等待兩個時鐘源穩(wěn)定;如果需要,轉(zhuǎn)換時鐘源;使能時鐘監(jiān)控;使能時鐘監(jiān)控中斷。具體實現(xiàn)的代碼如下:
3) 量化數(shù)控振蕩器的誤差
數(shù)控振蕩器主要包括二進制權(quán)值分配器、可變延遲時間的振蕩環(huán)、振蕩環(huán)精確調(diào)整電路3個子模塊。以上每個模塊都影響內(nèi)部時鐘的時鐘周期,因為這些模塊受數(shù)字濾波器的輸出寄存器DDIV和DSTG的控制。通過對這兩個寄存器的設(shè)置,可實現(xiàn)對輸出時鐘信號ICLK的值進行相應(yīng)的調(diào)整。
4) 改變內(nèi)部時鐘頻率
某些情況下可能需要改變內(nèi)部時鐘頻率。例如,如果系統(tǒng)復(fù)位時不能提供正確的頻率,或者在低電壓模式下系統(tǒng)時鐘變慢,必須通過變程修改內(nèi)部時鐘倍頻因子N的值改變內(nèi)部時鐘的頻率。這時需注意,改變內(nèi)部時鐘頻率之前必須先禁止時鐘監(jiān)控模塊。改變內(nèi)部時鐘頻率的步驟如下:通過讀CMF位的值確定是否存在時鐘監(jiān)控中斷;關(guān)閉時鐘監(jiān)控模塊;如果需要,轉(zhuǎn)換到外部時鐘源;改變N值;如果需要,轉(zhuǎn)換回到內(nèi)部始時鐘源;如果需要,打開時鐘監(jiān)控模塊。
5) 開始正確頻率設(shè)置的時間
由于ICLK的值取決于DCO的輸出值,當(dāng)某些操作條件發(fā)生改變時,內(nèi)部時鐘不能馬上穩(wěn)定下來,ICLK將暫時以不正確的時鐘工作。ICLK需要一定的調(diào)整時間才能達到正確時鐘周期。達到正確時鐘周期所需要的時間為:
式中:τ1,τ2分別為調(diào)整前、后的時鐘周期值,令τ15=|44N(τ1-τ2)| ,則常見的時鐘周期調(diào)整表見表1。
6) 調(diào)整內(nèi)部時鐘發(fā)生器的頻率
由于數(shù)據(jù)處理、電壓和溫度等原因未經(jīng)過調(diào)整的低頻時基時鐘信號IBASE將會發(fā)生±25%的頻率波動,通過改變內(nèi)部時鐘電路的比較電容器的值可以將頻率波動值限定在±2%的范圍內(nèi)。設(shè)置TRIM寄存器的值就可以改變比較電容器的值,TRIM寄存器的默認值是$80即128個單位,對應(yīng)的默認電容值為512,每增加或減少1個單位,可對未調(diào)整頻率實現(xiàn)±0.195%的調(diào)整。
2 寶馬汽車故障診斷與復(fù)位子系統(tǒng)設(shè)計
由于本系統(tǒng)檢測范圍包括對寶馬汽車大部分部件的檢測及故障恢復(fù),整個系統(tǒng)構(gòu)成較復(fù)雜,因此,在本文中為了說明MC68HC68HC908KX2單片機ICG模塊的應(yīng)用,選擇本系統(tǒng)的一個子系統(tǒng)加以說明。
2.1 硬件設(shè)計
本子系統(tǒng)實現(xiàn)的功能為機油保養(yǎng)歸零、氣囊故障修復(fù)及運行時間歸零。硬件主控電路如圖1所示。
控制核心采用8位單片機MC68HC908KX2芯片,通過串行接口線與汽車內(nèi)的CPU進行通信,并用通用I/O口PTA和PTB分別實現(xiàn)鍵盤輸入和輸出顯示功能。由于該單片機采用5 V供電,而汽車電路工作電壓為12 V,所以本子系統(tǒng)需要設(shè)計專門的接口電路實現(xiàn)與汽車的通信,電路見圖2。圖中,RXD和TXD分別連接單片機的串行輸入與輸出端,汽車的串行輸入、輸出數(shù)據(jù)通過單K線傳送給單片機。
2.2 軟件設(shè)計
利用指令不斷掃描鍵盤接口線(PTA1,PTA2),若按下的是通信鍵則從固定存儲區(qū)取固定的oil resct編碼發(fā)送出去,同時在發(fā)送數(shù)據(jù)期間通信指示燈不停閃爍3 s,如果按下的是功能選擇鍵,則time inspection,odo inspection,oil reset指示燈依次循環(huán)點亮,選擇相應(yīng)功能,等待通信鍵按下,如果按下了通信鍵,就發(fā)送相應(yīng)清故障數(shù)據(jù)。
在程序中,根據(jù)本系統(tǒng)的實際需要設(shè)置:ICGCR、ICGMR、ICGTR及系統(tǒng)配置寄存器CONFIG的值。系統(tǒng)主要源代碼為:
3 結(jié)束語
本文介紹了新型單片機芯片MC68HC908KX2內(nèi)部時鐘模塊在寶馬汽車診斷控制系統(tǒng)中的應(yīng)用,由于采用了內(nèi)部時鐘模塊,省略了外部時鐘電路,從而大大簡化了系統(tǒng)的硬件設(shè)計。實踐證明,在惡劣電磁環(huán)境中系統(tǒng)工作正常,抗干擾性能力得到很大提高,測得的汽車故障代碼數(shù)據(jù)準確可靠。
評論