购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.1 了解ARM微控制器STM32F407

本书使用的是微控制器是采用ARM-Cortex M4内核的高性能产品——STM32F407。

1.1.1 ARM微控制器

ARM概述

1.ARM的历史

ARM的历史要追溯到1978年。物理学家赫尔曼·豪泽(Hermann Hauser)和工程师克里斯·柯里(Chris Curry)在英国剑桥创办了CPU(Cambridge Processing Unit)公司,主要为当地市场供应电子设备,被人们称为“英国的苹果电脑公司”。

1979年,CPU公司改名为Acorn计算机公司(Acorn Computer Company)。Acorn公司改名的原因很简单,就是它在单词表中的顺序排在Apple前面。这次改名的意图就显而易见了。

1980年,英国BBC电视台策划了一系列关于计算机的电视节目。但导演发现给没见过计算机的观众讲明白计算机是什么太难了。此时美国苹果公司已经推出了适合个人使用的、风靡全美的微型计算机——Apple-II,但对英国人来说,计算机还是限于科研、国防、制造领域的高科技设备,和自己的生活没有太大关系。为了让英国人弄清楚计算机是什么,BBC电视台公开招标,资助一家公司开发便宜的微型计算机。中标的Acorn公司正在开发一款个人计算机的原型机,成本符合BBC电视台的预算。这款原型机被命名为BBC Micro,借助于电视节目的宣传,BBC Micro很快成为英国最流行的个人计算机。

在开发BBC Micro的过程中,Acorn公司打算使用原摩托罗拉公司的16位芯片作为CPU,但发现这款芯片又慢又贵。于是,他们向Intel公司索要80286芯片的设计资料,但遭到了拒绝,最后不得不自行研发。Acorn公司委任索菲·威尔逊(Sophie Wilson)负责研发自己的处理器。由于Acorn公司的资源有限,没有能力开发CISC处理器,只能选择开发晶体管数较少的RISC处理器。

1985年,罗杰·威尔逊(Roger Wilson)和史蒂夫·弗伯(Steve Furber)设计了他们自己的第一代32 bit、6 MHz的处理器,用它做出了一台RISC计算机,简称ARM(Acorn RISC Machine)。这就是ARM这个名字的由来。

1990年11月27日,Acorn公司正式改组为ARM计算机公司。ARM由苹果公司出资150万英镑,芯片厂商VLSI出资25万英镑,Acorn公司则以150万英镑的知识产权和12名工程师入股。ARM公司最初的办公地点非常简陋,就是一个谷仓,如图1-1所示。

在ARM公司诞生初期,其业务一度很不景气,当时业界正热衷于设计相对较大的处理器,而ARM公司由于设计队伍资源有限,不得不像此前的Acorn公司那样开发小规模的处理器。由于缺乏资金,ARM做出了一个意义深远的决定,那就是自己不制造芯片,只将芯片的设计方案授权(Licensing)给其他公司,由其他公司来生产芯片。正是这个决定,最终使得ARM芯片遍地开花。ARM公司的业务发展和市场模式如图1-2所示。

图1-1 ARM公司最初的办公地点(图片引自ARM社区)

图1-2 ARM公司的业务发展和市场模式

ARM公司于1991年年底将产品授权给英国的GEC Plessey半导体公司,于1993年将产品授权给Cirrus Logic和德州仪器(TI)。当时的TI在DSP领域已经取得很大的成就,但并不熟悉处理器领域。ARM与Nokia、TI合作开发出了16位的Thumb指令集,创建了ARM/Thumb的SoC商业模式,ARM7就是其中最重要的一颗微处理器内核,该微处理器使用更小的晶粒得以发展出低功耗模式。随后,三星公司也加入了ARM公司的授权行列。

1998年4月17日,ARM公司同时在英国伦敦证券交易所和美国纳斯达克上市。苹果公司的早期投资拥有了ARM公司43%的股份,ARM公司在英国和美国同时上市后,苹果公司逐渐出售了这些股份。

20世纪90年代,ARM微处理器的出货量徘徊不前。但进入21世纪后,手机的快速发展使得微处理器的出货量呈现爆炸式的增长,ARM微处理器迅速占领了全球手机市场。2006年,ARM微处理器的全球出货量为20亿颗,而到了2007年年底,ARM微处理器的全球总出货量已突破100亿颗。

进入21世纪,ARM公司得到了前所未有的发展,到2007年年底,ARM公司的雇员总数达到1728人,持有专利700项,在全球有31个分支机构,合作伙伴有200余家,年收入达2.6亿英镑。

2010年6月,苹果公司表示有意以80亿美元的价格收购ARM公司,但遭到拒绝。ARM公司的CEO沃伦·伊斯特(Warren East)认为,ARM公司作为独立公司更具价值。2014年7月18日,软银宣布将以243亿英镑(约合320亿美元)收购ARM。

