開篇問大家一個問題:STM32F103默認最高主頻為72M,那么,其主頻可以達到80M嗎? 假如達到80M,程序能正常運行嗎?
1關于MCU主頻
首先,還是簡單介紹一下MCU主頻。一般我們講的電腦CPU主頻,對于MCU來說,其實道理一樣,都是指的CPU內核工作的時鐘頻率。
對于STM8,或者STM32來說,MCU的主頻由硬件(晶振)和軟件編程決定。
在STM32中,MCU主頻一般是通過倍頻來實現的。比如72M,等于8M時鐘,9倍頻(8 x 9 = 72)。
在STM8、32中,我們說的主頻時鐘和外設時鐘,其實是兩種不同時鐘。
查看MCU「參考手冊」STM8的CLK時鐘控制章節,STM32的RCC復位和時鐘控制章節的時鐘樹一目了然。
2
STM8主頻時鐘
在STM8「參考手冊」Clock control(CLK)時鐘控制章節,詳細描述了STM8時鐘相關的內容。
從時鐘樹可以清晰看的出STM8時鐘大概有哪些內容。比如STM8S的時鐘樹:
從時鐘樹可以看的出,可以得出一些重要信息,如:
內部高速晶振HSI默認16M,外部晶振可選擇1 - 24M。
STM8主頻只能分頻,不能倍頻。
外設時鐘是由主頻時鐘而來,可單獨開啟。
時鐘頻率可選擇多種方式輸出(CCO)。
STM8主頻可以大于16M嗎?這個問題是之前有朋友問過的問題。
當然,答案肯定是可以。為了提高MCU效率,很多人就是將主頻進行提高來達到目的。
但是,這里需要注意一個問題:當超過16M主頻時鐘時,Flash /data EEPROM訪問必須配置為1等待狀態。
這個在STM8「參考手冊」中有明確說明:
For clock frequencies above 16 MHz, Flash /data EEPROM access must be configured for 1 wait state. This is enabled by the device option byte. Refer to the datasheet option bytesection.
3
STM32主頻時鐘
STM32主頻時鐘同樣也是由硬件(晶振)和軟件編程決定。
(STM32F1時鐘樹)
STM32的時鐘可以上面時鐘樹看得出來,相對STM8要復雜的多。以上還只是STM32F1的,像F4,F7的還更復雜。
從時鐘樹可以看得出,STM32外部晶振頻率是一個范圍值,一般硬件就要求在這個范圍以內。
STM32一個顯著的特點就是增加了倍頻這個功能。如果沒有倍頻功能,我們使用的72M、168M這么高的頻率,就需要直接使用上百兆的晶振。
這么能實現嗎?原理上來說,可以實現。但對MCU來說是一個不小的考驗。具體原因可能就要問相關的資深工程師了。
1.STM32倍頻
STM32的倍頻可通過配置對應寄存器(也就是編程)來實現。但一般不建議自己直接通過配置寄存器來實現,參考官網提供例程代碼即可。
標準外設庫例程:在執行main函數之前,系統就會調用SystemInit函數進行初始化系統時鐘(含主頻)。
如果外部晶振和例程不一樣,修改對應的幾個參數即可。比如倍頻值,HSI值等。這個閱讀一下代碼就能明白。
HAL庫:可通過STM32CubeMX工具直接配置時鐘,簡單方便,時鐘樹勾選一目了然。
2.主頻能超過最大值嗎?
如開篇所說,STM32F1主頻能超過最大的72M嗎?答案是可以的。
但是,超過最大主頻,有可能存在潛在的風險。比如:時序紊亂,程序跑飛等。
超頻工作需要考慮實際情況和環境因素。比如干擾特別大的環境,一般不建議超頻。
我是親自經歷過的,之前公司產品為了提高效率,將主頻超過一定值,還是能正常運行,而且投產了的。但是,應用環境相對比較好,而且產品有電源控制(接斷電復位)。
3.超頻死機
如果MCU主頻超過太多,就會導致程序跑飛,出現死機現象,只能通過工具重新固件。
這個時候直接下載,可能會出現錯誤,則可借助復位引腳來實現重新下載固件(按住復位引腳,點擊下載,釋放按鍵)。
說了這些,主要想強調,只要沒有特殊要求,建議參考官網硬件和軟件。
-
STM32
+關注
關注
2272文章
10923瀏覽量
357576 -
超頻
+關注
關注
0文章
98瀏覽量
15619 -
STM8
+關注
關注
18文章
392瀏覽量
56944 -
STM32F103
+關注
關注
33文章
479瀏覽量
63876
發布評論請先 登錄
相關推薦
評論