1. 程式人生 > 其它 >STM32時鐘

STM32時鐘

本章參考資料:《STM32F4xx中文參考手冊》RCC 章節。

學習本章時,配合《STM32F4xx中文參考手冊》RCC 章節一起閱讀,效果會更佳,特

別是涉及到暫存器說明的部分。

RCCreset clock control 復位和時鐘控制器。本章我們主要講解時鐘部分,特別是要

著重理解時鐘樹,理解了時鐘樹,F429 的一切時鐘的來龍去脈都會了如指掌。

HSE時鐘

HSEHigh Speed External Clock signal,即高速的外部時鐘。

來源:有源晶振(1-50M)、無源晶振(4-26M

控制:RCC_CR 時鐘控制暫存器的位16HSEON

控制

HSI時鐘

HSIHighSpeed Internal Clock signal,即高速的內部時鐘。

來源:晶片內部,大小為16M,當HSE故障時,系統時鐘會自動

切換到HSI,直到HSE啟動成功。

控制:RCC_CR 時鐘控制暫存器的位0HSION控制

問題:有源晶振和無源晶振的區別?

為什麼要通過PLL180M而不直接接180M的晶振?

無源晶振有2個引腳,需要藉助於外部的時鐘電路(接到主IC內部的震盪電路)才能產生振盪訊號,自身無法振盪。

有源晶振有4個引腳,是一個完整的振盪器,其中除了石英晶體外,還有電晶體和阻容元件.只需要電源,就可輸出比較好的波形。

晶振頻率越高,受溫度的影響越大,這是製造工藝決定的....所以一般是外部接8-12M的晶振,然後內部鎖相環升頻,就會得到高頻的時鐘訊號。

鎖相環時鐘

鎖相環時鐘:PLLCLK

來源:HSI HSE。由PLLSRC位配置。

HSE或者HSI先經過一個分頻因子M進行分頻,然後再經過一個

倍頻因子N,然後再經過一個分頻因子P,最後成為鎖相環時鐘

PLLCLK = (HSE/M) * N / P = 25/25 * 360 / 2 = 180M

控制:RCC_PLLCFGR :RCC PLL 配置暫存器

PLL48CKUSB_FS RANG SDIO提供時鐘

系統時鐘

縮寫:SYSCLK,最高為180MF407最高為168M

來源:HSI HSEPLLCLK

控制:RCC_CFGR 時鐘配置暫存器的SW

HCLK時鐘

HCLKAHB高速匯流排時鐘,最高為180M。為AHB匯流排的外設

提供時鐘、為Cortex系統定時器提供時鐘(SysTick)、為核心

提供時鐘(FCLK)。

AHBadvanced high-performance bus

來源:系統時鐘分頻得到。

控制:RCC_CFGR 時鐘配置暫存器的HPRE

PCLK1時鐘

PCLK1APB低速匯流排時鐘,最高為45M APB1匯流排的外設

提供時鐘。2倍頻之後則為APB1匯流排的定時器提供時鐘,最大

90M

來源:HCLK分頻得到。

控制:RCC_CFGR 時鐘配置暫存器的PPRE1

PCLK2時鐘

PCLK2APB高速匯流排時鐘,最高為90M。為APB2匯流排的外設

提供時鐘。2倍頻之後則為APB2匯流排的定時器提供時鐘,最大

180M

來源:HCLK分頻得到。

控制:RCC_CFGR 時鐘配置暫存器的PPRE2

RTC時鐘

RTC:為晶片內部的RTC提供時鐘。

來源:HSE_RTCHSE分頻得到)、 LSE(外部32.768KHZ的晶

體提供)、LSI32KHZ)。

控制:RCC備份域控制暫存器RCC_BDCRRTCSEL位控制

獨立看門狗時鐘:IWDGCLK,由LSI提供

I2S時鐘:由外部的引腳I2S_CKIN或者PLLI2SCLK提供。

乙太網PHY時鐘:429沒有整合PHY,只能外接PHY晶片,

比如LAN8720,那PHY時鐘就由外部的PHY晶片提供,大小

50M

USB PHY時鐘429USB沒有整合PHY,要想實現USB

速傳輸,只能外接PHY晶片,比如USB33000。那USB PHY

鍾就由外部的PHY晶片提供。

完整時鐘樹參考手冊。

不得不說,ST給我們做好韌體庫之後,開發速率直線提升,比起2440好上手,這種時鐘配置不需要我們關心,但2440什麼都要自己來,相輔相成。

F103系列中,使用HSI最大隻能把系統設定為64M,並不能跟使用HSE一樣把系統

時鐘設定為72M,究其原因是HSI在進入PLL倍頻的時候必須2分頻,導致PLL倍頻因子

調到最大也只能到64M,而HSE進入PLL倍頻的時候則不用2分頻。

F429中,無論是使用HSI還是HSE都可以把系統時鐘設定為180M,因為HSE

HSI在進入PLL倍頻的時候都會被分頻為1M之後再倍頻。

還有一種情況是,有些使用者不想用HSE,想用HSI,但是又不知道怎麼用HSI來設定

系統時鐘,因為呼叫庫函式都是使用HSE 下面我們給出個使用HSI配置系統時鐘例子,