STM32系統時鐘RCC(基於HAL庫)

基礎認識

爲什麼要有時鐘:

時鐘就是單片機的心臟,其每跳動一次,整個單片機的電路就會同步動作一次。時鐘的速率決定了兩次動作的間隔時間。速率越快,單片機在單位時間內所執行的動作將越多。時鐘是單片機運行的基礎,時鐘信號推動單片機內各個部分執行相應的指令。時鐘系統就是CPU的脈搏,決定cpu速率。

 

爲什麼這麼多個時鐘源:

STM32系統是複雜的,高精度、低精度、高速、低速等,且可以對每個時鐘源進行開關操作,可以把不需要使用的關閉掉。這可以讓單片機適用更多的環境中,把選擇權利交個了開發者,開發者可以從精度、功耗、資源等多方面考慮。

 

STM32時鐘:

從時鐘源的角度可分爲:

l  外部時鐘(E)

l  內部時鐘(I)

 

從時鐘速率的角度分爲:

l  高速時鐘(HS)

l  低速時鐘(LS)

 

STM32在芯片復位後默認選用的是內部的高速時鐘(HSI)進行工作,如果需要使用外部高速時鐘(HSE)的話需要經過軟件操作相關的寄存器配置。

 

 外部時鐘模式

外部的高速和低速時鐘均有這三個可選項目,圖中是CubeMX提供的外部時鐘選擇:

 

 

 

 

可選類型爲

l  Disable(關閉,不使用外部時鐘)

l  BYPASS Clock Source(旁路時鐘源)

l  Crystal/Ceramic Resonator(外部晶體/陶瓷諧振器)

 

外部晶體/陶瓷諧振器模式

該模式較爲常見,這可以爲系統時鐘提供較爲精確的時鐘源。該時鐘源是由外部無源晶體與MCU內部時鐘驅動電路共同配合形成,有一定的啓動時間,精度較高。爲了減少時鐘輸出的失真和縮短啓動穩定時間,晶體/陶瓷諧振器和負載電容必須儘可能地靠近振盪器引腳。負載電容值必須根據所選擇的晶體來具體調整。

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

 

旁路時鐘源模式

該模式下必須提供外部時鐘。外部時鐘信號(50%佔空比的方波、正弦波或三角波)必須連到SOC_IN引腳,此時OSC_OUT引腳對外呈高阻態。

所謂旁路模式,是指無需上面提到的使用外部晶體時所需的芯片內部時鐘驅動組件,直接從外界導入時鐘信號。

旁路時鐘源的典型應用--有源晶振

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

 

STM32系統時鐘框圖

 

系統時鐘源總共有4個:

l  HSI RC:內部高速RC振盪器,相比於外部精度較低。通常約爲8MHZ。通常作爲系統的備用時鐘源(CSS控制)

l  LSI RC:內部低速RC振盪器,相比於外部精度較低。通常約爲40KHZ。通常作爲看門狗時鐘源。

l  HSE:外部高速時鐘,精度高,可接外部晶體/陶瓷諧振器或旁路時鐘源。範圍爲4MHZ-16MHZ。通常通過PLL倍頻作爲系統時鐘源。

l  LSE:外部低速時鐘,精度高,可接外部晶體/陶瓷諧振器或旁路時鐘源。通常爲32.768KHZ。通常作爲RTC時鐘源。

 

其它:

l  其中SYSCLK是系統時鐘,對於每個芯片都有規定最大的系統時鐘是多少,超過則會出現錯誤。芯片的很多外設都是基於該時鐘的。

l  CSS爲時鐘監視系統,一旦HSE失效則自動切換至系統時鐘(SYSCLK)爲內部高速RC振盪器時鐘(HSI)。

l  MCO是時鐘輸出引腳,對應單片機的一個GPIO口,可以選擇輸出SYSCLK、HSI、HSE、PLLCLK/2的其中一個。

l  時鐘可以進行獨立的開啓和關閉

 

 

 

在STM32F103C8T6芯片中:

PC14和PC15是外部低速時鐘的輸入腳

PD0和PD1是外部高速時鐘的輸入腳

PA8是時鐘輸出引腳,輸出的時鐘可編程選擇

 

通常外部高速和低速時鐘輸入腳在不使用的情況下也儘量不要作爲普通獨立IO使用

 

 

 STM32F103C8T6的時鐘配置圖:

 

l  LSE外部低速時鐘的頻率爲32.768KHZ,給系統的RTC做爲時鐘源

l  LSI內部低速時鐘的頻率爲40KHZ,給系統的獨立看門狗作爲時鐘源

l  HIS內部高速時鐘暫時沒有用到,頻率爲8MHZ,但是值得注意的是“CSS Enabled”與“Enable CSS”的區別,前者表示開啓了。

l  “CSS Enabled”表示開啓了時鐘監視系統,一旦HSE失效則自動切換至系統時鐘(SYSCLK)爲內部高速RC振盪器時鐘(HSI)

l  HSE選擇的是8MHZ,可以選擇的範圍爲4-16MHZ

l  系統時鐘(SYSCLK)爲72MHZ。時鐘來源是HSE經過PLL倍頻

l  MCO時鐘輸出選擇的是PLLCLK/2,按照時鐘選擇可以理解爲是SYSCLK/2,即72MHZ/2=36MHZ

 

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