2.ARM微处理器

ARM自1985年发布首个内核ARM1开始,经过近40年的发展,ARM微处理器已经发展到Cortex-A72内核。目前,随着对嵌入式系统的要求越来越高,作为其核心的嵌入式微处理器的综合性能也受到日益严峻的考验,最典型的例子就是伴随5G网络的推广,对手机的本地处理能力要求就很高。现在一个高端智能手机的处理能力几乎可以和几年前的笔记本电脑相媲美。为了迎合市场的需求,ARM公司也在加紧研发最新的ARM架构,Cortex系列就是这样的产品。在Cortex系列之前,ARM内核都是以ARM为前缀命名的,从ARM1一直到ARM11,之后就是Cortex系列。Cortex在英语中有大脑皮层的意思,而大脑皮层正是大脑的核心部分,估计ARM公司如此命名正有此含义吧。

ARM微处理器在ARM11以后就开始以Cortex命名,并分成A、R和M三个系列,如图1-3所示,旨在为不同的市场提供服务。Cortex系列属于ARM v7架构,这是ARM公司最新的指令集架构。其中A系列主要面向高端的基于虚拟内存的操作系统和用户应用;R系列主要面向实时系统;M系列主要面向控制系统。如图1-4所示为ARM公司按照A、R、M命名的较新的微处理器。

图1-3 ARM微处理器的三个系列(图片引自ARM官方网站)

图1-4 ARM公司按照A、R、M命名的较新的微处理器(图片引自ARM社区)

华为给智手机Mate20搭载的麒麟980(见图1-5)就是基于Cortex-A76内核的微处理器。Cortex-A76内核是ARM公司在2018年推出的最新架构,其相比Cortex-A75内核,该内核的性能有了明显的提升。

图1-5 华为给智能手机Mate20搭载的麒麟980微处理器

3.Cortex-M系列微控制器

Cortex-M中的M指的是Microcontroller,目前主要有Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4、Cortex-M7,以及新发布的基于ARMv8-M构架的内核Cortex-M23、Cortex-M33,其中Cortex-M23是Cortex-M0和Cortex-M0+的升级,Cortex-M33是Cortex-M3、Cortex-M4的升级。Cortex-M系列微控制器如图1-6所示。

图1-6 Cortex-M系列微控制器(图片引自ARM官方网站)

Cortex-M23是基于ARMv8-M构架的、主要关注低功耗应用的微控制器,是Cortex-M0和Cortex-M0+的替代品。Cortex-M33是基于ARMv8-M构架的、主要关注高能效应用的微控制器,用于替代Cortex-M3、Cortex-M4。Cortex-M7是基于ARMv7-M构架的、主要关注高性能的微控制器。从图1-6中可以看出,Cortex-M7的性能最强。Cortex-M系列微控制器更多地集中在低性能的应用,但这些微控制器的性能仍然比传统微处理器的性能强大。

例如,Cortex-M4(其内核见图1-7所示)和Cortex-M7已经应用到了许多高性能的产品中,最大的时钟频率可以达到400 MHz。

目前,软件开发成本已经成为嵌入式行业的主要开发成本。对于ARM公司来说,一个ARM内核往往会授权给多个厂商,从而生产出种类繁多的芯片。如果没有一个通用的软件接口标准,那么开发者在使用不同厂商的芯片时将极大地增加软件开发成本。因此ARM与ATMEL、IAR、KEIL、ST、NXP等多家芯片厂商和软件厂商合作,对所有Cortex系列微处理器的软件接口进行了标准化,制定了微控制器软件接口标准(Cortex Microcontroller Software Interface Standard,CMSIS)。

CMSIS是Cortex-M系列微处理器的、与芯片厂商无关的硬件抽象层,其架构如图1-8所示。CMSIS为接口外设、实时操作系统(RTOS)和中间件提供了一致且简单的软件接口,从而简化了软件的重用、缩短了开发人员学习微控制器的过程,加快了新产品的上市节奏。

图1-7 Cortex-M4内核(图片引自ARM官方网站)

图1-8 CMSIS的架构(图片引自ARM官方网站)

CMSIS有4层,分别是用户应用(User)层、实时操作系统(RTOS)层、CMSIS层和微控制器(MCU)层。其中CMSIS层起着承上启下的作用:一方面该层对MCU层进行了封装,屏蔽了不同厂商对Cortex-M系列微控制器核内外设寄存器的不同定义;另一方面又向RTOS层[包括实时内核(Real-Time Kernel)和中间件(Middleware Components)]、User层提供接口,简化了应用程序的开发难度,使开发人员能够在完全透明的情况下进行应用程序的开发。

有了CMSIS标准,芯片厂商就能专注于产品外设特性的差异化,从而达到降低开发成本的目的。

1.1.2 STM32F407的功能

STM32微控制器

