XNUCLEO-F103RB 教程

产品概述

STM32 Xnucleo 开发平台为用户提供了一个经济、灵活和便捷的方式去实现更具创意的设想。并能通过选择执行性能、电源功耗和资源特性等多种组合快速搭建原型。 得益于通用的Arduino™和ST Morpho接口的支持,本产品可以搭配众多的Shield,便于用户在开源平台上使用多种扩展。 STM32 Xnucleo 兼容并能直接运行STM32 Nucleo 官方提供STM32综合HAL库和各种包装好的实验例子,并且可以直接兼容Nucleo的多种Shield。用户可在mbed.org直接访问STM32 Nucleo相关的在线资源。

产品特性

  • 使用LQFP64封装的STM32单片机;
  • 两种可扩展资源:

- Arduino Uno Revision 3通用连接头; - STMicroelectronics Morpho 扩展连接头以访问所用的STM32的IO端口;

  • 支持mbed;
  • 引出SWD接口,支持更多的下载/调试方式,如:ST-LINK/V2 (MINI) , J-LINK-ARM, ULINK V2;
  • 灵活的电源选择:

- USB 电源; - 外部输入电源VIN(6V<=VIN<=12V)来自Arduino和ST Morpho connector连接头,也可以通过CN2电源接头(6V~12V)输入; - 外部5V电源(E5V)来自ST Morpho connector连接头; - 外部+3.3V电源来自Arduino或ST Morpho connector连接头;

  • 7颗LEDs:

- 电源指示灯PWR,FLASH LED,串口接收指示灯RX和发送指示灯TX;

  • 两个按键:

- 分别为复位按键(RESET)和用户按键(USER);

  • 外部高速晶体振荡器:

- 8MHz 晶体振荡器;

  • 外部低速晶体振荡器

- 32.768KHz 晶体振荡器;

  • USB转虚拟串口;
  • USB接口(XNUCLEO-F030R8没有USB接口)
  • ICSP接口(兼容Arduino LEONARDO的shields),作为SPI接口使用;
  • 综合HAL库和多个实验例子
  • 支持广泛的集成开发环境(IDEs),包括IAR,KEIL,基于GCC的IDEs;

产品型号

表1. Xnucleo系列信息
型号目标MCU
XNUCLEO-F030R8STM32F030R8T6
XNUCLEO-F103RBSTM32F103RBT6
XNUCLEO-F302R8STM32F302R8T6
XNUCLEO-F401RESTM32F401RET6
XNUCLEO-F411RESTM32F411RET6

XNUCLEO-FXXXRY含义如下:

  • FXXX为STM32 MCU产品线
  • R为管脚数(R意味着有64个管脚)
  • Y为FLASH容量(8为64K,B为128K,C为256K)

快速入门

安装开发工具

CP2102虚拟串口驱动的安装

STM32 Xnucleo 板载了基于CP2102的USB TO UART接口(下文简称为串口),方便用户调试代码。用户需要安装CP2102驱动程序才能正常工作。
运行安装程序:. \Xnucleo \tools\CP2102 driver\PreInstaller.exe
安装完成后,将XNucleo的USB TO UART接口连接到电脑上,可在“设备管理器”中查看到设备CP210x USB to UART Bridge Controller,则说明驱动安装成功。

STM32 ST-LINK UTILITY 的安装

运行安装程序:.\Xnucleo user\tools\STM32 ST-LINK Utility\STM32 ST-LINK Utility_v3.4.0.exe。(具体安装和使用方法,请参考ST官方的说明文档:.\Xnucleo user\tools\STM32 ST-LINK Utility\Readme\STLINK Utility.PDF。用户也可以到ST官方下载最新的安装程序。)
安装完成后,将ST-LINK/V2 (mini)模块连接到电脑上,可在“设备管理器”中查看到设备STMicroelectronics STLink dongle,则说明驱动安装成功。

J-LINK驱动的安装

运行安装程序:. \Xnucleo user\tools\JLinkARM\Setup_JLinkARM_V415e.exe。
安装完成后,将J-Link仿真器连接到电脑上,可在“设备管理器”中查看到设备J-Link driver,则说明驱动安装成功。

启动出厂程序

按照以下顺序配置STM32 Xnucleo,并且启动演示例程:

