新書推薦:
《
尼泊尔史:王权与变革
》
售價:NT$
430.0
《
战争事典085:德国人眼中的欧战胜利日:纳粹德国的最终失败
》
售價:NT$
499.0
《
步履匆匆:陈思和讲当代人文(杰出学者陈思和的人文之思、情怀之笔!)
》
售價:NT$
299.0
《
宋朝三百年
》
售價:NT$
790.0
《
礼制考古经典选读
》
售價:NT$
1340.0
《
MATLAB实用教程(第六版)
》
售價:NT$
695.0
《
中国思想的再发现(壹卷:近观系列,沟口雄三教授以其精湛的学术洞察力,旨在呈现一个全面而立体的中国思想图景)
》
售價:NT$
325.0
《
骨科康复学(第2版)
》
售價:NT$
1140.0
|
編輯推薦: |
(1)把握通用知识与芯片相关知识之间的平衡。(2)把握硬件与软件的关系。(3)对底层驱动进行构件化封装。(4)设计合理的测试用例。书(5)网上光盘提供了所有模块完整的底层驱动构件化封装程序与测试用例。(6)提供硬件核心板、写入调试器,方便读者进行实践与应用。同时提供了核心板与苏州大学恩智浦嵌入式中心设计的扩展板对接,以满足教学实验需要。
|
內容簡介: |
本书以恩智浦(NXP)的ARM CortexM0 内核的KL系列微控制器为蓝本阐述嵌入式系统的基本知识要素及软硬件设计方法。全书共14章,其中第1章为概述,简要阐述嵌入式系统的知识体系、学习误区与学习建议。第2章介绍ARM CortexM0 处理器。第3章介绍KL2526存储映像、中断源与硬件*小系统。第4章以GPIO为例阐述底层驱动概念、设计与应用方法,给出规范的工程组织框架。第5章阐述嵌入式硬件构件与底层驱动构件基本规范。第6章阐述串行通信接口UART,并给出*个带中断的实例。1~6章囊括学习一个新MCU入门环节的完整要素。7~13章分别介绍了SysTick、TPM、PIT、LPTMR、RTC、GPIO的应用实例(键盘、LED与LCD)、Flash在线编程、ADC、DAC、比较器、SPI、I2C、TSI、USB及其他模块。第14章给出了进一步学习指导。 本书提供了网上教学资源,内含所有底层驱动构件源程序、测试实例、文档资料、教学课件及常用软件工具。网上教学资源下载地址: http:sumcu.suda.edu.cn。本书内容还制作了MOOC,供读者选用。 本书适用于高等学校嵌入式系统的教学或技术培训,也可供ARM CortexM0 应用工程师作为技术研发参考。
|
目錄:
|
目录
第1章概述
1.1嵌入式系统的定义、发展简史、分类及特点
1.1.1嵌入式系统的定义
1.1.2嵌入式系统的由来及发展简史
1.1.3嵌入式系统的分类
1.1.4嵌入式系统的特点
1.2嵌入式系统的学习困惑、知识体系及学习建议
1.2.1嵌入式系统的学习困惑
1.2.2嵌入式系统的知识体系
1.2.3基础阶段的学习建议
1.3微控制器与应用处理器简介
1.3.1微控制器简介
1.3.2以MCU为核心的嵌入式测控产品的基本组成
1.3.3应用处理器简介
1.4嵌入式系统常用术语
1.4.1与硬件相关的术语
1.4.2与通信相关的术语
1.4.3与功能模块相关的术语
1.5嵌入式系统常用的C语言基本语法概要
1.5.1C语言的运算符与数据类型
1.5.2程序流程控制
1.5.3函数
1.5.4数据存储方式
1.5.5编译预处理
小结
习题
第2章ARM CortexM0 处理器
2.1ARM CortexM0 处理器简介
2.1.1ARM CortexM0 处理器内部结构概要
2.1.2ARM CortexM0 处理器存储器映像
2.1.3ARM CortexM0 处理器的寄存器
2.2ARM CortexM0 处理器的指令系统
2.2.1ARM CortexM0 指令简表与寻址方式
2.2.2数据传送类指令
2.2.3数据操作类指令
2.2.4跳转控制类指令
2.2.5其他指令
2.3ARM CortexM0 指令集与机器码对应表
2.4GNU汇编语言的基本语法
2.4.1ARMGNU汇编语言格式
2.4.2伪指令
小结
习题
第3章存储映像、中断源与硬件最小系统
3.1恩智浦Kinetis系列微控制器简介
3.2KL系列MCU简介与体系结构概述
3.2.1KL系列MCU简介
3.2.2KL系列MCU体系结构概述
3.3KL2526系列存储映像与中断源
3.3.1KL2526系列存储映像
3.3.2KL2526中断源
3.4KL2526的引脚功能
3.4.1硬件最小系统引脚
3.4.2对外提供服务的引脚
3.5KL2526硬件最小系统原理图
3.5.1电源及其滤波电路
3.5.2复位电路及复位功能
3.5.3晶振电路
3.5.4SWD接口电路
小结
习题
第4章GPIO及程序框架
4.1通用IO接口基本概念及连接方法
4.2端口控制模块与GPIO模块的编程结构
4.2.1端口控制模块决定引脚复用功能
4.2.2GPIO模块对外引脚与内部寄存器
4.2.3GPIO基本编程步骤与基本打通程序
4.3GPIO驱动构件封装方法与驱动构件封装规范
4.3.1设计GPIO驱动构件的必要性及GPIO驱动构件封装要点分析
4.3.2底层驱动构件封装规范概要与构件封装的前期准备
4.3.3KL25的GPIO驱动构件源码及解析
4.4利用构件方法控制小灯闪烁
4.4.1Light构件设计
4.4.2Light构件测试工程主程序
4.5工程文件组织框架与第一个C语言工程分析
4.5.1工程框架及所含文件简介
4.5.2链接文件常用语法及链接文件解析
4.5.3机器码文件解析
4.5.4芯片上电启动运行过程解析
4.6第一个汇编语言工程: 控制小灯闪烁
4.6.1汇编工程文件的组织
4.6.2汇编语言GPIO构件及使用方法
4.6.3汇编语言Light构件及使用方法
4.6.4汇编语言Light测试工程主程序及汇编工程运行过程
小结
习题
第5章嵌入式硬件构件与底层驱动构件基本规范
5.1嵌入式硬件构件
5.1.1嵌入式硬件构件概念与嵌入式硬件构件分类
5.1.2基于嵌入式硬件构件的电路原理图设计简明规则
5.2嵌入式底层驱动构件的概念与层次模型
5.2.1嵌入式底层驱动构件的概念
5.2.2嵌入式硬件构件和软件构件的层次模型
5.3底层驱动构件的封装规范
5.3.1构件设计的基本思想与基本原则
5.3.2编码风格基本规范
5.3.3公共要素文件
5.3.4头文件的设计规范
5.3.5源程序文件的设计规范
5.4硬件构件及底层软件构件的重用与移植方法
小结
习题
第6章串行通信模块及第一个中断程序结构
6.1异步串行通信的通用基础知识
6.1.1串行通信的基本概念
6.1.2RS232总线标准
6.1.3TTL电平到RS232电平转换电路
6.1.4串行通信编程模型
6.2KL2526芯片UART驱动构件及使用方法
6.2.1KL2526芯片UART引脚
6.2.2UART驱动构件基本要素分析与头文件
6.2.3printf的设置方法与使用
6.3ARM CortexM0 中断机制及KL2526中断编程步骤
6.3.1关于中断的通用基础知识
6.3.2ARM CortexM0 非内核模块中断编程结构
6.3.3KL2526中断编程步骤以串口接收中断为例
6.4UART驱动构件的设计方法
6.4.1UART模块编程结构
6.4.2UART驱动构件源码
小结
习题
第7章定时器相关模块
7.1ARM CortexM0 内核定时器
7.1.1SysTick模块的编程结构
7.1.2SysTick构件设计及测试工程
7.2脉宽调制、输入捕捉与输出比较通用基础知识
7.2.1脉宽调制PWM通用基础知识
7.2.2输入捕捉与输出比较通用基础知识
7.3TPM模块的驱动构件及使用方法
7.3.1TPM模块的脉宽调制、输入捕捉、输出比较引脚
7.3.2TPM构件头文件
7.3.3TPM测试工程
7.4TPM模块驱动构件的设计方法
7.4.1TPM模块的编程结构
7.4.2TPM驱动构件的设计
7.5周期中断定时器PIT模块
7.5.1周期中断定时器PIT模块功能概述
7.5.2PIT驱动构件及使用方法
7.5.3PIT驱动构件设计
7.6低功耗定时器LPTMR模块
7.6.1低功耗定时器LPTMR模块功能概述
7.6.2LPTMR驱动构件及使用方法
7.6.3LPTMR驱动构件的设计
7.7实时时钟RTC模块
7.7.1RTC模块功能概述
7.7.2RTC驱动构件及使用方法
7.7.3RTC驱动构件的设计
小结
习题
第8章GPIO应用键盘、LED及LCD
8.1键盘基础知识与键盘驱动构件设计
8.1.1键盘模型及接口
8.1.2键盘编程基本问题、扫描编程原理及键值计算
8.1.3键盘驱动构件的设计
8.2LED数码管基础知识与LED驱动构件设计
8.2.1LED数码管基础知识
8.2.2LED驱动构件设计及使用方法
8.3LCD基础知识与LCD驱动构件设计
8.3.1LCD的特点和分类
8.3.2点阵字符型LCD模块控制器HD44780
8.3.3LCD构件设计
8.4键盘、LED及LCD驱动构件测试实例
小结
习题
第9章Flash在线编程
9.1Flash驱动构件及使用方法
9.1.1Flash在线编程的基本概念
9.1.2KL2526芯片Flash构件头文件及使用方法
9.2Flash保护与加密
9.2.1Flash保护含义及保护函数的使用说明
9.2.2Flash加密方法与去除密码方法
9.3Flash驱动构件的设计方法
9.3.1Flash模块编程结构
9.3.2Flash驱动构件设计技术要点
9.3.3Flash驱动构件封装要点分析
9.3.4Flash驱动构件的源程序代码
小结
习题
第10章ADC、DAC与CMP模块
10.1模拟数字转换器ADC
10.1.1模数转换器ADC的通用基础知识
10.1.2ADC驱动构件及使用方法
10.1.3ADC模块的编程结构
10.1.4ADC驱动构件的设计
10.2数字模拟转换器DAC
10.2.1数模转换器DAC的通用基础知识
10.2.2DAC驱动构件及使用方法
10.2.3DAC驱动构件的编程结构
10.2.4DAC驱动构件的设计
10.3比较器CMP
10.3.1比较器CMP的通用基础知识
10.3.2CMP驱动构件及使用方法
10.3.3CMP驱动构件的编程结构
10.3.4CMP驱动构件的设计
小结
习题
第11章SPI、I2C与TSI模块
11.1串行外设接口SPI模块
11.1.1串行外设接口SPI的通用基础知识
11.1.2SPI驱动构件头文件及使用方法
11.1.3SPI模块的编程结构
11.1.4SPI驱动构件的设计
11.2集成电路互连总线I2C模块
11.2.1集成电路互连总线I2C的通用基础知识
11.2.2I2C驱动构件头文件及使用方法
11.2.3I2C模块的编程结构
11.2.4I2C驱动构件的设计
11.3触摸感应接口TSI模块
11.3.1触摸感应接口TSI的通用基础知识
11.3.2TSI驱动构件头文件及使用方法
11.3.3TSI模块的编程结构
11.3.4TSI驱动构件的设计
小结
习题
第12章USB编程
12.1USB应用开发基础知识
12.1.1USB的物理特性
12.1.2USB主机与设备的概念与特性
12.1.3USB中断概述
12.2USB设备(从机)的应用编程方法
12.2.1USB设备(从机)驱动构件及使用方法
12.2.2USB设备(从机)方MCU编程实例
12.2.3USB设备(从机)PC驱动问题
12.2.4与USB设备(从机)通信的PC方程序设计
12.3USB主机的应用编程方法
12.3.1USB主机驱动构件及使用方法
12.3.2USB主机方MCU编程实例
12.4设计微控制器的USB驱动构件应掌握的基础知识
12.4.1USB底层编程涉及的基本概念
12.4.2USB底层编程涉及的描述符及设备请求
12.4.3USB设备状态
12.4.4USB总线的枚举过程
12.5KL2526芯片USB模块的编程结构
12.5.1USB模块寄存器
12.5.2USB模块中断详解
12.5.3USB设备(从机)编程结构
12.5.4USB主机编程结构
12.6KL2526芯片作为USB设备(从机)的驱动构件设计
12.7KL2526芯片作为USB主机的驱动构件设计
第13章系统时钟与其他功能模块
13.1时钟系统
13.1.1时钟系统概述
13.1.2时钟模块概要与编程要点
13.1.3时钟模块测试实例
13.2电源模块
13.2.1电源模式控制
13.2.2电源模式转换
13.3低漏唤醒单元
13.4看门狗
13.5复位模块
13.5.1上电复位
13.5.2系统复位源
13.5.3调试复位
13.6位操作引擎技术及应用方法
13.6.1位操作引擎概述
13.6.2位操作引擎的应用机制解析
13.6.3位操作引擎对GPIO部分的使用说明
13.6.4位操作引擎使用注意点
13.6.5测试实例
小结
习题
第14章进一步学习指导
14.1关于更为详细的技术资料
14.2关于实时操作系统RTOS
14.3关于嵌入式系统稳定性问题
附录AKL2526芯片引脚复用功能
A.1KL25引脚复用功能
A.2KL26引脚复用功能
附录BKL2526硬件最小系统原理图
B.1KL25硬件最小系统原理图
B.2KL26硬件最小系统原理图
附录Cprintf的常用格式
C.1printf调用的一般格式
C.2格式字符串
C.3输出格式举例
参考文献
|
內容試閱:
|
前言 嵌入式计算机系统简称为嵌入式系统,其概念最初源于传统测控系统对计算机的需求。随着以微处理器(MPU)为内核的微控制器(MCU)制造技术的不断进步,计算机领域在通用计算机系统与嵌入式计算机系统这两大分支分别得以发展。通用计算机已经在科学计算、通信、日常生活等各个领域产生重要影响。在后PC时代,嵌入式系统的广泛应用是计算机发展的重要特征。一般来说,嵌入式系统的应用范围可以粗略地分为两大类: 一类是电子系统的智能化(如工业控制、汽车电子、数据采集、测控系统、家用电器、现代农业、传感网应用等),这类应用也被称为微控制器MCU领域。另一类是计算机应用的延伸(如平板电脑、手机、电子图书等),这类应用也被称为应用处理器MAP领域。在ARM产品系列中,ARM CortexM系列与ARM CortexR系列适用于电子系统的智能化类应用,即微控制器领域; ARM CortexA系列适用于计算机应用的延伸,即应用处理器领域。不论如何分类,嵌入式系统的技术基础是不变的,即要完成一个嵌入式系统产品的设计,需要有硬件、软件及行业领域相关知识。但是,随着嵌入式系统中软件规模日益增大,对嵌入式底层驱动软件的封装提出了更高的要求,可复用性与可移植性受到特别的关注,嵌入式软硬件构件化开发方法逐步被业界所重视。2015年12月7日,恩智浦和飞思卡尔完成合并,合并后的公司名称仍为恩智浦半导体,成为全球汽车和安全半导体解决方案第一大供应商以及全球第四大非存储类半导体企业。公司持续为互联汽车、物联网设备端到端安全与数据保护等领域提供更为完善的解决方案,旨在帮助人们实现智慧生活,安全连接。目前,恩智浦在北京、上海、深圳、苏州等设有办事处或研发中心,在大中华区员工总数超过11000人。该公司的微控制器及应用处理器系列,由不同位数、不同封装形式、不同温度范围、所含模块不同等构成了庞大的产品系列,广泛地应用于汽车电子、消费电子、工业控制、网络、无线市场及视频等嵌入式系统各个领域,为嵌入式系统各种应用提供了选择与解决方案,使得用户可以各取所需。不论是电子系统智能化还是计算机应用延伸的嵌入式应用设计,无论需要怎样的系统功能和集成度,总能从这个庞大产品系列中选取一款合适的芯片进行应用开发。这正是嵌入式系统产品设计者所期望的,也节省了嵌入式学习者的时间,可以加快开发进度,提高开发质量。本书以该公司于2012年开始推出的32位ARM CortexM0 内核的KL系列MCU为蓝本阐述嵌入式应用。本书第二版、第三版为普通高等教育十一五国家级规划教材,本版为普通高等教育十二五国家级规划教材、江苏省高等学校重点教材。本版是在2013年出版的第三版基础上重新撰写。主要变化有: 在ARM CortexM0 内核不变的前提下,增加了KL26芯片,重新梳理了通用知识要素,优化了底层构件封装; 将大部分驱动的使用方法提前阐述,而驱动构件的设计方法后置,目的是先学会使用进行实际编程,后理解构件的设计方法。因构件设计方法部分有一定难度,对于不同要求的教学场景,也可不要求学生理解全部构件的设计方法,讲解一两个即可。随着作者多年教学与开发的经验积累,本书以嵌入式硬件构件及底层软件构件设计为主线,基于嵌入式软件工程的思想,按照通用知识驱动构件使用方法测试实例芯片编程结构构件的设计方法的路线,逐步阐述电子系统智能化嵌入式应用的软件与硬件设计。本书具有以下特点。(1) 把握通用知识与芯片相关知识之间的平衡。书中对于嵌入式通用知识的基本原理,以应用为立足点,进行语言简洁、逻辑清晰的阐述,同时注意与芯片相关知识之间的衔接,使读者在更好地理解基本原理的基础上,理解芯片应用的设计,同时反过来,加深对通用知识的理解。(2) 把握硬件与软件的关系。嵌入式系统是软件与硬件的综合体,嵌入式系统设计是一个软件、硬件协同设计的工程,不能像通用计算机那样,软件、硬件完全分开来看。特别是对电子系统智能化嵌入式应用来说,没有对硬件的理解就不可能写好嵌入式软件,同样没有对软件的理解也不可能设计好嵌入式硬件。因此,本书注重把握硬件知识与软件知识之间的关系。(3) 对底层驱动进行构件化封装。书中对每个模块均给出根据嵌入式软件工程基本原则并按照构件化封装要求编制底层驱动程序,同时给出详细、规范的注释及对外接口,为实际应用提供底层构件,方便移植与复用,可以为读者进行实际项目开发节省大量时间。(4) 设计合理的测试用例。书中所有源程序均经测试通过,并保留测试用例在本书的网上光盘中,避免了因例程的书写或固有错误给读者带来烦恼。这些测试用例,也为读者验证与理解带来方便。(5) 网上教学资源提供了所有模块完整的底层驱动构件化封装程序与测试用例。需要使用PC的程序的测试用例,还提供了PC的C#源程序。网上教学资源中还提供了阅读资料、开发环境的简明使用方法、写入器驱动与使用方法、部分工具软件、有关硬件原理图等。网上教学资源的版本将会适时更新。(6) 提供硬件核心板、写入调试器,方便读者进行实践与应用。同时提供了核心板与苏州大学恩智浦嵌入式中心设计的扩展板对接,以满足教学实验需要。本书由王宜怀负责编制提纲和统稿工作,并撰写第1~6章、第14章。吴瑾撰写第7~10章、文瑾撰写第11~13章。研究生王绍丹、徐达、刘锴、陆伟国、司萧俊、白聪、胡唯唯等协助书稿整理及程序调试工作,他们卓有成效的工作,使本书更加实用。恩智浦公司的马莉女士一直关心支持苏州大学恩智浦嵌入式中心的建设,为本书的撰写提供了硬件及软件资料,并提出了许多宝贵建议。恩智浦公司的许多技术人员提供了技术支持。清华大学出版社为本书的出版给予了大力的支持,在此一并表示诚挚的谢意。鉴于作者水平有限,书中难免存在不足和疏漏之处,恳望读者提出宝贵意见和建议,以便再版时改进。苏州大学王宜怀2017年3月
网上教学资源文件夹结构
该教学资源可在网站http:sumcu.suda.edu.cn下载。
第3章存储映像、中断源与硬件最小系统
本章导读: 本章简要概述了KL2526的存储映像、中断源与硬件最小系统,有助于读者了解KL2526软硬件系统的大致框架,以便开始KL2526的软硬件设计。3.1节简要介绍了Kinetis全系列微控制器产品分类及应用领域; 3.2节给出KL系列MCU的型号标识、基本特点及体系结构概述; 3.3节给出KL2526系列芯片的存储映像及中断源,存储映像主要包括Flash区、片内RAM区,以便于配置链接文件; 3.4节将引脚分为硬件最小系统引脚及对外提供服务的引脚两类,并介绍其各自的功能; 3.5节给出了KL2526硬件最小系统的原理图及简明分析。本章参考资料: 3.1节主要参考自官网Kinetis的简介; 3.2节主要参考自官网资料KL系列介绍以及《KL参考手册》本书随后所说的《KL参考手册》均分别指《KL25参考手册》《KL26参考手册》。; 3.3节的KL2526系列存储映像与中断源参考自《KL参考手册》的第3章; 3.4节的KL2526的引脚功能,参考自《KL参考手册》的第10章。3.1恩智浦Kinetis系列微控制器简介飞思卡尔2015年与恩智浦合并在2010年飞思卡尔技术论坛FTF2010美国站推出了Kinetis系列微控制器,这是基于新ARM CortexM4处理器的90nm 32位MCU,开创了其微控制器领先地位的新纪元。它基于低功率混合信号ARM CortexM4处理器,是业内扩展能力最强的MCU系列之一。面向不同应用领域,Kinetis系列基于不同的ARM CortexM内核陆续推出了Kinetis K系列、L系列、M系列、W系列、E系列、EA系列以及V系列。了解这些系列概况有助于应用时选型。1. K系列Kinetis K系列产品组合有超过两百种基于ARM CortexM4结构的低功耗、高性能、可兼容的微控制器。这个系列产品集成度高,它包含多种快速16位ADC、DAC和可编程增益放大器以及强大、经济有效的信号转换器。目标应用领域是便携式医疗设备、仪器仪表、工业控制及测量设备等。2. KL系列Kinetis L系列KL系列MCU不仅汲取了新型ARM CortexM0 处理器的卓越能效和易用性、功耗更低、价格更低、效率更高,而且体现了Kinetis产品优质的性能、多元化的外设、广泛的支持和可扩展性。目标应用领域是816位MCU应用领域的升级换代,适用于价格敏感、能效比相对较高的领域,如手持设备、智能终端等。3. KM系列KM系列也是基于32位ARM CortexM0 内核的MCU。所有KM系列MCU都包含一个模拟前端,使CPU的电源计算可以达到0.1%的精确度。它包含4个24位模数转换器、两个低噪声可编程增益放大器,温度漂移范围小和具有相对补偿的精密参考电压,以简化精确的功率计算。目标应用领域是经济高效的单相或两相电表设计中。4. KW系列KW系列MCU扩展了K系列基于ARM CortexM4的成功之处。KW20无线MCU集成了领先的RF收发器和ARM CortexM4内核,并且支持一个强大的、安全的、可靠的和低功耗的IEEE 802.15.4的无线解决方案。KW系列是一个性能优越的无线MCU选择方案,可以提供良好的混合性能、集成、连通性和安全性。KW01超低功耗无线MCU是基于ARM CortexM0 内核的智能无线解决方案,旨在解决低于1GHz290~1020MHz的无线连接应用。目标应用领域是智能电表、传感器控制网络、工业控制、数据采集等。5. KE系列KE系列产品可在复杂电气噪声环境和要求高可靠性的应用中保持高稳定性,而且有丰富的存储器、外设和产品包可供选择。它们具有通用的外设和引脚数量,使开发人员能够轻松实现相同MCU系列内或多个MCU系列间的迁移,以利用更多存储器或特性集成。这种可扩展性使开发人员能够在KE系列上实现其终端产品平台的标准化,最大程度地提高硬件和软件的再利用,并加快产品上市速度。6. KEA系列KEA系列32位MCU广泛适用于质量要求和长期供货保证要求都很高的汽车和工业应用。KEA系列是广泛的ARM生态合作体系的入门级产品,拥有出色的EMCESD兼容性,能够适应高温环境,并且辐射排放较低。恩智浦为KEA系列提供可扩展、稳定可靠的高性能解决方案,适合成本敏感型汽车应用。此外恩智浦还提供了丰富的参考设计、工具和应用说明,最大程度缩短设计开发时间,加快产品上市速度。7. KV系列KV系列MCU基于ARM CortexM0 、CortexM4和CortexM7内核,专为各种BLDC、PMSM和ACIM电机控制以及数字电源转换应用而设计。凭借飞思卡尔逾二十年的电机控制处理器专长,推出针对电机控制和数字功率的MCU是顺理成章的事。KV系列凭借出色的性能价格比、量身定制的外设和捆绑型电机套件,可以使开发人员比以前更快、更容易地进行高效的设计。3.2KL系列MCU简介与体系结构概述3.2.1KL系列MCU简介
KL系列MCU于2012年6月提供样片,2013年正式上市。该系列MCU是业内首款基于ARM CortexM0 内核的MCU,具有超低功耗、应用设计方便、扩展性好、系列品种齐全等特点。目标市场是传统8位MCU应用领域的32位升级换代。Kinetis L系列MCU面向家用电器、便携式医疗系统、智能电表、照明、电源、电机控制及工业控制系统等,对稳定性、功耗、成本和易用性等方面有较严格要求的市场。该系列的设计充分考虑了应用的简约性,使得应用工程师可以像使用8位机一样进行32位机的应用开发。同时,KL系列MCU和基于ARM CortexM4内核的K系列MCU完全兼容,包括引脚。为提高性能、扩大闪存和未来集成提供了扩展途径,也使得软件、硬件的可复用性与可移植性得到了较宽的延伸。KL系列MCU具有多个低功率操作模式,包括新的门控时钟,该模式在要求最低功耗时通过关闭总线、系统时钟减少动态功耗,外设仍可在一个可选异步时钟源下继续运作; 在未唤醒内核情况下,UART、SPI、I2C、ADC、DAC、TPM、LPT和DMA等可支持低功耗模式。KL系列MCU主要特点如下: CPU最高工作频率48MHz、支持直接存储器访问Direct Memory Access,DMA,位操作引擎Bit Manipulation Engine,BME、内核单周期访问内存速度可达1.77CoreMarkMHz、单周期访问IO、关键外设速度比标准IO最大提高50%; 2级流水线设计减少了指令周期数CPI,提高跳转指令和执行ISR中断服务例程速度; 与8位、16位MCU相比具有更精简的代码密度,减少Flash空间、系统资源及功耗; 更精简的指令系统优化访问程序存储空间,完全兼容ARM CortexM0,兼容CortexM3M4指令集子集。执行跟踪缓冲区: 实现轻量级追踪解决方案,更快定位修正bug。1. KL系列MCU的型号标识
恩智浦Kinetis系列MCU的型号众多,但同一子系列的CPU核是相同的,多种型号只是为了适用于不同的应用场合。为了方便选型或订购,需记忆MCU型号标识的基本含义。KL系列命名格式为: QKL##AFFFRTPPCCN,其中,各字段说明如表31所示,本书使用的芯片命名为MKL25Z128VLK4。
表31KL系列芯片命令字段说明
字段说明取值
Q质量状态M=正式发布芯片; P=工程测试芯片KL##Kinetis系列号KL25A内核属性Z=CortexM0 FFF程序Flash大小32=32KB; 64=64KB; 128=128KB; 256=256KBR硅材料版本空 =主要使用的版本; A=主要使用版本的更新T运行温度范围V=-40~105℃PP封装类型FM=32 QFN5mm5mm; FT=48 QFN7mm7mm;
LH=64 LQFP10mm10mm; LK=80 LQFP12mm12mmCCCPU最高频率4=48MHzN包装类型R=卷包装; 空=盒包装
2. KL系列MCU的共性KL系列MCU由5个子系列组成,分别是KL0x、KL1x、KL2x、KL3x、KL4x,表32给出了KL系列芯片的简明资源。所有KL系列MCU均具有低功耗与丰富的混合信号控制外设,提供了不同的闪存容量和引脚数量,供实际应用选型。从应用的角度而言,KL0x属于入门级芯片,KL1x属于通用型芯片,而KL2x、KL3x、KL4x则更具针对性,KL2x系列具有USB OTG技术,KL3x系列支持段式LCD,KL4x系列为KL的旗舰系列,支持功能也最丰富。
表32KL系列芯片的简明资源
系列Flash大小引脚数量低功耗模拟信号USB段式LCD备注
KL4x128~256KB64~121
KL3x64~256KB64~121
KL2x32~256KB32~121
本书选用KL1x32~256KB32~80
KL0x8~32KB16~48
KL系列MCU在内核、低功耗、存储器、模拟信号、人机接口、安全性、定时器及系统特性等方面具有一些共同特点,简要总结在表33中。
表33KL系列MCU的共性
项目特点
超低功耗32位ARM CortexM0 内核具有超低功耗内存可扩展内存: 8KB Flash1KB SRAM至128KB Flash16KB SRAM; 内含64B高速缓冲存储区,可优化总线宽度和Flash的执行性能KL02系列除外模拟信号快速、高精度1612位ADC; 12位DAC; 高速比较器人机接口低功率触摸感应界面通信所有UART支持DMA传输,总线检测到数据也能触发传输; UART0支持4~32倍的采样速率; 在STOPVLPS模式,也能运行异步传输和接收操作; 最大支持两路SPI; 最大支持两路I2C; 支持全速USB OTG片内传输控制设备可靠性、安全性内部看门狗监控定时控制器强大的定时模块支持通用PWM电机控制功能; 可用于RTOS任务调度、ADC转换或定时的周期中断定时器系统特性GPIO支持引脚中断; 宽泛的工作电压: 1.71~ 3.6V; Flash编程电压、模拟外设电压低至1.71V; 运行温度范围: -40℃~ 105℃
3. KL2526子系列MCU简明资源本书以KL25与KL26子系列为蓝本阐述嵌入式技术基础,至本书出版时,该系列各共有12个具体芯片型号。共同特点有: CPU工作频率为48MHz; 工作电压为1.71~ 3.6V; 运行温度范围为-40℃~105℃; 具有64B的Cache; 具有USB OTG、定时器、DMA、UART、SPI、I2C、TSI、16位ADC、12位DAC等模块。在Flash容量、RAM容量、IO引脚数及封装形式等有差异,见表34,带底纹的型号为本书选用。具体应用时,需查询芯片的数据手册。
表34KL2526子系列MCU简明资源
引脚数封装FlashKBSRAMKBKL25型号KL26型号
32QFN324MKL25Z32VFM4RMKL26Z32VFM4R648MKL25Z64VFM4RMKL26Z64VFM4R12816MKL25Z128VFM4RMKL26Z128VFM4R48QFN324MKL25Z32VFT4RMKL26Z32VFT4R648MKL25Z64VFT4RMKL26Z64VFT4R12816MKL25Z128VFT4RMKL26Z128VFT4R
续表
引脚数封装FlashKBSRAMKBKL25型号KL26型号
64LQFP324MKL25Z32VLH4RMKL26Z32VLH4R648MKL25Z64VLH4RMKL26Z64VLH4R12816MKL25Z128VLH4RMKL26Z128VLH4R80LQFP324MKL25Z32VLK4RMKL26Z32VLK4R648MKL25Z64VLK4RMKL26Z64VLK4R12816MKL25Z128VLK4RMKL26Z128VLK4R
3.2.2KL系列MCU体系结构概述KL系列MCU是以AMBA总线规范为架构的片上系统System On Chip,SOC,如图31所示。一般来说,AMBA架构包含高性能系统总线Advanced High Performance Bus,AHB和低速、低功耗的高级外设总线Advanced PeriPheral Bus,APB。高性能系统总线AHB是负责连接ARM内核、DMA控制器、片内存储器或其他需要高带宽的模块。而外设总线APB则是用来连接系统的外围慢速模块,其协议规则相对系统总线AHB来说较为简单,它与系统总线AHB之间则通过总线桥Bus Bridge相连,期望能减少系统总线的负载。
图3132位MCU系统、外围总线模块图
1. AMBA总线规范ARM公司定义了AMBAAdvanced Microcontroller Bus Architecture总线规范,它是一组针对基于ARM内核、片内系统之间通信而设计的标准协议。在AMBA总线规范中,定义三种总线,分别是: ①高性能总线,用于高性能系统模块的连接,支持突发模式数据传输和事务分割; ②高级系统总线Advanced System Bus,ASB,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由高性能总线AHB替代; ③高级外设总线Advanced PeriPheral Bus,APB,用于较低性能外设的简单连接,一般是接在AHB或ASB系统总线上的第二级总线。最初的AMBA总线是ASB和APB。在它的第二个版本中,ARM引入了AHB。2. 总线桥总线桥Bus Bridge,在《KL参考手册》中也被称为外设桥Peripheral Bridge,给外设桥的名字是AIPSLite,即图31中的Bus Bridge。外设桥的作用是把交叉开关Crossbar Switch接口协议,转换成私有外设总线协议IPSAPB。本书中MCU外设桥以外设槽Slot形式,最多可连接128个外设,给每个外设分配4KB的寄存器映像空间。外设桥为每个外设槽提供了独立时钟,以便更好地支持低速外设。3. 交叉开关交叉开关Crossbar Switch将总线主机与总线从机相连,该结构允许多达4路主机同时访问不同总线从机。所谓总线主机是指其可在总线上产生与控制所有时序。当总线主机试图通过交叉开关访问从机端口,若该端口处于空闲状态,则执行访问,访问速度最大可达单周期或零等待; 若从机端口处于忙状态或被其他总线主机占用,总线主机插入查询等待状态直到目的从机响应服务主机请求。响应服务延迟时间取决于每个主机各自优先级以及访问目的从机时间。但若同时访问相同从机时,交叉开关提供仲裁机制确定访问顺序,仲裁机制包括优先级固定算法和优先级轮转算法。3.3KL2526系列存储映像与中断源3.3.1KL2526系列存储映像
所谓存储映像Memory Mapping在这里可以直观地理解为,M0 寻址的4GB地址空间0x0000_0000~0xFFFF_FFFF0x00000000书写成0x0000_0000仅仅是为了清晰,便于阅读。被如何使用,都对应了哪些实际的物理介质。有的给了Flash存储器使用,有的给了RAM使用,有的给了外设模块使用。下面利用GPIO模块来阐述有关概念。GPIO模块使用了0x400F_F000~0x400F_FFFF地址空间,这些空间内的GPIO寄存器与CPU即M0 内核内部寄存器如R0、R1等不同,访问GPIO寄存器需要使用直接地址进行访问,也就是说需要使用三总线地址总线、数据总线、控制总线。而访问CPU内部寄存器,不需经过三总线汇编语言直接使用R0、R1等名称即可,没有地址问题。由于访问CPU内部寄存器不经过三总线,所以比访问GPIO寄存器对应直接地址来得快。为区别于CPU内部寄存器,GPIO寄存器也被称为映像寄存器Mapping Register,相对应的地址被称为映像地址Mapping Address。整个可直接寻址的空间被称为映像地址空间Mapping Address Space。KL2526把M0 内核之外的模块,用类似存储器编址的方式,统一分配地址。在4GB的映像地址空间内,分布着片内Flash、SRAM、系统配置寄存器以及其他外设等,以便CPU通过直接地址进行访问。表35给出了本书中介绍的MKL25Z128VLK4简称KL25,下同和MKL26Z128VLH4简称KL26,下同存储映像空间分配。
表35KL2526存储映像空间分配
32位地址范围目 的 从 机说明
0x0000_0000~0x07FF_FFFF可编程Flash和只读数据128KB0x0000_0000~0x0001 FFFF0x0800_0000~0x1FFF_EFFF保留0x1FFF_F000~0x1FFF_FFFFSRAM_L: Lower SRAM16KB RAM区0x2000_0000~0x2000_2FFFSRAM_U: Upper SRAM0x2000_3000~0x3FFF_FFFF保留0x4000_0000~0x4007_FFFFAIPS外围设备串口、定时器、模块配置等0x4008_0000~0x400F_EFFF保留0x400F_F000~0x400F_FFFF通用输入输出GPIOGPIO模块0x4010_0000~0x43FF_FFFF保留0x4400_0000~0x5FFF_FFFFBME访问外设槽0127只能对特定的区域位操作0x6000_0000~0xDFFF_FFFF保留0xE000_0000~0xE00F_FFFF私有外设系统时钟、中断控制器、调试接口0xE010_0000~0xEFFF_FFFF保留~0xF000_0000~0xF000_0FFFMTB微型跟踪缓存寄存器0xF000_1000~0xF000_1FFFMTB数据查看和跟踪寄存器0xF000_2000~0xF000_2FFFROM表存放存储映射信息0xF000_3000~0xF000_3FFF杂项控制模块0xF000_4000~0xF7FF_FFFF保留0xF800_0000~0xFFFF_FFFFIOPORT: GPIO单周期访问可被内核直接访问
对于此表,主要记住片内Flash区及片内RAM区存储映像。因为中断向量、程序代码、常数放在片内Flash中,源程序编译后的链接阶段需要使用的链接文件中需含有目标芯片Flash的地址范围及用途等信息,才能顺利生成机器码。链接文件中还需包含RAM的地址范围及用途等信息,以便生成机器码确切定位全局变量、静态变量的地址及堆栈指针。1. 片内Flash区存储映像KL2526片内Flash大小为128KB,地址范围是: 0x0000_0000 ~ 0x0001_FFFF,一般被用来存放中断向量、程序代码、常数等,其中前192B为中断向量表。2. 片内RAM区存储映像KL2526片内RAM为静态随机存储器SRAM,大小为16KB,地址范围是: 0x1FFF_F000~0x2000_2FFF,一般被用来存储全局变量、静态变量、临时变量堆栈空间等。这16KB的RAM,在物理上被划分为SRAM_L和SRAM_U两个部分将SRAM划分为SRAM_L和SRAM_U。SRAM_U不仅可以作为普通RAM来操作,还可以支持两种途径的位操作,分别是位带别名区、位操作引擎BME,供特殊功能下高级编程使用。,分为SRAM_L: 0x1FFF_F000~0x1FFF_FFFF4KB; SRAM_U: 0x2000_0000~0x2000_2FFF12KB。该芯片的堆栈空间的使用方向是向小地址方向进行的,因此,堆栈的栈顶应该设置为RAM地址的最大值 1。这样,全局变量及静态变量从RAM的最小地址向大地址方向开始使用,堆栈从RAM的最高地址向小地址方向使用,可以减少重叠错误。3. 其他存储映像其他存储映像,如外设区存储映像外设桥、GPIO、位操作引擎等、私有外设总线存储映像、系统保留段存储映像等,只需了解即可,实际使用时,由芯片头文件给出宏定义。需特殊说明的是位操作引擎BME: 支持BME位操作引擎存储区地址位于0x4400_0000~0x5FFF_FFFF。用于对外设的位操作,位操作引擎技术由硬件支持,可使用CortexM指令集中最基本的加载、存储指令完成对外设地址空间内存的读、改、写操作。具体用法见13.4节。3.3.2KL2526中断源中断是计算机发展中一个重要的技术,它的出现很大程度上解放了处理器,提高了处理器的执行效率。所谓中断,是指MCU在正常运行程序时,由于MCU内核异常或者MCU各模块发出请求事件,引起MCU停止正在运行的程序,而转去处理异常或执行处理外部事件的程序又称中断服务程序。这些引起MCU中断的事件称为中断源。KL2526的中断源分为两类,如表36所示,一类是内核中断,另一类是非内核中断。内核中断主要是异常中断,也就是说,当出现错误的时候,这些中断会复位芯片或是做出其他处理。非内核中断是指MCU各个模块被中断源引起的中断,MCU执行完中断服务程序后,又回到刚才正在执行的程序,从停止的位置继续执行后续的指令。非内核中断又称可屏蔽中断,这类中断可以通过编程控制,开启或关闭该中断。
表36KL2526的中断源
中 断 类 型中断向量号IRQ中断号IPR寄存器号中断源中断源说明
内核中断0~3
ARM内核
4~10
预留
11
ARM内核
12,13
预留
14,15
ARM内核
非内核中断16~190~30DMADMA通道0~3传输完成或错误2041预留
2151FTFA命令完成或者读冲突2261PMC低电压检测和警告中断2371LLWU低漏唤醒24,258,92I2C0,I2C1I2C0,I2C1中断26,2710,112SPI0,SPI1SPI0,SPI1中断28~3012~143UART0~2UART0~2状态和错误中断31153ADC0ADC转换完成中断32164ACMP0ACMP中断33~3517~194TPM0~2TPM0~2中断36205RTCRTC定时报警中断37215RTCRTC秒中断38225PITPIT中断
续表
中 断 类 型中断向量号IRQ中断号IPR寄存器号中断源中断源说明
非内核中断39235I2S0KL25中无I2S模块
40246USBOTG
41256DAC0
42266TSI0
43276MCG
44287LPTMR0
45297预留
46307端口控制模块端口A引脚检测47317端口控制模块端口C,D引脚检测
表36中还给出了各中断源的中断向量序号,非内核中断的中断请求Interrupt Request号简称IRQ中断号,以及非内核中断的优先级设置的寄存器号简称IPR寄存器号。中断向量序号是每一个中断源的固定编号,由芯片设计生产时决定,编程时不能更改,它代表了中断服务程序入口地址在中断向量表的位置。IRQ中断号是非内核中断源的编号,每一个编号代表一个非内核中断源。6.3节将讲述中断的基本编程方法。
3.4KL2526的引脚功能本书以80引脚LQFP封装的MKL25Z128VLK4芯片与64引脚LQFP封装的MKL26Z128VLH4芯片为例阐述ARM CortexM0 架构的Kinetis MCU的编程和应用。若没有特殊说明,本书的KL25均指MKL25Z128VLK4芯片,KL26均指MKL26Z128VLH4芯片。图32给出了80引脚LQFP封装的MKL25Z128VLK4的引脚图来自《KL25参考手册》第10章图102,该章还给出了KL25的64引脚LQFP封装及48引脚QFN封装的引脚图。,图33给出的是64引脚LQFP封装的MKL26Z128VLH4的引脚图来自《KL26参考手册》第10章图102,该章还给出了KL26的121引脚BGA封装、100引脚LQFP封装、64引脚MAPBGA封装、48引脚QFN封装及32引脚QFN封装的引脚图。。
图3280引脚LQFP封装MKL25Z128VLK4引脚图
每个引脚都可能有多个复用功能,有的引脚有两个复用功能,有的有4个复用功能,实际嵌入式产品的硬件系统设计时必须注意只能使用其中的一个功能。进行硬件最小系统设计时,一般以引脚的第一功能作为引脚名进行原理图设计,若实际使用的是其另一功能,可以用括号加以标注,这样设计的硬件最小系统就比较通用。下面从需求与供给的角度把MCU的引脚分为硬件最小系统引脚与IO端口资源类引脚两大类。3.4.1硬件最小系统引脚KL2526硬件最小系统引脚是我们需要为芯片提供服务的引脚,包括电源类引脚、复位引脚、晶振引脚等,表37中给出了KL2526的最小系统引脚。KL2526芯片电源类引脚,LQFP封装12个。芯片使用多组电源引脚分别为内部电压调节器、IO引脚驱动、AD转换电路等电路供电,内部电压调节器为内核和振荡器等供电。为了提供稳定的电源,MCU内部包含多组电源电路,同时给出多处电源引出脚,便于外接滤波电容。为了电源平衡,MCU提供了内部有共同接地点的多处电源引脚,供电路设计使用。
表37KL2526硬件最小系统引脚表
分类引脚名引脚号KL25KL26功 能 描 述
电源输入VDD7、38、603、30、48电源,典型值: 3.3VVSS8、39、594、31、47地,典型值: 0VVDDA,VSSA17、2013、16AD模块的输入电源,典型值: 3.3V、0VVREFH,VREFL18、1914、15AD模块的参考电压,典型值: 3.3V、0VVREGIN128USB模块的参考电压,典型值: 5VVOUT33117USB模块电源稳压器输出的电压,典型值: 3.3V
续表
分类引脚名引脚号KL25KL26功 能 描 述
复位RESET4234双向引脚。有内部上拉电阻。作为输入,拉低可使芯片复位拉低脉冲宽度需维持1.5个总线时钟周期以上,方能完成复位。作为输出,复位开始后,芯片内部电路驱动该引脚至少维持34个总线时钟周期的低电平。上电复位后,该引脚默认为RESET功能,复位完成后,可通过系统选项寄存器SIM_SOPT0的RSTPE位配置为其他功能,一般不建议这样做,最好就做复位引脚。晶振EXTAL,XTAL40、4132、33分别为无源晶振输入、输出引脚
SWD接口SWD_CLK2622SWD时钟信号线SWD_DIO2925SWD数据信号线
引脚个数统计硬件最小系统引脚均为17个
图3364引脚LQFP封装MKL26Z128VLH4引脚图
3.4.2对外提供服务的引脚
除了需要我们为芯片服务的引脚最小硬件系统引脚之外,芯片的其他引脚为我们提供服务,也可称之为IO端口资源类引脚,见表38。这些引脚一般具有多种复用功能,附录A给出了KL25、KL26芯片引脚功能复用表。实际硬件设计时,必须依据该表,仔细斟酌引脚功能的使用,软件编程时,依据所使用的功能设定复用功能中的一种。因此,读者需重点掌握该表的应用方法。
表38KL2526对外提供IO端口资源类引脚表
KL25KL26
端口名引脚数63引脚名引脚数49引脚名
A10PTA[1~2、4~5],PTA[12~17]8PTA[0~5],PTA12,PTA13B12PTB[0~3],PTB[8~11],PTB[16~19]8PTB[0~3],PTB[16~19]C16PTC[0~13],PTC[16~17]12PTC[0~11]D8PTD[0~7]8PTD[0~7]E15PTE[0~5],PTE[20~25],PTE[29~31]11PTE[0~1],PTE[20~25],PTE[29~31]其他2USB0_DM,USB0_DP2USB0_DM,USB0_DP
说明这里统计IO引脚不包括已被最小系统使用的引脚,但包含两个SWD的引脚。IO端口引脚最大输入电压为0.7VDD; 最大输出电压VDD,最大输出总电流100mA。具体技术指标参见《KL26数据手册》
KL2580引脚LQFP封装具有63个IO引脚包含两个SWD的引脚,KL2664引脚LQFP封装具有49个IO引脚包含两个SWD的引脚写入器SWD使用的两个引脚在硬件最小系统表中与对外提供IO端口资源类引脚表中重复列出,是因为这两个引脚在运行过程中作为其他功能使用是合适的。。这些引脚均具有多个功能,在复位后,会立即被配置为高阻状态,且为通用输入引脚,有内部上拉功能。随后各章以KL25为主进行讲解,但其内容完全适用于KL26,网上教学资源中给出了KL26的程序。选用KL26的读者可使用这部分程序进行实验与实践。3.5KL2526硬件最小系统原理图MCU的硬件最小系统是指包括电源、晶振、复位、写入调试器接口等可使内部程序得以运行的、规范的、可复用的核心构件系统。使用一个芯片,必须完全理解其硬件最小系统。当MCU工作不正常时,首先就要查找最小系统中可能出错的元件。一般情况下,MCU的硬件最小系统由电源、晶振及复位等电路组成。芯片要能工作,必须有电源与工作时钟; 至于复位电路则提供不掉电情况下MCU重新启动的手段。随着Flash存储器制造技术的发展,大部分芯片提供了在板或在线系统On System的写入程序功能,即把空白芯片焊接到电路板上后,再通过写入器把程序下载到芯片中。这样,硬件最小系统应该把写入器的接口电路也包含在其中。基于这个思路,KL2526芯片的硬件最小系统包括电源电路、复位电路、与写入器相连的SWD接口电路及可选晶振电路。附录B给出了KL2526硬件最小系统原理图。读者需彻底理解该原理图的基本内涵。3.5.1电源及其滤波电路电路中需要大量的电源类引脚用来提供足够的电流容量同时保持芯片电流平衡,所有的电源引脚必须外接适当的滤波电容抑制高频噪声。电源VDDx与地VSSx包括很多引脚,如VDDA、VSSA、VDD、VSS、VREFH和VREFL等。至于外接电容,是由于集成电路制造技术所限,无法在IC内部通过光刻的方法制造这些电容。去耦是指对电源采取进一步的滤波措施,去除两级间信号通过电源互相干扰的影响,电源滤波电路可改善系统的电磁兼容性,降低电源波动对系统的影响,增强电路工作的稳定性。为标识系统通电与否,可以增加一个电源指示灯。需要强调的是,虽然硬件最小系统原理图附录B中的许多滤波电容被画在了一起,但实际布板时,需要各自接到靠近芯片的电源与地之间,才能起到良好的效果。3.5.2复位电路及复位功能复位,意味着MCU一切重新开始。复位引脚为RESET。若复位引脚有效低电平,则会引起MCU复位。复位电路原理如下: 正常工作时,复位引脚RESET通过一个10k的电阻接到电源正极,所以应为高电平。若按下复位按钮,则RESET脚接地为低电平,导致芯片复位。若是系统重新上电,芯片内部电路会使RESET脚拉低,使芯片复位。KL2526的复位引脚是双向引脚,作为输入引脚,拉低可使芯片复位,作为输出引脚,上电复位期间有低脉冲输出,表示芯片已经复位完成。从引起MCU复位的内部与外部因素来区分,复位可分为外部复位和内部复位两种。外部复位有上电复位、按下复位按钮复位。内部复位有看门狗定时器复位、低电压复位、软件复位等见13.6节。从复位时芯片是否处于上电状态来区分,复位可分为冷复位和热复位。芯片从无电状态到上电状态的复位属于冷复位,芯片处于带电状态时的复位叫热复位。冷复位后,MCU内部RAM的内容是随机的。而热复位后,MCU内部RAM的内容会保持复位前的内容,即热复位并不会引起RAM中内容的丢失。从CPU响应快慢来区分,复位还可分为异步复位与同步复位。异步复位源的复位请求一般表示一种紧要的事件,因此复位控制逻辑不等到当前总线周期结束,复位立即有效。异步复位源有上电、低电压复位等。同步复位的处理方法与异步复位不同: 当一个同步复位源给出复位请求时,复位控制器并不使之立即起作用,而是等到当前总线周期结束之后,这是为了保护数据的完整性。在该总线周期结束后的下一个系统时钟的上升沿时,复位才有效。同步复位源有看门狗定时器、软件等。3.5.3晶振电路
KL2526芯片可使用内部晶振或外部晶振两种方式为MCU提供工作时钟。
KL2526芯片含有内部时钟源IRC,频率分为慢速32.768kHz和快速4MHz,慢速内部时钟误差在0.6%以内,而快速内部时钟误差在3%以内。
图34晶振电路
通过编程,最大可产生48MHz内核时钟及24MHz总线时钟。使用内部时钟源可略去外部晶振电路。
若时钟源需要更高的精度,可自行选用外部晶振,例如图34给出外接8MHz无源晶振的晶振电路接法,晶振连接在晶振输入引脚EXTAL0、晶振输出引脚XTAL0之间。有关配置及具体编程见第13.1节时钟系统。
3.5.4SWD接口电路KL2526芯片的调试接口SWD是基于CoreSight架构,该架构在限制输出引脚和其他可用资源情况下,提供了最大的灵活性。CoreSight是ARM定义的一个开放体系结构,以使SOC设计人员能够将其他IP内核的调试和跟踪功能添加到CoreSight基础结构中。通过SWD接口可以实现程序下载和调试功能。SWD接口只需两根线,数据输入输出线DIO和时钟线CLK。附录B最小硬件系统原理图中,给出了SWD调试接口电路,连接到KL2526芯片的SWD_DIO与SWD_CLK两个引脚。可根据实际需要增加地、电源以及复位信号线。小结本章主要给出了KL25KL26存储映像、中断源、引脚图及引脚表,重点是给出了硬件最小系统,完成了MCU的基础硬件入门。1 基于ARM CortexM内核的Kinetis系列微控制器,主要有K、L、M、W、E、EA及V系列,这些系列的特点各不相同,适用于不同应用领域。2 KL系列的一个具体MCU型号标识含有质量状态、系列号、内核类型、内部Flash大小、温度范围、封装类型、CPU最高频率、包装类型等信息。3 关于KL2526系列的存储映像与中断源。其片内Flash大小为128KB,地址范围: 0x0000_0000 ~ 0x0001_FFFF,用来存放中断向量、程序代码、常数等; 片内RAM大小16KB,地址范围: 0x1FFF_F000~0x2000_2FFF,用来存储全局变量、临时变量堆栈空间等; KL2526最多支持48个中断源,为中断向量表中提供物理基础,由于中断的内容会在后面章节详细介绍,本章了解即可。4 关于硬件最小系统。一个芯片的硬件最小系统是指可以使内部程序运行所必需的最低规模的外围电路,也可以包括写入器接口电路。使用一个芯片,必须完全理解其硬件最小系统。硬件最小系统引脚是我们必须为芯片提供服务的引脚,包括电源、晶振、复位、SWD接口。读者需充分理解附录B的硬件最小系统原理图。该图可从5个部分来理解,第一,首先需要为芯片提供电源,直流3.3V,所有的电源引出脚与地之间应在靠近芯片的地方接滤波电容去耦电容,因为电容有通交流阻直流的特性,因此用来抑制高频噪声,使供电更加稳定; 第二,需要给芯片提供晶振,芯片工作需要一个由晶振提供的时钟信号; 第三,复位引脚要加上拉电阻,平时电平拉高,需要复位时与地导通使电平拉低,让芯片复位,从而使芯片复位; 第四,是SWD写入器接口,为了将程序写入芯片,需要写入器接口引脚; 第五,其他引脚引出虚线之外,就为我们提供服务了。5 学习第5章之后,再回头来理解为什么这样画原理图。我们的目标是,所有使用该芯片的应用系统,硬件最小系统原理图可复用,第5章称之为核心构件。习题1. 简述ARM CortexM0KL系列MCU的型号标识。2. 给出所学芯片的RAM、Flash的地址范围,说明堆栈空间、全局变量、常量、程序分别存放于RAM中还是Flash中。芯片初始化时,SP值应为何值,说明原因。3. 简要阐述硬件电路中滤波电路、耦合电路的具体作用。4. 解释最小硬件系统概念,并结合所学芯片的开发板,归纳实现最小系统需要的引脚资源。5. 所学芯片的开发板中使用什么标准调试接口?具体如何实现?6. 所学芯片的开发板中具有哪些功能接口?如何进行测试?7. 概要给出所学芯片的最小系统原理图的各部分基本原理。8. 自行找一个型号MCU,给出设计硬件最小系统的基本步骤,并参考本章样例画出原理图。
|
|