《嵌入式系统教程——基于Tiva C系列ARM Cortex-M4微控制器》介绍嵌入式系统的基础知识,并以ARM Cortex-M4内核MCU TM4C123x为核心,详细讲述MCU应用相关的各种外设模块的原理和编程结构,并给出操作例程代码,包括电源与时钟管理、存储器、通用输入/输出(GPIO)、定时器、PWM、异步和同步通信接口(UART、SPI、I2C等)、模拟外设(ADC、DAC、AC)等。同时,对嵌入式软件设计方法、嵌入式C语言基础、RTOS等作了简明阐述。最后介绍MCU的软硬件开发环境、软件库,以及低功耗设计和电磁兼容性基础等。本书配套有完整的教学资源,包括PPT课件、DY-Tiva-PB口袋实验平台和实验指导书等。本书可作为高等院校计算机、电子、自动化、仪器仪表等专业嵌入式系统、微机接口、单片机等课程的教材,也适合广大从事单片机应用系统开发的工程技术人员学习、参考。
嵌入式系统教程--基于Tiva C系列ARM Cortex-M4微控制器
目前,很多高校都开设了嵌入式系统的课程,有的学校还有嵌入式系统专业,关于嵌入式系统教学内容的讨论也随之而来。其实,嵌入式系统这个概念很大,计算机技术和计算机应用技术的每个方面,几乎都可以找到与嵌入式系统有特殊关联的内容,如微处理器架构、硬件系统设计、软件设计与优化、算法与控制、接口与通信、嵌入式操作系统、嵌入式系统设计、应用技术等。因此,完整的嵌入式系统教学内容,应该是一个课程体系,包括一系列的课程。对于普通院校的一门“嵌入式系统”类课程,则不必拘泥(或统一)于某一特定的内容,完全可以根据各自学校、专业的特点,选定教学内容。为此,我们也查阅了美国一些高校(如哥伦比亚大学、德克萨斯大学、密西根大学等)的“嵌入式系统”课程教学内容,各高校类似名称的课程,其教学内容也相差很多,有的偏重于系统建模,有的偏重于控制和应用。总体而言,偏重于应用、控制方面的,选用微控制器(MCU)教学的较为普遍。在国内高校,除了专门设立嵌入式系统专业外,有条件的还可以开设一系列嵌入式系统课程。对于一般的学校,涉及嵌入式系统相关教学内容的,可能也就是1~2门课。对于计算机专业而言,大多是原来“微机原理与接口”、“单片机原理与应用”这类课程教学内容的更新。我们华东师范大学计算机系也是如此。目前,“嵌入式系统“这门课,就是原来“微机原理与接口”的改进版,希望把原来基于x86系统的内容(包括825x系列接口芯片),改为基于ARM MCU的内容。考虑到计算机专业软件课程(包括操作系统)已经很多,所以我们这门课的教学内容更多定位于MCU及其各种外设的原理与应用。随着MCU的应用日趋广泛,对其综合性能、功能的要求也越来越高。随着物联网(IoT)时代的到来,新的应用出现了一些新的需求,主要体现在以下几个方面:(1) 以电池供电的应用越来越多,而且由于产品体积的限制,很多是用小型电池供电,要求系统功耗尽可能低、电源管理功能完善,如智能仪表、玩具等。(2) 应用的复杂性,对处理器的功能和性能要求也不断提高,既要外设丰富,功能灵活,又要有一定的运算能力,能处理一些实时算法和协议,如基于ZigBee、WiFi的网络化产品。(3) 产品更新速度快,开发时间短,希望开发工具简单、廉价,功能完善。特别是开发环境、工具要有延续性,便于代码移植,同时有丰富的软件库支持。基于ARM Cortex-M处理器的各种MCU,很好地满足了现代MCU应用的上述需求,也符合嵌入式系统发展的趋势,是嵌入式系统教学、实验平台的最佳选择。嵌入式系统教学是注重实践的。考虑到目前MCU开发工具已经非常成熟、廉价,而且学生基本都有自己的PC或笔记本电脑,为了让学生有尽可能多的实验时间,做尽可能多的实验内容,希望每个学生都有一个小巧的MCU实验平台,可以在学生任何方便的时间和地点进行实验,摆脱到固定实验室做实验的束缚,于是提出了“口袋实验室”的设想。该设想得到了德州仪器(TI)大学计划的大力支持,为此我们编写了教材、教案,并设计开发了配套的“口袋实验板”(DY-Tiva-PB)及相应的实验例程,构成了一套较为完整的教学、实验系统。考虑到教学内容的完整性、学生基础的差异性,以及便于学习参考,本书的第7~9章还补充了嵌入式软件设计方法、嵌入式C语言基础、软硬件开发环境以及低功耗设计和电磁兼容性方面的基础知识。配套的口袋实验平台采用了美国德州仪器(TI)的新一代Tiva C系列MCU TM4C123x,它率先采用65 nm闪存工艺技术制造,基于ARM Cortex-M4内核,为实现更高速、更大容量、更低功耗的MCU奠定了发展空间。Tiva C系列的软件开发建立在通用软件库基础之上,有助于简化在未来Tiva ARM MCU中的软件移植,以充分满足各种互联应用需求。华东师范大学计算机系嵌入式系统实验室曾与多家全球著名的半导体厂商(如TI、Atmel、ST等)合作,在MCU应用开发、推广方面积累了丰富的经验。本书内容也是结合了我们多年“微机原理与接口”、“嵌入式系统引论”等课程教学及MCU应用项目的开发经验,并经过了一届学生的试用。为了让广大读者更快地学好、用好Tiva C系列MCU,除了编著出版此书,我们还编著了更贴近实际应用的《Tiva C系列ARM Cortex-M4微控制器实战演练》一书,其中包含了大量具体的实验例程,敬请关注。前言
参与本书编写和资料整理、硬件设计和代码验证等工作的,还有华东师范大学计算机系彭晓晶、候立阳、贺佳杰、王昕、林晓祥、胡旭、李凯、郝立平等。在本书统稿过程中,得到了TI大学计划经理沈洁、黄争、崔萌,上海德研电子科技有限公司陈宫、姜哲的大力支持,在此向他们表示衷心的感谢!由于时间仓促和水平所限,本书有些内容还不尽完善,错误之处也在所难免,恳请读者批评指正,以便我们及时修正。有关此书的信息和配套资源,会及时发布在网站上。
沈建华
2015年1月于华东师范大学
第1章嵌入式系统与微控制器
1.1嵌入式系统概述
1.1.1嵌入式系统的发展与应用
1.1.2嵌入式系统的特点
1.1.3嵌入式系统的组成
1.1.4嵌入式系统的种类
1.1.5嵌入式系统的调试方法
1.2MCU概述
1.2.1MCU的发展历史
1.2.2MCU的特点
1.3ARM Cortex-M4处理器简介
1.3.1ARM处理器架构
1.3.2Cortex-M4处理器
1.4Tiva系列MCU
1.4.1TM4C123系列
1.4.2TM4C129系列
1.5TM4C123GH6PM引脚与电气特性
1.5.1GPIO引脚功能选择
1.5.2TM4C123GH6PM电气特性
思考题与习题
第2章系统控制
2.1功能描述
2.1.1器件标识
2.1.2复位控制
2.1.3电源控制
2.1.4时钟控制
2.1.5非屏蔽中断
2.1.6低功耗模式控制
2.2初始化及配置
2.3操作示例
2.3.1程序流程图
2.3.2库函数说明
2.3.3示例代码
2.3.4操作现象
思考题与习题
第3章存储器
3.1存储器简介
3.1.1SRAM
3.1.2DRAM
3.1.3ROM
3.1.4Flash
3.1.5EEPROM
3.1.6存储器扩展
3.1.7地址译码
3.2存储器空间映射
3.2.1普林斯顿结构
3.2.2哈佛结构
3.2.3大小端模式
3.3Tiva微控制器存储器
3.3.1TM4C123GH6PM存储器地址映射
3.3.2TM4C123GH6PM的ROM
3.3.3TM4C123GH6PM的Flash
3.3.4EEPROM
3.4操作示例
3.4.1程序流程图
3.4.2库函数说明
3.4.3示例代码
3.4.4操作现象
思考题与习题
第4章基本接口与外设
4.1通用输入/输出(GPIO)
4.1.1GPIO简介
4.1.2Tiva微控制器GPIO
4.1.3数据控制
4.1.4中断控制
4.1.5初始化及配置
4.1.6操作示例
4.2通用定时器(Timer)
4.2.1定时器简介
4.2.2Tiva微控制器定时器
4.2.3初始化及配置
4.2.4操作示例
4.3脉冲宽度调节器(PWM)
4.3.1PWM简介
4.3.2Tiva微控制器PWM
4.3.3初始化及配置
4.3.4操作示例
4.4看门狗定时器(WDT)
4.4.1WDT简介
4.4.2Tiva微控制器WDT
4.4.3初始化及配置
4.4.4操作示例
4.5微型直接内存访问(μDMA)
4.5.1DMA传输数据过程
4.5.2Tiva微控制器μDMA介绍
4.5.3初始化及配置
4.5.4操作示例
4.6休眠控制与RTC
4.6.1休眠模块简介
4.6.2Tiva微控制器休眠模块与RTC
4.6.3初始化及配置
4.6.4操作示例
思考题与习题
第5章通信接口与外设
5.1基本概念
5.2异步串行通信接口(UART)
5.2.1UART简介
5.2.2Tiva微控制器的UART
5.2.3初始化及配置
5.2.4操作示例
5.3同步串行接口(SSI)
5.3.1SSI简介
5.3.2数据传输
5.3.3极性、相位和帧格式
5.3.4Tiva微控制器的SSI
5.3.5初始化及配置
5.3.6操作示例
5.4I2C接口
5.4.1I2C简介
5.4.2Tiva微控制器的I2C
5.4.3初始化及配置
5.4.4操作示例
5.5CAN模块
5.5.1CAN简介
5.5.2Tiva微控制器的CAN
5.6USB控制器
5.6.1USB简介
5.6.2Tiva微控制器的USB
思考题与习题
第6章模拟外设
6.1模/数转换器(ADC)
6.1.1ADC简介
6.1.2Tiva微控制器的ADC
6.1.3数据比较器单元
6.1.4初始化及配置
6.1.5操作示例
6.2模拟比较器(AC)
6.2.1AC简介
6.2.2Tiva微控制器的AC
6.2.3初始化及配置
6.2.4操作示例
6.3数/模转换器(DAC)
6.3.1DAC7512的基本原理与特点
6.3.2DAC工作模式
6.4正交编码器(QEI)
6.4.1Tiva微控制器的QEI
6.4.2中断控制
6.4.3初始化及配置
思考题与习题
第7章嵌入式软件设计
7.1嵌入式C语言基础
7.1.1嵌入式C语言程序设计
7.1.2编程风格
7.1.3数据类型及声明
7.1.4操作符与表达式
7.2嵌入式系统软件组成
7.2.1裸机嵌入式系统软件
7.2.2初始化引导程序
7.2.3设备驱动程序
7.2.4库函数
7.3嵌入式系统软件设计方法
7.3.1前后台系统
7.3.2中断(事件)驱动系统
7.3.3巡回服务系统
7.3.4基于定时器的巡回服务系统
7.4RTOS基础
7.4.1RTOS的基本概念
7.4.2使用RTOS的优势
7.4.3RTOS的功能组成
7.4.4常用的RTOS
7.5FreeRTOS
7.5.1FreeRTOS的体系结构
7.5.2FreeRTOS系统的任务调度机制
7.5.3FreeRTOS系统的任务管理机制
7.5.4FreeRTOS任务通信与同步机制
7.5.5FreeRTOS移植到微控制器的方法
7.6FreeRTOS操作示例
7.6.1FreeRTOS库函数说明
7.6.2示例代码
思考题与习题
第8章低功耗与电磁兼容
8.1低功耗设计方法
8.1.1利用I/O引脚为外部器件供电
8.1.2电源管理单元的设计
8.1.3动态改变CPU的时钟频率
8.1.4软件系统的低功耗设计
8.2电源设计
8.2.1电池的选择
8.2.2超低静态电流LDO
8.2.3直流/直流转换器
8.3电磁兼容性
8.3.1电磁干扰的形成
8.3.2电磁兼容的常用元器件
8.3.3电磁兼容的常用技巧
思考题与习题
第9章软件开发环境
9.1常用软件开发工具
9.2Keil MDK简介
9.2.1Keil MDK-ARM的安装
9.2.2Keil MDK-ARM工程的建立与调试
9.3CCSv6软件开发环境
9.3.1CCSv6概述
9.3.2CCSv6安装
9.3.3CCSv6工程开发
9.4TivaWare库
9.4.1外设驱动库
9.4.2图形库
9.4.3USB库
9.4.4IQMath库
9.4.5传感器库
思考题与习题
第10章硬件实验平台
10.1LaunchPad概述
10.1.1BoosterPacks
10.1.2规格
10.2LaunchPad硬件资源
10.2.1功能描述
10.2.2电源管理
10.2.3内部电路调试接口(ICDI)
10.3DY-Tiva-PB扩展板简介
10.3.1DY-Tiva-PB硬件规格
10.3.2DY-Tiva-PB功能单元介绍
10.3.3DY-Tiva-PB实验目录
思考题与习题
附录TivaWare库函数清单
参考文献