这次有幸收到这块Nucelo-L053R8的评测板子,谢谢主办方提供的这个机会。Nucleo是ST推出的一系列“10美刀”的开发板,主打的就是廉价,看样子是为了挑衅知名的快速原型开发平台Arduino而生的。众所周知,Arduino在创客、物联网等等领域都非常有名了,因为他的廉价、简易的特点。这次ST推出Nucleo系列恐怕也是要在这个领域插上一脚吧。
ST的Nucleo不像Arduino那样仅支持Atmel的少数单片机,Nucleo几乎支持所有的64Pin的STM32。从F1 F3 F4到低功耗的L0都有。这次拿到的这块STM32L053R8T6是低功耗版的STM32,M0+内核的,主频是32M,有64K的Flash和8K的SRAM,比起Arduino主流的Atmega328p高到不知道哪里去了。我以前是个Arduino的忠实使用者,但是苦于其性能实在是捉急(大多数都在8位AVR,16M主频和少的可怜的存储)。实在是难以想象,在2015年底了,我们还要使用这种8位的AVR,除了AVR比较出色的抗干扰和耐操性之外(一般应用也不需要),还有什么理由驻足AVR。Arduino也有32位平台,但价格(不管是裸片还是开发板),都是比较高的,而且支持的很不好。
来看看这个板子。简单的塑封包装,国外是10美刀,国内稍贵。没有多余的配件。左边可以看到这个板子上MCU的参数。自带STlink,支持拖拽放bin文件编程,这个后面会提到,超级方便的功能。
最重要的特性,莫过于Mbed平台的支持。
Mbed也是个快速原型开发平台。比起Arduino是个后起之秀,但却有Arduino无可比拟的优势。首先Mbed是基于ARM的CMSIS的,基本上很多ARM片子的厂商都能支持,包括ST、NXP、飞思卡尔等都有相应的板子支持。与Arduino相同,提供C、C++编程,并且提供更多的基础API。这点非常重要,大家知道Arduino为了简便,很多API都是很简单的,要一些复杂的功能(例如定时器中断),就必须使用AVR的编程方式。但是在Mbed上,这些都提供封装好的函数可以调用。还支持云端编译器和离线的编译器(例如keil,大家都用吧)。现在Mbed国内用的很少,但随着更多板子的支持,肯定会有很好的前景。
Nucleo自己提供一套morpho接口,类似于熟悉的Arduino Uno接口一样的标准,同时兼容Arduino Uno的接口。卡片上清楚地写明了每个接口的定义。
和我之前自己买的Nucleo-F411RE对比下,板子是一摸一样的,只是MCU不同,连背后的跳线选择都一样。看样子是全兼容了。Nucleo的这系列板子,PCB都是一样的,通过不同的MCU和跳线来实现不同的型号。
我们来放大看看晶振部分。板上有一个32K的RTC晶振,但是HSE部分的8mhz晶振和电容都是没有的。这是为啥呢?难道说这个默认用的HSI ? 当然不可能,连外部RTC都给你上了,怎么可能高速时钟用内部的呢?下面看到STLINK的部分,就明白了。
STLINK部分,可以看到,这个STLINK也是可以用作独立的编程器,给别的开发板下载程序用的。只需要用跳帽选择就好了。可惜的是USB口还是mini usb,这个和Arduino nano一样。不知道为什么都要用这个,可能是出于让你家老的手机数据线“发挥余热”的目的吧。不过usb mini 的头子时间长了接触不是很好…… STlink上面还有个彩色LED灯,用来指示状态的。
STlink上面有个8mhz的晶振。现在告诉你吧,其实下面的主MCU用的是从stlink的mcu的MCO引脚“复制”出来的时钟信号驱动的。 这样就能省一个晶振,这个功能是以前AVR没有的功能。如果你需要单独使用下面的主MCU,可以通过背面跳线切断,然后装上8mhz晶振和负载电容实现,很简单。
我们来试试Mbed的云端编译吧。首先去Developer.mbed.org了解下使用方法。网站是英文的,不过,相信大多创客,这点英语不算什么。找到L053,添加到编译器。
用云端编译器,随便导入一个例程看看。我选择的是read button的例程。板子上自带了一个测试用的蓝色的按钮(另一个黑色的是reset,不要按错哦。)
云端编译器功能和界面都很简单的。别看他这么简单,它还是带有自动填色、自动补全和提示的。比起Arduino的那个IDE,真的好多了……
点击一下编译,会进行云端的编译工作。编译完后,你就可以在浏览器里面下载编译好的bin文件了。
这里要提示一下,因为我自己电脑本身就有STLINK的驱动,所以不需要在安装了。第一次用的朋友务必要先下载驱动才行。
Bin文件直接扔到STlink的虚拟U盘里,就好了。别的什么都不用做,STLINK就会自动把bin文件写入到主MCU里。你会看到彩色的指示灯闪烁,然后变成绿色,就烧写完成了。超级简单吧,简直是新手的福音。
根据刚才例程的程序,这个例程就是按按钮,改变LED的亮和灭。我们来试试,可以看到,按一下,灯亮;按一下,灯灭。成功了。
在STM32-mbed上,还可以发现,程序启动速度非常快,没有以前Arduino上面,bootloader装载程序比较慢的特点。这是由于mbed和arduino工作机制不同的缘故,更多的优点还留待你去发现了,我只能告诉你,Mbed****好。
最后上一张山寨Nano和正版Nucleo的合影。给大家参考下Nucleo的体积,顺带一提,Nucleo价格确实是很良心了。