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