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