老實說,用過很多的芯片,但是都沒有太仔細的研究過芯片的細節,只要做的工作還是停留在調用函數的層面,但是要想更深入的學習一款芯片不了解細節是不行的。于是,我就拿阿波羅來班門弄斧了。粗略看了阿波羅的時鐘體系,做一些筆記,記錄下來(如果說的有錯誤,希望大家積極指正,我將不勝感激):從時鐘源的角度,分為兩類外部時鐘(E)和內部時鐘(I)。
從時鐘速率的角度,分為兩類高速時鐘(HS)和低速時鐘(LS)。
而把它們組合起來就有四種時鐘:HSE、HIS、LSE、LSI。至于為什么會有這么復雜的時鐘配置,主要是考慮到系統的性能和功耗兩個方面的因素吧。單一時鐘的話可能會導致性能過剩并且功耗過高。多個時鐘的話可以平衡功耗和性能之間的平衡。
特此說明一下,系統復位后,默認初始化的是HIS時鐘提供sysclock。也就是16MHZ。為了提示系統性能,我們需要使能外部時鐘晶振(板載25MHz)。使能后也明顯可以看出來芯片的溫度升高了(使用內部的溫度傳感器測試,在后續有圖片為證)。
這四類時鐘在芯片內部通過配置,完成對各個外設的驅動。到了芯片內部,對應到那么多的外設,時鐘的分類就更多了,但是主要考慮到橋的存在,分為五類:AHB3、AHB2、AHB1、APB2、APB1。芯片內的所有外設都分別掛載在這五個總線上,至于哪個外設掛歪在哪個總線上,我們就需要查看芯片的RM0410 Reference manual(Page74)了。
今天為了測試時鐘的配置,我就用通用定時器TIM2做下示范操作:
首先查看TIM2掛載在哪條總線:
可知掛載在APB1總線上。
接著就可以查看TIM的時鐘回路
不論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腳。
上一篇:第15章 RCC—使用HSE/HSI配置時鐘—零死角玩轉STM32-F429系列
下一篇:STM32-systick系統定時器
推薦閱讀
史海拾趣
設計資源 培訓 開發板 精華推薦
- 了解PI高性能AC-DC產品,答題贏好禮
- LPC8N04測評,激發你的NFC&物聯網新創意!
- 泰克MDO系列:1招搞定6大儀器,輕松穿越模擬、數字、頻域測量
- TI 最新CapTIvate™ 觸控微控制器技術直播開始報名嘍!報名參與有禮呦!
- 下載有禮:數據中心養生秘籍《福祿克數據中心解決方案》等你帶回家!
- 閱讀并了解 TE Connectivity 無創想,不奇跡 精彩專題,答題有禮!
- Follow me第二季第1期來啦!與得捷一起解鎖【Adafruit Circuit Playground Express】超能力!
- 1月22日下午14:00Mouser攜手Maxim邀您觀看有獎直播:深入淺出可穿戴健康監測
- 貿澤翻牌挑戰賽—一鍵配齊的樂趣,它不香嗎?快來參與貿澤翻牌挑戰賽!