STM32關(guān)于外部時鐘晶振為什么選用8MHz
芯片的主晶振頻率范圍一般來說在數(shù)據(jù)手冊(Datasheet)和技術(shù)參考手冊(Technical Reference Manual)中都有介紹。
你提到的時鐘先分頻再倍頻,這個需要深入到STM32的內(nèi)部去一探究竟了,
在其技術(shù)參考手冊的第7.2節(jié)Clocks的一開始有一個表格,時鐘樹(Figure 8. Clock tree),它完全地列出來STM32這個芯片內(nèi)部各個模塊的時鐘來源以及相關(guān)的從屬關(guān)系。
在這個圖的正中央,有一個核心時鐘:SYSCLK,它最大頻率是72MHz,它的時鐘信號通過選擇器SW可以由PLLCLK提供(也可由HIS、HSE提供)。
PLL,毫無疑問,它是用來倍頻的,可以*2,*3,*4……*16,它的時鐘信號通過選擇器PLLSRC可以由8MHz的高速內(nèi)部RC振蕩器經(jīng)過二分頻提供,也可由PLLXTPRE的選擇器輸出提供,
而PLLXTPRE的選擇器就接的是我們的8MHz的高速外部時鐘(直接接入或二分頻接入)。
總的來說,對于我們這個板子,若使用高速外部時鐘給STM32內(nèi)核提供時鐘源,一般以下兩條路:
① [高速外部時鐘:8MHz]>>>[不分頻:8MHz]>>>>[PLL倍頻,2到16倍]>>>[SYSCLK,16MHz-128MHz]
②[高速外部時鐘:8MHz]>>>[二分頻:4MHz]>>>>[PLL倍頻,2到16倍]>>>[SYSCLK,8MHz-64MHz]
我們注意到,在8MHz外部時鐘給PLL之前若分頻的話,那么最大(×16)才64MHz,因此,我們都會給PLL以8MHz的時鐘源讓其倍頻,這樣能使它發(fā)揮到72MHz的高頻率
正因如此,系統(tǒng)時鐘總是8的倍數(shù)。
我們看這個芯片的數(shù)據(jù)手冊,立刻就能明白,不是必須得接8MHz的晶振的
①高速外部時鐘源頻率范圍(P55-P58):1MHz~25MHz(有源);4MHz~16MHz(無源)
②PLL輸入時鐘源頻率范圍(P62):1MHz-25MHz
③PLL輸出時鐘源頻率范圍(P62):16MHz~72MHz
我們自己設(shè)計板子的時候只要滿足它的范圍就可以了。
例如:我們可以選擇一個12MHz的無源晶體接到STM32芯片上。
在給STM32進(jìn)行時鐘配置的時候,
①選擇PLLXTMRE的輸入源為12MHz/2 = 6MHz
②選擇PLLSRC的輸入源為PLLXTMRE的輸出6MHz,
③在PLL內(nèi)進(jìn)行3到12倍的倍頻(最小16MHz,最大72MHz),
最終我們可選擇的頻率就有:18MHz、24MHz、30MHz、36MHz、42MHz、48MHz、54MHz、60MHz、66MHz、72MHz
圖示: