單片機的外部晶振穩(wěn)定,受溫度,濕度等環(huán)境因素影響比內(nèi)部振蕩器小,精度比較高。而且當(dāng)設(shè)計需要降低功耗時,比如說便攜式儀表等,就需要外設(shè)晶振,因為內(nèi)部振蕩器不能根據(jù)需要停止,而外部晶振可以適時停止,從而進入休眠狀態(tài),降低功耗。
晶振被旁路原理
”晶振/時鐘被旁路“ 是指將芯片內(nèi)部的用于外部晶體起振和功率驅(qū)動等的部分電路和XTAL_OUT引腳斷開,這時使用的外部時鐘是有源時鐘或者其他STM32提供的CCO輸出等時鐘信號,直接單線從XTAL_IN輸入,這樣即使外部有晶體也震蕩不起來了
只有在使用外部時鐘的時候是被旁路,注意不是晶體振蕩器,也就是說當(dāng)使用外部提供的時鐘時(如使用有源振蕩器),必須設(shè)置這個控制位旁路上述內(nèi)置振蕩器;可以理解把內(nèi)部時鐘關(guān)閉,打開外部時鐘。
HSE模式配置(旁路模式)
外部時鐘源(HSE旁路)
在這個模式里,必須提供外部時鐘。它的頻率最高可達(dá)25MHz。用戶可通過設(shè)置在時鐘控制寄存器中的HSEBYP和HSEON位來選擇這一模式。外部時鐘信號(50%占空比的方波、正弦波或三角波)必須連到SOC_IN引腳,同時保證OSC_OUT引腳懸空
該模式下必須提供外部時鐘。用戶通過設(shè)置時鐘控制寄存器中的HSEBYP和HSEON位來選擇這一模式。外部時鐘信號(50%占空比的方波、正弦波或三角波)必須連到SOC_IN引腳,此時OSC_OUT引腳對外呈高阻態(tài)。
所謂HSE旁路模式,是指無需上面提到的使用外部晶體時所需的芯片內(nèi)部時鐘驅(qū)動組件,直接從外界導(dǎo)入時鐘信號。猶如芯片內(nèi)部的驅(qū)動組件被旁路了。
不過,在使用該模式時,經(jīng)常有人出現(xiàn)配置錯誤,即使用跟HSE晶體模式一樣的配置。這點在STM8/STM32應(yīng)用中都有人發(fā)生。 所幸的是使用這個旁路模式的情形不像使用外部晶體模式那么多,不然可能更多人在這里遇到麻煩
我們不妨以STM3F4系列芯片為例。
關(guān)于寄存器位上面已經(jīng)提到了,旁路模式除了配置HSEON還得配置HSEBYP位。
對于標(biāo)準(zhǔn)庫函數(shù)voidRCC_HSEConfig(uint32_t RCC_HSE)
或CUBE庫函數(shù)__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)里的相關(guān)參數(shù)可能是:RCC_HSE_ON、 RCC_HSE_Bypass或RCC_HSE_OFF的其中之一。
