長見識(shí)了:STM8、STM32可以超頻嗎?
開篇問大家一個(gè)問題:STM32F103默認(rèn)最高主頻為72M,那么,其主頻可以達(dá)到80M嗎? 假如達(dá)到80M,程序能正常運(yùn)行嗎?
1關(guān)于MCU主頻
首先,還是簡單介紹一下MCU主頻。一般我們講的電腦CPU主頻,對(duì)于MCU來說,其實(shí)道理一樣,都是指的CPU內(nèi)核工作的時(shí)鐘頻率。
對(duì)于STM8,或者STM32來說,MCU的主頻由硬件(晶振)和軟件編程決定。
在STM32中,MCU主頻一般是通過倍頻來實(shí)現(xiàn)的。比如72M,等于8M時(shí)鐘,9倍頻(8 x 9 = 72)。
在STM8、32中,我們說的主頻時(shí)鐘和外設(shè)時(shí)鐘,其實(shí)是兩種不同時(shí)鐘。
查看MCU「參考手冊(cè)」STM8的CLK時(shí)鐘控制章節(jié),STM32的RCC復(fù)位和時(shí)鐘控制章節(jié)的時(shí)鐘樹一目了然。
2
STM8主頻時(shí)鐘在STM8「參考手冊(cè)」Clock control(CLK)時(shí)鐘控制章節(jié),詳細(xì)描述了STM8時(shí)鐘相關(guān)的內(nèi)容。
從時(shí)鐘樹可以清晰看的出STM8時(shí)鐘大概有哪些內(nèi)容。比如STM8S的時(shí)鐘樹:
從時(shí)鐘樹可以看的出,可以得出一些重要信息,如:
內(nèi)部高速晶振HSI默認(rèn)16M,外部晶振可選擇1 - 24M。
STM8主頻只能分頻,不能倍頻。
外設(shè)時(shí)鐘是由主頻時(shí)鐘而來,可單獨(dú)開啟。
時(shí)鐘頻率可選擇多種方式輸出(CCO)。
STM8主頻可以大于16M嗎? 這個(gè)問題是之前有朋友問過的問題。
當(dāng)然,答案肯定是可以。為了提高M(jìn)CU效率,很多人就是將主頻進(jìn)行提高來達(dá)到目的。
但是,這里需要注意一個(gè)問題:當(dāng)超過16M主頻時(shí)鐘時(shí),F(xiàn)lash /data EEPROM訪問必須配置為1等待狀態(tài)。
這個(gè)在STM8「參考手冊(cè)」中有明確說明:
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主頻時(shí)鐘STM32主頻時(shí)鐘同樣也是由硬件(晶振)和軟件編程決定。
(STM32F1時(shí)鐘樹)
STM32的時(shí)鐘可以上面時(shí)鐘樹看得出來,相對(duì)STM8要復(fù)雜的多。以上還只是STM32F1的,像F4,F(xiàn)7的還更復(fù)雜。
從時(shí)鐘樹可以看得出,STM32外部晶振頻率是一個(gè)范圍值,一般硬件就要求在這個(gè)范圍以內(nèi)。
STM32一個(gè)顯著的特點(diǎn)就是增加了倍頻這個(gè)功能。如果沒有倍頻功能,我們使用的72M、168M這么高的頻率,就需要直接使用上百兆的晶振。
這么能實(shí)現(xiàn)嗎? 原理上來說,可以實(shí)現(xiàn)。但對(duì)MCU來說是一個(gè)不小的考驗(yàn)。具體原因可能就要問相關(guān)的資深工程師了。
1.STM32倍頻
STM32的倍頻可通過配置對(duì)應(yīng)寄存器(也就是編程)來實(shí)現(xiàn)。但一般不建議自己直接通過配置寄存器來實(shí)現(xiàn),參考官網(wǎng)提供例程代碼即可。
標(biāo)準(zhǔn)外設(shè)庫例程:在執(zhí)行main函數(shù)之前,系統(tǒng)就會(huì)調(diào)用SystemInit函數(shù)進(jìn)行初始化系統(tǒng)時(shí)鐘(含主頻)。
如果外部晶振和例程不一樣,修改對(duì)應(yīng)的幾個(gè)參數(shù)即可。比如倍頻值,HSI值等。這個(gè)閱讀一下代碼就能明白。
HAL庫:可通過STM32CubeMX工具直接配置時(shí)鐘,簡單方便,時(shí)鐘樹勾選一目了然。
2.主頻能超過最大值嗎?
如開篇所說,STM32F1主頻能超過最大的72M嗎?答案是可以的。
但是,超過最大主頻,有可能存在潛在的風(fēng)險(xiǎn)。比如:時(shí)序紊亂,程序跑飛等。
超頻工作需要考慮實(shí)際情況和環(huán)境因素。比如干擾特別大的環(huán)境,一般不建議超頻。
我是親自經(jīng)歷過的,之前公司產(chǎn)品為了提高效率,將主頻超過一定值,還是能正常運(yùn)行,而且投產(chǎn)了的。但是,應(yīng)用環(huán)境相對(duì)比較好,而且產(chǎn)品有電源控制(接斷電復(fù)位)。
3.超頻死機(jī)
如果MCU主頻超過太多,就會(huì)導(dǎo)致程序跑飛,出現(xiàn)死機(jī)現(xiàn)象,只能通過工具重新固件。
這個(gè)時(shí)候直接下載,可能會(huì)出現(xiàn)錯(cuò)誤,則可借助復(fù)位引腳來實(shí)現(xiàn)重新下載固件(按住復(fù)位引腳,點(diǎn)擊下載,釋放按鍵)。
說了這些,主要想強(qiáng)調(diào),只要沒有特殊要求,建議參考官網(wǎng)硬件和軟件。
本文授權(quán)轉(zhuǎn)載自公眾號(hào)“StrongerHuang”,作者StrongerHuang
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!