時鐘信號推動單片機內各個部分執(zhí)行相應的指令,時鐘就像人的心跳一樣。
STM32本身十分復雜,外設非常多,任何外設都需要時鐘才能啟動,但并不是所有的外設都需要系統(tǒng)時鐘那么高的頻率,如果都用高速時鐘勢必造成浪費。同一個電路,時鐘越快功耗越大、抗電磁干擾能力越弱。復雜的MCU采用多時鐘源的方法來解決這些問題。如下圖,是STM32的時鐘系統(tǒng)框圖。
如上圖左邊的部分,看到STM32有4個獨立時鐘源,HSI、HSE、LSI、LSE。
HSI是高速內部時鐘,RC振蕩器,頻率為8MHz,精度不高。
HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。
LSI是低速內部時鐘,RC振蕩器,頻率為40kHz,提供低功耗時鐘。
LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
時鐘樹的右邊紅色框中,則是系統(tǒng)時鐘通過AHB預分頻器,給相對應的外設設置相對應的時鐘頻率。
其中LSI、LSE是作為IWDGCLK(獨立看門狗)時鐘源和RTC時鐘源使用。而HSI、HSE以及PLLCLK經過分頻或者倍頻作為系統(tǒng)時鐘SYSCLK來使用。
PLL為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。通過倍頻之后作為系統(tǒng)時鐘的時鐘源。
配置時鐘
默認時鐘
Keil編寫程序是默認的時鐘為72Mhz,其實是這么來的:
外部高速晶振HSE提供的8MHz(大小與電路板上的晶振相關)通過PLLXTPRE分頻器后,進入PLLSRC選擇開關,進而通過PLLMUL鎖相環(huán)進行倍頻(x9)后,為系統(tǒng)提供72MHz的系統(tǒng)時鐘SYSCLK。之后是AHB預分頻器對時鐘信號進行分頻,然后為低速外設提供時鐘。相關文章推薦:時鐘失效之后,STM32還能運行?
內部RC振蕩器HSI為8MHz,2分頻后是4MHz,進入PLLSRC選擇開關,通過PLLMUL鎖相環(huán)進行倍頻(最大x16)后為64MHz。
USB時鐘
如上圖,STM32的USB時鐘不能超過48MHz,因此如果時鐘源為72MHz,就需要進行1.5分頻。
如果時鐘源為48MHZ,則進行1分頻即可。
把時鐘信號輸出到外部
STM32可以選擇一個時鐘信號輸出到MCO腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE、或者系統(tǒng)時鐘,可以把時鐘信號輸出供外部使用。
AHB分頻器
如時鐘樹圖右邊的部分,系統(tǒng)時鐘通過AHB分頻器給外設提供時鐘。從左到右可以簡單理解為:
系統(tǒng)時鐘->AHB分頻器->各個外設分頻倍頻器->外設時鐘的設置。
右邊部分為:系統(tǒng)時鐘SYSCLK通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分頻。其中AHB分頻器輸出的時鐘送給5大模塊使用:
內核總線:送給AHB總線、內核、內存和DMA使用的HCLK時鐘。
Tick定時器:通過8分頻后送給Cortex的系統(tǒng)定時器時鐘。
I2S總線:直接送給Cortex的空閑運行時鐘FCLK。
APB1外設:送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給通用定時器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2-7使用。
APB2外設:送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給高級定時器。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1和定時器8使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。需要注意的是,如果APB預分頻器分頻系數是1,則定時器時鐘頻率(TIMxCLK)為PCLKx。否則,定時器時鐘頻率將為 APB 域的頻率的兩倍:TIMxCLK = 2xPCLKx。
APB1和APB2的對應外設
F1系列中,APB1上面連接的是低速外設,包括電源接口、備份接口、CAN、USB、I2C1、I2C2、USART2、USART3、UART4、UART5、SPI2、SP3等。
APB2上面連接的是高速外設,包括UART1、SPI1、Timer1、ADC1、ADC2、ADC3、所有的普通I/O口(PA-PE)、第二功能I/O(AFIO)口等。
具體可以在stm32f10x_rcc.h中查看外設掛在哪個時鐘下。
時鐘監(jiān)視系統(tǒng)(CSS)
另外,STM32還提供了一個時鐘監(jiān)視系統(tǒng)(CSS),用于監(jiān)視高速外部時鐘(HSE)的工作狀態(tài)。倘若HSE失效,會自動切換(高速內部時鐘)HSI作為系統(tǒng)時鐘的輸入,保證系統(tǒng)的正常運行。
原文標題:詳解STM32的時鐘系統(tǒng),收藏了
文章出處:【微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
單片機
+關注
關注
6037文章
44558瀏覽量
635355 -
STM32
+關注
關注
2270文章
10900瀏覽量
356049 -
時鐘樹
+關注
關注
0文章
54瀏覽量
10752 -
時鐘系統(tǒng)
+關注
關注
1文章
101瀏覽量
11723
原文標題:詳解STM32的時鐘系統(tǒng),收藏了
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論