Nucleo家族的后起之秀——ST Nucleo F091RC评测
扫描二维码
随时随地手机看文章
Nucleo系列开发板推出已经将近两年了,它以其俊美的外表,超高的性价比吸引了无数中国工程师。不得不承认,意法半导体对于中国市场还是很重视的,对于自家产品的宣传包装下足了功夫,相比于其他厂商,意法半导体每年投入的宣传推广费用就是一个天文数字,这也难怪ST在中国如此火爆。而Nucleo系列正是继Eval、Discovery系列后第三个投入推广的系列,它对于工程师在初期选型评估有着举足轻重的作用。毫不夸张的说,Nucleo为意法半导体的市场推广立下了汗马功劳。我很有幸的从21IC拿到了Nucleo-F091RC,STM32F091RC是意法半导体基于Cortex-M0内核的入门级微处理器,定位于高性能与低功耗之间,适用于成本敏感的应用场合。今天,我同大家一起分享一下我的使用心得。
一 开箱
俗话说人靠衣裳马靠鞍,一款产品的成功与其出色的外形是有很大关系的,Nucleo系列板卡正好完美诠释了这一点,包装一如既往的淡雅脱俗,拿到后让人爱不释手。
整个套件包括评估板和一张说明卡。Nucleo系列统一采用Mini USB接口与PC机USB端相连,其板载有调试器/编程器,只需要安装相应的USB驱动即可进行调试,省去了寻找各种配套调试器的时间,极大地降低了入门的门槛。需要注意的是,由于Mini USB线在生活中很常见,所以Nucleo系列板卡并没有配备相应的Mini USB线,在首次使用时要注意自备一根数据线。
正面合照:
观察背面可看到板卡背后有很多的0欧电阻,这里的电阻起桥接作用,随着焊接电阻位置的不同,扩展I/O口对应着芯片不同的引脚。这一点新入手板卡的朋友要小心注意,因为很有可能因为没有注意到某个引脚浮空,而造成实验现象不正常,继而耽误评估过程,造成不必要的麻烦。
背面合照:
板卡的外形尺寸为82.5mm*70mm,主要由两部分构成,一部分是处理器及扩展IO,另一部分是ST-LINK V2。
近照:
由它的外观可以看出Nucleo-F091RC与它的近亲基本无太大差别,如果不是很仔细的观察或者非常有经验,普通人是很难分清板卡型号的。这样基本一致的硬件设计带来了诸多好处,例如Nucleo系列板卡通用性非常好,毫不夸张的说,只要用户拥有一个Nucleo硬件平台,完全可以通过换芯片的方式实现多种芯片的评估开发。真正实现了一板多“芯”。
现在来一张芯片的特写:
STM32F091RCT6微控制器特性:
- § ARM Cortex-M0处理器,最高支持48 MHz主频、256KB闪存、32KB的SRAM。
- § 96位唯一ID。
- § LQFP64引脚封装。
- § 通用定时器*6、先进控制的计时器*1、基本定时器*2。
- § SPI*2、I2S*2、I2C*2、UASRT*2、CAN*1。
Nucleo-F091RC开发平台主要特性:
- § 完全兼容ArduinoR3板扩展接口以及ST特有的Morppho全扩展接口。
- § 板载 ST-LINK/V2-1 调试器支持调试下载,虚拟串口以及USB磁盘功能,可以通过跳线设置作为一个独立的ST-Link调试器。
- § USB供电(VBUS)以及外部接口支持3.6V 5C 7~12V。
- § 三个LED指示灯,USB通讯LED,电源LED,用户LED。
- § 两个机械按键,用户按键,复位按键。
- § 支持Keil、IAR、embed在线IDE的设计工具。
- § 留出了外部晶振用户自行选择。
除此之外 ,意法半导体还推出了X-Nucleo扩充板,可以利用ST器件产品组合的功能和性能构建基于STM32的应用。总之,Nucleo-F091RC融入一个更广大的ARM生态圈,不仅仅再是提供一个简单的开发板,通过ARM生态圈的庞大资源以及Arduino接口的支持,Nucleo的开发更为简单,应用也更为多样。[!--empirenews.page--]
二 测试
拿到板子第一件事当然是开箱验货。ST的工程师周到的替用户考虑到了这一点,在板子中预先置入了程序,只需用户给板卡上电,就可通过预置程序来判断板卡是否正常工作。首先拿出USB线,一端接PC机,一端接Nucleo板。上电后,我们可以发现绿色的LED在以极高的频率闪烁着,这就是预先留在Nucleo板中程序的效果,当我们按下用户按键时,可观察到绿色LED闪烁的频率变慢,往后再重复按键,绿灯闪烁频率会成周期的变化。观察到此现象,说明开发板是完好的。
接下来就是下载官方例程,这一步主要有两个目的,第一是充分体会Nucleo的强大,第二则是建立起相应的配套开发环境。Nucleo板载有ST-Link仿真器/编程器,所以要想使用它的全部功能,就必须安装USB驱动。安装包在官网下载后按双击即可自动安装。另外需要用户到ST官网下载Nucleo-F091RC相应的例程。由于在现代控制领域,Pwm应用越来越广泛,所以我在这里以Pwm例程为例。例程下载完毕后,打开工程检查工程配置,如下图。
此时务必要保证Debug一栏下 选择Use ST-Link Debugger,否则会出现程序下下载失败的情况。
工程配置设置完成后,点击Download下载程序,按下复位键,将B3、B10、B11分别接入示波器,可观察到三路周期相同,占空比不同的PWM波形。
此时说明程序已经正常运行,运行到这一步,用户就可以通过自行编程来体验Nucleo带来的新鲜感了。
对于STM32系列而言,一般有三种常见的开发方式:
1 采用最新的mbed开发,这种方式比较新颖也比较简单, 无需下载集成ID,登陆mbed.org注册账号,即可以在网页上完成编译,生成.bin文件。大家可以登录mbed云端查看;
2 采用标准外设库(目前标准库已经停止更新)加MDK的开发方式。毕竟标准外设库流行了这么多年,网上的代码满天飞,好处也显而易见,那就是资料多。但是标准外设库的写法还不是特别规范,不过ST注意到了这一点,现在又推出了HAL库。
3 采用STM32CubeMx加HAL库加MDK的开发方式。这是目前ST比较推崇的。HAL库和MDK自然不必介绍,我简单的谈一谈STM32CubeMx。STM32CubeMX是一款图形化工具,它用于STM32初始化代码的配置。它可以直观地进行STM32型号和板卡选择;进行图形化外设资源配置;C代码项目产生,并且它可以很好地支持Eclipse,作为一个插件使用。在使用前,要安装好java软件 才能安装该软件。这种方式将我们从繁琐的底层解放出来,使我们能专注于完成我们的开发而并非一直去钻研浩如烟海的寄存器。
其实第三种开发方式终究也是基于库的开发,只不过代表着更加先进的方案,他可以通过图形化来快速配置我们单片机。生成所需要的模块初始化或者操作代码。我相信这种开发方式一定会成为未来的主流开发方式。F0系列以低成本著称,特别适用成本敏感的便携式产品,而在便携式产品中人机交互又是极其重要的功能,所以我主要以驱动Lcd-5110为例和大家分享下用这种方式开发的开发流程。
首先要安装STM32Cube_FW_F0_V1.4.0。它是使用STM32CubeMx平台的不可缺少的组件(如果开发F1系列,就要装F1的),里面主要有相应的HAL库,和一些资料、底层驱动。
然后我们打开STM32CubeMX,进入主界面(如下图),点击New Project。此时我们可以选择Mcu Selector和 Board Selector。前者与后者的区别主要在于,后者建立的工程有一些IO口已经提前占用掉了(比如上电测试中的绿色LED),为了防止用户误用,已经提前标注。而前者只有当用户设置时,才会标注。这也是STM32CubeMX的一大好处,可以有效的防治开发过程中的引脚冲突。
通过查阅资料,我们可以发现Lcd-5110有如下特性:
总共有八根引脚,除去VCC、GND、背光LED外其实只有五根线需要我们编程操作分别是SCLK时钟引脚、SDIN数据输入、LCD_RST复位脚、LCD_CE片选脚、LCD_DC数据和命令切换脚。
在这里我选择 PA0模拟LCD_RST、PA1模拟 LCD_CE、 PA4模拟LCD_DC、 PB0模拟SDIN、PC1模拟SCLK,驱动Lcd-5110。选择以上五个IO口为输出模式。
工程配置好后,点击generate source code,生成工程,如果工程生成成功,会出现如下提示,如果不成功,要注意生成路径有无中文字符,是否安装了HAL库等问题。
直接点击Open Project,进入工程
要显示汉字,要通过取模,将汉字的字形码存入数组中,取模和存储过程如下图。
通过查阅Lcd数据手册,编写代码,调试程序,最后效果如下。字形有些走形,但总体效果还不错。
三 总结
介绍了ST推出的 Nucleo-F091RC开发板,板载STM32F091RCT6微处理器,基于Cortex-M0处理器,最高主频可达48MHz,定位于低功耗与高性能之间,尤其适用于成本敏感性解决方案。另外板卡具有Nucleo系列板卡固有的特性,板卡兼容Arduino接口、支持ARM mbed在线编译器,调试方便且生态圈庞大。无论是学习还是开发,Nucleo-F091RC开发套件丰富的功能绝对能让你眼前一亮。
资源链接
1 MDK-ARM 5.0 http://pan.baidu.com/s/1i4moXA9
2 Keil.STM32F0xx_DFP.1.4.0.pack http://pan.baidu.com/s/1c1jHt08
3 STM32CubeMx http://pan.baidu.com/s/1pJQydQj
4 stm32cube_fw_f0_v140 http://pan.baidu.com/s/1kUqoCV9
5 Pwm例程 http://pan.baidu.com/s/1pKukoen
6 Lcd_5110 http://pan.baidu.com/s/1kUh1k71
7 ST-Linkv2驱动 http://pan.baidu.com/s/1dEb7Mxj
8 Lcd_5110测试程序 http://pan.baidu.com/s/1boq4WCv
9 nucleo_64pins_sch http://pan.baidu.com/s/1ntROdPB
——————本文系21ic原创,未经许可严禁转载——————