<font color="#FF8000">作者:netlhx</font>
STM32的MCU产品全面开花,除了推出性能怪兽CORTEX-M7之外,又推出号称性能与低功耗并重基于CORTEX-M4系列的低功耗产品STM32-L4系列,宣称性能能达到1.25 DMIPS/MHz (Drystone 2.1)及273.55 Coremark® (3.42 Coremark/MHz @ 80 MHz),到底情况如何,今天就性能方面做个简单评测。
<a href="http://www.stmcu.com.cn/index.php/Product/pro_detail/cat_code/STM32L4/f…;
<a href="http://www.mouser.cn/Embedded-Solutions/Engineering-Tools/Embedded-Deve…;贸泽官网</a>
NUCLEO32-L432属于NUCLEO32家族的新品。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7512-1.png…; alt=“” width="600"></center>
和以往的NUCLDO32一样的包装,一样的简单说明,请忽略STM32系列的外包装。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7513-2.png…; alt=“” width="600"></center>
背面仍然千篇一律,请再次忽略。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7514-3.png…; alt=“” width="600"></center>
与以往的NUCLEO32开发板的区别,一是MICRO接口上的L432KC标签,告诉你这是一款基于STM32-L432KC的评估板;另一个区别是MCU的封装形式变了,以前常用的LQFPN32变成了UFQFPN32形式,所以MCU的四周就多出了一圈裸露的焊盘!
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7515-4.png…; alt=“” width="600"></center>
开发板仍然坚持一向的可更换MCU的设计理念,如果想将开发板上的MCU换成其它型号,只要将原来的MCU用焊台拆下来,然后添上其它兼容的MCU型号即可。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7516-5.png…; alt=“” width="600"></center>
开发板的背面主要包括STLINK/V2-1调试接口,最下面还有IDD的检测跳线,只是受限于开发板的尺寸,这个间距有点小,还有就是焊接比较脆弱,需要十分小心。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7517-6.png…; alt=“” width="600"></center>
MICRO USB接口以及旁边的LED调试指示灯,加上两边的排针,资源实在精简到了极点。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7518-7.png…; alt=“” width="600"></center>
除了开发板上的丝印,包装盒里的纸质说明也列出了GPIO接口的引脚编号,方便随时查阅。
关于STM32L432这款MCU,属于STM32基于CORTEX-M4里面比较低端的型号,在官方的产品家族里位置如下
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7521-1.png…; alt=“” width="600"></center>
不过从官方给出的宣传参数来看,其COREMARK居然达到了罕有的273,比MAINSTREAM的值245居然还要高(当然主频值也略高)。
不过STM32L4系列的主打功能是超低功耗,按照官方给出的参数,主要如下
8 nA Shutdown mode (2 wakeup pins)
28 nA Standby mode (2 wakeup pins)
280 nA Standby mode with RTC
1.0μA Stop 2 mode, 1.28 μA Stop 2 with RTC
84 μA/MHz run mode
Batch acquisition mode (BAM)
4 μs wakeup from Stop mode
关于低功耗的实测,爱板网已有同系列的L476的详细评测,此处不再评测。
开发板的硬件布局及主要元器件如下
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7522-2.png…; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7523-3.png…; alt=“” width="600"></center>
NUCLEO系列开发板设计得非常灵活,PCB板上的大量SB可以用来调整不同的功能,以实现不同的功能。比如可以通过SB的不同组合来使用STLINK/V2-1的MCO作为主控MCU的时钟源等功能。
接下来主要是通过将COREMARK的源码移植到STM32上,验证官方宣称的COREMARK测试值。
首先使用STM32CUBEMX来建立一个基本的程序框架。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7524-4.png…; alt=“” width="600"></center>
硬件功能只配置了USART2用来输出一些测试的信息。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7525-5.png…; alt=“” width="600"></center>
时钟使用内置的MSI时钟输出(如何使用STLINK/V2-1的MCO来作为MCU的时钟请参考官方说明),MSI输出为8MHZ,经PLL电路后频率变为80MHZ,这也是该MCU的最大支持频率,以保证最高性能。
接下来下载COREMARK的源代码
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7526-6.png…; alt=“” width="600"></center>
下载前需要注册一个账号,下载源代码后解压,基本的目录结构如图
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7527-7.png…; alt=“” width="600"></center>
涉及到COREMARK核心的代码文件主要有以下几个
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7528-8.png…; alt=“” width="600"></center>
要移植的代码主要集中中core_portme.c及core_portme.h这两个文件中。
COREMARK的基本工作原理是执行一段测试代码,然后检测代码运行所用的时间,对比特定的标准最后得出一个数值,这个数值就是最终的得分了。如果对COREMARK的内部原理感兴趣,可以研究一下其代码。
关于代码的移植,STM32社区也给出了一个指导方案。
将移植好的代码添加到STM32工程文件中,最终的目录结构如下
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7529-9.png…; alt=“” width="600"></center>
为了最大程度的释放硬件性能,需要对工程代码做一下优化,在MDK中的优化设置如下
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7530-10.pn…; alt=“” width="600"></center>
优化等级设为O3,同时开启Optimize for Time选项。
接下来就可以来查看COREMARK在NUCLEO32-L432上的测试结果了,看看有没官方宣称的273那么高。
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7531-11.pn…; alt=“” width="600"></center>
嗯,测试的结果达到了209,并没有官方宣传的那么高。当然考虑到不同的编译器、优化设置等参数的影响,这一值与官方宣称的值还是有一点的差距啊!
接下来再对MCU超频,通过上面MCU的时钟设置图可以看出,只要调整上述PLL参数值就可以调MCU的主频。咱们先激进一点,直接将PLL-N的值调整为30,这样系统就能在10MHZ的频率下工作了。下面是测试的结果
<center><img src="http://mouser.eetrend.com/files/2017-01/wen_zhang_/100002385-7532-12.pn…; alt=“” width="600"></center>
上图可以看到,系统的主频率为120MHZ,COREMARE值更是达到了314之高!
当然这只能算是自娱自乐!ST有一个特色,对于民间的呼声从来不理,估计都忙着处理大客户去了,所以这次的COREMARK跑分结果只能算是一次娱乐,诸位看过即忘,不要期望ST能有点解释,比如测试环境的影响,工具链的选择,优化参数等。(Coremark测试用代码包)
总体来说,NUCLEO系列开发板还是很良心的,一是价格低廉,二是慷慨大方,免费提供各种试用甚至分发。要是在各大论坛或用户讨论组里再常驻一两个FAE在线,那就更完美了!
本文转载自<a href="http://www.eeboard.com/">爱板网</a>
此文章版权归著作者所有,如有任何问题请联系小编进行删除。
<center><iframe scrolling="no" marginHeight="0" marginWidth="0" frameBorder="0" height="250" width="100%" src="http://www.eetrend.com/mouser-ad-2"></iframe></center>