硬件设置

1) 设置板载跳线
  • JP3 选择 U5V
  • JP2 置为 ON
2) 接入电源
  • 使用USB电源时,连接Xnucleo板载USB到PC。
  • 使用外部电源时,连接Xnucleo电源座CN2到6~12V电源适配器。

3) 连接ST-LINK/V2 (mini)到Xnucleo的SWD接口
注意:如果先连接ST-LINK/V2 (mini)到SWD接口,再连接USB电源或外部电源,可能会导致ST-LINK/V2 (mini)初始化失败。

查看程序现象

每按一次USER按键,USER LED的闪烁频率由从快切换到慢,或者由慢切换到快。
===硬件配置

供电设置

STM32 Xnucleo 可以通过USB供电,也可以用过外部电源供电。
可由以下位置供电:

  • 位于CN6 或者CN7 的VIN (6V~12V)
  • E5V (5V) 或者 +3V3电源引脚
  • CN2电源接头(7V~12V)

其中VIN (7V~12V),E5V (5V),+3V3和CN2是通过使用一个外部的电源设备对Xnucleo进行供电。

USB电源输入

Xnucleo的所有部分以及Shield,在接上ST-LINK/V2 (MINI)之后,均可由ST-LINK/V2 (MINI)的USB接口,从PC主机获得供电。
如果用户使用ST-LINK/V2 (MINI)对Xnucleo供电的情况下:在ST-LINK/V2 (mini)对外输出3.3V时,则ST-LINK/V2 (mini)对应输出的最大电流为150mA。在ST-LINK/V2 (mini)对外输出5V时,则ST-LINK/V2 (mini)对应输出的最大电流为300mA。在这种情况下,只能强制使用外部电源,将在下一节介绍。
Xnucleo板载的所有器件和扩展板也可以使用自带的USB接口供电(U5V)。但应该注意,如果Xnucleo 需求超过300mA的电流,可能对USB有损害。当使用USB对Xnucleo供电时,必须通过JP3设置跳线选择U5V。如表 2. 电源相关跳线所示。

表 2. 电源相关跳线
跳线描述
JP3当使用USB供电时,必须跳线选择U5V(默认设置)

当使用CN2,VIN或E5V必须跳线选择E5V

使用CN2,VIN或E5V作为外部电源

CN2,VIN或E5V可以被用作为外部电源以防Xnucleo和扩展板的负载电流超过USB允许电流。在使用时,必须先连接好外部电源,然后再连接USB或ST-LINK/V2 (mini)。这个过程确保Xnucleo正常工作。

表 3. 外部电源参数
电源名对应管脚电压范围最大电流使用限制
CN2CN26V~12V800mA输入电流与输入电压有关:
当CN2/VIN = 7V时,输入电流为800mA。
当6V<CN2/VIN(<或=)9V时,
输入电流为450mA

当9V<CN2/VIN(<或=)12V时,
输入电流为250mA

VINCN6的8脚
CN7的24脚
E5VCN7的6脚4.75V~5.25V500mA------

注意:当Xnucleo使用外部供电时,必须遵守以下步骤:
1) JP3选择U5V;
2) 连接外部电源到CN2,VIN或E5V;
3) 接通外部电源,CN2,VIN:6V~12V,E5V:5V;
4) 观察PWR LED为常亮;
5) 连接PC与Xnucleo USB或ST-LINK/V2 (mini);
如果不遵守以上步骤,而先接通USB或ST-LINK/V2 (mini)可能会出现如下问题: "当Xnucleo需求的电流超过300mA时,可能会对USB有损害。或者输入电流会被USB口限制在300mA以内,可能导致Xnucleo无法正常工作。

外部电源输出

  • 通过CN2,VIN或E5V对Xnucleo供+5V电压时,Xnucleo板载管脚CN6 的5 脚或CN7的18脚可对Arduino shield 和扩展板供电。在这种情况下,最大输入电流应该遵守表 3的说明。
  • 通过CN2,VIN或E5V对Xnucleo供+3.3V电压时,CN6 的4 脚或CN7的12脚和16脚也可用作电源输出,最大输出电流被限制于稳压器的最大电流输出能力(最大500mA)。

LED指示灯

Xnucleo板载的LED用于指示Xnucleo 工作状态的信息。

