电子说
根据微软学术的定义,所谓超频(OVERCLOCKING)就是强制将计算机或硬件运行于厂商指定的时钟频率之上,以达到更高的性能。通俗的来说,就是榨干硬件的最后一丝潜力。
事实上,不止是电脑可以超频,MCU当然也可以超频,工作原理类似。
然而说到MCU的超频,自然会有泼冷水的诸君,也有口水唾沫若干,原因当然是稳定性第一。不过任何事物一体两面,有利有弊。本文并非鼓励大家超频,只是把细节呈现给各位,如人饮水,冷暖自知,作到心中有数即可。准备工作 硬件
本次测试准备使用NUCLEO-L073RZ评估板作为硬件平台,如果是其它STM32评估板,请适当调整相关参数。
图1:NUCLEO-L073RZ
NUCLEO-L073RZ基本指标如下基于CORTEX-M0+,32MHZ192KB/20KB的FLASH/SRAM组合板载STLINK/V2-1
可选其它硬件包括逻辑分析仪及示波器,用来更好的测试实验结果。
图2:DSLOGIC逻辑分析仪
DSLOGIC逻辑分析仪,用来检测PWM信号输出。
图3:DSCOPE数字示波器
DSCOPE数字示波器,用来检测MCO输出频率。注:使用任何一款STM32评估板都可以体验本文的冒险之旅,不过要修改相应的硬件设置。本文提供配套的工程文件,助您再现测试场景。 设计玩过PC机超频的朋友都知道,超频是非常EASY的事情。要么改FSB,要么改倍频系数,反正就是那几个值的组合。然后,然后就超频了。当然还有其它情况,比如CPU被玩坏了!
STM32系列MCU都有自己的时钟树,通过调整时钟树的一些基本参数,就可以设定内部相关设备特别是MCU的工作频率。
STM32系列都有一个标称的最大工作频率,像NUCLEO-L073RZ的产品说明上就标注了该MCU的最大工作频率为32MHZ。超过了这个值会发生什么情况呢?ST没说,你们自己看着办!
当然不要忘记还有个FLASH,频率提高了,FLASH的等待状态也要相应变化。打开L073的参考手册,会发现
测试说了一堆的闲话,终于要测试了。为了节省篇幅,就不长篇大论原始代码了。如果你有兴趣,请向本文作者索取完整工程代码文件(含已配置好COREMARK移植的相关代码)。
32MHZ频率运行
这是官方允许的最大频率值,在这种情况下,肯定一切都是正常的。下面是终端输出结果
注意编译优化标志(下文同)。在这里优化等级为3,也就是最高优化,同时指定为运行时间做优化,在终端输出的信息里均包含了这一标志。
PWM输出波形(占空比分别为10%和30%,频率为1KHZ)
在允许的范围内,反复测试COREMARK的代码片段,会发现MCU内部温度略有升高,但是升高的幅度并不明显。如图是测试一段时间后的MCU内部温度图。
因为STM32也许根本就没有想过你要超频,它的时钟配置相对固定,没有微调参数可供选择。
啊,在PC上超频的良好感觉都哪去了?通过查阅参考手册,有如下信息
配置及运行结果
看到波形依旧漂亮!
不过在48MHZ的频率下,MCO输出严重变形,已不具参考价值。为了验证,看一张硬件仿真得到的工作频率值。
更进一步
为了更进一步测试,打破PLLVCO指定的96MHZ的限制。将PLLMUL的值指定为16,这样在理论上SYSCLK的值会达到64MHZ!这样的话系统还能跑起来么?
实验的结果是:终于熄火了!
结论写到这里,我自己也觉得有点鸡肋!和传统的PC超频相比,STM32系列MCU提供的频率配置参数相对有限,特别是没有提供微调相关的参数。
不过从测试结果来看,我觉得还是比较满意的。
上述数据表明,在超频约50%的情况下,MCU还能正常工作,毕竟,像COREMARK测试这样高负荷的运算,还是具有一定代表性的。一般的MCU应用,其运算量肯定没有这么大!另外从测试结果来看,PWM输出均正常,UART输出也没有产生乱码。这一切都表明MCU应该是正常工作!更重要的是,COREMARK的得分高了,性能更强了!
全部0条评论
快来发表一下你的评论吧 !