基于STM32的嵌入式系统设计与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 STM32微控制器

近年来,STM32微控制器在嵌入式系统中的应用越来越广泛,熟练掌握基于STM32的嵌入式系统开发与设计具有极为重要的现实意义。

1.2.1 STM32微控制器的诞生

STM32微控制器是指由意法半导体(ST Microelectronics,ST)公司开发的32位闪存微控制器产品,这是ST公司第一个基于ARM Cortex-M内核的微控制器。STM32微控制器具有易于开发、性能高、兼容性好、功耗低、实时处理能力和数字信号处理能力强等优点,它的出现使得当前微控制器的性价比水平提升到了一个新高度。

在过去的数年里,51单片机因其结构简单、易开发等优点,一直被广泛使用,是嵌入式系统中一款经典的单片机。如今嵌入式产品的竞争日益激烈,相应地对微控制器性能的要求也越来越高。面对这些新要求和新挑战,51单片机显得有些“力不从心”。因此,一款功能更多、功耗更低、实时处理能力和数字信号处理能力更强的微控制器,将会更好地适应当今的市场需求。

正是基于这样的市场需求,ARM公司率先推出了一款基于ARMv7架构的32位ARM Cortex-M微控制器内核。Cortex-M系列内核支持两种运行模式,即线程模式(Thread Mode)与处理模式(Handler Mode)。这两种模式都有各自独立的堆栈,使得内核更加支持实时操作系统,并且Cortex-M系列内核支持Thumb-2指令集。Thumb-2指令集是专为C/C++编译器而设计的,因此基于Cortex-M系列内核的微控制器的开发和应用可以在C语言环境中完成。

继Cortex-M系列内核诞生之后,ST公司积极响应当今嵌入式产品市场的新要求和新挑战,推出了基于Cortex-M系列内核的STM32微控制器。它具有出色的微控制器内核和完善的系统结构设计,以及易于开发、性能高、兼容性好、功耗低、实时处理能力和数字信号处理能力强等优点,这使得STM32微控制器一上市就迅速占领了中低端微控制器市场。它不仅完美地适应了当前市场的需求,还使得ST公司在低价位和高性能两条产品主线上取得了巨大进步。

1.2.2 STM32微控制器的分类、命名规则与选型

1. STM32微控制器的分类

为了满足市场需求,STM32微控制器具有多种产品系列,其内核型号大致可以分为Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7几种类型。STM32微控制器的分类如表1.1所示。

表1.1 STM32微控制器的分类

下面简要介绍几款较为常用的STM32微控制器。

(1)STM32-L1系列超低功耗型微控制器。该系列微控制器基于Cortex-M3内核,工作频率为32MHz,在性能、存储器容量和引脚数量等方面扩展了超低功耗型产品系列,最低功耗模式电流消耗为0.27μA/MHz,动态运行模式电流消耗为230μA/MHz。

(2)STM32-F1系列基本型微控制器。该系列微控制器最大化地集成了高性能与低功耗特性,主要包含5个产品线,它们之间的引脚、外设和软件均相互兼容。其中STM32-F103系列微控制器属于增强型系列,具有高达1MB的片上内存,还具有电动机控制、USB和CAN模块,性价比较高,市场占有率非常高。

(3)STM32-F2系列高性能型微控制器。该系列微控制器利用了创新的自适应实时内存(ART)加速器和多层总线矩阵技术,具有1MB片上内存、128KB以太网MAC的SRAM、USB2.0HS OTG、摄像头接口,以及高度集成化的硬件加密支持和外部存储器接口。

(4)STM32-F4系列高性能型微控制器。该系列微控制器将实时控制功能与信号处理功能完美地结合在一起,并保留了STM32-F2系列引脚的兼容性,具有更大容量的SRAM,也改进了一些外设,如全双工I2S总线和更快的ADC等。

2. STM32微控制器的命名规则

以STM32F103ZET6微控制器为例,讲解一下STM32微控制器的命名规则。STM32微控制器的命名规则如图1.2所示。如果想要更加具体地了解STM32微控制器的命名规则,则可以查阅《STMCU选型手册》。

图1.2 STM32微控制器的命名规则

3. STM32微控制器的选型

通过前面的介绍,我们已经大致了解了STM32微控制器的分类和命名规则。在此基础上,根据实际情况的具体需求,可以大致确定所要选用的STM32微控制器的内核型号和产品系列。例如,一般的工程应用的数据运算量不是特别大,基于Cortex-M3内核的STM32-F1系列微控制器即可满足要求;如果需要进行大量的数据运算,且对实时控制和数字信号处理能力要求很高,或者需要外接RGB大屏幕,则推荐选择基于Cortex-M4内核的STM32-F4系列微控制器。

在明确了产品系列之后,可以进一步选择产品线。以基于Cortex-M3内核的STM32-F1系列微控制器为例,如果仅需要用到电动机控制或消费类电子控制功能,则选择STM32F100或STM32F101系列微控制器即可;如果还需要用到USB通信、CAN总线等模块,则推荐选用STM32F103系列微控制器,这也是目前市场上应用最广泛的微控制器系列之一;如果对网络通信要求较高,则可以选用STM32F105或STM32F107系列微控制器。对于同一个产品系列,不同的产品线采用的内核是相同的,但核外的片上外设存在差异。具体选型情况要视实际的应用场合而定。

确定好产品线之后,即可选择具体的型号。参照STM32微控制器的命名规则,可以先确定微控制器的引脚数目。引脚多的微控制器的功能相对多一些,当然价格也贵一些,具体要根据实际应用中的功能需求进行选择,一般够用就好。确定好了引脚数目之后再选择FLASH存储器容量的大小。对于STM32微控制器而言,具有相同引脚数目的微控制器会有不同的FLASH存储器容量可供选择,它也要根据实际需要进行选择,程序大就选择容量大的FLASH存储器,一般也是够用即可。到这里,根据实际的应用需求,确定了所需的微控制器的具体型号,下一步的工作就是开发相应的应用。