第4章 初识STM32
4.1 什么是STM32
STM32,从字面上来理解,ST是指意法半导体公司,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。在如今的32位控制器当中,STM32可以说是最璀璨的新星,它深受工程师和市场的青睐,无其他芯片能出其右。
STM32诞生的背景
51单片机是嵌入式学习中一款入门级的经典MCU,因其结构简单,易于教学,且可以通过串口编程而不需要额外的仿真器,所以在单片机教学中被大量采用,至今很多大学在嵌入式教学中用的还是51单片机。它诞生于20世纪70年代,属于传统的8位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现在的市场产品竞争越来越激烈,对成本极其敏感,相应地对MCU的性能要求也更苛刻:更多功能,更低功耗,易用界面和多任务。面对这些要求,51单片机现有的资源就显得得力不从心。所以无论是高校教学还是市场需求,都急需一款新的MCU来为这个领域注入新的活力。
基于这样的市场需求,ARM公司推出了其全新的基于ARMv7架构的32位Cortex-M3微控制器内核。紧随其后,ST公司推出了基Cortex-M3内核的MCU-STM32。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多Cortex-M3 MCU中脱颖而出,成为最闪亮的一颗新星。STM32一上市就迅速占领了中低端MCU市场,受到了市场和开发人员的无比青睐,颇有星火燎原之势。
作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快契合市场的需要,跟上技术的发展潮流。如今STM32的出现就是一种趋势,一种潮流,我们要做的就是搭上这趟快车,让自己的技术更有竞争力。
4.2 STM32能做什么
STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可连接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品中都有STM32的身影,比如智能手环、微型四轴飞行器、平衡车、移动POST机、智能电饭锅、3D打印机等。下面我们以近两年最为火爆的两个产品来讲解下:一个是手环,一个是飞行器。
4.2.1 智能手环
三星Gear Fit智能手环见图4-1。
图4-1 三星Gear Fit智能手环
①STM32F439ZIY6S处理器,2048k B Flash,256k B RAM,WLCSP143封装。
② Macronix MX69V28F6416MB闪存,基于MCP封装的存储器,是一种包含了NOR和SRAM的闪存,在手环、手机这种移动设备中经常使用,其优点是体积小,可以减小PCB的尺寸。这个闪存用439的FSMC接口驱动。
③Inven Sense MPU-6050陀螺仪/加速度计,用439的I2C接口驱动。
④博通BCM4334WKUBG芯片,支持802.11n,蓝牙4.0+HS以及FM接收芯片,用439的SDIO或者SPI接口驱动。
⑤ 1.84"可弯曲屏幕(Super AMOLED),432×128像素。触摸部分用439的I2C接口驱动,OLED显示部分用LTDC接口驱动。
三星Gear Fit和秉火STM32F103资源对比见表4-1。
表4-1 三星Gear Fit和秉火STM32F103资源对比
除了这几个重要资源以外,STM32F103指南者开发板上还板载了EEPROM、USB转串口、蜂鸣器、LED、普通按键、电容按键等外设资源,还可以扩展VS1053 MP3模块、W5500以太网模块,利用这些可以更充分地学习STM32F103VET6这个芯片。在板子上面,还可以运行系统μcosiii,学习图形界面emwin,见图4-2。如果功夫所至,学完之后,甚至可以自己做一个类似Gear Fit这样的手环。可很多人又会说,Gear Fit涉及硬件和软件,整个系统这么复杂,并不是一个人可以完成的。说的没错,我们可能做不了手环,但是我们的能力可以无限接近,多学点不无裨益,俗话说:技多不压身。
图4-2 μcosiii+emwin做的系统界面(指南者的开机界面)
4.2.2 微型四轴飞行器
现在无人机在业内非常火,高端的无人机用STM32做不了,但是微型四轴飞行器用STM32做还是绰绰有余的。如图4-3所示的飞行器基本都可以用STM32完成。
图4-3 微型四轴飞行器
上面的是属于产品,如果想自己DIY,可以在入门STM32之后,买一本飞行器DIY的书,边学边做。入门级的书籍推荐《四轴飞行器DIY——基于STM32微控制器》。
4.2.3 淘宝众筹
学会了STM32,想自己做产品,如何实现自己的梦想呢?淘宝众筹吧,见图4-4。自己做出产品原型,用别人的钱为自己的梦想买单。
图4-4 淘宝众筹科技类
淘宝众筹科技类网址如下,这里面有很多小玩意都可以用STM32实现,只要你有创意,就会有人买单,前提是我们要先学会STM32。
https://hi.taobao.com/market/hi/list.php?spm=a215p.1596646.1.8.Lb Vy Jk#type=121288001
4.3 STM32怎么选型
4.3.1 STM32分类
STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-M0、M3、M4和M7这几种,每个内核又大概分为主流、高性能和低功耗,具体见表4-2。
表4-2 STM8和STM32分类
单纯从学习的角度出发,可以选择F1和F4,F1代表了基础型,基于Cortex-M3内核,主频为72MHz;F4代表了高性能,基于Cortex-M4内核,主频180MHz。
与F1相比,F4(429系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了LCD控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。但是就大学教学和用户初学而言,还是首选F1系列,目前在市场上资料最多、产品占有量最多的就是F1系列的STM32。
4.3.2 STM32命名方法
我们以秉火F103指南者用的型号STM32F103VET6,来讲解下STM32的命名方法,见表4-3。
表4-3 STM32F103VET6命名解释
更详细的命名方法见图4-5,摘自《STM8和STM32选型手册》。
图4-5 STM8和STM32命名方法
4.3.3 选择合适的MCU
了解了STM32的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内核的MCU。普通应用、不需要接大屏幕的一般选择Cortex-M3内核的F1系列;如果追求高性能,需要大量的数据运算,且需要外接RGB大屏幕的则选择Cortex-M4内核的F429系列。
明确了大方向之后,接下来就是细分选型。先确定引脚数,引脚多的功能就多,价格也贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选择Flash大小,相同引脚数的MCU会有不同的Flash大小可供选择,这个也是根据实际需要选择,程序大的就选择大点的Flash,也是够用就好。有些月出货量以KK(百万数量级)为单位的产品,不仅是MCU,连电阻、电容能少用就少用,更有甚者连PCB的过孔的多少都要算计。项目中的元器件的选型很有学问。
1.如何分配原理图IO
在画原理图之前,一般的做法是先把引脚分类好,然后才开始画原理图。引脚分类具体见表4-4。
表4-4 画原理图时的引脚分类
2.如何寻找IO的功能说明
要想根据功能来分配IO,那就得先知道每个IO的功能说明,这个可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(Reference Manual),另外一个是数据手册(Data Sheet),两者的具体区别见表4-5。
表4-5 参考手册和数据手册的内容区别
一句话概括:数据手册主要在芯片选型和设计原理图时参考,参考手册主要在编程的时候查阅。官方的这两个文档可以从官方网址下载:http://www.stmcu.org/document/list/index/category-150,也可以从我们配置的资料里面找到。
在数据手册中,有关引脚定义的部分在Pinouts and pin description小节中,具体定义见表4-6,更详细的解释见表4-7。
表4-6 数据手册中对引脚定义
表4-7 对引脚定义的解读
3.开始分配原理图I/O
比如我们的F103指南者使用的MCU型号是STM32F103VET6,封装为LQFP100。我们在数据手册中找到这个封装的引脚定义,然后根据引脚序号,一个一个复制出来,整理成Excel表。具体整理方法按照表4-4画原理图时的引脚分类即可。分配好之后就开始画原理图。