如何隨STM32時鐘進行分析?

Tags: 時鐘, 低功耗,

STM32系列芯片基於專為要求高性能,低成本,低功耗的嵌入式應用專門設計的ARM cortex內核。其時鐘分佈較為複雜但對時鐘的理解又非常重要。

如何隨STM32時鐘進行分析

方法/步驟

STM32的時鐘系統共有三個主要的時鐘源:HSI 8MHz RC時鐘源,頻率為8MHz;HSE高速外部時鐘源,可接晶體或者外部時鐘源,輸入頻率可變,4MHz~16MHz;PLL鎖相環。另外還有兩個額外的時鐘源:LSI RC 低速內部時鐘,頻率僅40Hz;LSE低速外部時鐘源,只能接頻率為32.768KHz的晶體。所以歸結起來,STM32共有5個時鐘源。對於PLL鎖相環,從圖中可以看出,它有兩個輸入源,一個是HSI/2,一個是HSE,可先選擇除頻係數然後選擇倍頻係數,均為2~16倍。這裡要注意的是STM32也有很多不同的系列,所以時鐘系統也有差別,這裡主要針對的是STM32F3X系列。

如何隨STM32時鐘進行分析

HSE 時鐘,高速外部時鐘可由兩個輸入時鐘源產生,一個是外部晶體或陶瓷諧振器。一個是用戶直接輸入對應頻率的時鐘。關於這兩種接法請參考下圖:

需要注意的是如果是選擇用戶直接輸入4M~32MHz的時鐘需要是高精度的時鐘源。

如何隨STM32時鐘進行分析

HSI 時鐘,它由一個8MHz的RC振盪器產生並可以直接應用為系統時鐘或者二分頻後作為PLL的輸入。它的優點是成本低,沒有額外的電子元件。並且它的啟動時間要高於HSE時鐘,據我測試的經驗,後者是秒級大概2s左右,而前者是ms級,在10-20ms間。但因為較為快速的啟動時間,所以時鐘源的精度是要比外部時鐘源低很多的。所以也導致了它的不同應用,通常情況下,為了系統的快速啟動,軟件設計之初會採用HSI時鐘,而在2S後外部時鐘源穩定則切換至HSE時鐘。

如何隨STM32時鐘進行分析

LSE時鐘,它是一個32.768KHz的低速外部時鐘源,它的優點是可以提供低功耗但是高精度的時鐘源給RTC或者一些其他計時功能。

如何隨STM32時鐘進行分析

LSI時鐘,它是一個低速的可以帶來低功耗的時鐘源,它和LSE時鐘都不能作為系統時鐘源,它主要是讓系統可以在standby模式可以獨立的運行watch dog和RTC。時鐘源頻率為40KHz但精度卻在30KHz和60KHz之間,因此選擇它也是有代價的,RTC的誤差會被放大很多倍。

如何隨STM32時鐘進行分析

PLL時鐘,它的時鐘輸入源可選擇為HSI和HSE,倍頻範圍為2~16倍,但是輸出頻率範圍卻被限制在16-72MHz。 請看下圖,有一個USB clk的部分,STM32中有一個全速功能的USB模塊,其串行接口引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,並且時鐘頻率配置為48MHz或72MHz。

如何隨STM32時鐘進行分析

注意事項

STM32系統時鐘很複雜,但要想真正理解一顆芯片的工作原理,時鐘這塊是必須重點關注的。

相關問題答案