STM32的认识
- 前言
- 一、MCU
- 1.什么是MCU
- 2.MCU是怎么做的
- 3.MCU为什么会存在
- 二、STM32
- 1.宏观了解STM32
- 1.1 STM3232与MCU的关系
- 1.2 STM32家族
- 2.什么是STM32
- 3. STM32选型
- 3.1 STM32F1系列
- 3.2 命名规则(STM32f103ZET6)
- 3.2.1: Z
- 3.2.2: E
- 3.2.3: T
- 3.2.4: 6
- 3.3 为什么选择STM32F103ZET6
- 总结
前言
在进入嵌入式之前,相信大家都会或多或少的了解一些单片机. 什么STM32, I2C, spi,通信协议, 烧焊等等东西. 我也是一样. 听说了很多碎片化的东西,但是学起来却东摸一点,西摸一点. 所以我希望可以整理出一份系统的学习路径和过程,帮助各位我自己以及各位老铁入门嵌入式.
本章节小羊会以STM32ZET6为例进行讲解。
一、MCU
1.什么是MCU
MCU: Micorcontroller Unit(微控制单元)的缩写。中文常称为单片机(Single Chip Micorcontroller)。
2.MCU是怎么做的
- 从功能上看:MCU是把处理器(CPU核心:ARM的Cortex-M系列)、存储器(Flash、RAM)、各种输入输出接口(定时器,ADC,I2C,串口等)集成在一起,形成一个芯片。
- 从制造上看:MCU是一个极纯的硅片上,经过光刻、刻蚀、沉积、等上百道工序,把CPU,Flash,RAM,定时器,串口等模块的晶体管一层层堆叠起来,再把他们内部连通,最终形成一个完整的芯片。
MCU要把模块集成在一起的原因:主要还是为了低功耗。因为集成在一个芯片里意味着:走线很短,响应很快,功耗就会比较低。
MCU长这样:
我们平时多用的是已经把MCU焊接好并加上了电源稳压电路、晶振电路、复位按键和 USB 接口等等外设,并引出了所有的引脚的开发板。
开发板长这样:(STM32F103ZET6开发板)
3.MCU为什么会存在
以手机应用处理器为例的这类片上系统,主要解决的是算力问题。
以MCU为例的片上系统,主要解决的是控制问题。
因为我们现实中的控制要求是各种各样的。任何一款通用处理器都无法同时满足所有控制场景的低成本,低功耗以及硬实时的要求。因此市场会分化出面向不同场景的处理器。MCU也就应运而生。
MCU专门低成本解决实时控制问题。
二、STM32
1.宏观了解STM32
1.1 STM3232与MCU的关系
各个厂商都会生产MCU。知名的比如恩智浦(NXP)的LPC系列;兆易创新()(GD)的GD32系列;乐鑫(Espressif)的ESP32系列。 而我们熟知的STM32系列就是意法半导体公司生产的MCU。
STM32是MCU的一种。
举个例子:把MCU比作“手机”,STM32就是“苹果手机”,GD32就是“华为手机”,是手机的一个种类。意法半导体和兆易创新就是造手机的厂商。
1.2 STM32家族
通过这个图片我们可以看出,在stm32中,基于不同的CPU内核(ARM Cortex的不同系列),以及不同的应用场景。我们有多中STM32的MCU型号可以选择。
STM32有 F系列,G系列,H系列,L系列,U系列。
- F:Fundation (基础/同用)
这是最基础的系列,应用最广泛,是STM32的基石。 - G:General-Purpose(通用性)
ST官方定义为:主流高性价比系列。 - L:Low-Power(低功耗)
专门为低功耗设计的系列。 - U:Ultra-Low-Power(超低功耗)
比L系列功耗更低的系列。 - H:High-Perfermance(高性能)
字母H对应为High,代表STM32系列中性能最好的产品。
我们后续主要关注STM32的F1系列。
下列图片可以去STMCU中文官网找到
2.什么是STM32
从字面意思看:ST是意法半导体公司. M是微Microelectronics的缩写. 32代表32位.合起来理解就是STM32就是指ST公司开发的32位微控制器。
3. STM32选型
以STM32f103ZET6为例.
3.1 STM32F1系列
在STM32家族里,我们重点关注F1系列。
STM32F100:超值型
STM32F101:基础型
STM32F102:基础型+USB
STM32F103:增强型(最主流)
STM32F105:互联型
STM32F107:互联型+以太网
即便是我们已经选择了STM32F103系列之后,STM32F103还有很多的子型号。 如:STM32F103C8T6, STM32F103ZET6等等。我们重点关注STM32F103ZET6。
到此可以看到意法半导体的STM32系列的MCU也是逐级往下细分。
MCU—>STM32—>STM32F1—>STM32F103—>STM32F103ZET6
手机—>华为手机–>mate系列–>华为mate90—>mate90 Pro Max 曜石黑。
3.2 命名规则(STM32f103ZET6)
选完型号之后,老铁们可能会问,这名字这么长一串都代表什么意思呢?小羊接下来会以STM32f103ZET6为例给大家介绍:
STM32: 产品类型.
STM32 表示为意法半导体设计生产的32位MCU
F103: 产品系列
F1属于"主流"(Mainstream) 产品线。并且使用Cortex-M3的CPU内核. 03属于STM32F1子系列中具体的产品线。F103为增强型。
C8T6 / ZET6: 产品规格。
3.2.1: Z
Z: 这个MCU总共有144个引脚(pin).
⼀条边上是 36 个, 4 条边共计 144 个
当然还有其他字符,也能表示其他pin数目:
T : 36个引脚
C : 48个引脚
R : 64个引脚
V : 100个引脚
Z : 144个引脚
关于引脚,MCU为什么有不同的引脚数目:
我们知道MCU的核心定位是用来控制外设,所以引脚的多少就意味着我们控制外设的多少。
也就是说引脚的多少取决于我们的需求。如果我们做一个小玩具,用到的引脚不多,就可以选择T系列。如果是一些汽车电子的元器件,需要控制的外设较多可以选择Z系列。所以引脚的多少就意味着未来我们控制外设的多少,外设的多少就意味着成本的多少。
如果我们只是做个小玩具,明明T系列36个引脚足够了,但是偏偏选择了144个引脚的Z系列MCU,那么对应的就是成本增加,功耗增加。产品未来在销售市场的价格可能会比其他竞品高。那我们的市场竞争力就弱了。
3.2.2: E
E: 表示MCU内部Flash容量为512KB.
还有其他字符,也表示其他flash容量
对于MCU或单片机而言,我们写的二进制程序,在完成烧录后,就会由MCU内部的ARM处理器一行一行执行我们烧录进来的代码。这个就是叫裸机开发。
我们把写好的二进制程序烧写进开发板的MCU中,其实就是烧写进MCU内部的Flash中,这个Flash就叫MCU的内部Flash。
MCU内部的CPU(Arm Cortex-M3)会从内部Flash中读取对应的指令。一行一行去执行,从而帮我们去控制其他的外设。
为什么有那么多不同的Flash容量?
不同的MCU,Flash的大小也会有差异。因为不同的Flash容量代表的是能烧写的不同程序的体积。本质是对应不同规模的产品。
如果我们写的程序比较简单,我们就能选择Flash容量小的MCU,实现更低成本的开发,提高终端产品的价格竞争力。
3.2.3: T
T: 封装类型, 采用LQFP封装.
当然也有其他类型的封装:
封装: 电子元件想要工作,需要焊接到电路板上。 相应的,电路板就需要提供对应的焊盘。
MCU封装图例可以去立创商城搜索
LQFP封装: 低轮廓四边扁平封装
BGA封装: 球栅阵列封装
VFQFPN封装: 超薄细间距四边扁平无引脚封装。
3.2.4: 6
这个数字表示MCU的工作温度。
6:表示工作温度范围为-40度到+85度。
7:表示工作温度范围为-40度到+105度。
为什么我们会把温度作为一个核心指标体现在名字上:
- 可靠性: 如果我们的设备在夏天户外工作,或者靠近发热元件等高温环境,我们就要选择7甚至更高级别.
- 性能降级: 如果温度超过85度, 我们依然选择6的MCU,就会影响电路内部的晶体振荡频率, ADC精度下降, 影响Flash擦写可靠性.
3.3 为什么选择STM32F103ZET6
根据上述命名规则的介绍,我们可以根据外设数量选择引脚数,根据项目的程序代码量级选择MCU内部Flash的容量,根据工作环境选择工作温度区间。作为工程师,我们选型MCU的时候,要考虑产品的需求,以求达到最低成本实现项目目标。要不仅有技术思维,也要有产品思维,老板思维去思考问题.
其实理由很朴素:因为它的引脚数量最多,未来可以把很多外设接到一块板子上。也就是说一块板子基本能解决入门遇到的所有问题。
当然我们在学习中,工作中会遇到不同的板子选型。不过没关系,我们理解了一个,再去学习新的,不说一通百通,基本学习成本大大降低。
总结
今天小羊主要给老铁们介绍了MCU和STM32, 以及他们的关系, STM32的命名规则,如何选型等等. 让大家对嵌入式的前置知识有一个宏观上的了解.
欢迎各位老铁在评论区交流自己的意见.