不仅仅是低功耗——Nucleo-L432KC开发板评测
扫描二维码
随时随地手机看文章
横跨多重电子应用领域、全球领先的半导体供应商意法半导体(ST)公司的STM32L4系列以其超低功耗的性能,领先于同类产品!如今又推出一款用经济实惠的STM32 Nucleo开发板——Nucleo-L432KC,以其小封装、低功耗、高性能等优点给智能可穿戴及工业应用领域的用户新的选择,今天21ic给大家带来这款Nucleo-L432KC开发板。
一、开箱
Nucleo-L432KC开发板隶属于意法半导体(ST)公司生态系统中经济实惠型开发板,拿到开发板后,熟悉的塑封包装,清晰简洁。右上角可以看到本款开发板是针对ST公司STM32L432为控制而设计的一款Nucleo-32评估版,旁边绿色的Nucleo标志显示了这款芯片是低功耗系列。
图1-1 Nucleo-L432KC开发板包装
拿出Nucleo-L432KC开发板,第一眼看起来好像和其他Nucleo-32开发板没有什么区别,拇指大小(长不足5.5cm,宽不足2cm),板载ST-LINK/V2-1调试器/编程器,mirco USB接口,寥寥几个外设,Arduino™ nano外扩接口等。
图1-2Nucle-32开发板对比
图1-3 Nucleo-L432KC开发板正面
图1-4 Nucleo-L432KC开发板背面
这款Nucleo-L432KC开发板的主要特点:
(1)板载STM32L432KC微处理器
(2)提供Arduino Nano扩展接口
(3)支持云端开发环境Mbed
(4)板载ST-LINK/V2-1编程调试器
(5)USB支持三种接口:
a.虚拟串口
b.存储器
c.调试接口
(6)可变的电源供电
a.USB接口供电
b.Arduino Nano扩展接口供电
(7)提供三个LED灯:
a.LD1作为USB通信指示灯
b.LD2作为电源指示灯
c.LD3是用户指示灯
(8)1个复位按键
(9)支持多种可选的集成开发环境:IAR, Keil, GCC-based IDEs (AC6 SW4STM32, ...)等
但是仔细看看,还是和其他Nucleo开发板有些不同:
(1)一眼能看出来的最大区别是板载的这颗核心微处理器STM32L432KC采用的是32引脚QFN小封装芯片,大小只有5 x 5 mm,这也是目前ST所出的第一块QFN封装的Nucleo系列开发板。
图1-5 Nucleo开发板家族
由于以前拿到的Nucleo开发板都是LQFP封装的,从来没发现在LQFP封装的焊盘内部还有QFN封装的焊盘,这样一块开发板就可以兼容两种封装的芯片,而且用户可以自行焊接所需要的MCU来将一款开发板编程另一款,设计的真是非常巧妙!
图1-6 Nucleo-L432KC开发板MCU封装
除此之外,在MCU下方,Nucleo-L432KC开发板上面还配备了外接32768Hz低频晶振,这在之前的Nucleo-F042K6上面是没有的,这个32.768kHz晶振应该Nucleo-32系列开发板的低功耗系列才配备,可以编程设置使用外部LSE时钟。
图1-7 Nucleo-L432KC开发板外接晶振
二、认识
开箱略看过之后,下面来仔细探索一下这款开发板!
(1)结构
首先这款Nucleo-L432KC开发板隶属于ST公司的Nucleo-32系列,秉承了Nucleo系列开发板的一贯结构:由1个STM32 MCU、1个ST-LINK/V2-1编程调试器、Arduino Nano扩展接口、1个复位按键和一个用户LED组成。下面是Nucleo-L432KC开发板的功能框图。
图2-1 Nucleo-L432KC开发板结构
通过Nucleo-L432KC开发板结构看,开发板非常简单,但是在体积不大的PCB板上,Nucleo-L432KC开发板布局非常紧凑,在电路板的两面都摆放了元件,正面是目标单片机最小系统部分,背面是ST-LINK V2仿真调试器部分。
图2-2 Nucleo-L432KC开发板正面布局
图2-3 Nucleo-L432KC开发板背面布局
(2)核心
在Nucleo-L432KC开发板上板载了一颗ST公司最新的低功耗、高性能微控制器STM32L432KC。
[!--empirenews.page--]
图2-4STM32L432KC微控制器
这颗STM32L432KC微控制器隶属于STM32L4系列MCU。STM32L4 MCU在超低功耗微控制器效率的标准化EEMBC™ ULPBench®测试中获得176.7分,打破了当前超低功耗领域的性能极限,基于带FPU的ARM® Cortex®-M4内核以及意法半导体ART Accelerator™技术的前提下,该系列在80 MHz CPU频率下的性能可达到100 DMIPS。STM32L4系列可以根据微处理器运行时不同的应用需求来适时调整电压从而实现功耗的动态平衡,而且每部集成了低功耗外设(LP UART、LP定时器)、安全和保密特性、大量智能外设如运算放大器、比较器、LCD、12位DAC和16位ADC(硬件过采样)等先进的低功耗模拟外设。
依靠STM32L4的低功耗,高性能的优点,依法半导体公司将其定位在智能三表(电/煤气/水表)、智能可穿戴和工业应用等。
图2-5STM32L4应用1
图2-6STM32L4应用2
图2-7STM32L4应用3
目前STM32L4系列包含5中不同的产品线几十个产品:STM32L4x1(基本型系列),STM32L4x2(USB Device),STM32L4x3(USB Device, LCD),STM32L4x5(USB OTG)和STM32L4x6(USB OTG, LCD)。
图2-8 STM32L4分类
图2-9 STM32L4家族
其中板载的这颗STM32L432KC微控制器属于USB型MCU,内部有256K Flash存储器和64K RAM存储器,采用QFN封装,非常适合对电路板尺寸要求比较高的低功耗场合。
图2-10 STM32L4x2家族
下面是STM32L432系列MCU的内部结构及其主要特点:
图2-11STM32L432内部结构框图
- 带有FPU功能的ARM® 32-bit Cortex®-M4内核,自适应实时加速器能够使微控制器在无等待状态下执行闪存内的代码,处理性能高达100DMIPS,而功耗仅为100µA/MHz。在处理器性能测试基准程序(CoreMark)上跑分273.55 (3.42 Coremark/MHz @ 80 MHz),在超低功耗微控制器效率的标准化EEMBC™ ULPBench®测试中获得176.7分。
- 高达256 KB闪存,64 KB RAM和具有Quad SPI存储器接口。
- 11个定时器模块:1个16位高级定时器、1个32位和2个16位通用定时器,2个16为基础定时器,2个低功耗定时器(能在停机模式下使用),watchdogs和SysTick。
- 高达26个快速I/O,具有5V容忍能力。
- 丰富的模拟外设:1个12位ADC,高达16位5Msps的硬件过采样,每Msps耗电200μA,2个12位DAC,1个内置PGA的运算放大器,2个超低功耗比较器。
- 高达13个通信接口:免晶振的全速USB2.0, 1个穿行音频SAI接口,2个I2C接口,3个USART接口,2个SPI接口,CAN接口,SWPMI单线接口和IRTIM红外接口。
- 供电电源1.71 V到3.6 V,温度从-40°C到85/105/125 °C。
-当然这里最大的特点在于它的功耗:
•超低功耗模式:8 nA,有备份寄存器没有RTC(5个唤醒引脚)
•超低功耗模式 + RTC:200 nA,具有备份寄存器(5个唤醒引脚)
•超低功耗模式 + 16 KB RAM:170 nA
•超低功耗模式 + 16 KB RAM + RTC:450 nA
•动态运行模式:低至84 μA/MHz
图2-12 STM32L4功耗
同时从停机模式到48MHz主频的运行模式下不到5us,在停机模式到80MHz的运行模式下小于20us。
图2-13 STM32L4从停机到运行模式的时间
另外,为了简化STM32芯片间的移植操作和为用户提供所需的灵活性,STM32L4与不同的STM32系列均引脚兼容。
(3)ST-LINK/V2-1
Nucleo-32开发板内嵌一个ST-LINK/V2-1编程调试器,通过SWD接口与目标MCU直接连接,可对目标MCU进行编程和调试功能,同时可实现:
(1)USB接口虚拟串口
(2)USB接口存储器
(3)USB电源管理
这里要注意,ST-LINK/V2-1编程调试器不支持SWIM接口和低于3V的工作电压。
还有一个需要注意的时,默认STM32L432KC的串行接口UART2的PA2 (TX) H和PA15 (RX)引脚通过SB2和SB3锡桥连接到ST-LINK/V2-1仿真调试器,可在计算机上虚拟出一个虚拟串口,用于用户调试程序使用,当然也可以不使用虚拟串口,这时需要将SB2和SB3断开,PA2引脚连接到Arduino Nano接口的A7,但是PA15无法在Arduino Nano引出。[!--empirenews.page--]
表2-1虚拟串口锡桥配置
(4)电源
Nucleo-L432KC开发板供电方式可以选择使用电脑的USB接口供电,也可以通过Arduino Nano接口的CN4选择外部电源:VIN(7-12V电源)、+5V(5V电源)或者+3V3引脚供电。
Nucleo-L432KC开发板可以非常方便的使用ST-LINK/ V2-1编程调试器的USB接口供电。整个过程大致如下:将开发板的mirco USB接口连接电脑后,在电脑的USB主机在ST-LINK部分USB枚举完成之前,只能向开发板提供100mA电流,如果电脑的USB接口能够提供300mA电流,这时目标MCU才能上电成功,同时LD2指示灯点亮,那么大家在随后开发过程中,应保证系统电流需要限制在最大300mA。如果电脑的USB接口不能提供300mA电流给开发板,那么目标单片机不会上电,这是红色指示灯LD2不亮,这是必须考虑使用外部电源为开发板供电。
注意,在开发板上,可通过SB1来配置最大消耗电流。当通过USB供电时,如果SB1被设置成ON(被焊接上),则最大供电电流不应超过100mA。而默认情况下,SB1被设置成OFF(未被短接),这时可以获得最大300Ma电流。
Nucleo-L432KC开发板外部供电可采用三种方法进行:VIN(7-12V)、+5V或者+3V3。
图2-14 Nucleo-L432KC开发板电源配置
(5)时钟
Nucleo-L432KC主芯片时钟有多种选择,对于Nucleo-32开发板共有4种时钟选择。
Nucleo-L432KC主芯片STM32L432KC的2和3引脚默认连接了外部低频32.768KHz晶振,可做LSE时钟输入,当然也可以将外接晶振断开,将2和3引脚连接到Arduino Nano接口上的D7和D8引脚,作为普通I/O使用。
还有一点要注意,Nucleo-L432KC开发板的主芯片默认没有外接HSE时钟输入,当想使用HSE时,需要设置锡桥,将芯片6引脚连接连接到ST-LINK/V2-1的MCO时钟上,可以为芯片提供外接8MHz的精确时钟。
图2-15 Nucleo-L432KC开发板时钟
表2-2 Nucleo-L432KC开发板时钟配置
(6)接口
Nucleo-L432KC开发板对外提供了兼容标准的Arduino Nano接口,可方便使用现有的Arduino资源。这里要注意,标准的Arduino Nano接口I/O是5V电压,而STM32L432KC微处理器I/O是3.3V,但具有5V容忍能力,所以Nucleo-L432KC开发板的Arduino Nano接口兼容3.3V的。
图2-16 Nucleo-L432KC开发板接口配置
(7)功耗测试接口IDD
STM32L432KC是一款低功耗的微控制器MCU,大家是否想要体验一下具体功耗呢?在Nucleo-L432KC开发板背面下方有一个JI1接口,这是设计者为给用户提供的测试目标单片机的电流大小的引脚,具体设置为:当JP1设置为ON(使用跳线帽短接),这种是默认情况,正常为目标单片机供电;当JP1设置为OFF(将跳线帽去掉,在两引脚间加入电流表),这种情况下就可以用电流表测量目标单片机的功耗大小(IDD电流)。
图2-17 Nucleo-L432KC开发板IDD电流测试图
这里需要注意,由于Nucleo-L432KC开发板受体积限制,JP1接口采用了1.27mm间距跳线,在测试IDD电流时不太容易引出测量线,容易短接或者损坏接口!
图2-18 Nucleo-L432KC开发板IDD电流测试引脚
三、测试
Nucleo-L432KC开发板的核心微控制器STM32L432KC是ST公司最新推出的一款低功耗、高性能的MCU,拿到开发板,很多人都非常想自己体验一下它的功耗和性能。
对于功耗,在嵌入式微处理器基准评测协会(EEMBC, Embedded Microprocessor Benchmark Consortium)发布的标准化ULPBench®超低功耗微控制器能效对比评测中,STM32L4系列微控制器获得123分的业内最高成绩。大家想要测试STM32L432KC的功耗,可以通过将Nucleo-L432KC开发板的JP1跳线断开,接入电流表测试IDD电流,这个之前做过类似的测试,这里就不过多测试了。
而对于STM32L432KC的CPU性能,基于运算频率80MHz的ARM Cortex-M4处理器内核,内置浮点运算单元(FPU,floating-point unit)可支持DSP指令。意法半导体的自适应实时加速器(ART Accelerator™, Adaptive Real-TimeAccelerator)是新系列微控制器的另一个附加优势,使微控制器能够在无等待状态下执行闪存内的代码,处理性能高达100 DMIPS,而功耗仅为100µA/MHz,据说在CoreMark测试高达273分。大家可以通过由EEMBC组织提供的CoreMark代码自己体验一下STM32L432KC处理器的性能。
CoreMark标准是2009年由EEMBC组织的Shay Gla-On提出,用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。目前嵌入式处理器厂商纷纷以EEMBC的CoreMark基准测试结果做来展示自己的处理器性能。CoreMark代码使用C语言写成,包含列举(寻找并排序)、数学矩阵操作(普通矩阵运算)、状态机(用来确定输入流中是否包含有效数字)和CRC(循环冗余校验)等运算法则来衡量处理器性能。[!--empirenews.page--]
在这里我们亲自来使用CoreMark体验一下STM32L432KC的性能,首先登陆EEMBC官网的CoreMark子页下载测试代码,地址:http://www.eembc.org/coremark/download.php。注意这里需要先注册用户才能下载测试代码。
图3-1 EEMBC官网的CoreMark子页面
图3-2 Coremark代码下载
下载代码后,就可以进行代码移植,将CoreMark代码运行到STM32L432KC上来。移植方法可以参看意法半导体中国网站上提供的方法,地址:http://www.stmcu.com.cn/Designresource/design_resource_detail/file/9646/lang/ZH/token/0b7b012b4049ddba965b3e05151862de。这个文档是将CoreMark代码移植到STM32F7上,大家可根据说明很方便移植到STM32L432KC上。
图3-3移植CoreMark代码说明文档
接下来在STM32 CubeMX中新建Nucleo-L432KC工程,配置时钟和UART2虚拟串口,并生成IAR工程文件。
图3-4配置Nucleo-L432KC时钟
图3-5配置Nucleo-L432KC开发板串口UART2
图3-6生成IAR工程
然后将下载的CoremarkV1.0文件复制到生成的IAR工程中。
图3-7复制Coremark文件
修改IAR工程,并修改相关的程序文件。
图3-8修改IAR工程
配置编译器的头文件路径。
图3-9添加头文件路径
配置编译选项。
图3-10配置编译器
然后编译工程文件直至没有错误,之后将Nucleo-L432KC开发板连电脑,将编译好的程序下载到STM32L432KC芯片中,打开串口助手,设置好串口参数:9600bps、奇校验、数据位7位、停止位1位。
图3-11配置串口参数
按下Nucleo-L432KC开发板复位键等待一会,串口接收测试数据,可以看到自己测试的Coremark分数为263.27分,比官方给的273分少了10分,还是稍稍有些误差,不过测试环境不同,还有使用了内部的HIS时钟,误差肯定是有的,不过这个数据还是比较接近官方给的数据,通过数据可以看到,STM32L432KC微处理器的性能的确不错。
图3-12 IAR工程输出测试信息
接下来又在MDK5.20环境下测试了一下Coremark代码。
图3-13 MDK建立Coremark测试工程
编译选项配置如下。
图3-14 MDK编译器配置
通过测试,发现在串口输出的coremark分值为209.59分,和ST官方给出的273就有较大区别了,和上面在IAR软件中运行的分值263也有不小的差距,是不是哪里配置没有达到最大优化?
图3-15 MDK工程输出测试信息
通过我们上面在Nucleo-L432KC开发板上运行Coremark V1.0的程序可以看到,相同的程序在不同的开发环境(编译器)下,得到的结果还是有较大的区别,其实即使是在同样的开发环境下,编译器配置参数不同,结果也会有较大的差异。
上面的测试可以看出:
(1)通过运行Coremark代码来看STM32L432KC微控制器是一个性能还是不错的。[!--empirenews.page--]
(2)同时也说明大家的开发环境和编译器配置对处理器的性能发挥也是不可忽略的。
(3)最后还有我们能不能单单看Coremark代码的跑分来就能说明处理器性能到底有多高???
四、开发
说到Nucleo-L432KC开发,大家都应该非常熟悉,意法半导体ST公司为STM32建立的完备的生态系统,提供了包括低成本的Nucleo系列、Discovery探索系列和全功能系列等种类丰富的评估板帮助用户熟悉STM32微控制器;同时支持多种主流的IDE,包括MDK、IAR、GCC-based IDEs等集成开发环境,另外还支持云端开发Mbed;在软件方面,ST为STM32微控制器提供了功能强大的标准库和HAL库,以及最新推出的LL库,并提供了大量的工程实例和开发模板,帮助工程师快速开发STM32的工程;此外还有ST还推出的STM32 CUBEMX配置工具可使用图形化界面完成STM32微处理器的初始化配置工作。
ST公司推出的开发工具可见下图。
图4-1 STM32软件生态系统
关于ST公司为STM32系列微控制器提供的各种库可以见下图。
图4-2 STM32微控制器支持的库
不同库的特点可见下图。
图4-3不同库的比较
通过上面的简单对比,可以看出,目前ST公司推出的HAL库功能最为齐全。目前ST正为用户逐步退出LL库,但目前还没有覆盖所有系列的MCU,不过也给出了相应的时刻。
目前STM32L4系列的LL库已经推出了,应该也是ST公司推出最早的LL库,我们可以在大家下载到的HAL库目录中找到LL库,如下图。
图4-4 STM32L4的HAL库和LL库
可能有人会疑问,有了强大的HAL库了,还要推出LL库,在两种库之间如何选择使用呢?我认为下图应该比较清楚清楚的说明了HAL和LL库的关系和使用。
图4-5库的关系
HAL库是目前功能最强键的库,支持所有的STM32微控制器的片内外设操作,可很方便的使用户编写的代码从一个STM32系列移植到另一个系列,可以利用STM32 CubeMX软件直接生成HAL库的初始化代码,非常适合于不同级别的用户使用,但是使用HAL库编写的代码执行效率相对而言不够高效,而且不够灵活,在一些情况下不能满足用户多样化的操作,可能这时候就需要用户直接操作寄存器,但是HAL库中添加直接操作寄存器的程序会使用户程序可读性变差。因此,ST公司开发了更加接近硬件的LL库,该库可直接访问STM32微控制器的寄存器,编译代码更小、更加紧凑,而且可以很方便的和HAL库共同使用,是对HAL库的一个有效的补充,当然,用户也可以只是用LL库或HAL库,也可以同时使用HAL库和LL库。但是使用LL库也会带来一些问题,就是在不同的STM32系列微控制器之间的移植性较差,无法保证能够在不同谢列之间移植成功,需要用户更多的了解STM32的寄存器级的操作等等问题。
之前用惯了MDK和IAR两个开发工具,今天来体验一下另一个免费的开发工具System Workbench for STM32,该工具是基于Eclipse的免费的跨平台软件,可运行在windows、Linux和Mac系统上
图4-6 System Workbench for STM32网站
接下来就来测试一下HAL库和LL库共同使用会有哪些好处,在这里我们选择多数STM32单片机都有的内部硬件CRC校验模块,该模块在很多地方都使用,也比较简单,我们在系统开始首先配置CRC_HandleTypeDef类型的结构体变量,将其配置为CRC8,使用HAL_CRC_Init()函数对CRC模块进行初始化,然后使用HAL_CRC_Calculate()函数对数据进行CRC8校验计算,假设之后我们想要进行CRC16的校验该如何实现?在使用HAL库时,需要重新修改CRC的结构体变量,调用HAL_CRC_Init()函数,这样HAL_CRC_Init()内部就有很多操作是重复的,这样做回是程序效率降低,另一种方法是在HAL库编程过程中直接插入寄存及的操作,这样会使程序的可读性变差。现在使用LL库的LL_CRC_SetPolynomialSize()和LL_CRC_SetPolynomialCoef()就可以直接修改CRC模块配置,而不用再次调用HAL_CRC_Init()函数。
图4-7LL库函数
测试环境为System Workbench for STM32+STM32 CubeMX+ STM32Cube_FW_L4_V1.5.0,大家自行搭建。
首先在STM32 CubeMX中新建Nucleo-L432KC开发板工程。
图4-8新建CubeMX工程
启用CRC模块和UART2串口模块。
图4-9配置片内外设
将STM32L432KC的时钟配置为HIS,HCLK为80MHz。
[!--empirenews.page--]
图4-10配置时钟
然后配置CRC模块。
图4-11配置CRC
配置UART2模块
图4-12配置UART2
配置完成后,创建SW4STM32项目,即System Workbench for STM32项目工程。
图4-13生成System Workbench for STM32工程
打开System Workbench for STM32软件,导入想到导入刚刚生成的工程。
图4-14导入工程向导
选择工程文件。
图4-15选择导入工程
可以看到整个工程结构,如果使用过Eclipse软件,整个工作应该比较顺利。
图4-16导入工程
可以看到在主程序文件中生成的CRC初始化代码,使用的是HAL库。
图4-17自动生成CRC初始化函数
接下来编写相关程序,在HAL库编程中穿插了LL库的使用。
图4-18编程中使用LL库
完成程序,编译调试,可在串口输出成功提示。
图4-19输出完成信息
通过上面的测试,说下自己的几点小小感受:
(1)LL库是对HAL库的有利补充,两个库文件共同使用会使工作变的比较简单,效率更高初始化时使用HAL库,在后期操作时,可以灵活穿插使用LL库。
(2)目前使用STM32 CubeMX软件自动生成的工程文件只有HAL库,并没有LL库,希望在后期ST公司能够在STM32 CubeMX软件中添加相应选项,比如允许单独使用HAL库或LL库,或者同时使用两者,这样更加方便些。
(3)在STM32 CubeMX软件中目前可以自定义一些符号常量,但是不能应用在STM32 CubeMX软件的配置栏目中,一点小小的遗憾。
图4-20STM32 CubeMX不能使用符号常量
(3)使用STM32 CubeMX自动生成的工程项目在导入System Workbench for STM32后,存在一些错误和警告提示,需要在“Preference”栏目中去掉相关的选项才可编译通过,总是感觉不太舒服。这些问题如果单独使用System Workbench for STM32向导创建工程时则不存在相关问题。感觉STM32 CubeMX和System Workbench for STM32软件兼容性还有待提高。
图4-21“Preference”中配置隐藏错误提示
五、总结
总之,本次评测的Nucleo-L432KC开发板是意法半导体ST公司最新推出的低成本的Nucleo-32开发板,板载的STM32L432KC微控制器,基于ARM Cortex-M4处理器内核的一款低功耗MCU,不仅仅如此,还内置了浮点运算单元可支持DSP指令,自适应实时加速器(ART Accelerator™, Adaptive Real-Time Accelerator)可实现无等待状态下执行闪存内的代码,处理性能高达100 DMIPS,板载的是一颗QFN-32小封装的MCU,可以说是一款具有极低功耗的高性能、小封装的产品,非常适合三表(电/煤气/水表)、智能可穿戴和工业应用等领域,尤其是空间要求比较小的可穿戴设备。除此之外,Nucleo-L432KC开发板板载ST-LINK/V2-1编程调试器,提供Arduino Nano扩展接口。支持主流的IDE(MDK、IAR、GCC-based IDEs、Mbed等)开发环境,支持功能强大的HAL库和LL库以及图形化的配置工具STM32 CUBEMX帮助用户快速完成自己的需求。
本文系21ic原创,未经许可禁止转载