FLASH LED

表 4. LED和MCU引脚对应关系
FLASH LEDMCU PIN
LED1D13(PA5/PB13)
LED2PC9
LED3PC8
LED4PC5

通过设置JP7可连接各个LED。对于XNUCLEO-F302R8,其PB13脚需连接到D13。而对于其他XNUCLEO,则需要将PA5连接到D13。当IO输出高电平,FLASH LED常亮;反之,FLASH LED熄灭。

电源指示灯PWR LED

该指示灯为红色。指示Xnucleo供电是否正常,+5V电源有效。

串口工作状态指示灯LED

TX指示灯为绿色,RX指示灯为蓝色。TX闪烁,指示MCU 正在向PC发送信息。RX闪烁,指示MCU 正在接收电脑返回信息。

按键

USER键

通过设置JP6为ON,USER按键连接到目标MCU的PC13脚。

RESET键

RESET键连接到目标MCU的NRST,用于复位目标MCU。

JP2(IDD)跳线

JP2 ON

STM32单片机被供电(默认)。

JP2 OFF

STM32单片机不被供电。移除该跳线之后,用户可以在该跳线两端的管脚之间串联一个电流表,用以测量STM32单片机的功耗。

USART 通信

STM32单片机的PA2和PA3是USART2接口,可以通过设置相关的跳线选择和虚拟串口、Morpho或者Arduino连接头相连。

设置跳线将目标MCU连接到串口

通过设置跳线(参考表 6. JP4引脚连接)

  • JP4的RX/PA3和TXD连接
  • JP4的TX/PA2和RXD连接

设置跳线实现MCU与SHIELD或扩展板的通信

如果目标MCU需要和shield或扩展板(CN9的RX/D0和TX/D1)通信,则需要设置跳线(参考表 6. JP4引脚连接):

  • JP4的RX/PA3和RX/D0连接
  • JP4的TX/PA2和TX/D1连接

在这种情况下,可以连接另一个USART(视目标MCU而定)到虚拟串口,需要按照以下方式连接:

  • JP4的TX/PC10/PC6连接RXD
  • JP4的RX/PC11/PC7连接TXD

其中,NUCLEO-F030R8的连接方式:

  • JP4的TX/PA9连接RXD
  • JP4的RX/PA10连接TXD

注意:用户需根据实际需求,参考表 5. USART的相关引脚和跳线选择合适的USART,并做相应的硬件配置,该列表中的USART在mbed中无效,即mbed中没有定义该表中的USART,只定义了USART2(PA2,PA3),因此,使用mbed中与USART相关的API(如:printf)时,只能选择USART2(PA2,PA3)与虚拟串口或CN9的RX/D0,TX/D1连接。

表 5. USART的相关引脚和跳线
型号\引脚PC6,PC7PC10,PC11PA9,PA10SB70,SB71SB72,SB73
XNUCLEOF030R8USART1无此项
XNUCLEOF103RBUSART3USART1(未使用)ONOFF
XNUCLEO-F302R8USART3USART1(未使用)ONOFF
XNUCLEO-F401REUSART6USART1(未使用)OFFON


表 6. JP4引脚连接表
ABCD
ARDUINO PORTMCU PINCP2102 PINMCU PIN
RX/D0RX/PA3TXDRX/PC11/PC7
TX/D1TX/PA2RXDTX/PC10/PC6


表 7. NUCLEO-F030R8 JP4引脚连接表
ABCD
ARDUINO PORTMCU PINCP2102 PINMCU PIN
RX/D0RX/PA3TXDRX/PA10
TX/D1TX/PA2RXDTX/PA9

ADC或I2C通信

通过设置JP5的跳线可以选择ADC或I2C连接到Arduino或Morpho。
其中:

  • JP5的A4和A5是对应连接到Arduino的A4和A5(CN8的5,6脚)或Morpho CN7的36,38脚
  • JP5的SDA/PB9和SCL/PB8脚对应STM32 MCU的外设I2C
  • JP5的PC1/ADC和PC0/ADC脚对应STM32 MCU的外设ADC
表 8. JP5引脚连接表
ABC
MCU PINARDUINO PORTMCU PIN
SCL/PB8A5PC0/ADC
SDA/PB9A4PC1/ADC

