灰小子的博客

Nucleo-F070RB评测

灰小子 Nucleostm32mbed评测

(原文首发在21ic http://bbs.21ic.com/icview-924832-1-1.html )

by 灰小子 2015-4-22

一、初见

非常荣幸,能从21ic拿到Nucleo-F070RB。周一中午午睡时,突然接到快递电话,通知去取快递。拿到手看到是21ic发来的开发板,迫不及待的打开,看到简洁而时尚的Nucleo-F070RB。Nucleo开发板仍然采用了简洁的塑料包装,开发板的主要硬件一览无余。

打开包装:

Nucleo开发板,与Discovery系列开发板绿色的外观比较起来,略显小巧,但简洁的配色更突显时尚。

除了外观上的更简洁时尚,Nucleo开发板最大的特点是支持mbed。mbed平台,包括免费的软件库(SDK)、硬件设计(HDK)以及在线的Web开发环境,也就是常说的云端开发。使开发者可以告别庞大的占用很多硬盘空间的IDE软件,可以使用Nucleo固件库进行快速开发。当然,也可以使用离线版的mbed软件SMeshStudio进行开发。Nucleo开发板第二个特点,就是具有完全兼容的Arduino Uno Rev3接口,可以和Arduino子板随意搭配,这也为快速开发生产提供硬件上的支持。

从2013年12月意法半导体宣布加入ARM MBED项目,到现在,意法半导体共推出了14款Nucleo开发板:

在这14款Nucleo开发板中,笔者去年在21ic有幸获得过一块Nucleo-F411RE,在这里正好做个对比:

从外观上看,这两个开发板除了核心mcu不同和贴纸编号不同,其余硬件、外观基本都是一样的。咱们更进一步,看下两个开发板的I/O扩展是否相同:

从上面图片可以看出,两个开发板据大部分I/O扩展都是一样的。只有CN10上的第18个I/O不同,F070RB上是PB11,F411RE上是NC。

从意法半导体的产品定位来说,Nucleo-F070RB是一款介于高性能和低功耗之间的开发平台,具有很高的性价比,在digikey仅售80.99元。可以参考下图ST的产品线(ST产品线图官网还未更新到14款产品):

二、Nucleo-F070RB开发板的特点

Nucleo-F070RB开发板硬件原理框图:

Nucleo-F070RB开发板正面硬件图:

Nucleo-F070RB开发板背面硬件图:

透过上面硬件图,我们可以看到Nucleo开发板的这些硬件特点:

  1. Arduino Uno Rev3接口,支持Arduino兼容的子板;

  2. 扩展了ST Morpho全部的I/O接口,方便连接控制器的周边外设进行硬件扩展;

  3. 集成ST-Link/V2-1的调试下载器,可用于下载和调试程序,支持对外部微控制器调试;

  4. 板载的TQFP64封装的STM32F070RBT6,该mcu具有Cortex-M0架构,主频最高可以达到48MHz。

  5. 板载3个LED,一个USB通讯LED,一个电源LED和一个用户LED;

  6. 板载两个机械按键:一个复位按键和一个用户按键。

另外还需要说明的是:

  1. Nucleo开发板的USB接口具有三个不同的功能,虚拟串口、容量存储和调试接口;

  2. 有3种不同供电方式:mini USB接口供电、IO引脚用电、通过Arduino UNO R3 Shield接口供电;

  3. 支持Keil、IAR、GCC和embed在线IDE的设计工具。

三、核心微控制器STM32F070RBT6

板载的微控制器STM32F070RBT6,是采用高性能的ARM Cortex-M0 32位RISC内核,最高工作频率48MHz,具有高速嵌入存储器(128KB闪存和16KB SRAM),工作电压范围2.4V-3.6V,以及各种增强性外设和51个I/O,提供标准通信接口(两个I2C,两个SPI和四个USART),一个USB全速器件,一个16通道12位ADC,7个通用16位计时器和一个PWM定时器。主要用在应用控制和用户接口,手持设备,A/V接收器和数字TV,PC外设,游戏和GPS平台,PLC,逆变器,打印机,扫描仪,告警系统,视频互连和HVAC等领域。

STM32F070RB框图:

四、mbed开发环境介绍及开发过程

我将在mbed开发环境下体验Nucleo-F070RB的开发。首先下载ST-Link Driver,下载链接: https://mbed.org/teams/st/wiki/ST-Link-Driver 。下载后双击打开,安装驱动。我的电脑是32位的win7操作系统,所以我选择安装dpinst_x86.exe。出现下图,就安装好了驱动程序。

现在把板子用mini usb数据线连接Nucleo-F070RB到电脑,稍等一会。可以看到有新的移动存储设备被识别出来:

此时,开发板上红色的USB通讯LED和红色的电源LED都是常亮状态,绿色的用户LED在不停地闪。

双击打开移动存储设备NODE_F070RB,里面的文件:

mbed.htm其实就是一个网页链接,打开后会跳转到: http://developer.mbed.org/platforms/ST-Nucleo-F070RB/ 该页面有对Nucleo-F070RB开发板的英文介绍和Arduino 接口及ST Morpho 扩展接口图。 Arduino接口图:

Morpho接口图:

在这个页面也有使用STM32 Nucleo平台的入门视频,可惜是嵌入的youtube视频,不翻墙是看不到了。

下面就可以进行软件开发了。点击页面右侧的“Add to yourmbed Compiler ”蓝色链接按钮。

把该Nucleo-F070RB开发平台加入mbed开发环境。该处会变为:

单击“Openmbed Compiler ”进入开发环境:

此时会出现“Create new program”的对话框,点击Template后的选择框,可以选择要运行的例程或者Empty Program:

我先选择一个最简单的程序:BlinkyLED test for the ST Nucleo boards,其他选项不变,工程名:Nucleo_ticker也不变。然后点击对话框的OK。稍微等待几秒建立新程序,出现如下页面:

此时可以看到工程/Nucleo_ticker。其中main.cpp是主程序,另外还有mbed库,点开左侧的工程管理栏,可以看到用到的具体的mbed库文件:Classes、Files、Structs和Groups。

我们打开main.cpp文件,看下主程序的源码: #include “mbed.h”

Ticker toggle_led_ticker;

DigitalOut led1(LED1);

void toggle_led() {
    led1 = !led1;
}

int main() {
    // Init the ticker with the address of the function (toggle_led) to be attached and the interval (100 ms)
    toggle_led_ticker.attach(&toggle_led, 0.1);
    while (true) {
    // Do other things...
    }
}

点击页面菜单栏“Compile”,对代码进行编译。编译完成出现:

点“保存”把编译好的bin文件保存到电脑。通过鼠标把这个bin文件拖拽到移动存储设备NODE_F070RB,这样就完成了对stm32f070rbt6的烧写。按Nucleo-F070RB开发板上的复位按键,就可以看到实验效果了。绿色LED在闪烁(好吧,和不烧写这个程序时现象一样),因为板子自带的就是这个demo程序。。。。

五、总结

通过对板子的观察和实验,体验了使用mbed方式开发软件的过程。非常喜欢Nucleo平台的这种快速的开发方式,同时使用mbed对我用的这种低配置电脑也是一个非常好的选择。另外,板卡强大的的可扩展性,方便的拖拽下载方式,也是非常具有特色。

灰小子
学习者永远停留在过去时,只有思考者才能创造未来时