- STM32嵌入式微控制器快速上手
- 陈志旺等编著
- 1766字
- 2020-08-27 07:58:25
第1章 嵌入式系统概述
1.1 嵌入式系统简介
1. 嵌入式系统定义
嵌入式系统通常定义为以应用为中心,以计算机技术为基础,软件、硬件可剪裁,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用软件等部分组成,其分层结构如图1-1所示,用于实现对其他设备的控制、监视和管理等功能,嵌入式系统通常被嵌入在主要设备之中。
图1-1 嵌入式系统分层结构
IEEE(国际电气和电子工程师协会)对嵌入式系统定义为:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”。
中国微机学会对嵌入式系统定义为:嵌入式系统是以嵌入式应用为目的的计算机系统,可以分为芯片级、板卡级、系统级。芯片级嵌入的是含程序或算法的处理器;板卡级嵌入的是系统中的某个核心模块板;系统级嵌入的是主计算机系统。
国内有学者认为,将一套计算机控制系统嵌入到已具有某种完整的特定功能的(或者将会具备完整功能的)系统内(如各种机械设备),以实现对原有系统的计算机控制,此时将这个新系统称为嵌入式系统。它通常由特定功能模块和计算机控制模块组成,主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用软件等部分组成。
从上述定义不难看出,嵌入式系统是一个针对特定的应用而“量身定做”的专用计算机系统,它具有嵌入性、专用性、计算机系统的特点。
施乐公司Palo Alto研究中心主任Mark Weiser认为:“从长远来看,PC和计算机工作站将衰落,因为计算机变得无处不在,如在墙里、在手腕上、在手写电脑中(像手写纸一样)等,随用随取、伸手可及”。无处不在的计算机就是嵌入式系统。
2. 嵌入式系统特点
1)通用计算机与嵌入式系统对比 通用计算机与嵌入式系统对比见表1-1。
表1-1 通用计算机与嵌入式系统对比
从以上对比可以看出,与通用计算机不同,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能更具有竞争力。嵌入式处理器要根据用户的具体要求,对芯片配置进行裁剪或添加才能达到理想的性能,但同时还受用户订货量的制约,因此不同的处理器面向的用户是不一样的,可能是一般用户、行业用户或单一用户。嵌入式系统和具体用户有机地结合在一起,它的升级换代也是和具体产品同步进行的。嵌入式系统中的软件,一般都固化在ROM中,很少以磁盘为载体,所以嵌入式系统的应用软件的生命周期也和嵌入式产品一样长。此外,应用于各行业的嵌入式软件各有其专用化的特点,与通用计算机软件不同,嵌入式系统的软件更强调可继承性和技术衔接性。
2)三个基本 嵌入式系统通常的定义中有以下3个基本要素。
◆ “嵌入性”的特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气环境(可靠)、成本(价廉)等要求。
◆“专用性”的特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。
◆“计算机系统”的特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。
3)从用户方和开发方的角度看嵌入式系统
◆ 用户方要求:功能简单;专门完成一个或几个任务;要考虑体积、功耗、价格和开发周期等因素;实时与环境交互,如图1-2所示;安全可靠,软、硬件的错误不能使系统崩溃。
图1-2 实时频谱图
◆开发方要求:软件硬件协同并行开发;多种多样的微处理器;实时操作系统的多样性(RTOS);与台式机相比,可利用系统资源很少;应用支持很少;要求特殊的开发工具;调试很容易;软件、硬件都应很“健壮”。
3. 嵌入式系统分类
1)普林斯顿结构和哈佛结构 普林斯顿结构是由一个中央处理单元(CPU)和单存储空间组成的,即这个存储空间存储了全部的数据和程序,它们内部使用单一的地址总线和数据总线,也称为冯·诺伊曼结构,如图1-3所示。这样由于在取指令和取数据时都是通过一条总线分时进行的,所以要根据所给的地址对其进行读/写操作。
图1-3 普林斯顿结构示意图
当进行高速运算时,普林斯顿结构计算机不仅不能同时进行取指令和取数据,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。通常使用的ARM7就是属于普林斯顿结构。
哈佛体系结构存储器分为数据和程序两个存储空间,有各自独立的程序总线和数据总线,可以进行独立编址和独立访问,如图1-4所示。这样独立的程序存储器和数据存储器为数字处理提供了较高的性能。数据和程序可以并行完成,这使得数据移动更加容易。数据的吞吐量比普林斯顿结构提高了大约1倍。
图1-4 哈佛体系存储系统结构图
目前大部分DSP和ARM9微处理器都是采用哈佛体系结构。但这种结构的弱点是很难在哈佛机上编写出一个自修改的程序,即写入数据值后,使用这些值作为指令的程序。
2)CISC和RISC 计算机的指令集分为复杂指令集系统(CISC)和精简指令集系统(RISC)。复杂指令集系统(CISC)的主要特点是指令系统丰富,程序设计方便,代码短小,执行性能高。精简指令集系统(RISC)只包含使用频率很高的少量常用指令,再提供一些必要的支持操作系统和高级语言的指令。CISC和RISC比较见表1-2。
表1-2 CISC和RISC比较
CISC技术的复杂性在于硬件,在于微处理器中控制器部分的设计及实现;RISC技术的复杂性在于软件,在于编译程序的编写和优化。通常较简单的消费类电子设备,如微波炉、洗衣机等,可以采用RISC单片机;较复杂的系统如通信设备、工业控制系统等,应采用CISC单片机。
随着微处理器技术的进一步发展,CISC与RISC两种体系结构的界限已不再泾渭分明,在很多系统中有融合的趋势。一方面,RISC设计正变得越来越复杂,例如,超长指令字的提出让一条RISC指令可以包含更多信息,同时完成多条传统指令的功能;ARM微处理器含有普通ARM指令和Thumb指令两套指令集,以适应嵌入式系统对低功耗、小存储的要求。另一方面,CISC也在吸收RISC的优点,例如,Pentium Ⅱ以后的微处理器在内部实现时也采用RISC架构,把复杂的指令在内部由微码通过执行多条精简指令实现。
3)嵌入式系统内核种类 嵌入式微处理器的基础是通用计算机中的CPU。在应用中只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面进行了增强。
微控制器又称单片机,一般以某一种微处理器内核为核心,芯片内部集成存储器、I/O接口等各种必要功能,如图1-5所示。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。广义地讲,微控制器产品的作用就是通过预先编制的程序,接收特定的环境参数或用户操作,按照一定的规则控制电信号的变化,再通过各种转换机制把电信号转换成诸如机械动作、光信号、声音信号、显示图像等形式,从而达到智能化控制的目的。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地与应用需求相匹配,对不同应用进行量体裁衣,从而减少功耗和成本。与嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。微控制器是目前嵌入式系统应用的主流。
图1-5 微控制器
数字信号处理器(DSP)对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正在从通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器,DSP外观如图1-6所示。推动嵌入式DSP处理器发展的一个因素是嵌入式系统的智能化,如各种带有智能逻辑的消费类产品、生物信息识别终端、带有加/解密算法的键盘、ADSL接入、实时语音压缩解压缩系统、虚拟现实显示等。这类智能化算法一般运算量较大,特别是向量运算、指针线性寻址等较多,而这正是DSP处理器的长处所在。嵌入式DSP处理器有两个来源,一是传统DSP处理器经过单片化和电磁兼容改造,增加片上外围接口成为嵌入式DSP处理器,TI的TMS320C2000/C5000等属于此范畴;二是在通用单片机中增加DSP协处理器,如Intel的MCS-296和Infineon(原Siemens)的TriCore等属于此范畴。
图1-6 DSP外观
MPU、MCU和DSP的比较见表1-3。
表1-3 MPU、MCU和DSP的比较
随着EDA的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System on Chip(SoC)。所谓SoC技术,是一种高度集成化、固件化的系统集成技术。使用SoC技术设计系统的核心思想,就是针对具体应用,把整个电子应用系统全部集成在一个芯片中,如图1-7所示。这些SoC芯片是高度集成、没有冗余的,真正体现量体裁衣的特点。SoC不是各个芯片功能的简单叠加,而是从整个系统的功能和性能出发,用软硬结合的设计和验证方法,利用IP复用及深亚微米技术,在一个芯片上实现复杂的功能。各种通用处理器内核将作为SoC设计公司的标准库,和许多其他嵌入式系统外设一样,成为VLSI设计中一种标准的器件,用标准的VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的外部电路或机械部分外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统PCB将变得很简洁。
图1-7 SoC系统
SoC具有如下优点。
◆ 降低耗电量:随着电子产品向小型化、便携化发展,对其省电需求将大幅提升,由于SoC产品多采用内部信号的传输,可以大幅降低功耗。
◆ 减少体积:数颗IC整合为一颗SoC后,可有效缩小PCB上占用的面积,质量轻、体积小。
◆ 丰富系统功能:随着微电子技术的发展,在相同的内部空间,SoC可整合更多的功能元件和组件,丰富系统功能。
◆ 提高速度:随着芯片内部信号传递距离的缩短,信号的传输效率将提升,使产品性能有所提高。
◆ 节省成本:理论上,IP模块的出现可以减少研发成本,降低研发时间。不过,在实际应用中,由于芯片结构的复杂性增强,也有可能导致测试成本增加及生产成品率下降。
SoC可以分为通用和专用两类。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般专用于某个或某类系统中,不为一般用户所知,其代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载Java或C语言的专用的SoC,可用于公众互联网如Internet安全方面。
SoC使应用电子系统的设计技术,从选择厂家提供的定制产品时代进入了用户自行开发设计器件的时代。目前SoC的发展重点包括总线结构及互连技术,软、硬件的协同设计技术,IP可重用技术,低功耗设计技术,可测性设计方法学,超深亚微米实现技术等。
4. 嵌入式系统发展
计算机应用领域的划分如图1-8所示。嵌入式系统多属于小型专用型领域。
图1-8 计算机应用领域的划分
嵌入式系统发展主要经历如下3个阶段。
(1)20世纪70年代:以嵌入式微处理器为基础的初级嵌入式系统。嵌入式系统最初的应用是基于单片机的。汽车、工业机器、通信装置等成千上万种产品通过内嵌电子装置获得更佳的使用性能。
(2)20世纪80年代:以嵌入式操作系统为标志的中级嵌入式系统。商业嵌入式实时内核包含传统操作系统的特征,开发周期缩短、成本降低、效率提高,促使嵌入式系统有了更为广阔的应用空间。
(3)20世纪90年代:以Internet和实时多任务操作系统为标志的高级嵌入式系统。软件规模的不断上升,对实时性要求的提高,使得实时内核逐步发展为实时多任务操作系统,并作为一种软件平台逐步成为国际嵌入式系统的主流。
当前嵌入式系统的特点见表1-4。
表1-4 当前嵌入式系统的特点
嵌入式系统未来发展趋势为:支持联网;精简系统内核、算法,设备实现小尺寸、微功耗和低成本;提供精巧的多媒体人机界面。
1.2 ARM体系结构及微处理器系列
1. ARM公司简介
ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字,是有力的“胳膊”,也是致命的“武器”。
随着IT行业的迅猛发展,Intel、摩托罗拉、TI等上游厂商都有着不同的数字架构,这使得它们的CPU等基础器件各有不同。器件不同,软件就不同,而越来越多不同的指令集、工具和语言,对整个数字技术的发展非常不利。全球工业价值链基本就是大包大揽的大公司的天下,像摩托罗拉这样的公司在测试、制造、系统封装,甚至CPU设计等领域都是垄断的。直到20世纪80年代末,产业链开始出现分工,出现一个更上游的厂商来制定标准,而这个标准的统一,是从数字技术的核心CPU开始。这个公司就是ARM公司。
1990年,英国一位叫Robin Saxby的人离开了摩托罗拉与另外12名工程师一起开始了创业之旅,于是就有了现在的ARM公司。ARM公司正式成立于1991年11月,公司标志如图1-9所示。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权(IP)供应商,本身不直接从事芯片生产,而是设计出高效的知识产权内核授权给各半导体公司使用,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场,如图1-10所示。最后由OEM客户采用这些芯片来构建基于ARM技术的最终应用系统产品。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,如图1-11所示,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,更具有竞争力。目前,采用ARM技术知识产权核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,如图1-12所示。基于ARM技术的微处理器应用约占32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面。
图1-9 ARM公司标志
图1-10 ARM公司的运作过程
图1-11 ARM合作伙伴
图1-12 ARM产品
2. ARM体系结构
体系结构定义了指令集(ISA)和基于这一体系结构下处理器的编程模型。基于同样体系结构可以有多种处理器,每个处理器性能不同,所面向的应用也就不同。但每个处理器的实现都要遵循这一体系结构。ARM体系结构为嵌入式系统发展商提供很高的系统性能,同时保持优异的功耗和面积效率。
ARM体系结构为满足ARM合作者及设计领域的一般需求正稳步发展。目前,ARM体系结构共定义了7个版本,从版本1到版本7,ARM体系的指令集功能不断扩大。不同系列的ARM处理器,性能差别很大,应用范围和对象也不尽相同,见表1-5。但如果是相同的ARM体系结构,那么基于它们的应用软件是兼容的。
表1-5 ARM内核分类
续表
1)版本1(v1) 由于只有26位地址线,64MB寻址空间,从未商业化。
2)版本2(v2) 仍然只有26位寻址空间,但相对版本1增加了下列内容:乘法和乘加指令;协处理器指令;快速中断模式中的两个以上的分组寄存器;原子性加载/存储指令。
3)版本3(v3) 将寻址扩展到了32位;增加了程序状态保存寄存器(SPSR),以便出现异常时,保存CPSR中的内容;还增加了两种处理器模式,以便在操作系统代码中有效地使用中止异常;允许访问SPSR和CPSR。
4)版本4(v4) 不再强制要求和以前的26位体系结构兼容,在前一个版本基础上增加了以下内容:半字节加载/存储指令;转换到Thumb状态的指令;字节和半字的加载和符号扩展指令。
5)版本5(v5) 在版本4的基础上,对指令做了必要的修正,并增加以下内容:改进了ARM/Thumb切换的效率;增加计数前导零指令,允许更有效的整数除法和中断优先程序;增加软件断点指令;对乘法指令如何设置标志进行了严格的定义。
6)版本6(v6) v6结构是在2001年发布的,该版本增加了媒体指令。v6体系结构包含ARM体系结构中所有的4种特殊指令集:Thumb指令(T)、DSP指令(E)、Java指令(J)和Media指令。
7)版本7(v7) ARMv7结构是在ARMv6架构的基础上诞生的。该架构采用了Thumb-2技术,它是ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,减少了系统开销,同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。ARMv7架构还采用了NEON技术,将DSP和媒体处理器能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用及传统嵌入式控制应用的需求。在ARMv7架构版本中,内核架构首次从单一款式变成3种款式。
(1)款式A:设计用于高性能的应用处理器(Application Processor)系列——越来越接近计算机。款式A是运行复杂应用程序的“应用处理器”。这里的“应用”尤指大型应用程序,像办公软件、导航软件、网页浏览器等。这些软件的使用习惯和开发模式都很像PC上的软件,但是没有实时要求。支持大型嵌入式操作系统,如Symbian(诺基亚智能手机用),Linux,以及微软的Windows CE和智能手机操作系统Windows Mobile。这些应用需要强劲的处理性能,并且需要硬件MMU实现完整而强大的虚拟内存机制,还配有Java支持,有时还要求一个安全程序执行环境(用于电子商务)。典型的产品包括高端手机和手持仪器,电子钱包及金融事务处理机。
(2)款式R:用于实时控制处理(Real Time Control)系列。款式R是硬实时且高性能的处理器。目标是高端实时市场,如高档轿车的组件、大型发电机控制器、机器手臂控制器等,它们使用的处理器不仅要很好、很强大,还要极其可靠,对事件的反应也要极其敏捷。
(3)款式M:微控制器(Micro Controller)系列,用于深度嵌入的单片机风格的系统中。款式M认准了旧时代单片机的应用而量身定制。在这些应用中,尤其是对于实时控制系统,低成本、低功耗、极速中断反应及高处理效率都是至关重要的。Cortex系列是v7架构的第一次亮相,其中Cortex-M3就是按款式M设计的。
综上所述,ARM微处理器其主要特征如下所述。
◆ 采用RISC体系结构;
◆ 大量的寄存器,它们都可以用于多种用途;
◆ Load/Store体系结构;
◆ 每条指令都条件执行;
◆ 多寄存器的Load/Store指令,大多数数据操作都在寄存器中完成;
◆ 指令长度固定;
◆ 能够在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作;
◆ 通过协处理器指令集来扩展ARM指令集,包括在编程模式中增加新的寄存器和数据类型;
◆ 在Thumb体系结构中以高密度16位压缩形式表示指令集。
1.3 Cortex-M3简介
毫无疑问,微控制器的发展方向是更高的性能、更低的功耗、更便宜的价格和更方便的开发。在微控制器的性能提升方面,除了处理器内核运算能力不断提升,一个重要的趋势就是集成更加丰富的外设接口,来满足更多的应用和电子产品融合化的需求。
Cortex-M3(CM3)处理器内核是嵌入式微控制器的中央处理单元。完整的基于CM3的微控制器还需要很多其他组件,如图1-13所示。在芯片制造商得到CM3处理器内核的使用授权后,它们就可以把CM3内核用在自己的硅片设计中,添加存储器、外设、I/O及其他功能块。不同厂家设计出的单片机会有不同的配置,包括存储器容量、类型、外设等都各具特色。
图1-13 Cortex-M3内核基本结构
ARM公司在2004年推出了CM3内核,经过5年市场的积累,目前包括意法半导体、NXP、东芝、Atmel和Luminary(已被TI收购)等半导体公司已经推出了基于CM3内核的微控制器产品。随着CM3的流行,产品价格也得到了很好的控制,ARM公司强调CM3能以8位微控制器的成本提供32位微控制器的性能。目前市场上基于CM3的微控制器产品已达到近250款,涉及各种应用领域。
CM3微处理器为ARM Cortex系列处理器的第一款产品,并强调ARM不断提供目标市场应用及效能所需技术的市场策略。该处理器具有多重技术,能够降低成本,同时透过极小的核心提供业界领先的效能,对32位高效能运算是一项极为理想的解决方案。此款处理器特别针对价格敏感但又具备高系统效能需求的嵌入式应用设计,包括微控制器、汽车车体系统、网络装置等应用。
CM3与ARM7系列微控制器相比,具有下列优势。
◆ 位绑定操作:可以把它看成51单片机位寻址机制的加强版,详见2.5节。
◆ 支持非对齐数据访问:它可以访问存储在一个32位单元中的字节/半字类型数据,这样4个字节类型或2个半字类型数据可以被分配在一个32位单元中,提高了存储器的利用率。对于一般的应用程序而言,这种技术可以节省约25%的SRAM使用量,从而可以选择SRAM较小、更廉价的微控制器。
◆ 内核支持低功耗模式:CM3加入了类似于8位单片机的内核低功耗模式,支持3种功耗管理模式,即立即睡眠、异常/中断退出时睡眠和深度睡眠。这使整个芯片的功耗控制更为有效。
◆ 高效的Thumb-2指令集:CM3使用的Thumb -2指令集是一种16/32位混合编码指令,兼容Thumb指令。对于一个应用程序编译生成的Thumb-2代码,以接近Thumb编码尺寸,达到了接近ARM编码的运行性能。
◆32位硬件除法和单周期乘法:CM3加入了32位除法指令,弥补了以往的ARM处理器没有除法指令的缺陷。还改进了乘法运算部件,32位的乘法操作只要1个时钟周期。这一性能使得CM3进行乘加运算时,逼近DSP的性能。
◆ 定义了统一的存储器映射:各厂家生产的基于CM3内核的微控制器具有一致的存储器映射,对用户使用各种基于CM3的微控制器及代码在不同微控制器上的移植带来很大便利。
◆ 引入分组堆栈指针机制:把系统程序使用的堆栈和用户程序使用的堆栈分开。如果再配上可选的存储器保护单元(MPU),处理器就能满足对软件健壮性和可靠性有严格要求的应用。
◆ 三级流水线和转移预测:现代处理器大多采用指令预取和流水线技术,以提高处理器的指令执行速度。高性能流水处理器中加入的转移预测部件,就是在处理器从存储器预取指令时如遇到转移指令,能自动预测转移是否会发生,再从预测的方向进行取指令,从而提供给流水线连续的指令流,流水线就可以不断地执行有效指令,保证了其性能的发挥。
◆ 哈佛结构:哈佛结构的处理器采用独立的指令总线和数据总线,可以同时进行取指令和数据读/写操作,从而提高了处理器的运行性能。
◆内置嵌套向量中断控制器:CM3首次在内核上集成了嵌套向量中断控制器(NVIC)。CM3中断延迟只有12个时钟周期,还使用尾链技术,使得背靠背(back-to-back)中断的响应只要6个时钟周期,而ARM7需要24~42个时钟周期。ARM7TDMI内核不带中断控制器,具体微控制器的中断控制器由各芯片厂家自己加入,这使各用户使用及程序移植带来了很大麻烦。基于CM3的微控制器具有统一的中断控制器,给中断编程带来了便利。
◆ 拥有先进的故障处理机制:支持多种类型的异常和故障,使故障诊断容易。
◆ 支持串行调试:CM3在保持ARM7的JTAG调试接口的基础上,还支持串行调试SWD(serial wire debug)。使用SWD时只占用两个引脚,就可用进行所有的仿真和调试,节省了调试用引脚。
◆ 极高性价比:基于CM3的微控制器相比于ARM7TDMI的微控制器,在相同的工作频率下平均性能都要高约30%;代码尺寸要比ARM编码小约30%;价格更低。
高性能+高代码密度+小硅片面积,三璧合一,使得CM3成为理想的处理平台。
1.4 STM32的发展
按照应用的不同,微控制器产品有专用产品和通用产品之分。专用产品通常是为特定的应用而专门设计的产品,在指定的应用中达到了最大的集成度,并且没有或只有很少的冗余部件,如应用于电视机、机顶盒、玩具、USB存储(U盘)等;专用产品的特点是它所适用的产品面较小,但单一应用方向的用量巨大,并且对成本和性能的要求较高。通用微控制器产品不是为特定应用而设计的,通常可以适用于多个应用领域和多种应用场合;通用产品的特点是它所适用的产品品种众多,同时每一种产品的产量并不是很大;因为这一特点,通用微控制器产品集成了大量常用的部件,种类繁多配置各异,可以满足多种应用领域的需要。
STM32是一个通用微控制器产品系列,如图1-14所示。为了适应众多的应用需求和低成本的要求,在产品的规划和设计上遵循了灵活多样、配置丰富和合理提供多种选项的原则,如齐全的闪存容量配置,提供16~1024 KB的宽范围选择;每一个外设都拥有多种配置选项,使用者可以按照具体需要做出合适的选择,如USART模块可以实现普通的异步UART通信,还可以实现LIN通信协议、智能卡ISO7816-3协议、IrDA编解码、同步的SPI通信,以及进行简单的多机通信等。考虑到用户应用的多样性和大跨度的需要,STM32在整个系列保持了引脚的兼容性及外设配置的兼容性。
图1-14 STM32芯片
STM32系列微控制器基于突破性的CM3内核,这是一款专为嵌入式应用而开发的内核。STM32系列产品得益于CM3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集,大幅度提高中断响应,而且所有新功能都同时具有业界最优的功耗水平。目前,ST是第一个推出基于这个内核的主要微控制器厂商。STM32系列产品的目的是为微控制器用户提供新的自由度。它提供了一个完整的32位产品系列,在结合了高性能、低功耗和低电压特性的同时,保持了高度的集成性能和简易的开发特性。
STM32采用2.0~3.6 V电源,当复位电路工作时,在待机模式下最低功耗2 μA,因此是最适合电池供电的应用设备。其他省电功能包括一个集成的实时时钟、一个专用的32kHz振荡器和4种功率模式,其中实时时钟含有一个备用电池专用引脚。
在性能方面,STM32系列的处理速度比同级别的基于ARM7TDMI的产品快30%,如果处理性能相同,STM32产品功耗比同级别产品低75%。使用新内核的Thumb-2指令集,设计人员可以把代码容量降低45%,几乎把应用软件所需内存容量降低了1/2。此外,根据Dhrystones和其他性能测试结果,STM32的性能比最好的16位架构至少高出一倍。
新产品提供多达128 KB的嵌入式闪存、20 KB的RAM和丰富的外设接口,包括两个12位D/A转换器(1μs的转换时间)、3个USART、两个SPI(18MHz主/从控制器)、两个I2 C、3个16位定时器(每个定时器有4个输入捕获模块,4个输出比较器,4个PWM控制器),以及一个专门为电机控制向量驱动应用设计的内嵌死区时间控制器的6-PWM定时器、USB、CAN和7个DMA通道。内置复位电路包括上电复位、掉电复位和电压监控器,以及一个可用作主时钟的高精度工厂校准的8MHz阻容振荡器、一个使用外部晶振的4~16MHz振荡器和两个看门狗。因此集成度很高。
除工业可编程逻辑控制器(PLC)、家电、工业及家用安全设备、消防和暖气通风空调系统等传统应用,以及智能卡和生物测定等新兴消费电子应用外,新的STM32系列还特别适合侧重低功耗的设备,如血糖和血脂监测设备。
目前,STM32产品有完整的开发支持产业环境,包括意法半导体免费提供的标准软件库、意法半导体的评估板和第三方开发的入门开发工具套件。客户还可以获得意法半导体或第三方开发的USB Device/Host/OTG解决方案,以及第三方开发的TCP/IP协议栈,包括意法半导体免费提供的Interniche NicheLite协议栈。此外,现在还有很多软件开发工具链支持STM32产品。Hitex、IAR、Keil和Raisonance不久将在经过验证的基于ARM内核的工具解决方案的基础上推出入门级开发工具。目前,Hitex、IAR、Keil,、Raisonance和Rowley的工具链支持STM32。
STM32主要应用场合包括:替代绝大部分10元以上的8位或16位单片机的应用;替代目前常用的嵌入Flash的ARM7微控制器的应用;与简单图形及语音相关的应用;与小型操作系统相关的应用;与较高速度要求相关的应用;与低功耗相关的应用。
STM32于2007年6月被意法半导体(STMicroelectronics)公司发布,经过3年的发展,STM32已经成为基于ARMCM3内核的业界最宽广的微控制器系列,目前共有135个型号,6大产品系列,分别为超值型系列STM32F100、基本型系列STM32F101、USB基本型系列STM32F102、增强型系列STM32F103、互联型系列STM32F105/107和超低功耗系列STM32L,如图1-15所示。它们带有丰富多样和功能灵活齐全的外设,并保持全产品系列上的引脚兼容,为用户提供了非常丰富的选型空间,为释放广大工程设计人员的创造力提供了更大的自由度。
图1-15 ST公司STM32产品线
增强型系列STM32F103时钟频率达到72 MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz。两个系列都内置32~128KB的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗仅36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
2009年发布的互联产品线是STM32产品线中的新成员,主要特征是新增了以太网、USB OTG、双CAN接口和音频级I2 S功能。该互联系列下设两个产品系列:内置64KB、128 KB或256 KB闪存的STM32F105和内置128 KB或256 KB闪存的STM32F107。STM32F105系列集成一个全速USB 2.0 Host/Device/OTG接口和两个具有先进过滤功能的CAN2.0B控制器;STM32F107系列则在STM32F105系列基础增加一个10/100 M以太网媒体访问控制器(MAC),虽然没有集成PHY,但该以太网MAC支持MII和RMII,提高了设计人员选择最佳的PHY芯片的灵活性,此外该MAC以完整的硬件支持IEEE1588精确时间协议,使设计人员能够为实时应用开发以太网连接功能。内置专用缓存让USB OTG、两个CAN控制器和以太网接口实现了同时工作,以满足通信网关应用的需求,以及各种需要灵活的工业标准连接功能的挑战性需求。
STM32中小容量产品是指闪存存储器容量在16~32 KB之间的STM32 F101××、STM32 F102××和STM32 F103××微控制器;中容量产品是指闪存存储器容量在64~128 KB之间的STM32 F101××、STM32 F102××和STM32 F103××微控制器;大容量产品是指闪存存储器容量在256~512 KB之间的STM32 F101××和STM32 F103××微控制器;互联型产品是指STM32 F105××和STM32 F107××微控制器。
1.5 STM32教学开发板
实践是学习嵌入式系统的最好方式,因此,为使本书各章实例都具有一定针对性,开发了如图1-16所示的STM32开发板,选用的芯片型号为STM32R8 T6。开发板原理图见附录C。
图1-16 STM32开发板