1.ST微控制器
登录ST公司官网,在主菜单中选择Products→ Microcontrollers&Microprocessors,进入ST产品的微控制器和微处理器(Microcontrollers&Microprocessors)页面,可以看到ST公司的微控制器产品分为四大类:8位微控制器、32位STM系列微处理器、32位STM32系列微控制器、32位SPC5×系列微控制器,如图2-1所示。
图2-1 ST微控制器产品分类
具体到STM32微控制器产品,又可分为4种:主流产品(Mainstream),如STM32G0、STM32F0、STM32F1、STM32G4、STM32F3;超低功耗产品(Ultra-low-power),如STM32L0、STM32L1、STM32L4等;高性能产品(High performance),如STM32F2、STM32F4、STM32F7、STM32H7;无线系列产品(Wireless),如STM32WB、STM32WL。
简单了解ST32系列微控制器产品后,打开页面左侧的“Microcontrollers&Microprocessors”(微控制器和微处理器)列表,可以发现ST公司推出的STM32 32位ARM Cortex MCU系列产品就多达1000种,具体到STM32F103系列也有29种,这为工程师设计产品提供了丰富的选择,也是STM32微控制器流行的原因之一。在微控制器和微处理器列表中,可以按图2-2所示选择“STM32 32-bit ARM Cortex MCUs(1000)→STM32 Mainstream MCUs(333)→STM32F1 Series(95)→STM32F103(29)”菜单项,进入STM32F103系列微控制器介绍页面。
STM32F103微控制器内核为Cortex-M3,其CPU最大运行速度为72MHz,该系列产品内部Flash容量为16KB~1MB,具有电动机控制、全速USB、CAN等外设,通过图2-3可以更直观地了解STM32F103系列微控制器。
另外,在STM32F103页面值得注意的还有页面上方的菜单,如工具和软件(Tools&software)菜单下的开发工具(Development tools)、评估工具(Evaluation tools)、开放式生态系统(Ecosystems)、嵌入式软件(Embedded software)等,如图2-4所示。
图2-2 STM32系列产品
图2-3 STM32F103系列微控制器
图2-4 页面上方的菜单
在资源(Resources)菜单项,我们可以看到76份技术文献(Technical literature):包括应用手册(Application note)54份、数据手册(Datasheet)4份、勘误手册(Errata sheet)4份、编程手册(Programming manual)3份、参考手册(Reference manual)1份、技术手册(Technical note)7份、用户手册(User manual)3份。在后面的学习过程中,读者会慢慢接触到这些技术文献,注意,读者应掌握一套学习方法,而不是一个个独立的例程。
最后,我们可以在STM32F103页面的图或列表中找到Nucleo-F103RB开发板上所载的微控制器“STM32F103RB”,单击进入STM32F103RB微控制器的介绍页面。
2.认识STM32F103RB
在STM32F103RB页面,我们可以看到用黑色粗体字在显要位置介绍了STM32F103RB的显著特征:
"Mainstream Performance line,ARM Cortex-M3 MCU with 128 Kbytes Flash,72MHz CPU,motor control,USB and CAN "
STM32F103RB在STM32系列产品中属于主流产品,其内部内存容量为128KB,CPU运行速度可达72MHz,具有电动机控制、USB和CAN总线接口的ARM Cortex-M3微控制器。
接下来,我们可以看到STM32F103RB也是分4个基本项介绍的:概述(Overview)、工具和软件(Tools&software)、资源(Resources)、质量和可靠性(Quality&reliability)。
在概述部分,有几段文字是对STM32F103RB的简要介绍,不过相对笼统一些,我们可以通过主要特征(Key features)部分对STM32F103RB有更清晰的认识。
1)32位ARM Cortex-M3内核CPU
最大允许频率72MHz,1.25DMIP/MHz,存储访问0等待。
单周期乘法运算和硬件除法运算。
2)存储
内部闪存容量是64KB或128KB。
内部SRAM容量是20KB。
3)时钟、复位和电源管理
2.0~3.6V应用电源和I/O端口。
上电复位(POR)、掉电复位(PDR)和可编程电压检测(PVD)。
4~16MHz晶振。
内部8MHz高频RC振荡器。
内部40kHz低速RC时钟。
CPU时钟锁相环(PLL)。
用于带校准功能RTC的32kHz振荡器。
4)低功耗
睡眠、停止和待机3种低功耗模式。
RTC和备份寄存器的VBAT电源。
5)2×12位、1μs A/D转换器(最多支持16个通道)
转换范围:0~3.6V。
双通道采样和保持能力。
温度传感器。
6)DMA
7通道DMA控制器。
支持外设:定时器、ADC、SPI、I 2 C和USART。
7)最多80个快速I/O端口
26/37/51/80个I/O端口都映射到16个外部中断向量,几乎所有I/O端口都可容忍5V电压。
8)调试模式
串行调试(SWD)和JTAG调试接口。
9)7个定时器
3个16位定时器。
1个16位电动机P WM控制器,具有死区发生和紧急停止功能。
2个看门狗定时器(独立看门狗和窗口看门狗)。
1个24位向下计数的SysTick计数器。
10)最多9个通信接口 。
最多2个I 2 C接口(SMBus/PMBus)。
最多3个USART(ISO 7816接口,LIN、IrDA功能,调制解调器控制)。
最多2个SPI(18Mbit/s)。
CAN总线接口(有源2.0B)。
USB全速2.0接口。
11)CRC计算单元,96位唯一ID
12)无铅(ECOPACK)封装
以上是在概述部分对STM32F103RB的基本介绍。其实在学习开发的过程中,我们用得更多的是资源(Resources)部分的技术类文档。
资源(Resources)菜单项又分为5个子项:技术文档(Technical documentation)、硬件模型和CAD库(HW model&CAD libraries)、演示和培训资料(Presentations&training material)、出版物及附属资料(Publications and collaterals)、质量和可靠性(Quality&reliability)。其中,须要重点关注技术文档,该菜单项又分为9个子菜单项:产品规格(Product specifications)、应用手册(Application notes)、技术说明和文章(Technical notes&articles)、用户手册(User manuals)、参考手册(Reference manuals)、编程手册(Programming manuals)、勘误手册(Errata sheets)、产品选项清单(Device option lists)、相关工具和软件应用笔记(Application notes for related tools&software)。例如:选型时,我们会关注产品规格目录下的文档;在学习开发阶段,我们会重点学习参考手册、编程手册、勘误手册目录下的文档;而随着深入学习和实际应用,我们又会更多地关注应用手册、技术说明和文章、用户手册目录下的文档。这里特别强调,在本阶段有以下几份文档需读者下载后深入学习:
DS5319 :Medium-density performance line ARM ®-based 32-bit MCU with 64 or 128 KB Flash,USB,CAN,7 timers,2 ADCs,9 com.Interfaces;
RM0008 :STM32F101××,STM32F102××,STM32F103××,STM32F105××and STM32F107××advanced ARM ®-based 32-bit MCUs;
PM0075 :STM32F10×××Flash memory microcontrollers;
PM0056 :STM32F10×××/20×××/21×××/L1××××Cortex-M3 programming manual.
其实,文档DS5319就是STM32F103×8和STM32F103×B系列微控制器的数据手册(Datasheet),因而在芯片选型、电路设计、查看微控制器外设引脚时会经常用到。
文档RM0008 Reference manual,也称《STM32F10×××参考手册》,该文档综合了STM32F101××、STM32F102××、STM32F103××、STM32F105××和STM32F107××等几个系列32位ARM Cortex-M3内核微控制器,是学习STM32微控制器编程非常关键的一份技术文档。ST公司官网上STM32F103RB页面给出了一份英文版文档(Ver20),我们可以登录STM32微控制器中文官网或STM32/STM8的中文技术社区下载中文版《RM0008:STM32F10×××参考手册》(Ver10)。
文档PM0075、PM0056在进行内部闪存操作和Cortex-M3内核相关寄存器操作时是非常重要的。
除了以上文档,还有一本书是学习STM32F103系列微控制器不可或缺的教材,那就是宋岩老师翻译的《ARM Cortex-M3权威指南》。
3.STM32F103系列分类
在ST公司官网的微控制器和微处理器页面,ST将自己的产品分为4种:主流产品、超低功耗产品、高性能产品、无线系列产品。而主流产品中的STM32F1系列产品又分为超值型STM32F100、基本型STM32F101、USB基本型STM32F102、增强型STM32F103、互联型STM32F105/107。
在《RM0008:STM32F10×××参考手册》中,按其内部集成的闪存容量,STM32F103系列产品又分为4个类型:小容量(内置闪存容量为16~32KB)、中容量(内置闪存容量为64~128KB)、大容量(内置闪存容量为256~512KB)和互联型(STM32F105××和STM32F107××)。
具体到增强型STM32F103系列微控制器,又分为STM32F103×4、STM32F103×6、STM32F103×8、STM32F103×B、STM32F103×C、STM32F103×D、STM32F103×E、STM32F103×F和STM32F103×G,如图2-3所示。其实,这些产品最大的区别就是其内部闪存和SRAM容量的不同,在《DS5319:STM32F103x8,STM32F103xB数据手册》中,表2-1所列为STM32F103系列产品配置,对不同容量产品的外设进行了比较。
表2-1 STM32F103系列产品配置
【注意】 观察表2-1中3种容量STM32F103产品的不同配置,可以发现小容量产品和中容量产品的外设配置并没本质区别,只有存储容量的区别,而大容量产品的外设配置比中/小容量产品多出了基本定时器、I 2 C、DAC、SDIO、FSMC等功能项。这些区别在中容量产品数据手册《DS5319:STM32F103x8、STM32F103xB数据手册》的第2.2节“系列产品之间的兼容性”中也有清晰的描述:
“小容量和大容量产品是中容量产品(STM32F103×8/B)的延伸,分别在对应的数据手册STM32F103×4/6和STM32F103×C/D/E中介绍。小容量产品具有较小的闪存存储器、RAM空间和较少的定时器和外设,大容量产品则具有较大的闪存存储器、RAM空间和更多的片上外设,如SDIO、FSMC、I 2 C和DAC等,同时保持与其他同系列的产品兼容。”
“STM32F103×4、STM32F103×6、STM32F103×C、STM32F103×D、STM32F103×E、STM32F103×F、STM32F103×G可直接替换中容量的STM32F103×8/B产品,这就为用户在产品开发中尝试使用不同存储容量提供更大的自由度。”
在进行产品开发时,要根据实际需要选择合适的微控制器型号;而在入门阶段,Nucleo-F103RB开发板完全可以满足需要。我们可以将该开发板上的实验直接移植到其他型号的微控制器上,也可以将小容量和大容量产品上的实验移植到Nucleo-F103RB开发板上(FSMC、SDIO等相关例程除外)。
4.STM32命名规范
对STM32系列产品的命名,在《RM0008:STM32F10×××参考手册》中有明确的描述,在中容量产品《DS5319:STM32F103×8、STM32F103×B数据手册》中也有描述(在其第7章以“订货代码”的形式给出的)。下面以STM32F103ZET6A×××为例给出STM32系列产品的命名规范,如图2-5所示。
选择开发板时,首先要注意其产品子系列是否为增强型(103),然后就是引脚数目,通常可以选择64引脚(R)、100引脚(V)或144引脚(Z)系列的产品。闪存容量(B/C/D/E)对我们的学习影响不大,其唯一的影响也就是单片机集成闪存的容量,它会影响到可编写程序的大小,不过最小容量128KB在初学阶段已是绰绰有余。
图2-5 STM32系列产品命名规范
图2-5 STM32系列产品命名规范(续)