汽车电子S32K系列微控制器 基于ARM Cortex-M4F内核
作者: 王宜怀,邵长星,黄熙著
出版时间: 2018年版
内容简介
本书基于恩智浦(NXP)公司于2017年推出的面向汽车电子的S32K系列微控制器,以构件化底层驱动为基础阐述S32K系列微控制器应用程序的设计方法,内容涉及汽车电子技术基础,S32K系列微控制器的基本特性,ARM Cortex-M4F的相关知识,底层驱动构件设计规范,以及S32K系列微控制器的Systick、PDB、LPIT、LTMR、RTC、FTM、Flash、ADC、CMP、SPI、I2C、DMA、CAN等模块的程序设计方法。
目录
第1章 概述\t(1)
1.1 汽车电子技术的基本概念\t(1)
1.2 我国汽车电子发展概况\t(2)
1.3 恩智浦公司在汽车电子市场中的地位\t(3)
1.4 面向汽车电子的S32K系列微控制器简介\t(3)
1.4.1 S32K系列微控制器的型号标识\t(4)
1.4.2 S32K系列微控制器的简明特性与结构框图\t(4)
1.4.3 S32K系列微控制器的共性资源列表\t(6)
第2章 ARM Cortex-M4F微控制器\t(7)
2.1 ARM Cortex-M4F微控制器简介\t(7)
2.1.1 ARM Cortex-M4F微控制器内部结构概要\t(8)
2.1.2 ARM Cortex-M4F微控制器存储器映像\t(10)
2.1.3 ARM Cortex-M4F微控制器的寄存器\t(10)
2.2 指令系统\t(14)
2.2.1 指令简表与寻址方式\t(15)
2.2.2 数据传送类指令\t(16)
2.2.3 数据操作类指令\t(18)
2.2.4 跳转控制类指令\t(21)
2.2.5 其他指令\t(22)
2.3 指令集与机器码对应表\t(23)
2.4 GNU汇编语言的基本语法\t(25)
2.4.1 ARM-GUN汇编语言格式\t(26)
2.4.2 常用伪指令简介\t(27)
第3章 存储映像、中断源与硬件最小系统\t(30)
3.1 S32K144存储映像与中断源\t(30)
3.1.1 S32K144存储映像\t(30)
3.1.2 S32K144中断源\t(32)
3.2 S32K144的引脚功能\t(35)
3.3.1 硬件最小系统引脚\t(36)
3.2.2 I/O端口资源类引脚\t(36)
3.3 S32K144硬件最小系统原理图\t(37)
3.3.1 电源及其滤波电路\t(37)
3.3.2 复位电路及复位功能\t(37)
3.3.3 晶振电路\t(38)
3.3.4 SWD接口电路\t(38)
第4章 GPIO及程序框架\t(39)
4.1 通用I/O接口的基本概念及连接方法\t(39)
4.1.1 I/O接口的概念\t(39)
4.1.2 通用I/O\t(40)
4.1.3 上拉/下拉电阻与输入引脚的基本接法\t(40)
4.1.4 输出引脚的基本接法\t(41)
4.2 端口控制模块与GPIO模块的编程结构\t(41)
4.2.1 端口控制模块――决定引脚复用功能\t(41)
4.2.2 GPIO模块的对外引脚与内部寄存器\t(44)
4.2.3 GPIO基本编程步骤与基本打通程序\t(45)
4.3 GPIO驱动构件封装方法与规范\t(46)
4.3.1 设计GPIO驱动构件的必要性及GPIO驱动构件封装要点分析\t(46)
4.3.2 底层驱动构件封装规范概要与构件封装的前期准备\t(48)
4.3.3 S32K144的GPIO驱动构件源码及解析\t(49)
4.4 利用构件方法控制LED闪烁\t(60)
4.4.1 light构件设计\t(60)
4.4.2 light构件测试工程主程序\t(63)
4.5 工程文件组织框架与第一个C语言工程分析\t(65)
4.5.1 工程框架及所含文件简介\t(66)
4.5.2 链接文件常用语法及链接文件解析\t(67)
4.5.3 机器码文件解析\t(71)
4.5.4 芯片上电启动运行过程解析\t(72)
4.6 第一个汇编语言工程:控制小灯闪烁\t(75)
4.6.1 汇编工程文件的组织\t(76)
4.6.2 汇编语言GPIO驱动构件及使用方法\t(76)
4.6.3 汇编语言Light构件及使用方法\t(82)
4.6.4 汇编语言Light构件测试工程主程序及汇编工程运行过程\t(84)
第5章 嵌入式硬件构件与底层驱动构件基本规范\t(86)
5.1 嵌入式硬件构件\t(86)
5.1.1 嵌入式硬件构件的概念及其分类\t(87)
5.1.2 基于嵌入式硬件构件的电路原理图设计简明规则\t(87)
5.2 嵌入式底层驱动构件的概念与层次模型\t(90)
5.2.1 嵌入式底层驱动构件的概念\t(90)
5.2.2 嵌入式硬件构件和软件构件的层次模型\t(91)
5.3 底层驱动构件的封装规范\t(91)
5.3.1 构件设计的基本思想与基本原则\t(92)
5.3.2 编码风格基本规范\t(93)
5.3.3 构件公共要素文件\t(96)
5.3.4 头文件的设计规范\t(98)
5.3.5 源文件的设计规范\t(99)
5.4 硬件构件及底层软件构件的重用与移植方法\t(100)
5.4.1 硬件构件在实际系统中的应用\t(100)
5.4.2 底层驱动构件的移植\t(101)
第6章 串行通信模块及第一个中断程序结构\t(103)
6.1 异步串行通信的通用基础知识\t(103)
6.1.1 串行通信的基本概念\t(104)
6.1.2 RS-232总线标准\t(105)
6.1.3 TTL电平到RS-232电平转换电路\t(106)
6.1.4 串行通信编程模型\t(107)
6.2 UART驱动构件及使用方法\t(108)
6.2.1 UART引脚分析\t(108)
6.2.2 UART驱动构件基本要素分析与头文件\t(109)
6.2.3 printf的设置方法与使用\t(113)
6.3 ARM Cortex-M4F中断机制及S32K144中断编程\t(113)
6.3.1 关于中断的通用基础知识\t(113)
6.3.2 ARM Cortex-M4F非内核中断编程结构\t(115)
6.3.3 S32K144中断编程步骤(以串口接收中断为例)\t(116)
6.4 UART驱动构件的设计方法\t(118)
6.4.1 UART模块编程结构\t(118)
6.4.2 UART驱动构件源文件\t(123)
第7章 Timer模块\t(132)
7.1 ARM Cortex-M4F内核定时器(Systick)\t(132)
7.1.1 Systick定时器模块的编程结构\t(133)
7.1.2 Systick驱动构件设计及测试工程\t(134)
7.2 延时定时器(PDB)模块\t(136)
7.2.1 PDB模块功能概述\t(136)
7.2.2 PDB驱动构件及使用方法\t(136)
7.2.3 PDB驱动构件的设计\t(139)
7.3 低功耗中断定时器(LPIT)模块\t(143)
7.3.1 LPIT模块功能概述\t(143)
7.3.2 LPIT驱动构件及使用方法\t(143)
7.3.3 LPIT驱动构件设计\t(145)
7.4 低功耗定时器(LPTMR)模块\t(150)
7.4.1 LPTMR模块功能概述\t(150)
7.4.2 LPTMR驱动构件及使用方法\t(150)
7.4.3 LPTMR驱动构件的设计\t(152)
7.5 实时时钟(RTC)模块\t(155)
7.5.1 RTC模块功能概述\t(155)
7.5.2 RTC驱动构件及使用方法\t(156)
7.5.3 RTC驱动构件的设计\t(160)
第8章 PWM模块和FTM模块\t(169)
8.1 脉宽调制、输入捕捉与输出比较的通用基础知识\t(169)
8.1.1 PWM的通用基础知识\t(169)
8.1.2 输入捕捉与输出比较的通用基础知识\t(172)
8.2 FTM模块的基本知识\t(172)
8.2.1 FTM模块概述\t(172)
8.2.2 FTM模块的技术要点\t(173)
8.3 FTM驱动构件及使用方法\t(174)
8.3.1 FTM模块的脉宽调制、输入捕捉和输出比较的外部引脚\t(174)
8.3.2 FTM驱动构件头文件及使用方法\t(175)
8.4 FTM驱动构件的设计\t(183)
8.4.1 FTM模块编程结构\t(183)
8.4.2 FTM驱动构件设计\t(187)
第9章 Flash模块\t(196)
9.1 Flash存储器的基础知识\t(196)
9.1.1 Flash存储器的特性\t(196)
9.1.2 Flash存储器的编程模式\t(197)
9.1.3 Flash存储器的基本操作\t(197)
9.2 Flash驱动构件及其使用方法\t(197)
9.2.1 Flash驱动构件头文件解析\t(197)
9.2.2 Flash驱动构件的使用方法\t(200)
9.3 Flash保护\t(201)
9.3.1 Flash模块保护的含义及保护函数的使用说明\t(201)
9.3.2 Flash模块加密方法与去除密码方法\t(202)
9.4 Flash驱动构件的设计\t(203)
9.4.1 Flash模块编程结构\t(203)
9.4.2 Flash驱动构件设计技术要点\t(207)
9.4.3 Flash驱动构件封装要点分析\t(209)
9.4.4 Flash驱动构件的源文件(flash.c)\t(210)
第10章 ADC模块与CMP模块\t(218)
10.1 模/数转换器(ADC)模块\t(218)
10.1.1 ADC模块的通用基础知识\t(218)
10.1.2 ADC模块驱动构件及使用方法\t(221)
10.1.3 ADC驱动构件的设计\t(225)
10.2 比较器(CMP)模块\t(233)
10.2.1 CMP模块的通用基础知识\t(233)
10.2.2 CMP驱动构件及使用方法\t(234)
10.2.3 CMP驱动构件的设计\t(238)
第11章 SPI模块与I2C模块\t(244)
11.1 串行外设接口(SPI)模块\t(244)
11.1.1 SPI模块的通用基础知识\t(244)
11.1.2 SPI驱动构件及使用方法\t(247)
11.1.3 SPI驱动构件的设计\t(252)
11.2 集成电路互连(I2C)总线模块\t(262)
11.2.1 I2C模块的通用基础知识\t(262)
11.2.2 I2C驱动构件及使用方法\t(267)
11.2.3 I2C驱动构件的设计\t(273)
第12章 DMA模块\t(291)
12.1 DMA模块通用基础知识\t(291)
12.1.1 DMA模块的基本概念\t(291)
12.2.1 DMA模块的基本操作\t(292)
12.2 DMA驱动构件及其使用方法\t(293)
12.2.1 DMA源\t(293)
12.2.2 DMA驱动构件封装要点\t(294)
12.2.3 DMA驱动构件头文件(dma.h)\t(295)
12.2.4 DMA驱动构件的使用方法\t(299)
12.2.5 DMA驱动构件测试实例\t(299)
12.3 DMA驱动构件的设计\t(300)
12.3.1 DMA模块编程结构\t(300)
12.3.2 DMA驱动构件源程序\t(309)
第13章 FlexCAN模块\t(314)
13.1 CAN总线的基础知识\t(314)
13.1.1 CAN总线协议的历史概况\t(314)
13.1.2 CAN总线硬件系统的典型电路\t(315)
13.1.3 CAN总线协议的基本概念\t(317)
13.1.4 CAN总线规范的帧结构\t(319)
13.1.5 CAN总线的位时间\t(323)
13.1.6 FlexCAN模块的操作模式\t(324)
13.1.7 FlexCAN模块的仲裁处理、匹配处理及报文缓冲区管理\t(325)
13.2 FlexCAN驱动构件及使用方法\t(326)
13.2.1 FlexCAN驱动构件头文件的解析\t(326)
13.2.2 FlexCAN驱动构件的头文件\t(327)
13.2.3 FlexCAN驱动构件的使用方法\t(330)
13.2.4 FlexCAN驱动构件的测试实例\t(331)
13.3 FlexCAN驱动构件的设计\t(331)
13.3.1 FlexCAN模块编程结构\t(331)
13.3.2 FlexCAN驱动构件的源程序\t(353)
第14章 系统时钟与其他功能模块\t(361)
14.1 时钟系统模块\t(361)
14.1.1 时钟系统概述\t(361)
14.1.2 时钟模块概要与编程要点\t(364)
14.2 电源模块\t(365)
14.2.1 电源模式控制\t(365)
14.2.2 电源模式转换\t(365)
14.3 校验模块\t(366)
14.3.1 CRC模块简介\t(367)
14.3.2 CRC校验和的生成步骤\t(367)
14.3.3 CRC模块的主要寄存器\t(367)
14.4 看门狗模块\t(368)
14.5 复位模块\t(369)
14.5.1 上电复位(POR)\t(369)
14.5.2 系统复位源\t(370)
14.5.3 调试复位\t(371)
附录A S32K144芯片引脚复用功能\t(372)
附录B 最小硬件系统原理图\t(376)
附录C printf的常用格式\t(377)
附录D S32DS集成开发环境简明使用方法\t(380)
附录E SWD-Programmer快速指南\t(384)
附录F 术语和缩写\t(386)
参考文献\t(388)