為了提高系統(tǒng)性能,同時降低功耗,MCU通常提供四種時鐘:
高速外部時鐘(HSE):由外接高頻晶振產(chǎn)生。
低速外部時鐘(LSE):由外接低頻晶振產(chǎn)生,一般為32.768kHz,用于驅(qū)動實時時鐘 (RTCCLK)。
高速內(nèi)部時鐘(HSI):由內(nèi)部高頻RC電路產(chǎn)生。
低速內(nèi)部時鐘(LSI):由內(nèi)部低頻RC電路產(chǎn)生,一般為32kHz,用于驅(qū)動獨立看門狗。
圖1. 晶振為MCU提供精準外部時鐘
這樣配置的好處是,如果采用單一時鐘,頻率高的話可能會導致性能過剩和功耗過高,頻率高則導致性能不足,滿足不了要求。多個時鐘的話可以平衡功耗和性能之間的平衡。
特此說明一下,系統(tǒng)復位后,默認初始化的是高速內(nèi)部時鐘(HSI)來提供sysclock,一般為16MHz。為了提示系統(tǒng)性能,我們需要使能外部時鐘晶振,如24MHz、32MHz等。
如果使用外部HSE的話,一般有兩種模式:
(1)外部晶體/陶瓷諧振器(HSE晶體)模式
這種模式用得比較常見,HSE晶體可以為系統(tǒng)提供較為精確的時鐘源。在時鐘控制寄存器RCC_CR中的HSERDY位用來指示高速外部振蕩器是否穩(wěn)定。在啟動時,直到這一位被硬件置’1’,時鐘才被釋放出來。HSE晶體可以通過設(shè)置時鐘控制寄存器里RCC_CR中的HSEON位被啟動和關(guān)閉。
圖2. STM32F4系列MCU時鐘模式
該時鐘源是由外部無源晶體與MCU內(nèi)部時鐘驅(qū)動電路共同配合形成,有一定的啟動時間,精度也較高,但是一定要正確使用。安全芯片
(2)外部時鐘源(HSE)旁路模式
所謂HSE旁路模式,是指使用外部晶振時,無需芯片內(nèi)部時鐘驅(qū)動組件來輔助,直接從外界導入時鐘信號,好像芯片內(nèi)部的RC振蕩器功能被旁路了。
該模式下必須提供外部時鐘,外部時鐘信號必須連到SOC_IN引腳,此時OSC_OUT引腳對外呈高阻態(tài)。不過,使用這個旁路模式的情形不像使用外部晶體模式那么多。
(3)晶振選擇舉例
以STM32F4系列MCU為例,旁路模式除了配置HSEON還得配置HSEBYP位。這里需要注意的是一定要選擇無源晶振,即石英晶體諧振器(XTAL)作為時鐘源。加密芯片
首先,為了減少時鐘輸出的失真和縮短啟動穩(wěn)定時間,晶體/陶瓷諧振器和負載電容必須盡可能地靠近振蕩器引腳,負載電容值必須根據(jù)所選擇的晶體來具體調(diào)整等細節(jié)問題。至于選擇陶瓷晶體和石英晶體,這取決于應(yīng)用電路對頻率精度和溫度穩(wěn)定性的要求。一般而言,石英晶體比陶瓷晶體的精度要高的多,頻率溫度穩(wěn)定性也要好很多。
其次,如果選擇了有源晶振(XO、TCXO等),用戶就無法選擇工作模式!由于有源晶振本身就是個完整的振蕩器件,其時鐘輸出不依賴于外部器件振蕩電路,只需要供給適當?shù)碾娫淳湍茌敵鰰r鐘,無須額外的振蕩驅(qū)動匹配電路。這時,我們只能將其配置為HSE旁路模式,而不是HSE晶體模式。低功耗MCU
另外,有源晶振價格比無源貴很多,選錯了不但浪費錢財,還限制了MCU工作模式和用戶發(fā)揮空間,需要大家引起注意。