英飛凌XC2336B單片機(jī)外部與內(nèi)部時(shí)鐘源的切換:基于DAVE2.1平臺(tái)
摘要:本文介紹了英飛凌公司XC2336B單片機(jī)系統(tǒng)時(shí)鐘產(chǎn)生單元的結(jié)構(gòu),以及該部分的重要組成單元——鎖相環(huán)(PLL)模塊。本文還重點(diǎn)描述了,如何在外部晶振失效的情況下,實(shí)現(xiàn)單片機(jī)外部與內(nèi)部時(shí)鐘源的切換。
關(guān)鍵詞:DAVE;Infineon;XC2336B;參考時(shí)鐘;鎖相環(huán);輸入時(shí)鐘源;壓控振蕩器
DAVE——數(shù)字應(yīng)用工程師,出自Infineon科技。它能幫我們準(zhǔn)確而快速地進(jìn)行基于Infineon8位、16位或32位單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)。由于Infineon的嵌入式控制器的寄存器的數(shù)量非常大,大約有一千多個(gè)。所以對(duì)大量寄存器的初始化是一件相當(dāng)棘手的事,而有了DAVE的平臺(tái)就能很輕松地完成這些事情。同時(shí)DAVE還可完成單片機(jī)的其它初始化工作,與Keil或、Tasking等編譯軟件實(shí)現(xiàn)鏈接,輕松完成嵌入式系統(tǒng)的軟件開發(fā)工作。
XC2336B是Infineon的16位微控制器XC2000家族中的一員,它將功能和性能都得到擴(kuò)展的C166SV2內(nèi)核、功能強(qiáng)大的片上外設(shè)子系統(tǒng)和各種片上存儲(chǔ)器進(jìn)行了完美結(jié)合。執(zhí)行速度更快、穩(wěn)定性更好、操作更簡(jiǎn)單。
1 XC2336B單片機(jī)的時(shí)鐘產(chǎn)生
XC2336B單片機(jī)時(shí)鐘產(chǎn)生單元(CGU)可非常靈活的產(chǎn)生單片機(jī)所需的時(shí)鐘。通過鎖相環(huán)(PLL),時(shí)鐘產(chǎn)生單元(CGU)可將低頻外部時(shí)鐘轉(zhuǎn)換為高頻系統(tǒng)時(shí)鐘,無需外部直接產(chǎn)生高頻時(shí)鐘。時(shí)鐘產(chǎn)生單元(CGU)由時(shí)鐘發(fā)生器和時(shí)鐘控制單元(CCU)構(gòu)成。
XC2336B單片機(jī)帶有5 MHz的內(nèi)部時(shí)鐘源,可以在無外部時(shí)鐘信號(hào)的情況下產(chǎn)生系統(tǒng)時(shí)鐘(fsys)。該內(nèi)部時(shí)鐘源位于鎖相環(huán)(PLL)單元中,通過對(duì)該單元的合理設(shè)置,即可完成該單片機(jī)的無晶振工作。但由此產(chǎn)生的系統(tǒng)時(shí)鐘(fsys)受溫度影響很大,時(shí)鐘的精度不高,適合在簡(jiǎn)單的應(yīng)用中使用。因此,常用的產(chǎn)生系統(tǒng)時(shí)鐘 (fsys)的方法是,由高精度振蕩器電路(OSC_HP)驅(qū)動(dòng)一個(gè)外部晶振,產(chǎn)生的時(shí)鐘信號(hào)送入鎖相環(huán)(PLL)倍頻后產(chǎn)生系統(tǒng)時(shí)鐘(fsys)。振蕩器電路包含一個(gè)反相放大器,以XTAL1為輸入、XTAL2為輸出。
在某些使用環(huán)境中,由于震動(dòng)等原因,外部晶振有可能損壞。但是,在這種情況下,又不希望單片機(jī)處于死機(jī)狀態(tài),希望單片機(jī)能夠發(fā)出一些報(bào)警信號(hào),并能完成一些簡(jiǎn)單功能。那么,能否讓單片機(jī)自動(dòng)切換為內(nèi)部時(shí)鐘源工作呢?答案是肯定的。也就是要讓單片機(jī)在正常狀態(tài)下以高精度系統(tǒng)時(shí)鐘運(yùn)行,在外部晶振失效時(shí)以內(nèi)部時(shí)鐘源產(chǎn)生的系統(tǒng)時(shí)
鐘運(yùn)行,而且這兩個(gè)系統(tǒng)時(shí)鐘的值是一樣的。
要完成XC2336B單片機(jī)外部與內(nèi)部時(shí)鐘源的切換,最主要的設(shè)置是對(duì)鎖相環(huán)(PLL)的設(shè)置。因此我們先介紹一下XC2336B單片機(jī)的鎖相環(huán)(PLL)。
2 鎖相環(huán)PLL組成以及它的三種工作模式
1)PLL由壓控振蕩器(VCO)和反饋通路組成。反饋通路上的分頻器(N分頻)對(duì)VCO頻率分頻,得到的結(jié)果和外部經(jīng)P分頻處理的參考頻率進(jìn)行比較。相位檢測(cè)電路根據(jù)這兩個(gè)時(shí)鐘信號(hào)的差值相應(yīng)控制VCO頻率(fVCO)。PLL鎖相檢測(cè)單元監(jiān)控并指示該狀態(tài)。相位檢測(cè)邏輯繼續(xù)監(jiān)控這兩個(gè)時(shí)鐘信號(hào),如有需要?jiǎng)t調(diào)整VCO時(shí)鐘。PLL輸出時(shí)鐘fPLL由VCO時(shí)鐘經(jīng)K2分頻產(chǎn)生、或由振蕩器時(shí)鐘經(jīng)K1分頻產(chǎn)生。
2)正常模式下,參考頻率fR經(jīng)P分頻、N倍頻和K2分頻產(chǎn)生PLL時(shí)鐘:
3)預(yù)分頻模式下,參考頻率fR經(jīng)K1分頻產(chǎn)生PLL時(shí)鐘:
4)未鎖相模式下,PLL以壓控振蕩器(VCO)基頻fVCObase工作,fVCObase經(jīng)K2分頻產(chǎn)生PLL時(shí)鐘:
3 實(shí)現(xiàn)外部與內(nèi)部時(shí)鐘源切換的步驟
1)DAVE中的有關(guān)系統(tǒng)時(shí)鐘的設(shè)定
先設(shè)為使用8 MHz的外部時(shí)鐘源,最終的系統(tǒng)時(shí)鐘頻率fsys=80 MHz。系統(tǒng)時(shí)鐘的輸出管腳在調(diào)試完成后應(yīng)該關(guān)閉,防止干擾產(chǎn)生。
2)在由DAVE和Keil生成的C語言文件中找到MAIN_vChangeFreq()函數(shù),它就是鎖相環(huán)(PLL)的配置函數(shù)。通過對(duì)該函數(shù)的修改,就可以實(shí)現(xiàn)外部與內(nèi)部時(shí)鐘源的切換。
A、該函數(shù)初始的程序流程圖如下:
在這種狀態(tài)下,一旦外部晶振失效,CPU將處于死機(jī)狀態(tài),無任何信號(hào)輸出。
B、增加用戶函數(shù)后,能夠?qū)崿F(xiàn)時(shí)鐘源切換的函數(shù)MAIN_vChangeFreq()的流程圖
在這種狀態(tài)下,一旦外部晶振失效,CPU將執(zhí)行用戶函數(shù),使CPU能夠利用5MHz的內(nèi)部時(shí)鐘生成80 MHz的系統(tǒng)時(shí)鐘。
3)上個(gè)流程圖中提到的用戶函數(shù)代碼如下:
函數(shù)說明:在外部時(shí)鐘源失效的情況下,使fR來自于內(nèi)部時(shí)鐘源,PLL由上電基礎(chǔ)模式(Fsys=10 MHz)或VCO預(yù)分頻模式換到VCO正常模式,返回Error值
4 結(jié)束語
通過對(duì)由DAVE和Keil生成的MAIN_vChangeFreq()函數(shù)的修改,實(shí)現(xiàn)了單片機(jī)在正常狀態(tài)下以高精度系統(tǒng)時(shí)鐘運(yùn)行,在外部晶振失效時(shí)以內(nèi)部時(shí)鐘源產(chǎn)生的系統(tǒng)時(shí)鐘運(yùn)行的工作模式。