首頁(yè) > 評(píng)測(cè) > 玩火|STM32超頻求點(diǎn)贊!

玩火|STM32超頻求點(diǎn)贊!

  • 作者:netlhx
  • 來(lái)源:21ic
  • [導(dǎo)讀]
  • 吹客=Trick ; 這是評(píng)測(cè)頻道打造地一個(gè)全新欄目,旨在用輕松活潑的方式讓大家一起來(lái)分享開發(fā)板使用開發(fā)的技巧和心得。只要你的文章是原創(chuàng)的,并且有觀點(diǎn)有干貨,一切內(nèi)容和題材都可以被我們所接受。投稿請(qǐng)至stitch-sk@hotmail.com(采用有驚喜!)

最后還有一個(gè)限制,按ST官方的說(shuō)法,PLLMUL的輸出值不要大于96MHZ以上,這一點(diǎn)可以在STM32CUBEMX上進(jìn)行驗(yàn)證。

代碼中主循環(huán)的任務(wù)如下

/* USER CODE BEGIN WHILE */

while (1)

{

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

#define TEMP130_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FF8007E))

#define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FF8007A))

core_main(); //COREMARK測(cè)試代碼

HAL_ADC_Start(&hadc);

adc_value = HAL_ADC_GetValue(&hadc);

temp = (130.0 - 30) * (adc_value - *TEMP30_CAL_ADDR) / (*TEMP130_CAL_ADDR - *TEMP30_CAL_ADDR) + 30;

printf("Internel Tempreture: %6.2f\r\n", temp);

HAL_Delay(2000);

}

/* USER CODE END 3 */

任務(wù)很簡(jiǎn)單,定期運(yùn)行COREMARK的核心檢測(cè)代碼,大約每隔2秒鐘運(yùn)行一次。COREMARK核心代碼本身運(yùn)行時(shí)間至少需要10秒以上才能輸出有效的結(jié)果。接下來(lái)讀取ADC內(nèi)部溫度傳感器,大致看看MCU內(nèi)部的工作溫度。

測(cè)試

說(shuō)了一堆的閑話,終于要測(cè)試了。為了節(jié)省篇幅,就不長(zhǎng)篇大論原始代碼了。如果你有興趣,請(qǐng)向本文作者索取完整工程代碼文件(含已配置好COREMARK移植的相關(guān)代碼)。

32MHZ頻率運(yùn)行

這是官方允許的最大頻率值,在這種情況下,肯定一切都是正常的。下面是終端輸出結(jié)果

image007.jpg

圖7:32MHZ運(yùn)行輸出結(jié)果

配置及運(yùn)行結(jié)果表

QQ截圖20160523135227.jpg

注意編譯優(yōu)化標(biāo)志(下文同)。在這里優(yōu)化等級(jí)為3,也就是最高優(yōu)化,同時(shí)指定為運(yùn)行時(shí)間做優(yōu)化,在終端輸出的信息里均包含了這一標(biāo)志。

PWM輸出波形(占空比分別為10%和30%,頻率為1KHZ)

image008.jpg

圖8:32MHZ下TIM2輸出的PWM信號(hào)

可以看到輸出的PWM波形非常漂亮。關(guān)于PWM輸出的配置,請(qǐng)參考工程代碼。

在允許的范圍內(nèi),反復(fù)測(cè)試COREMARK的代碼片段,會(huì)發(fā)現(xiàn)MCU內(nèi)部溫度略有升高,但是升高的幅度并不明顯。如圖是測(cè)試一段時(shí)間后的MCU內(nèi)部溫度圖。

image009.jpg

圖9:高負(fù)荷運(yùn)行后MCU內(nèi)部溫度略有升高

另外順便看一下MCO輸出的效果

image010.jpg

圖10:32MHZ下MCO輸出波形

頻率測(cè)出是31.99MHZ

48MHZ頻率下運(yùn)行

為什么直接從32MHZ下跳到48MHZ下運(yùn)行?

因?yàn)镾TM32也許根本就沒(méi)有想過(guò)你要超頻,它的時(shí)鐘配置相對(duì)固定,沒(méi)有微調(diào)參數(shù)可供選擇。啊,在PC上超頻的良好感覺(jué)都哪去了?

通過(guò)查閱參考手冊(cè),有如下信息

image011.jpg

圖11:PLLMUL配置可選參數(shù)

PLLMUL的取值只能在上述列表中選擇,同時(shí)注意PLLVCO的值不能超96MHZ。取PLLMUL的值為12的情況下,PLLVCO的值已達(dá)到了96MHZ,可以選擇的余地實(shí)在太小了!姑且拿該值一試,雖然激進(jìn)了一點(diǎn)。

代碼能跑起來(lái)了,輸出似乎是正常的。終端上輸出的信息如下

image012.jpg

圖12:48MHZ下終端輸出

配置及運(yùn)行結(jié)果

2.jpg

注意到COMARK的得分比未超頻之前的值也變大了!畢竟主頻提高了嘛,同時(shí)注意到COREMARK的值與MCU主頻的值大致呈現(xiàn)性關(guān)系。

PWM輸出波形(占空比分別為10%和30%,頻率為1KHZ)

image013.jpg

圖13:48MHZ頻率下TIM2的PWM輸出波形

看到波形依舊漂亮!

不過(guò)在48MHZ的頻率下,MCO輸出嚴(yán)重變形,已不具參考價(jià)值。為了驗(yàn)證,看一張硬件仿真得到的工作頻率值。

image014.jpg

圖14:硬件仿真下的SYSTEMCORECLOCK數(shù)值

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+