前言
本书的编写背景
MCU(Micro Controller Unit,微控制器,也叫单片机)技术、FPGA(Field Programmable Gate Array,现场可编程门阵列)技术和DSP(Digital Signal Processing,数字信号处理)技术是目前数字电路系统设计领域公认的三大基础性技术,以这3类技术形成的电子应用系统也是目前嵌入式系统的主要表现形式。其中MCU技术最为经典,且应用成熟、受众面广。近年来,单片机技术发展迅速,已从传统设计技术走向现代设计技术,其功能、速度、资源正在不断加强,更易于解决电子系统的嵌入性、低功耗、高可靠性和低价格等问题。单片机技术已经成为广大电子工程师和电类专业大学生必备的技能之一,其重要性不言而喻。
由于半导体技术的飞速发展,数字电路系统的新技术不断更新、新器件频频换代、嵌入式软硬件日新月异,进行MCU类应用开发相关工作的教师、在校学生、应用工程师等都需要不断补充新知识,跟上新技术的发展。现代单片机系统设计有如下3个比较明显的变化:
(1) 原来的单片机技术是围绕某个基本芯片如MCS51系列,在其基础上设计各种外围接口、加扩各种接口电路; 而现代单片机技术的趋势是选择功能符合、内部资源适用、接口方便的某个单片机型号为核心,配以尽量少的外围元器件来构成目标应用系统,这样做的好处是系统更可靠、性价比更高、更能体现单片机的“单”性或者微控制器的“微”性。
(2) 因为现代单片机应用系统往往控制更复杂、功能更强大、效率更重要等,导致对单片机应用系统的软件要求更高,所以不仅要学会汇编语言编程,还要掌握C语言编程开发方法,甚至可能引入嵌入式实时操作系统以及快速开发技术。
(3) 传统的单片机开发调试往往采用价格高、非标准的第三方仿真器系统,并且是借用仿真器的MCU实现并不完全的仿真,最后才擦写芯片固化程序; 如今的单片机都已采用了内置的可以反复擦写10万次以上的Flash存储区,支持在线调试系统、在线下载程序,使得单片机的开发调试更为方便快捷。
在教学方面,现在国内各个大专院校都开设有“单片机”课程,原先大多以MCS51系列8位单片机为蓝本,至今也还有许多学校在使用。但近些年,这种情况逐渐有所变化,如清华大学、上海交通大学、北京航空航天大学、苏州大学、天津大学、重庆大学等众多院校已转入以NXP(恩智浦,原为飞思卡尔)单片机为蓝本的教学,目前加入这个行列的学校越来越多,当然还有讲述以ARM为内核的32位单片机技术的学校。单片机教学的引进、变化、更新是大势所趋。
基于应用发展和教学需求,且希望站在一个较高的起点上,特别是要适应国内外“芯片”发展形势的变化和“汽车电子”技术的飞速发展,所以在收集整理最新中外资料的基础上,结合编者20多年的应用开发实践和教学教育经验,着手编写本书。为了帮助读者理解和掌握经典微机原理基础和现代单片机应用技术,本书主要以NXP(恩智浦)半导体公司获得广泛应用的S12X系列16位单片机为蓝本,讲述单片机的基础知识、接口方法和应用技术,其中的软件开发环境采用通用的CodeWarrior 5.1,硬件教学平台采用编者研制的S12XDEV开发板。本书在编排上按照教学特点分模块展开,由浅入深、循序渐进; 在讲述上力求简明扼要、浅显易懂,并争取达到理论与实际的平衡、通用与具体的平衡; 在内容上以入门为主、追求实用,轻内部原理性描述,重资源性描述及其应用方法。
本着引进吸收、创新发展的科学理念,本书以NXP(恩智浦)S12X系列单片机为蓝本展开描述。
关于NXP(恩智浦)
原Freescale(飞思卡尔)半导体公司是全球最大的半导体公司之一,其前身为Motorola(摩托罗拉)半导体部,2004年从摩托罗拉分拆上市,现已被NXP(恩智浦)半导体公司整合并购。它从1953年开始从事半导体业务,是世界半导体产业与技术的开拓者,为汽车电子、消费电子、工业控制、网络和无线市场设计并制造了众多的嵌入式半导体产品,在单片机领域长期处于全球市场领先地位,如MC68HC05是世界产量第一的8位单片机(产量第二的是8051单片机)。公司的单片机产品系列齐全,根据位数(8位、16位、32位等)不同、封装形式(SOIC、QFP、BGA等)不同、温度范围不同、所含模块不同等构成了庞大众多的微控制器产品系列,应用于嵌入式系统的各个领域,凭借可靠性高、性价比高和应用方便等优势,引领单片机(微控制器)的发展。
NXP(恩智浦)半导体公司创立于2006年,其前身为飞利浦公司于1953年成立的半导体事业部。2015年,NXP收购了Freescale半导体,成为全球前十大非存储类半导体公司以及全球最大的汽车半导体供应商。NXP(恩智浦)半导体公司目前是国际上半导体器件份额巨大的公司,尤其在汽车电子领域处于领导及领先地位。其已与中国教育部合作在清华大学、上海交通大学、东北大学、北京航空航天大学、苏州大学、天津大学等14所大学建立了示范教学实验室,在同济大学、河南工业大学、重庆大学等50多所大学建立了嵌入式处理器(MCU/DSP)开发应用中心或实验室。公司推广的大学计划成员越来越多,持续举办的全国性应用设计大奖赛和“飞思卡尔”杯全国大学生智能车竞赛也已成为教育部倡导的全国性重点赛事。各相关学校在嵌入式系统科研和人才培养方面都取得了许多可喜的成绩,包括各种应用设计、产业化实施。相信会有更多的大学会研究借鉴NXP芯片,也相信会有更多的科技工作者加入创新产品应用行列中来,以进一步推动中国微控制器应用技术的教学与研发工作,促进嵌入式产业发展和人才培养。
NXP(恩智浦)单片机产品线齐全,涵盖了从8位、16位(如S12、S12X系列)到32位的全系列MCU产品,选择余地大、新产品多。其各系列单片机又分化出各种子系列,多达几百个型号,个性化十足,目的是为用户提供芯片级的嵌入式解决方案,比如针对汽车电子,NXP(恩智浦)就提供了全面、清晰的产品选型指南。其16位S12/S12X系列型号的单片机具有长久的生命力,属于工业控制与汽车电子必用MCU芯片。S12/S12X单片机产品组合是介于8位和32位平台之间的理想产品。本科教学中以介于8位和32位之间的16位MCU为蓝本来讲述原理和应用是合理和可行的。
本书的具体内容
本书兼顾NXP(恩智浦)半导体公司S12系列和S12X系列单片机,涉及的单片机型号即为目前主流的S12、S12XD、S12XE和S12XS系列,它们均向前兼容S12系列,是业界尤其是汽车行业使用的主流型号。NXP(恩智浦)16位单片机的子系列众多,但各型号间的基本结构特性、硬件接口有较强的相通性,并且软件程序也是基本兼容的。
本书介绍单片机的基础知识、接口方法和应用技术,全书共14章。第1章概述经典微型计算机原理基础、单片机的发展、现状与应用,以及恩智浦系列单片机的分类特点。第2章以16位单片机型号MC9S12XEP100为蓝本,讲述恩智浦S12X系列单片机的功能结构、组成原理、存储器、中断系统、最小系统等。第3章概述S12X单片机的指令系统与汇编语言编程。第4章重点描述S12X单片机仿真调试与C语言编程方法。第5~11章分别描述并行输入/输出接口、定时器、A/D转换、PWM脉宽调制、SCI/SPI串行通信、CAN/LIN/ I2C总线通信、XGATE外设协处理器的基本原理及应用技术,从应用的角度给出相关模块的配置方法和使用范例。第12章介绍μC/OSⅡ嵌入式实时操作系统应用。第13章介绍基于MATLAB/Simulink建模仿真与代码自动生成的快速开发技术。第14章描述S12XDEV实验/开发平台的电路设计原理及其综合应用案例。
书中各章节配有一些硬件电路实例和软件程序实例,单片机与常用外设的接口方法贯穿全书。应用实例程序及教学实验例程均使用C语言编程,并已在CodeWarrior 5.1集成开发环境及S12XDEV开发板上调试验证通过。
读者范围
本书假定读者具有一定的电路原理、数字电路和C语言编程基础知识。本书可作为高等院校电子信息工程、通信工程、集成电路、工业测控、汽车电子、医学电子、机械电子、计算机应用等电类相关专业学生的课程教材(建议重点讲学第1~9章和第14章),同时也可作为单片机嵌入式系统开发与研究人员的参考书籍。
单片机技术的学习
本书在内容编排上虽然是按照恩智浦S12X系列16位单片机的组成原理和功能模块逐项展开的,但体现的技术和方法并不唯一针对某具体型号的芯片,大部分方法其实是通用的,需要读者在学习和应用的过程中融会贯通; 而且,基于恩智浦单片机的硬件或软件设计单元在其各系列单片机之间可以很容易地进行移植,有的甚至可以直接沿用。
单片机技术的学习方法首先是模仿验证、吸收消化,然后才是结合应用、自主创新。在这个学习过程中,需要了解单片机的结构原理、单元部件功能、常规接口方法、特殊应用方案等,要让单片机“跑起来”解决实际问题,还要掌握汇编语言编程、C语言编程、调试系统、下载程序等方法,至于应用对象的行业知识可通过交流、查询得到补充。
单片机应用系统设计涉及的相关技术很多,包括MCU结构原理、数字逻辑电路、模拟电子电路、硬件设计与制作、汇编语言编程、C语言编程、仿真调试、低功耗、抗干扰以及各种互联接口等技术,在短时间内全面掌握这些技术对于初学者来说是非常困难的。如果学习者具有深厚的基本功自然更好,假设有所欠缺也无妨,可以在单片机技术学习和应用的过程中重新回顾理解。实际上,有些知识或技术可以边用边学,甚至用通之后回头再学,在应用中提高并积累; 有些单元技术也不必深究硬啃,可采用“拿来主义”,比如一些MCU典型电路、范例程序、基本模块等。
经过一段时间的基础学习,单片机技术学习者最终需要做到3个“能够”: 能够看懂书本或别人的电路和程序; 能够看懂芯片厂家的原文数据手册(Datasheet/Reference Manual); 能够自行设计硬件电路和软件程序。这样,就是入门了。
需要指出的是,单片机的课堂教学内容或书本知识,能帮助学习者快速入门、建立概念和掌握一般应用。但要成为单片机应用开发的高手或专家,需要学习掌握的知识还很多,更需要自己摸索、实践。“高手之路”是自己走出来的,并不是老师、课本能够教出来的。
致谢
本书由任勇负责提纲规划、全局统稿及具体编写第1~11章和第14章,并进行相关软硬件的设计验证; 曾浩编写第12、13章。提供编写帮助的有王永东、何伟、吴华等老师,傅雪骄、韩劲锋等研究生完成了一些内容充实和电路设计工作。本书在编写过程中,得到了重庆大学微电子与通信工程学院教材编写资助。同时也参阅引用了相关教材专著、网上资源的部分内容。其间,还获得了清华大学出版社编辑、校对老师的支持鼓励和辛勤付出。在此一并表示诚挚的感谢。
由于作者水平有限,书中难免有错误或不妥之处,恳请广大读者指正和包涵。如果有需要S12XDEV开发板设计电路、程序、文档及成品的朋友也尽可联系交流。
编者的Email: renyong0801@163.com
编者2023年6月