STM8/32使用外部有源晶振的問題

一個STM32 HSE應用配置的相關話題

 2016-03-27 Miler Shao ST MCU 信息交流

    不論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_BypassRCC_HSE_OFF的其中之一。


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



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



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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章