1)实验平台:ALIENTEK NANO STM32F411 V1开发板
2)摘自《正点原子STM32F4 开发指南(HAL 库版》关注官方微信号公众号,获取更多资料:正点原子
第二章 实验平台硬件资源详解
本章,我们将节将向大家详细介绍 ALIENTEK NANO STM32F411 各部分的硬件原理图,让大家对该开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。
本章将分为如下两节:
2.1,开发板原理图详解;
2.2,开发板使用注意事项;
2.3,STM32F411 学习方法;
2.1 开发板原理图详解
2.1.1 MCU
ALIENTEK NANO STM32 开 发板 选择 的是 STM32F411RCT6 作 为 MCU , 该芯 片是STM32F411 里中容量的,它拥有的资源包括:128KB SRAM、256KB FLASH、7 个通用定时器、
1 个高级定时器、2 个 DMA 控制器(共 14 个通道)、5 个 SPI、3 个 IIC、3 个串口、1 个 USB、
1 个 SDIO、1 个 12 位 ADC 以及 50 个通用 IO 口。该芯片是 STM32F4 家族常用型号里面,中
等配置的芯片,对于 STM32 初学者学习最为适合,所以我们选择了它作为我们 NANO 板的主
芯片。MCU 部分的原理图如图 2.1.1.1(因为原理图比较大,缩小下来可能有点看不清,请大
家打开开发板光盘的原理图进行查看)所示:
图 2.1.1.1 MCU 部分原理图
上图中 U1 为我们的主芯片:STM32F411RCT6。这里有个地方需要讲解下:
后备区域供电脚 VBAT 脚的供电采用 CR1220 纽扣电池和 VCC3.3 混合供电的方式,在有
外部电源(VCC3.3)的时候,CR1220 不给 VBAT 供电,而在外部电源断开的时候,则由 CR1220
给其供电。这样,VBAT 总是有电的,以保证 RTC 的走时以及后备寄存器的内容不丢失。
2.1.2 引出 IO 口
ALIENTEK NANO STM32F4 引出了 STM32F411RCT6 的部分 IO 口,如图 2.1.2.1 所示:
图 2.1.2.1 引出 IO 口
图中为 MCU 主 IO 引出口,排针共引出了 17 个 IO 口,STM32F411RCT6 总共有 50 个 IO,除去 RTC 晶振占用的 2 个,还剩 48 个,由于部分 IO 口被板载的功能芯片占用了,就没做引出。我们只通过 P1 的排针引出了 17 个 IO。
2.1.3 ST_LINK V2.1
ALIENTEK NANO STM32F411 板载 ST LINK V2.1 仿真器,仿真器电路分为几部分组成,
下面将简单介绍下:
1)ST_LINK MCU
ST_LINK V2.1 的 MCU 使用的是 STM32F103C8T6 作为主芯片,原理图如图 2.1.3.1 所示:
图 2.1.3.1 ST_ LINK V2.1 部分原理图
NANO 板在出厂前已经刷好了 ST_LINK V2.1 版本的固件,固件集成了下载仿真和虚拟串口两大的功能,用户无需另外再购买仿真器,另外 NANO 板节省 USB 转 TTL 电路,通过 P5排针将 MCU 的串口 USART1_RX 和 USART1_TX 引脚(STM32F103R6),与 ST LINK 的ST LINK_TX 和 ST LINK_RX 引脚(STM32F103C8T6)相连接,即可以实现 ST LINK USB 串口和 STM32F411RCT6 的串口通信了。同时,P5 是 PA9 和 PA10 的引出口。
2)ST LINK 状态指示灯
ST_LINK 状态指示灯的电路,如图 2.1.3.2 所示:
图 2.1.3.2 ST LINK 状态指示灯
ST LINK 仿真器状态指示灯为绿色,当处于下载或仿真时,状态显示灯会闪亮。
3)ST LINK SWD 接口
ST_LINK SWD 接口的电路,如图 2.1.3.3 所示:
图 2.1.3.3 ST LINK SWD 接口
ST_LINK SWD 接口的电路,留出了 P4 SWD_5P 的标准下载接口,该接口可用于给外部MCU 使用,即 NANO 板作为 ST_LINK 下载仿真器。SW1 是选择开关,用于选择 ST_ LINK给内部 STM32F411RCT6 芯片下载还是外部 MCU 的下载,SW1 选择开关的往左拨(INS)内部下载,往右拨(EXT)外部下载 PCB 图如图 2.1.3.3.1 所示:
图 2.1.3.3.1 SW1 选择开关
4)ST LINK USB 接口
ST_LINK USB 接口电路,如图 2.1.3.4 所示:
图 2.1.3.4 ST LINK USB 接口电路
ST_ LINK USB 电路为 ST _LINK 仿真器的部分电路,USB 座子为 Micro USB 座,该 USB
座可给 NANO 板供电使用,输入 5V。
2.1.4 复位电路
ALIENTEK NANO STM32F411 的复位电路如图 2.1.4.1 所示:
图 2.1.4.1 复位电路
因为 STM32 是低电平复位的,所以我们设计的电路也是低电平复位的,这里的 R4 和 C12构成了上电复位电路。同时,开发板把 74HC595 芯片的复位引脚也接在 RESET 上,这样这个复位按钮不仅可以用来复位 MCU,还可以复位 74HC595 芯片(数码管显示)。
2.1.5 启动模式设置接口
ALIENTEK NANO STM32F411 的启动模式设置端口电路如图 2.1.5.1 所示:
图 2.1.5.1 启动模式设置接口
NANO 板我们只留出了 BOOT0 选择,BOOT1 引脚已接了下拉电阻(BOOT1=0),我们知道 BOOT0 和 BOOT1 用于设置 STM32 的启动方式,其对应启动模式如表 2.1.5.2 所示:
表 2.1.5.2 BOOT0、BOOT1 启动模式表
按照表 2.1.5.2,我们就可选择 MCU 的启动方式,注意:NANO 板不能使用 SRAM 启动模式。
2.1.6 USB 接口
ALIENTEK NANO STM32F411 板载了 STM32 USB 接口电路如图 2.1.6.1 所示:
图 2.1.6.1 USB 接口
USB_D+/USB_D-连接在 MCU 的 USB 口(PA12/PA11)上,USB_SL ** E 可以用来连接电脑,实现 USB 读卡器或 USB 虚拟串口等 USB 从机实验。另外,该接口还具有供电功能,VUSB为开发板的 USB 供电电压,通过这个 USB 口,就可以给整个开发板供电了。
2.1.7 EEPROM
ALIENTEK NANO STM32F411 板载的 EEPROM 电路如图 2.1.7.1 所示:
图 2.1.7.1 EEPROM
EEPROM 芯片我们使用的是 24C02,该芯片的容量为 2Kb,也就是 256 个字节,对于我们
普通应用来说是足够了的。当然,你也可以选择换大容量的芯片,因为我们的电路在原理上是
兼容 24C02~24C512 全系列 EEPROM 芯片的。这里我们把 A0~A2 均接地,对 24C02 来说也就是把地址位设置成了 0 了,写程序的时候要注意这点。IIC_SCL 接在 MCU 的 PB6 上,IIC_SDA 接在 MCU 的 PB7 上,这里我们虽然接到了 STM32 的硬件 IIC 上,但是我们并不提倡使用硬件 IIC,因为 STM32 的 IIC 是鸡肋!请谨慎使用。
2.1.8 SPI FLASH
ALIENTEK NANO STM32F411 板载的 SPI FLASH 电路如图 2.1.8.1 所示:
图 2.1.8.1 SPI FLASH 芯片
SPI FLASH 芯片型号为 W25Q16,该芯片的容量为 16Mb,也就是 2M 字节。图中 F_CS 连
接 在 MCU 的 PB12 上 ,SPI2_SCK/SPI2_MOSI/SPI2_MISO 则 分 别 连 接 在 MCU 的PB13/PB15/PB14 上。
2.1.9 传感器接口
ALIENTEK NANO STM32F411 板载的传感器接口电路如图 2.1.9.1 所示:
图 2.1.9.1 温湿度传感器接口
该接口(U2)支持 DS18B20DHT11 等单总线数字温湿度传感器。1WIRE_DQ 是传感器的数据线,该信号连接在 MCU 的 PB9 上。
2.1.10 红外接收头
ALIENTEK NANO STM32F411 板载的红外接收头电路如图 2.1.10.1 所示:
图 2.1.10.1 红外接收头
HS0038 是一个通用的红外接收头,几乎可以接收市面上所有红外遥控器的信号,有了它,就可以用红外遥控器来控制开发板了。REMOTE_IN 为红外接收头的输出信号,该信号连接在MCU 的 PB0 上。
2.1.11 LED
ALIENTEK NANO STM32F411 板载总共有 8 个 LED,其原理图如图 2.1.11.1 所示:
图 2.1.11.1 LED
其中 PWR 是系统电源指示灯,为蓝色。LED0(DS0)~LED7(DS7)分别接在 PC0~PC7 上。
LED0~LED7 灯颜色都为红色。
2.1.12 按键
ALIENTEK NANO STM32F411 板载总共有 4 个输入按键,其原理图如图 2.1.12.1 所示:
图 2.1.12.1 输入按键KEY0、KEY1 和 KEY2 用作普通按键输入,分别连接在 PC8、PC9 和 PD2 上,这里并没有使用外部上拉电阻,但是 STM32 的 IO 作为输入的时候,可以设置上下拉电阻,所以我们使用 STM32 的内部上拉电阻来为按键提供上拉。KEY_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可以用作 STM32 的唤醒输入。注意:这个按键是高电平触发的。
2.1.13 数码管
ALIENTEK NANO STM32F411 板载了两个 4 位的共阴数码管,以及数码管的驱动电路,
其原理图如图 2.1.13.1 所示:
图 2.1.13.1 数码管与驱动电路
LEDSEG1 和 LEDSEG2 为 4 位共阴极数码管,CH1~CH4 为位选端,A~DOT 为段选段。
74HC138(U7)为 3-8 译码器芯片,这里我们使用它实现数码管的位选功能,其 Y0~Y7 连接到
两个数码管的 CH1~CH4 位选端,通过 U7 的 A0~A2 三个地址线的控制,选择 Y0~Y7 的输出
(低电平有效),A0 连接在 MCU 的 PC10,A1 连接在 PC11,A2 连接在 PC12。74HC595(U6)
为串行转并行数据芯片,这里我们使用它实现数码管的段选功能,其 QA~QH 引脚连接在数码
管的 HC595_QA~HC595_QH 公共端,通过 SFTCLK 和 LCHCLK 的时钟控制,将 SDI 输入的
串行数据转换成并行数据,通过 QA~QH 端输出控制数码管的段选,SFTCLK 连接在 MCU 的
PB5,LCHCLK 连接在 PB4,SDI 连接在 PB3,而 RST 则连接在 MCU 的复位电路 RESET 端,
上电或按下 RESET 按键可对 74HC595 进行复位。
2.1.14 TPAD 电容触摸按键
ALIENTEK NANO STM32F411 板载了一个电容触摸按键,其原理图如图 2.1.14.1 所示:
图 2.1.14.1 电容触摸按键
图中 100K 电阻是电容充电电阻,TPAD 并没有直接连接在 MCU 上,而是连接在多功能端口(P3)上面,通过跳线帽来选择是否连接到 STM32。多功能端口,我们将在 2.1.17 节介绍。电容触摸按键的原理我们将在后续的实战篇里面介绍。
2.1.15 有源蜂鸣器
ALIENTEK NANO STM32F411 板载了一个有源蜂鸣器,其原理图如图 2.1.15.1 所示:
图 2.1.15.1 有源蜂鸣器
有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如
果是无源蜂鸣器,则需要外加一定频率(2~5Khz)的驱动信号,才会发声。这里我们选择使用
有源蜂鸣器,方便大家使用。
图中 Q1 是用来扩流,R25 则是一个限流电阻直接连接在 BEEP 信号端,BEEP 信号端连接
在 MCU 的 PB8 上面,PB8 可以做 PWM 输出,所以大家如果想玩高级点(如:控制蜂鸣器“唱
歌”),就可以使用 PWM 来控制蜂鸣器。
2.1.16 电位器
ALIENTEK NANO STM32F411 板载了一个 100K 电位器,其原理图如图 2.1.16.1 所示:
图 2.1.23.1 电位器
图中 1K 电阻是 ADC 采样的电压的限流电阻,VR1 为电位器,通过调节电位器调节采样的
分压电阻。VOL_SRC 采样端没有直接连接在 MCU 上,而是连接在多功能端口(P3)上面,
通过跳线帽来选择是否连接到 STM32。多功能端口,我们将在 2.1.17 节介绍。
2.1.17 多功能端口
ALIENTEK NANO STM32F411 板载的多功能端口 P3,其原理图如图 2.1.17.1 所示:
图 2.1.17.1 多功能端口
其中 TPAD 为电容触摸按键信号,连接在电容触摸按键上,VOL SRC 为电位器采样电压信
号。STM_ADC 连接在 PB1,当需要电容触摸按键的时候,我们通过跳线帽短接 TPAD 和
STM_ADC,就可以实现电容触摸按键(利用定时器的输入捕获),当需要电位器采样电压的
时候,我们通过跳线帽短接 VOL _SRC 和 STM_ADC,就可以实现电压采集(利用 ADC 的输
入采集),因为 STM32 的该管脚同时具有这两个外设功能。多功能端口 PCB 图,如图 2.1.17.2
所示:
图 2.1.17.2 多功能端口
图中 VR 为原理图的 VOL_SRC,ADC 为 STM_ADC,而 TPAD 则为 TPAD。
2.1.18 电源
ALIENTEK NANO STM32F411 板载的电源供电部分,其原理图如图 2.1.18.1 所示:
图 2.1.18.1 电源
图中,U9 为 5V 转 3.3V 直流稳压芯片,选用的是 AMS1117-3.3V 芯片。F1 为 1000 ** 自
恢复保险丝,用于保护 USB,K1 位开发板的总电源开关。
这里还有 USB 供电部分在 2.1.3 ST LINK V2.1 和 2.1.6 USB 接口小节中已讲解,其中 VUSB
就是来自 USB 供电部分。
2.1.19 电源输入输出接口
ALIENTEK NANO STM32F411 板载了两组简单电源输入输出接口,其原理图如图 2.1.19.1
所示:
图 2.1.19.1 电源输入输出
图中,VOUT1 和 VOUT2 分别是 3.3V 和 5V 的电源输入输出接口,有了这 2 组接口,我们
可以通过开发板给外部提供 3.3V 和 5V 电源了,虽然功率不大(最大 1000 ** ),但是一般情
况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组
端口,也可以用来由外部给开发板供电。
2.2 开发板使用注意事项
为了让大家更好的使用 ALIENTEK NANO STM32F411,我们在这里总结该开发板使用的
时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
1, 开发板一般情况是由 USB_JTAG 口供电,由于该口为 ST_LINK 的 USB 口,在第一次
上电的时候会提示安装 ST_LINK 驱动。
STLINK 驱动在,资料包 5,软件资料->ST LINK驱动文件夹。
2, 1 个 USB 供电最多 500mA,且由于导线电阻存在,供到开发板的电压,一般都不会有
5V,如果外接了多个大负载模块,可能引起 USB 供电不够,建议可以同时插 2 个 USB
口,并插上 USB_SL ** E,这样供电可以更足一些。
3, 开发板自带了 ST_LINK V2.1 的仿真器,在对 NANO 开发板下载或仿真程序时,必须
将 SW1 开关拨到左边(INS),同时 P4 排针的信号线尽量不要连接外部,避免干扰信
号线,从而导致 NANO 板下载或仿真程序失败。需要对外部电路的 MCU 使用,则将
SW1 开关拨到右边(EXT),通过 P4 排针信号线的线序连接到外部对应接口上。记住:
无论仿真器给外部还是内部使用,MCU 必须选择为 SWD 模式。
4, 当你想使用某个 IO 口用作其他用处的时候,请先看看开发板的原理图,该 IO 口是否
有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干
扰,先确定无干扰,再使用这个 IO。比如 PB8 就不怎么适合再用做其他输出,因为他
接了蜂鸣器,如果你输出低电平就会听到蜂鸣器的叫声了。
5, 开发板上存在跳线帽,大家在使用某个功能的时候,要先查查这个是否需要设置跳线
帽,以免浪费时间,如:P5 跳线帽没接,虚拟串口无法使用。P3 跳线帽没接,ADC
电压采集或 TPAD 触摸按键无法使用。
至此,本手册的实验平台(ALIENTEK NANO STM32F411)的硬件部分就介绍完了,
了解了整个硬件对我们后面的学习会有很大帮助,有助于理解后面的代码,在编写软件的
时候,可以事半功倍,希望大家细读!另外 ALIENTEK 开发板的其他资料及教程更新,都
可以在技术论坛 >openedv.com 下载到,大家可以经常去这个论坛获取更新的信息。
2.3 STM32F411 学习方法
STM32F411 是 ST 公司推出的基于 ARM Cortex M4 处理器 MCU,由于其强大的功能,可
替代 DSP 等特性,正在选择使用。学习 STM32F4 的朋友也越来越多,初学
者,可能会认为 STM32F4 很难学,以前只学过 51,或者甚至连 51 都没学过的,一看到 STM32F4
那么多寄存器,就懵了。其实,万事开头难,只要掌握了方法,学好 STM32F4,还是非常简单
的,这里我们总结学习 STM32F4 的几个要点:
1,一款实用的开发板。
这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板
在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己
都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果
学个四不像。倒不如从一而终,学完一个在学另外一个。
2,三本参考资料,即《STM32F411xC/E 参考手册》、《STM32F3 与 F4 系列 Cortex M4
内核编程手册》和《Cortex M3 与 M4 权威指南》。
《STM32F411xC/E 参考手册》是 ST 出的官方资料,有 STM32 的详细介绍,包括了 STM32F4
的各种寄存器定义以及功能等,是学习 STM32F4 的必备资料之一。而《STM32F3 与 F4 系列
Cortex M4 内核编程手册》则是对《STM32F4xx 中文参考手册》的补充,很多关于 Cortex M4
内核的介绍(寄存器等),都可以在这个文档找到答案,该文档同样是 ST 的官方资料,专门
针对 ST 的 Cortex M4 产品。最后,《Cortex M3 与 M4 权威指南》则针对 Cortex M4 内核进行
了详细介绍,并配有简单实例,对于想深入了解 Cortex M4 内核的朋友,此文档是非常好的参
考资料。
3,掌握方法,勤学慎思。
STM32F4 不是妖魔鬼怪,不要畏难,STM32F4 的学习和普通单片机一样,基本方法就是:
36a) 掌握时钟树图(见《STM32F411xC、E 参考手册》图 12)。
任何单片机,必定是靠时钟驱动的,时钟就是单片机的动力,STM32F4 也不例外,通过时
钟树,我们可以知道,各种外设的时钟是怎么来的?有什么限制?从而理清思路,方便理解。
b) 多思考,多动手。
所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看/
说,是没什么太多用的,很多人问我,STM32F4 这么多寄存器,如何记得啊?回答是:不需要
全部记住。学习 STM32F4,不是应试教育,不需要考试,不需要你倒背如流。你只需要知道这
些寄存器,在哪个地方,用到的时候,可以迅速查找到,就可以了。完全是可以翻书,可以查
资料的,可以抄袭的,不需要死记硬背。掌握学习的方法,远比掌握学习的内容重要的多。
熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学
习,跟着例程走,无非就是熟悉 STM32F4 的过程,只有进一步思考,才能更好的掌握 STM32F4,
也即所谓的举一反三。例程是死的,人是活的,所以,可以在例程的基础上,自由发挥,实现
更多的其他功能,并总结规律,为以后的学习/使用打下坚实的基础,如此,方能信手拈来。
所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视
频,教你如何煮饭,几分钟估计你就觉得学会了。实际上你可以自己下,是否真能煮好?
机会总是留给有准备的人,只有平时多做准备,才可能抓住机会。
只要以上三点做好了,学习 STM32F4 基本上就不会有什么太大问题了。如果遇到问题,
可以在我们的技术论坛:开源电子网: >openedv.com 提问,论坛 STM32 板块已经有 3.7W
多个主题,很多疑问已经有网友提过了,所以可以在论坛先搜索一下,很多时候,就可以直接
找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,
所以有时间,可以多上去看看。
另外,很多 ST 官方发布的所有资料(芯片文档、用户手册、应用笔记、固件库、勘误手
册等),大家都可以在 >stmcu.org 这个地方下载到。也可以经常关注下,ST 会将最新的资
料都放到这个网址。