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

玩火|STM32超频求点赞!

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

根据微软学术的定义,所谓超频(OVERCLOCKING)就是强制将计算机或硬件运行于厂商指定的时钟频率之上,以达到更高的性能。通俗的来说,就是榨干硬件的最后一丝潜力。

事实上,不止是电脑可以超频,MCU当然也可以超频,工作原理类似。

然而说到MCU的超频,自然会有泼冷水的诸君,也有口水唾沫若干,原因当然是稳定性第一。不过任何事物一体两面,有利有弊。本文并非鼓励大家超频,只是把细节呈现给各位,如人饮水,冷暖自知,作到心中有数即可。

准备工作

硬件

本次测试准备使用NUCLEO-L073RZ评估板作为硬件平台,如果是其它STM32评估板,请适当调整相关参数。

image001.jpg

图1:NUCLEO-L073RZ

NUCLEO-L073RZ基本指标如下

基于CORTEX-M0+,32MHZ

192KB/20KB的FLASH/SRAM组合

板载STLINK/V2-1

可选其它硬件包括逻辑分析仪及示波器,用来更好的测试实验结果。

image002.png

图2:DSLOGIC逻辑分析仪

DSLOGIC逻辑分析仪,用来检测PWM信号输出。关于DSLOGIC的更多信息,请参考评测文章《成功众筹11万美金的开源LA》(http://www.21ic.com/eva/instrument/201601/661325.htm)。

image003.jpg

图3:DSCOPE数字示波器

DSCOPE数字示波器,用来检测MCO输出频率。详情参考评测文章《借你一双慧眼》(http://www.21ic.com/eva/instrument/201602/662610.htm)。

注:使用任何一款STM32评估板都可以体验本文的冒险之旅,不过要修改相应的硬件设置。本文提供配套的工程文件,助您再现测试场景。

设计

玩过PC机超频的朋友都知道,超频是非常EASY的事情。要么改FSB,要么改倍频系数,反正就是那几个值的组合。然后,然后就超频了。当然还有其它情况,比如CPU被玩坏了!

STM32系列MCU都有自己的时钟树,通过调整时钟树的一些基本参数,就可以设定内部相关设备特别是MCU的工作频率。

image004.jpg

图4:STM32 MCU时钟树

上面是STM32CUBEMX图形化配置工具中的截图,STM32CUBEMX是一个非常有用的代码生成工具,可以用来生成工程文件的框架。

从图4可以看到,要配置MCU的时钟树,我们需要选择一个时钟源,这是整个MCU工作的基础。时钟源可以来自外部晶振,也可以是内部高速时钟。在STM32的L系列MCU中,引入的新的称之为MSI的时钟,专门用于低功耗模式下的时钟信号生成。

NUCLEO-L073评估板上没有焊接8MHZ的外部晶振,不过ST-LINK上有啊。不过不能直接供L073RZ使用,ST-LINK上的MCO输出8MHZ的时钟信号,默认已配置好,可以直接用来给STM32L073提供时钟,记得将L073RZ的HSE配置为BYPASS模式即可。

如果使用PLL电路来生成最终的时钟信号,需要指定PLL的相关参数,PLLMUL和PLLDIV,对输入的时钟进行倍频,以产生高频时钟信号,供MCU或总线使用,最终经调整后输出到具体的片内设备。

在本例中,使用的外部信号为8MHZ,经PLL调整后的SYSCLK的频率是这样计算的:8MHZ * 8 / 2 = 32MHZ,即SYSCLK = HSE * PLLMUL / PLLDIV。一般情况下MCU的工作频率就是这个啦。所以通过调整PLLMUL和PLLDIV加上AHB PRESCALER这三个参数值就可以调整MCU的工作频率,AHB PRESCALER通常设定为1。

STM32系列都有一个标称的最大工作频率,像NUCLEO-L073RZ的产品说明上就标注了该MCU的最大工作频率为32MHZ。超过了这个值会发生什么情况呢?ST没说,你们自己看着办!

当然不要忘记还有个FLASH,频率提高了,FLASH的等待状态也要相应变化。打开L073的参考手册,会发现

image005.jpg

图5:FLASH LATENCY参考值

在32MHZ的情况下,至少要插入一个延时等待状态。

频率提高了,系列还能正常工作么,温度、发热情况怎么样?这才是重点,为此,为MCU设计了一些任务,看看在超频的情况下,这些任务能不能完成,稳定性如何?

image006.jpg

图6:MCU功能引脚配置

这是为MCU指定的一些要执行的任务,TIM2输出两路PWM信号;UART2用来输出一些基本的信息,如MCU内部温度;同时将MCO信号输出,来测试主时钟信号的频率。

当然还有,我们需要一段CPU任务密集的的代码,看看在高负荷的情况下,超频后的设备还能不能稳定工作。为此,将COREMARK BENCH移植到STM32并进行测试,一方面检测CPU的稳定性,另一方面测试超频后的性能。为什么不用DMIPS来测试,按官方的说法,COREMARK比DMIPS更优秀。关于COREMARK的详细说明,请参考http://www.eembc.org/coremark/about.php。

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

网友评论