SPI接口

Arduino的D11, D12, D13为SPI接口。其中XNUCLEO-F302R8的PB13,PB14,PB15分别和D13, D12, D11相连。其它XNUCLEO的PA5,PA6,PA7分别和D13, D12, D11相连。

USB接口

除XNUCLEO-F030R8之外,其他XNUCLEO预留了一个USB接口。通过设置JP1为ON,可以使能USB接口。

锡桥

表 9. 锡桥
锡桥状态描述
SB74ONIOREF连接到3.3V
OFFIOREF悬空
SB75ONIOREF连接到5V
OFFIOREF悬空
SB45 (VBAT/VLCD)ONSTM32 单片机的VBAT 或 VLCD连接到VDD
OFFSTM32 单片机的VBAT 或 VLCD不连接VDD
SB57 (VREF+)ONSTM32 单片机的VREF+被连接到VDD
OFFSTM32 单片机的VREF+不连接VDD,由CN10的7脚提供电源

注:所有出现在STM32 Xnucleo 板上的其他锡桥都是用于配置一些IO和电源脚,以兼容支持的STM 32单片机的特性和引出脚。

扩展连接头

本节的图片用于说明不同型号的STM32 Xnucleo板载接口对应的外设分配。

图 1. XNUCLEO-F030R8


图 2. XNUCLEO-F103RB

图 3. XNUCLEO-F302RC

图 4. XNUCLEO-F401RE

图 5. XNUCLEO-F411RE

3.MBED基于STM32 XNUCLEO平台的使用

Xnucleo完全兼容和并且可以直接运行对应Nucleo的示例程序。因此,用户可以根据STM32 Nucleo的应用来开发STM32 Xnucleo的应用。Xnucleo与Nucleo的对应关系下表所示:

表 10. Xnucleo与Nucleo的对应关系表
XnucleoNucleo
XNUCLEO-F030R8NUCLEO-F030R8
XNUCLEO-F103RBNUCLEO-F103RB
XNUCLEO-F302RCNUCLEO-F302R8
XNUCLEO-F401RENUCLEO-F401RE
XNUCLEO-F411RENUCLEO-F411RE

本手册操作都是以XNUCLEO-F103RB为例。用户在配置环境的时候可能会有一些不同,应根据实际情况操作。

使用MBED编译和下载工程

mbed的使用说明请参阅官方文档。由于篇幅所限,部分操作步骤可能略过。

编译工程

打开mbed软件,以XNUCLEO-F103RB为例,任意打开一个工程,例如Nucleo_printf。点击Compile进行编译。如果工程没有任何错误,则等待Compile Output提示Success!,并且生成Nucleo_printf_NUCLEO_F103RB.bin的文件。这个文件位于指定的文件保存路径(这个路径可以更改)。

下载工程

1) 运行STM32 ST-LINK Utility,依次点击file->Open file。打开Nucleo_printf_NUCLEO_F103RB.bin文件。
2) 将板载的USB TO UART接口连接到电脑的USB口,并且连接ST-LINK/V2 (mini),JP5选择U5V,根据2.5 USART 通信的要求设置JP4,并按照以下格式配置串口。

表 11. 串口配置
波特率115200
数据位8
停止位1
奇偶校验

3) 下载工程之后,串口接收到的信息如下:

  1. Hello World!
  2. This program runs since 1 seconds.
  3. This program runs since 2 seconds.
  4. This program runs since 3 seconds.
  5. This program runs since 4 seconds.
  6. This program runs since 5 seconds.
  7. ...

此时,USER LED以0.5Hz的频率闪烁,TX LED 闪烁提示STM32 Xnucleo正在向PC发送信息。

3.2. 从MBED中导出基于KEIL的工程

mbed不能直接仿真或在线调试,但它提供了“导入工程”和“导出工程”的功能,只要将mbed工程导出为Keil工程后,就可以正常仿真调试了。
利用导出功能,还可以导出mbed库文件,该文件包括STM32单片机的HAL库。在Keli环境下,用户能直接使用或修改mbed库并且可以将其移植到其他的应用中。
操作方法如下:
在mbed中,打开需要导出的工程。右击左边Program Workspace框中的工程文件名,依次选择Nucleo_printf->Export Program。如下图所示:

