1)实验平台:【正点原子】NANOSTM32F103开发板

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