STM32時鐘
本章參考資料:《STM32F4xx中文參考手冊》RCC 章節。
學習本章時,配合《STM32F4xx中文參考手冊》RCC 章節一起閱讀,效果會更佳,特
別是涉及到暫存器說明的部分。
RCC:reset clock control 復位和時鐘控制器。本章我們主要講解時鐘部分,特別是要
著重理解時鐘樹,理解了時鐘樹,F429 的一切時鐘的來龍去脈都會了如指掌。
HSE時鐘
HSE:High Speed External Clock signal,即高速的外部時鐘。
來源:有源晶振(1-50M)、無源晶振(4-26M)
控制:RCC_CR 時鐘控制暫存器的位16:HSEON
HSI時鐘
HSI:HighSpeed Internal Clock signal,即高速的內部時鐘。
來源:晶片內部,大小為16M,當HSE故障時,系統時鐘會自動
切換到HSI,直到HSE啟動成功。
控制:RCC_CR 時鐘控制暫存器的位0:HSION控制
問題:有源晶振和無源晶振的區別?
為什麼要通過PLL到180M而不直接接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 配置暫存器
PLL48CK:USB_FS、 RANG、 SDIO提供時鐘
系統時鐘
縮寫:SYSCLK,最高為180M,F407最高為168M。
來源:HSI、 HSE,PLLCLK。
控制:RCC_CFGR 時鐘配置暫存器的SW位
HCLK時鐘
HCLK:AHB高速匯流排時鐘,最高為180M。為AHB匯流排的外設
提供時鐘、為Cortex系統定時器提供時鐘(SysTick)、為核心
提供時鐘(FCLK)。
AHB為advanced high-performance bus。
來源:系統時鐘分頻得到。
控制:RCC_CFGR 時鐘配置暫存器的HPRE位
PCLK1時鐘
PCLK1:APB低速匯流排時鐘,最高為45M。 為APB1匯流排的外設
提供時鐘。2倍頻之後則為APB1匯流排的定時器提供時鐘,最大
為90M。
來源:HCLK分頻得到。
控制:RCC_CFGR 時鐘配置暫存器的PPRE1位
PCLK2時鐘
PCLK2:APB高速匯流排時鐘,最高為90M。為APB2匯流排的外設
提供時鐘。2倍頻之後則為APB2匯流排的定時器提供時鐘,最大
為180M。
來源:HCLK分頻得到。
控制:RCC_CFGR 時鐘配置暫存器的PPRE2位
RTC時鐘
RTC:為晶片內部的RTC提供時鐘。
來源:HSE_RTC(HSE分頻得到)、 LSE(外部32.768KHZ的晶
體提供)、LSI(32KHZ)。
控制:RCC備份域控制暫存器RCC_BDCR:RTCSEL位控制
獨立看門狗時鐘:IWDGCLK,由LSI提供
I2S時鐘:由外部的引腳I2S_CKIN或者PLLI2SCLK提供。
乙太網PHY時鐘:429沒有整合PHY,只能外接PHY晶片,
比如LAN8720,那PHY時鐘就由外部的PHY晶片提供,大小
為50M。
USB PHY時鐘:429的USB沒有整合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配置系統時鐘例子,