首页 > 评测 > 玩火|STM32超频求点赞!

玩火|STM32超频求点赞!

STM32   超频   NUCLEO   DSCOPE   时钟频率   
  • 作者:netlhx
  • 来源:21ic
  • [导读]
  • 吹客=Trick ; 这是评测频道打造地一个全新栏目,旨在用轻松活泼的方式让大家一起来分享开发板使用开发的技巧和心得。只要你的文章是原创的,并且有观点有干货,一切内容和题材都可以被我们所接受。投稿请至stitch-sk@hotmail.com(采用有惊喜!)

最后还有一个限制,按ST官方的说法,PLLMUL的输出值不要大于96MHZ以上,这一点可以在STM32CUBEMX上进行验证。

代码中主循环的任务如下

/* 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测试代码

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 */

任务很简单,定期运行COREMARK的核心检测代码,大约每隔2秒钟运行一次。COREMARK核心代码本身运行时间至少需要10秒以上才能输出有效的结果。接下来读取ADC内部温度传感器,大致看看MCU内部的工作温度。

测试

说了一堆的闲话,终于要测试了。为了节省篇幅,就不长篇大论原始代码了。如果你有兴趣,请向本文作者索取完整工程代码文件(含已配置好COREMARK移植的相关代码)。

32MHZ频率运行

这是官方允许的最大频率值,在这种情况下,肯定一切都是正常的。下面是终端输出结果

image007.jpg

图7:32MHZ运行输出结果

配置及运行结果表

QQ截图20160523135227.jpg

注意编译优化标志(下文同)。在这里优化等级为3,也就是最高优化,同时指定为运行时间做优化,在终端输出的信息里均包含了这一标志。

PWM输出波形(占空比分别为10%和30%,频率为1KHZ)

image008.jpg

图8:32MHZ下TIM2输出的PWM信号

可以看到输出的PWM波形非常漂亮。关于PWM输出的配置,请参考工程代码。

在允许的范围内,反复测试COREMARK的代码片段,会发现MCU内部温度略有升高,但是升高的幅度并不明显。如图是测试一段时间后的MCU内部温度图。

image009.jpg

图9:高负荷运行后MCU内部温度略有升高

另外顺便看一下MCO输出的效果

image010.jpg

图10:32MHZ下MCO输出波形

频率测出是31.99MHZ

48MHZ频率下运行

为什么直接从32MHZ下跳到48MHZ下运行?

因为STM32也许根本就没有想过你要超频,它的时钟配置相对固定,没有微调参数可供选择。啊,在PC上超频的良好感觉都哪去了?

通过查阅参考手册,有如下信息

image011.jpg

图11:PLLMUL配置可选参数

PLLMUL的取值只能在上述列表中选择,同时注意PLLVCO的值不能超96MHZ。取PLLMUL的值为12的情况下,PLLVCO的值已达到了96MHZ,可以选择的余地实在太小了!姑且拿该值一试,虽然激进了一点。

代码能跑起来了,输出似乎是正常的。终端上输出的信息如下

image012.jpg

图12:48MHZ下终端输出

配置及运行结果

2.jpg

注意到COMARK的得分比未超频之前的值也变大了!毕竟主频提高了嘛,同时注意到COREMARK的值与MCU主频的值大致呈现性关系。

PWM输出波形(占空比分别为10%和30%,频率为1KHZ)

image013.jpg

图13:48MHZ频率下TIM2的PWM输出波形

看到波形依旧漂亮!

不过在48MHZ的频率下,MCO输出严重变形,已不具参考价值。为了验证,看一张硬件仿真得到的工作频率值。

image014.jpg

图14:硬件仿真下的SYSTEMCORECLOCK数值

  • 本文系21ic原创,未经许可禁止转载!

网友评论