(转载)STM8/32使用外部有源晶振的問題

不論STM8還是STM32系列的MCU,芯片復位后默認時鍾源都是內部HSI,要使用外部時鍾源HSE的話,得通過軟件對相關控制寄存器進行使能配置才行。

   如果使用外部HSE的話,一般有兩種模式:

1、外部晶體/陶瓷諧振器(HSE晶體)模式

    這種模式用得比較常見,HSE晶體可以為系統提供較為精確的時鍾源。在時鍾控制寄存器RCC_CR中的HSERDY位用來指示高速外部振盪器是否穩定。在啟動時,直到這一位被硬件置’1’,時鍾才被釋放出來。HSE晶體可以通過設置時鍾控制寄存器里RCC_CR中的HSEON位被啟動和關閉。

    該時鍾源是由外部無源晶體與MCU內部時鍾驅動電路共同配合形成,有一定的啟動時間,精度較高。為了減少時鍾輸出的失真和縮短啟動穩定時間,晶體/陶瓷諧振器和負載電容必須盡可能地靠近振盪器引腳。負載電容值必須根據所選擇的晶體來具體調整。手冊里明確地寫明了這句,很多時候似乎被無視了。關於這點,ST官方有專門出了個應用筆記,編號為AN2867。可以去www.stmcu.com.cn 或者www.st.com 搜索下載。

    整體上講,陶瓷晶體和石英晶體的主要區別就在於精度和溫度穩定性上。石英晶體比陶瓷晶體精度要高,溫度穩定性要好。

2、外部時鍾源(HSE旁路)模式

    該模式下必須提供外部時鍾。用戶通過設置時鍾控制寄存器中的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的其中之一。

    如果使用STM32CUBEMX圖形配置界面的話可以看到3個選項:

    在ST MCU應用開發中,常有人會用到有源晶振作為時鍾源。如果用它該選擇哪種工作模式呢?

    有源晶振一般是四腳封裝,電源、地線、振盪輸出和一個控制端【或者懸空端】。相比無源晶體,有源晶振本身就是個完整的振盪器件,只需要供給適當的電源就能輸出時鍾,無須額外的振盪驅動匹配電路。其時鍾輸出不依賴於外部器件振盪電路,相對更不容易受外部線路不穩定性的影響。自然其價格往往要高於無源晶體,不過其輸出電平幅度往往不能像無源晶體那樣隨着應用電路的變化而變化。

    不難看出,如果使用有源晶振作為外部時鍾源的話,我們應該配置為HSE旁路模式,而不是HSE晶體模式。將有源晶振的輸出腳接到MCU的OSC_IN腳。

原文地址:https://www.cnblogs.com/mickey-double/p/14822956.html