图 6. 导出为Keil工程


在弹出窗口的Export Toolchain下拉菜单中,选择导出工程的类型为Keil μVision即可。将mbed工程导出为Keil工程之后,就可以使用Keil的仿真调试功能了。具体操作方法,请参阅Keil相关的手册。

4. 外围模块例程说明

Xnucleo提供了一个基于Waveshare的I/O Expansion Shield、0.96寸OLED和舒适款传感器的综合演示例程。按照表 12. 传感器和与XNUCLEO的接线方式把传感器对应接到I/O Expansion Shield上。

外围模块和与XNUCLEO的接线方式

表 12. 传感器和与XNUCLEO的接线方式
传感器引脚XNUCLEO-F030R8XNUCLEO-F103RBXNUCLEO-F302R8XNUCLEO-F401REXNUCLEO-F411RE
Temperature-Humidity SensorDOUTPB3/D3PB3/D3PB3/D3PB3/D3PB3/D3
Rotation SensorSIAPB4/D5PB4/D5PB4/D5PB4/D5PB4/D5
SIBPB5/D4PB5/D4PB5/D4PB5/D4PB5/D4
SWPB10/D6PB10/D6PB10/D6PB10/D6PB10/D6
Color SensorLED3.3V3.3V3.3V3.3V3.3V
OUTPC7/D9PA1/A1PA1/APA1/A1PA1/A1
S3PA9/D8PA9/D8PA9/D8PA9/D8PA9/D8
S2PA8/D7PA8/D7PA8/D7PA8/D7PA8/D7
S1NCNCNCNCNC
S0NCNCNCNCNC
UV Sensor

Water Sensor
Moisture Sensor
Tilt Sensor
Laser Sensor
Gas Sensor
Sound Sensor
Flame Sensor
Hall Sensor
Metal Sensor
Infrared Reflective Sensor

AOUTPA4/A2PA4/A2PA4/A2PA4/A2PA4/A2
DOUTPA10/D2PA10/D2PA10/D2PA10/D2PA10/D2
0.96inch OLEDDINPA7/D11PA7/D11PB15/D11PA7/D11PA7/D11
CLKPA5/D13PA5/D13PB13/D13PA5/D13PA5/D13
CSPB8/A5PB8/A5PB8/A5PB8/A5PB8/A5
D/CPB9/A4PB9/A4PB9/A4PB9/A4PB9/A4
RESPB0/A3PB0/A3PB0/A3PB0/A3PB0/A3

注意:

  • 以上所有传感器的电源VCC和GND分别接在IO Expansion Shied的VCC和GND,具体的连接方法请参考IO Expansion Shied用户手册。
  • 部分传感器只引出了AOUT或DOUT中的一个,那么IO Expansion Shied多出的预留引脚不用接。且每次只能接一个传感器。

4.2. 例程现象说明

XNUCLEO板载的LED1每2秒闪烁一次,指示程序正在运行。

4.2.1. 数据显示方式:

该例程使用OLED和串口打印(串口每500 ms向PC打印信息)两种方式显示模块反馈的信息。例如:

图 7. OLED显示传感器参数


同时串口对应输出:

  1. /*----------------------*/
  2. T:23 C H:34
  3. D:3868 A:3.116 S:OFF
  4. Rot:227 SW:52
  5. R:20 G:6 B:105
  6. RTC:12 : 1 : 4 KEY:10
  7. /*----------------------*/

反馈的数据含义

表 13. 各符号含义表
符号含义备注
T温度单位:摄氏度
H湿度空气湿度百分比(%)
DAD转换值12BIT的电压值,根据实验校准,可等比换算为实际值
ADA转换值电压值
S状态ON为开启,OFF为关闭
Rot旋转编码器旋转计数正转计数加一递增,反转减一递减,最小计数值为0;最大计数值为255
SW按下旋转编码器的计数支持短按(单击),双击,长按和连发
R红色值根据RGB值可知实际颜色,参考Color Sensor用户手册
G绿色值根据RGB值可知实际颜色,参考Color Sensor用户手册
B蓝色值根据RGB值可知实际颜色,参考Color Sensor用户手册
RTC实时时钟值RTC输出时间数据
KEYXnucleo用户按键计数使用方式和旋转编码器的SW的使用方式一样