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