入门级STM32F4新秀——NUCLEO-F412ZG开发板评测
扫描二维码
随时随地手机看文章
STM32F412是ST推出的新款MCU产品,这是一款基于Cortex-M4的入门级MCU,为STM32F4 Access Line系列带来了全新的特性,除了对产品内存进行了升级,还带来了其它的新特性,例如更高的主频及可以工作在125°C的工作环境之下,MCU还提供了QSPI/FMC存储访问接口。
图1 STM32-F412
根据ST官方对STM32F4的分类,STM32F4系列MCU分为三个系列:Access Lines系列、Foundation Lines系列及Advanced Lines系列。STM32F412属于Access Lines系列中高性能的产品,具备优秀的电源效率特性,MCU的工作频率进一步提升至100MHZ。为了让用户更好的体验及评估STM32F412系列MCU,官方推出两款配套的评估板:NUCEO-F412ZG及STM32F412G-DISCO开发板,此次评测的产品为NUCLEO-F412ZG。
图2 NUCLEO-F412ZG包装
NUCLEO-F412ZG开发板沿袭NUCLEO系列特色,包装上基本已形成固定风格。考虑到ST向来对于用户的慷慨态度,常常免费提供开发板,或者以较低的价格发售开发板,故极少有人对包装的简陋予以指责!透过透明的外包,可以看到NUCLEO-F412ZG是一款NUCLEO144系列产品,MCU使用的是STM32F412ZGT6,同时看到开发板上预留了网络接口,但是作为入门级的产品,开发板上并未提供网络接口,相应的控制芯片及网络变压器也没有提供。
图3 背面的入门指南
NUCLEO-F412ZG开发板背面提供了用户入门的简短说明,还有系统需求及支持的开发工具链等介绍。
图4 开发板正面
NUCLEO系列开发板基于公版设计,对于大多数引脚数相同的MCU,可以直接替换兼容的MCU来体验不同的MCU特性。开发板上中心位置是144脚的STM32F412ZGT6 MCU,上下两侧则是NUCLEO开发板引出的Morpho及Zio接口。开发板右侧是ST-LINK/V2-1调试/下载器,ST-LINK已成ST官方开发板的标配。开发板左侧的缺口是没有引出的网络接口,另外相应的PHY芯片也没有焊接。如果用户需要使用网络功能,需要自行焊接。开发板左侧还提供了USB OTG接口,提供访问外部大容量USB存储器的能力。其它设备包括3个用户可编程LED指示灯、2个按钮(一个用户可编程按钮及一个RESET按钮),另外开发板上提供了32K的LSE晶振。开发板没有提供HSE晶振,不过ST巧妙的设计使得可以使用ST-LINK提供的MCO来给主MCU提供准确的时钟信号。
图5 开发板背面
NUCLEO-F412ZG开发板背面包含大量的SB焊桥,用户可以通过这些焊桥的不同组合以实现不同的硬件配置。开发板引出的Morpho及Zio均使用过孔设计,方便接驳不同类型的杜邦线以连接各种外设。
[!--empirenews.page--]
图6 特性一览
随NUCLEO-F412ZG开发板附送一张简单用户说明,描述了产品提供的主要特性,例如本评估板上使用的144针的STM32F412ZGT6 MCU,工作频率为100MHZ,FLASH/RAM的组合为1MB/256KB,其它主要特性也列出供用户参考。
图7 接口写真
NUCLEO-F412ZG开发板一侧的接口写真,可以看到按键、OTG、没有焊接的ETH接口等设备。
图8 接口写真
NUCLEO-F412ZG开发板另一侧的ST-LINK/V2-1接口,板载的ST-LINK/V2-1除了可以给开发板下载程序及兼做调试器外,也可以通过ST-LINK上引出的接口用作其它开发板的调试/下载工具。
图9 ST-LINK/V2-1
ST-LINK/V2-1上提供了用户指示ST-LINK/V2-1的三色LED指示灯,用来指示调试器的工作状态。另外注意引出的SWD接口,该接口可以用来对其它开发板下载代码,也可以用来调试其它接口。
图10 MUC特写
MCU特写,NUCLEO-F412ZG开发板下面标注为X2的是32K的LSE晶振。STM32-F412片上集成了丰富的外设,主要包括
l 4x USARTs running at up to 12.5 Mbit/s
l 5x SPI (muxed with the I²S) running at up to 50 Mbit/s
l 4x I²C up to 1Mbps
l 2x CAN (2.0B Active)
l 1x SDIO running at up to 48MHz and available on all packages[!--empirenews.page--]
l 1x USB 2.0 OTG Full-speed (FS)
l 2x full duplex I²S up to 32-bit/192 kHz
l 3x simplex I²S up to 32-bit/192 kHz
l 2x digital filters for sigma delta modulator
l 4x PDM interfaces, stereo microphone support
l 12-bit ADC reaching 2.4 MSPS,
l 14 timers, 16- and 32-bit, running at up to 100 MHz
l True random number generator
NUCLEO系列开发板与DISCO开发板的区别就是NUCLEO板上几乎没有集成外部设备,而DISCO系列开发板一般会集成若干比较实用的外设,直接供用户进行体验。NUCLEO最大的优势是引出了全部的GPIO接口,同时也提供了Arduino UNO兼容的硬件接口,为用户自行选择外设提供了更大的灵活性。
图11 元器件布局及名称
这里列出了NUCLEO-F412ZG开发板上主要设备的位置及名称,方便用户参考使用,注意NUCLEO-F412ZG上没有引出ETH接口。
Zio接口兼容Arduino UNO R3接口,对应的引脚位置及名称参考如下
图12 Arduino UNO R3兼容接口
注意NUCLEO144使用了公版设计,主要的设备除了通过SB焊桥来进行配置外,具体的开发板型号引出的引脚,特别是与Arduino兼容引脚的位置会略有差别,需要参考官方手册及具体的原理图。[!--empirenews.page--]
NUCLEO-F412ZG开发板出厂时内置了DEMO程序。使用Micro USB连接线连接开发板与PC,ST-LINK开始上电,检测USB能否提供足够的供电,通过调试器提供的三色LED灯来指示不同的工作状态。PC端会发现新的硬件设备,如果是使用Linux系统作为开发环境,一般可以直接使用内核提供的串口驱动;如果是使用Windows作为开发环境,则可能还需要安装ST-LINK驱动程序,本次测试用的操作系统是Windows 10 LTSB版本,早前已使用过其它类型的ST开发板,所以设备管理器已能直接发现对应的串口设备。
图13 虚拟串口设备
另外NUCLEO-F412ZG开发板还支持mbed方式的代码下载功能。开发板连接到设备后,PC端会映射一个USB存储器,可以直接将编译好的代码拖放到USB存储器中实现代码下载。
图14 USB存储器
映射到PC端的USB存储器内置MBED开发快捷方式,双击存储器内的MBED文件,可以进入MBED开发环境,使用MBED来开发软件
图15 MBED硬件平台
不过截止本文发稿为止,尚未在MBED的开发环境中找到NUCLEO-F412ZG的相关信息,看到的还只是MCU的符号。所以如果想在MBED上体验NUCLEO-F412ZG的软件开发优势,尚需等待官方开放出相应的硬件平台支持功能。
NUCLEO-F412ZG开发板上电后,默认的DEMO功能提供了通过按键来切换3个LED灯闪烁频率演示,可以通过该DEMO来初步测试开发板是否功能正常。
ST一直致力于打造一个良好的产品生态系统,向用户提供完整的软、硬件设计参考,从产品的软件库到硬件的设计PCB、BOM等,应有尽有。
STM32CUBEMX是ST推出的一款图形化辅助用户编程工具。该工具提供了直观的图形化表示,帮助用户设置硬件的初始工作参数,结合ST推出的HAL库,开发者无需查询琐碎的寄存器参数就可以实现特定的初始化及相应的功能调用。通过对CUBEMX的设置,最终用户会得到一个基于IAR/MDK/TrueStudio的完整的工程文件,该工程文件除了设置好硬件工作参数外,还对内存布局、堆栈设置等作了初始设置。
STM32CUBEMX还支持丰富的三方中间件集成功能,如RTOS的支持及FATFS等中间件的支持。
启动STM32CUBEMX软件,首先选择MCU的类型,实际上CUBEMX也支持选择开发板类型来定制程序的功能。
图16 选择MCU型号
STM32CUBEMX支持STM32系列的所有MCU,各系列MCU都通过独立的程序包来支持。这里选择STM32F412ZGTx,点击OK继续设定其它的参数,如启用MCU上的哪些片上设备,设备系统时钟等参数。
STM32CUBEMX还有一个非常有用的功能,点击Power Consumption Calculator选项卡,在这里可以对设备的电源使用情况作一个模拟。点击界面上的添加按钮,添加一种特定的MCU运行模式,并设置其它相关的参数。
图17 配置测试参数[!--empirenews.page--]
在估算系统功耗时,可以设置的内容非常丰富,例如MCU的运行模式、MCU的主频选择、是否启用FLASH的预取功能等,另外还可以指定使用哪些片上外设。对于指定的功耗模式,可以设定每种模式运行时间的长短及附加的电源消耗值。
图18 估算效果
这里我们添加了两种运行模式,一是标准的RUN模式,系统估算后得到电流值约为21mA。而处于SLEEP模式下的电流消耗则大约是3mA的样子。同时,软件还会计算出指定时间段内的平均电流值。
STM32F412作为一款高性能MCU,官方给出的参考指标是125 DMIPS/339 CoreMark,这里我们也来测试一下系统的CoreMark得分并与官方的值做一个比较。关于CoreMark的介绍及移植,请参考官方文档,此处不赘述。
测试使用的工具链是IAR,为了达到最优性能,需要对IAR工程文件设置适当的优化,
图19 工程优化
优化级别设定为High,优化选项指定为Speed,同时勾选No size constraints,对程序进行最大程度的优化。
图20 CoreMark测试
从上述测试结果来看,我们得到的CoreMark得分是335,与官方宣称的339得分非常接近了。除了测试了CoreMark得分,还使用了万用表测量了一下工作时的电流,
图21 电流实测
看到测量所得到的电流值与在STM32CUBEMX工具中得到的估算值也是非常接近的。
STM32-F412进一步丰富了STM32系列MCU,凭借新的特性,如更高的主频(100MHZ),更大的存储能力(1MB FLASH/256KB RAM),及更宽广的温度适应能力(高达125°C),使得STM32-F412非常适合应用在电机驱动、工业PLC、可穿戴设备及医疗设备等应用场景。官方给出的UQFN48封装的STM32F412的报价是$3.60(10,000片),这个价格相对于国产芯片来说,略贵。
如果想快速体验STM32-F412这一崭新的MCU,NUCLEO-F412ZG的确非常适合!
参考资源:
本文系21ic原创,未经许可禁止转载