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