意法半导体(ST Microelectronics)是全球领先的半导体解决方案供应商,不断地为传感及功率技术和多媒体融合应用领域提供新的解决方案。从2007年的基于Cortex-M3内核的微控制器,2011年的首个采用Cortex-M4内核的高性能微控制器,2012年的采用Cortex-M0内核的入门级微控制器,到2014年的首个采用Cortex-M7内核的微控制器,再到2018年的基于双核的微控制器,ST一直在致力于微控制器的开发。自2007年至今,STM32系列微控制器经历了多次更迭,如图1-9所示。我们在这里说一下STM32的含义,ST表示意法半导体公司,M表示微控制器,32表示微控制器是32 bit的。

图1-9 STM32的产品(图片引自ST官方网站)

针对不同应用和功能,ST公司有各种产品,其中的STM8AL、STM8AF系列产品面向自动驾驶,STM32WB系列产品适用于无线射频和无线通信,STM8L系列产品主要针对低功耗及智能家居,STM32F0、STM32F1、STM32F3系列产品都是主流的基础型微控制器,而STM32F4系列产品是高性能的微控制器。

1.STM32系列微控制器的命名规范

为了了解STM32F407ZGT6微控制器的名称含义,需要先来了解一下ST公司的微控制器命名规范,我们以STM32F051R8T6X为例进行讲解,如图1-10所示。

图1-10 STM32系列微控制器的命名规范(图片引自ST官方网站)

图1-10中的STM32表示MCU是32位的;F所在位置的符号表示产品类型,F表示是基础型的MCU;051所在位置的符号表示具体特性,051表示F0系列的一款入门级的MCU,而407则是指高性能的MCU(集成了DSP和FPU);R所在位置的符号表示引脚,这里的R表示64或68引脚,而Z表示144引脚;8所在位置的符号表示Flash容量,8表示Flash容量为64 KB,G表示1024 KB,即1 MB;T所在位置的符号表示封装形式,T表示QFP,即四面扁平封装;6所在位置的符号表示MCU的工作温度范围,6表示-40~85℃。

本书使用的是ST公司的基于Cortex-M4内核的STM32F407ZGT6微控制器。按照上述的命名规范我们能够明白STM32F407ZGT6微控制器的相关参数,如表1-1所示。

表1-1 STM32F407ZGT6微控制器的相关参数

2.STM32F407的片上资源

STM32F407是采用Cortex-M4内核的高性能微控制器,采用了90 nm的NVM和ART技术。ART技术使得程序可以被零等待地执行,大大提升了程序的执行效率,将Cortex-M4内核的性能发挥到了极致,使得STM32F4系列微控制器的工作频率达到了168 MHz,当CPU工作于所允许的频率内(≤168 MHz)时,在Flash中执行的程序可以实现零等待。STM32F4系列微控制器集成了DSP和FPU,提升了计算能力,可以进行一些复杂的计算和控制。

STM32F407微控制器的片上资源如图1-11所示,其内核为Cortex-M4,Flash的容量为1024 KB,RAM(随机存取存储器)的容量为192 KB,具有144个引脚,采用LQFP形式,有114个GPIO接口。

图1-11 STM32F407微控制器的片上资源(图片引自ST官方网站)

STM32F407微控制器允许的最高电压为3.6 V、最低电压为1.8 V,包含12个16 bit的定时器、2个32 bit的定时器、3个ADC、24个ADC通道、2个DAC、3个SPI、2个I2S、3个I2C、6个UARST、2个CAN、1个SDIO、1个FSMC、1个USB OTG-FS、1个USB OTG-HS、1个DCMI、1个RNG。

3.STM32F407微控制器的内部框图

STM32F407微控制器的内部框图如图1-12所示,主要包括Cortex-M4内核、高性能AHB总线、通用DMA系统、内部SRAM、内部Flash、AHB到APB的桥、专门用于连接GPIO的AHB1,以及一条多层AHB互联的系统总线。

图1-12 STM32F407微控制器的内部框图(图片引自ST官方网站)

多层AHB互联的系统总线连接了Cortex-M4内核的系统总线和总线矩阵,总线矩阵用来协调内核和DMA间的总线访问控制。正是因为总线矩阵的存在,才使得多个主机可以并行访问不同的从机,增强了数据传输能力,提升了访问效率,同时也改善了功耗。

总线矩阵搭载了AHB1和AHB2两条高速总线,这两条总线的工作频率都是168 MHz,AHB1又分成了APB1和APB2两条低速总线,APB1的工作频率是42 MHz,APB2的工作频率是84 MHz。

我们从内部框图可以看出,GPIO搭载在AHB1上,其他外设有的搭载在APB1上,有的搭载在APB2上,因此在进行系统开发时访问外设的频率是一个需要注意的地方。 j0LxzZdG+KQQ5OQb1ur8EuvgYMW3I33IDCFjSi3WH/rFQqoTn/azQ02uROhN9nqb

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开