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