目录
0. 《STM32单片机自学教程》专栏
1.1 嵌入式系统简介
1.1.1 什么是嵌入式系统
1.1.2 嵌入式系统的特点
1.1.3 嵌入式系统的应用领域
1.2 单片机基本概念
1.3 ARM简介
1.3.1 ARM公司简介
1.3.2 ARM处理器简介
1.4 STM32简介
1.4.1 基于Cortex内核的MCU
1.4.2 什么是STM32
1.4.3 STM32产品线简介
1.4.4 STM32的命名规则
0. 《STM32单片机自学教程》专栏
本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link:
STM32单片机自学教程-[目录总纲]_stm32 学习-CSDN博客
1.1 嵌入式系统简介
1.1.1 什么是嵌入式系统
嵌入式系统的标准定义如下:
嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。
如上定义,嵌入型系统属于专用的计算机系统,其对应的就是通用计算机系统,也就是我们的个人电脑等,也就是我们的电脑等通用计算机系统具有“通用而复杂”的功能,而嵌入式系统只为实现一些特定的专用功能。
图1.1-1计算机系统组成
嵌入式系统和通用计算机系统都属于计算机系统。如图1.1-1。从系统组成上它们都是软件和硬件组成,工作原理也相同。从硬件上看,两者都是由CPU、存储器、I/O接口和中断系统等部件组成;从软件上看,两者都可以换分为系统软件和应用软件。
嵌入式系统和通用计算机系统也是有很多不同点,如下图1.1-2所示。
图1.1-2嵌入式系统与通用计算系统的不同点
1.1.2 嵌入式系统的特点
和通用计算机系统比较,嵌入式系统有一下特点:
(1)专用性强:嵌入式系统按照具体应用需求进行设计,完成指定的任务,通常没有通用性,只能完成特定的应用。比如冰箱的控制系统只能完成冰箱的控制,而不能在空调的控制中使用。
(2)可裁剪性:基于体积、成本等因素,嵌入式系统的软硬件可根据需求进行裁剪,在满足要求的前提下做到最精简的配置。
(3)实时性好:大多数实时性系统都是嵌入式系统,嵌入式系统也基本都具有实时性的要求和性能。
(4)可靠性高:很多嵌入式系统必须全天候持续工作,甚至在极端环境下正常运行,大多数嵌入式系统都具有可靠性机制。
(5) 生命周期长:通用计算机的更新迭代较快,嵌入式系统的生命周期与其嵌入的产品同步,生命周期较长。
1.1.3 嵌入式系统的应用领域
如图1.1-3所示,嵌入式系统的应用非常广泛,在工业控制,交通管理,信息家电,环境工程等广泛应用。
图1.1-3 嵌入式系统的应用领域
1.2 单片机基本概念
单片机,全称单片微型计算机(Single-Chip Microcomputer),是指集成在一个芯片上的微型计算机。这种计算机系统的体积较小,内部包含中央处理器CPU、随机存储器RAM、只读存储器ROM、定时/计数器和多种I/O接口电路,并在一块集成电路芯片上集成了微型计算机的各种功能部件,具有高性能、低价格的优点。国内经常使用“单片机”这个称呼,国外通常称为“微控制器”,英文缩写MCU(Microcontroller Unit)。
单片机是嵌入式系统中的一个重要子类,单片机在嵌入式系统中扮演了关键的角色,是实现嵌入式系统功能的重要组件之一。
1.3 ARM简介
1.3.1 ARM公司简介
ARM,全称为Advanced RISC Machines,既指ARM公司,也指ARM处理器内核。ARM公司是全球领先的半导体知识产权(IP)提供商,是一家在微处理器设计领域具有重要影响力和广泛应用的公司,ARM的总部位于英国的剑桥。
ARM设计了大量高性能、廉价、低功耗的RISC(Reduced Instruction Set Computer,精简指令集计算机)处理器及芯片。ARM作为知识产权供应商,本身不直接从事芯片的生产,其将知识产权授权给世界各大半导体厂商后,各大生产商再根据不同的应用领域,加入适当的外围电路,形成自己的ARM微处理器芯片。ARM架构其高效、节能的特性,使得它非常适合在移动设备和嵌入式系统中使用,它的技术广泛应用于各种嵌入式系统设计,从无线通讯、网络和消费娱乐产品到成像、汽车、安全和存储解决方案等领域。ARM架构已经成为当今使用最广泛的32位嵌入式RISC指令集架构,ARM公司已经成为全球RISC标准的缔造者。目前全球超过95%的智能手机和平板电脑都采用了ARM架构。
1.3.2 ARM处理器简介
ARM公司开发了很多系列的处理器内核,以前都是以ARMx(x是数字)进行命名,比如经典的ARM7,ARM9,ARM11等。在早期,还在数字后面加字母后缀,用来进一步明确该处理器支持的特性。比如,ARM7TDMI,T代表Thumb指令集,D代表支持JTAG调试(Debugging),M代表快速乘法器,I代表一个嵌入式ICE模块。
到了ARMv7架构时代,ARM改革了一度使用的冗长命名方法,转为另一种看起来比较整齐的命名法:按照应用等级分成3个类别,并以Cortex作为前缀,而且每一个大的系列又换分若干小的系列。ARM体系结构与ARM内核的对应关系如图1.3-1。
图1.3-1 ARM处理器架构进化史
ARM的Cortex系列处理器分为三种:Cortex-A、Cortex-R和Cortex-M,每种系列都有其特定的使用场景。
Cortex-A系列处理器:主要用于高性能计算设备,如智能手机、平板电脑、个人电脑和服务器等。它们通常具有较高的时钟频率和更大的存储容量,面向尖端的基于虚拟内存的操作系统和用户应用,因此也被称为应用程序处理器。
Cortex-R系列处理器:专为实时应用程序设计,如实时嵌入式系统中的自动驾驶、工控系统和医疗设备等。这些处理器针对实时系统,面向深层的嵌入式实时应用,能够处理需要快速响应和高可靠性的任务。
Cortex-M系列处理器:专为嵌入式系统设计,用于低功耗、实时控制和物联网设备。它们被广泛应用于各种应用,包括智能家居、汽车电子、医疗设备、工业自动化等领域。Cortex-M系列处理器具有低功耗、高性能、实时性、易于开发等特点,能够满足微控制器领域对于快速且具有高确定性的中断管理,以及低功耗和低成本的需求。
目前市场上比较流行的几大系列微处理,按性能、功能和处理能力划分如图1.3-2.
图1.3-2 ARM处理器性能示意图
我们教程主要讲述的是目前被控制领域广泛使用的基于Cortex-M3内核的STM32F103微控制器。
1.4 STM32简介
1.4.1 基于Cortex内核的MCU
前面介绍了ARM公司推出的Cortex处理器,但却无法从ARM公司直接购买到这样一款ARM处理器芯片。按照ARM公司的经营策略,它只负责设计处理器IP核,而不生产和销售具体的处理器芯片。
ARM-Cortex处理器内核是微控制器的中央处理单元(CPU)。完整的基于Cortex的MCU(MicroController Unit)还需要很多其他组件。在芯片制造商得到Cortex处理器内核的使用授权后,它们就可以把Cortex内核用在自己的硅片设计中,添加存储器、外设、I/O及其他功能块,即为基于Cortex的微控制器。不同厂家设计出的MCU会有不同的配置,包括存储器容量、类型、外设等都各具特色。以STM32的Cortex-M3内核为例,Cortex-M3内核和基于Cortex-M3的MCU关系如图1.4-1所示。
图1.4-1 Cortex-M3内核与基于Cortex-M3内核MCU关系图
1.4.2 什么是STM32
STM32是意法半导体(STMicroelectronics)公司推出的32位ARM Cortex-M内核微控制器系列。从字面上来理解,ST代表意法半导体,M是Microelectronics的缩写,而32则表示32位。这一系列微控制器具有高性能、低功耗、可靠性强等特点,广泛应用于工业控制、智能家居、汽车电子、医疗设备等领域。
STM32系列微控制器采用了多种ARM Cortex-M内核,如Cortex-M0、Cortex-M3、Cortex-M4等,具有不同的性能和功能特点,可根据应用场景的需求进行选择。STM32系列单片机采用了先进的低功耗技术,可以在不降低性能的情况下降低功耗,适合需要长时间运行或在电池供电的设备中使用。STM32作为一款功能强大的微控制器,以其高性能、低功耗和广泛的应用领域,赢得了工程师和市场的青睐。
图1.4-2意法半导体公司Logo
1.4.3 STM32产品线简介
图1.4-3 STM32产品线
STM32 从 2007 年推出至今,已经有 18 个系列,超过 1000 个型号。STM32系列微控制器适合多种应用场景,其强大的功能和性能使得它能够胜任许多复杂的任务,以下是一些STM32的典型应用场景:
- 工业自动化:STM32在工业自动化领域发挥着重要作用,包括工厂自动化、机器人控制、传感器接口和数据采集等方面。它可以与各种传感器和执行器集成,实现远程控制和自动化功能,从而帮助实现高效的工业自动化系统。
- 消费电子:STM32广泛应用于智能手机、平板电脑、家庭娱乐系统、数字相机和音频设备等消费电子产品中。它提供了强大的处理能力和丰富的功能集成,为这些产品提供了卓越的性能和用户体验。
- 汽车电子:在汽车电子领域,STM32的应用也非常广泛。它可以用于发动机控制、车身电子系统、车载娱乐系统和驾驶员辅助系统等。其高性能和可靠性确保了车辆的安全性和功能的高度集成。
- 物联网:STM32非常适用于开发物联网设备,如智能传感器、网关、路由器等。它可以实现设备之间的互联互通,为物联网应用提供可靠的数据传输和控制功能。
- 智能家居:STM32可以与各种智能家居设备相连,实现智能化控制。例如,它可以控制智能插座、智能灯泡、智能门锁等设备,提供便捷和舒适的家居环境。
- 医疗设备:STM32在医疗设备中也扮演着重要角色,如心电图仪、血压计、血糖仪和医疗图像处理等。其高性能和可靠性确保了医疗设备的准确性和安全性。
此外,STM32还可以用于无人机和机器人的控制系统开发,提供高性能的实时控制和传感器处理能力。同时,它也可以用于开发各种嵌入式设备,如测试仪器、智能卡等。
而下面的场景是绝大多数STM32控制器(不是全部)不太适合处理的,或者下面这些场景下并不推荐使用STM32,列举如下:
- 程序代码较大的应用:STM32微控制器的存储空间相对有限,其FLASH大小通常在几百KB到几MB之间。对于程序代码超过1MB的大型应用,STM32可能无法满足存储需求。在这种情况下,可能需要考虑使用具有更大存储空间的处理器或微控制器。
- 基于Linux或Android的应用:STM32微控制器更适合运行轻量级的操作系统或实时操作系统(RTOS),而不是像Linux或Android这样的复杂操作系统。这些操作系统通常需要更高的处理器性能、更大的内存和存储空间,以及更丰富的外设接口。因此,基于Linux或Android的应用更适合使用性能更强大的处理器或嵌入式系统。
- 需要极高计算能力的场景:STM32虽然是一款性能出色的微控制器,但在需要极高计算能力的场景中,如高性能计算、大型数据处理或复杂图像识别等,其计算能力可能无法满足需求。在这种情况下,可能需要选择更强大的处理器或计算单元。
如图1.4-3所示STM32的产品线,STM32 目前总共有 5 大类,18 个系列,简单总结如下表:
表1.4-1 STM32分类说明
根据上表,可见STM32 主要分两大类,MCU 和 MPU,MCU 就是我们常见的STM32微控器,不能跑 Linux,而 MPU 则是 ST 在 19 年才推出的微处理器,可以跑 Linux。STM32的MCU 提供了包括:基础入门、混合信号、高性能、超低功耗和无线等 5 方面应用的产品型号,我们可以根据自己的实际需要选择合适的 STM32 来设计。比如,我们的产品对性能要求比较高,则可以选择 ST 的高性能 MCU,包括:F2、F4、F7、H7 等 4 个系列的产品;又比如想做超低功耗,则可以选择 ST 的超低功耗 MCU,L 系列的产品。
由于 STM32 系列有很好的兼容性,我们只要能够熟练掌握其中一任何一款 MCU,就可以
很方便的学会并使用其他系列的 MCU。比如学好了 STM32F103,再去学 F4/F7/H7 就比较容易
学会,由于 STM32F103 系列最早推向市场,资料和教程都是最多的,在市场上的使用也是最为
广泛,所以对于没有接触过 STM32 的初学者来说,建议先学习 STM32F103,再去学习其他的 STM32 系列。本专栏介绍的STM32F103C8T6属于主流 MCU 分类里面的基础型 F1 系列。下面我们对STM32常见的几类控制器再进行进一步的介绍。
[1].STM32F1系列(主流类型)
STM32F1系列微控制器包含以下5个产品线,它们的引脚、外设和软件均兼容。
(1)STM32F100,超值型,24MHzCPU,具有电机控制和CEC功能。
(2)STM32F101,基本型,36MHzCPU,具有高达1MB的Flash。
(3)STM32F102,USB基本型,48MHz CPU,具备USBFS。
(4)STM32F103,增强型,72MHzCPU,具有高达1MB的Flash、电机控制、USB和CAN。
(5)STM32F105/107,互联型,72MHz CPU, 具有以太网MAC、CAN和USB2.0 OTG。
[2].STM32F4系列(高性能类型)
STM32F4系列微控制器基于Cortex-M4内核,采用意法半导体有限公司的90nmNVM工艺和ART加速器,在高达180MHz工作频率下通过闪存执行时,处理性能达225DMIPS/608CoreMark。由于采用了动态功耗调整功能,通过闪存执行时的电流消耗范围为STM32F401的128μA/MHz到STM32F439的260μA/MHz。
STM32F4系列包括8条互相兼容的数字信号控制器(Digital SignalController,DSC)产品线,是MCU实时控制功能与DSP信号处理功能的完美结合体。
(1)STM32F401,84MHz CPU/105DMIPS,尺寸最小、成本最低的解决方案,具有卓越的功耗效率(动态效率系列)。
(2)STM32F410,100MHz CPU/125DMIPS,采用新型智能DMA,优化了数据批处理的功耗(采用批采集模式的动态效率系列),配备的随机数发生器、低功耗定时器和DAC,为卓越的功率效率性能设立了新的里程碑(停机模式下89μA/MHz)。
(3)STM32F411,100MHz CPU/125DMIPS,具有卓越的功率效率、更大的SRAM和新型智能DMA,优化了数据批处理的功耗(采用批采集模式的动态效率系列)。
(4)STM32F405/415,168MHz CPU/210DMIPS,高达1MB的Flash闪存,具有先进连接功能和加密功能。
(5)STM32F407/417,168MHz CPU/210DMIPS,高达1MB的Flash闪存,增加了以太网MAC和照相机接口。
(6)STM32F446,180MHz CPU/225DMIPS,高达512KB的Flash闪存,具有DualQuad SPI和SDRAM接口。
(7)STM32F429/439, 180MHz CPU/225DMIPS, 高达2MB的双区闪存,带SDRAM接口、Chrom-ART加速器和LCD-TFT控制器。
(8)STM32F427/437,180MHz CPU/225DMIPS,高达2MB的双区闪存,具有SDRAM接口、Chrom-ART加速器、串行音频接口,性能更高,静态功耗更低。
(9)SM32F469/479,180MHz CPU/225DMIPS,高达2MB的双区闪存,带SDRAM和QSPI接口、Chrom-ART加速器、LCD-TFT控制器和MPI-DSI接口。
[3].STM32F7系列(高性能类型)
STM32F7是世界上第一款基于Cortex-M7内核的微控制器。它采用6级超标量流水线和浮点单元,并利用ST的ART加速器和L1缓存,实现了Cortex-M7的最大理论性能。无论是从嵌入式闪存还是外部存储器来执行代码,都能在216MHz处理器频率下使性能达到462DMIPS/1082CoreMark。由此可见,相对于意法半导体以前推出的高性能器控制器,如F2、F4系列,STM32F7的优势就在于其强大的运算性能,能够适用于那些对高性能计算有巨大需求的应用。STM32F7系列与STM32F4系列引脚兼容,包含以下STM32F7x5子系列,STM32F7x6子系列、STM32F7x7子系列和STM32F7x9子系列,四个产品线。
[4].STM32L1系列(超低功耗类型)
STM32L1系列微控制器基于Corter-M3内核,采用意法半导体专有的超低泄漏制程,具有创新型自主动态电压调节功能和5种低功耗模式,为各种应用提供了完美的平台灵活性。STM32L1扩展了超低功耗的理念,并且不会牺牲性能。与STM32L0一样,STM32L1提供了动态电压调节、超低功耗时钟振荡器、LCD接口、比较器、DAC及硬件加密等部件。
STM32L1系列微控制器可以实现在1.65~3.6V范围内以32MHz的频率全速运行其功耗参考值如下:
(1)动态运行模式,低至177μA/MHz。
2)低功耗运行模式:低至9μA。
(3)超低功耗模式+备份寄存器+RTC:900nA(3个唤醒引脚)。
(4)超低功耗模式+备份寄存器:280nA(3个唤醒引脚)。
除了超低功耗MCU以外,STM32L1还提供了多种特性、存储容量和封装引脚数选项。如 32~512KB Flash 存储器、高达 80KB的SDRAM、16KB真正的嵌入式EEPROM、48~144个引脚。为了简化移植步骤和为工程师提供所需的灵活性,STM32L1与不同的STM32F系列均引脚兼容。STM32L1系列微控制器包含4款不同的子系列:STM32L100超值型、STM32L151、STM32L152(LCD)和STM32L162(LCD和AES-128)。
[5].STM32-MP1(可跑Linux)
STM32-MP1是意法半导体(STMicroelectronics)推出的一款功能丰富的微控制器,它采用了灵活的异构计算架构,集成了高性能的ARM Cortex-A7应用处理器内核和高效的Cortex-M4微控制器内核。
在STM32-MP1中,Cortex-A7内核的时钟频率可以达到650MHz,配备了32-Kbyte的L1指令高速缓存、32-Kbyte的一级数据高速缓存和256-Kbyte的二级高速缓存。这使得它在执行复杂的数据处理和操作系统任务时具有出色的性能。而Cortex-M4内核则专注于实时处理和低功耗任务,其运行频率为209MHz,并配备了单精度浮点单元(FPU)、全套数字信号处理器(DSP)指令和内存保护单元(MPU),从而增强了应用程序的安全性和效率。
此外,STM32-MP1还具备一个可选的兼容OpenGL的3D GPU,可用于执行高级HMI开发任务。它提供了时钟频率为533MHz的DDR和LPDDR接口,支持经济实惠的DDRSDRAM存储器,如DDR3、DDR3L、LPDDR2和533MHz的32/16位LPDDR3。这样的设计有助于Cortex-M4内核在实时处理和低功耗模式下实现更高效的操作。
STM32-MP1系列微控制器在生态系统方面具有诸多优势,每个产品线都配备了安全选项,如加密和安全启动功能。这使得它在各种应用中都能达到卓越的性能和低功耗效果。此外,STM32-MP1特别适用于长寿命工业应用,公司提供了滚动的10年使用寿命承诺,为设计人员、产品经理和采购团队提供了组件在其设计的整个生命周期中始终可用的保证。
综上所述,STM32-MP1具有强大的性能和丰富的功能,完全能够胜任运行Linux系统的任务,为嵌入式系统和物联网设备的开发提供了强大的支持。
1.4.4 STM32的命名规则
STM32 的产品名字里面包含了:家族、类别、特定功能、引脚数、闪存容量、封装、温度范围等重要信息,这些信息可以帮助我们识别和区分 STM32 不同芯片。STM32的命名规则可参考下图 1.4-4.后面遇到STM32 型号的产品,都可以按图1.4-4 所示命名规则进行区分解读。
图1.4-4 STM32命名规则