第1章 概述 1
1.1 汽车电子技术的基本概念 1
1.2 中国汽车电子发展概况 2
1.3 飞思卡尔在汽车电子市场中的地位 2
1.4 面向汽车电子的微控制器KEA系列MCU简介 3
第2章 ARM Cortex-M0+处理器 7
2.1 ARM Cortex-M0+处理器简介 7
2.1.1 ARM Cortex-M0+处理器特点与结构图 8
2.1.2 ARM Cortex-M0+处理器存储器映像 9
2.1.3 ARM Cortex-M0+处理器的寄存器 10
2.2 ARM Cortex-M0+处理器的指令系统 13
2.2.1 ARM Cortex-M0+指令简表与寻址方式 13
2.2.2 数据传送类指令 14
2.2.3 数据操作类指令 16
2.2.4 跳转控制类指令 19
2.2.5 其他指令 20
2.3 ARM Cortex-M0+指令集与机器码对应表 21
2.4 GNU汇编语言的基本语法 23
2.4.1 汇编语言格式 23
2.4.2 伪指令 25
第3章 KEA128存储映像、中断与硬件最小系统 29
3.1 KEA128系列存储映像 29
3.1.1 Flash区存储映像 30
3.1.2 片内RAM区存储映像 30
3.1.3 外设区存储映像 30
3.1.4 私有外设总线存储映像 31
3.1.5 系统保留段存储映像 31
3.2 KEA128中断系统及Cortex-M0+非内核模块中断编程结构 31
3.2.1 KEA128的中断源 31
3.2.2 KEA128中断向量表 32
3.2.3 Cortex-M0+非内核模块中断编程结构 36
3.3 KEA128的引脚功能 38
3.3.1 硬件最小系统引脚 39
3.3.2 I/O端口资源类引脚 39
3.4 KEA128硬件最小系统原理图 40
3.4.1 电源及其滤波电路 40
3.4.2 复位电路及复位功能 40
3.4.3 SWD接口电路 41
3.4.4 晶振电路 41
第4章 GPIO及程序框架 43
4.1 KEA128芯片GPIO驱动构件及使用方法 43
4.1.1 KEA128芯片GPIO引脚 44
4.1.2 KEA128芯片GPIO驱动构件头文件及使用方法 45
4.2 GPIO驱动构件的制作方法 47
4.2.1 端口控制模块功能与编程结构 47
4.2.2 GPIO模块的编程结构 50
4.2.3 GPIO基本打通程序 51
4.2.4 GPIO驱动构件封装要点分析 51
4.2.5 GPIO驱动构件的实现 53
4.3 第一个C语言工程:控制小灯闪烁 59
4.4 工程框架与第一个C语言工程执行过程分析 63
4.4.1 工程框架 63
4.4.2 链接文件 64
4.4.3 机器码文件 65
4.4.4 其他相关文件功能简介 67
4.4.5 芯片上电启动执行过程 68
4.5 第一个汇编语言工程:控制小灯闪烁 72
4.5.1 汇编工程文件的组织 72
4.5.2 Light构件汇编程序light.s 73
4.5.3 Light测试工程主程序及汇编工程执行过程 74
第5章 嵌入式硬件构件与底层驱动构件基本规范 77
5.1 嵌入式硬件构件 77
5.1.1 嵌入式硬件构件的概念 77
5.1.2 基于嵌入式硬件构件的电路原理图设计简明规则 78
5.2 嵌入式底层驱动构件的概念与层次模型 80
5.2.1 嵌入式底层驱动构件的概念 81
5.2.2 嵌入式硬件构件和软件构件的层次模型 81
5.3 底层驱动构件的封装规范 82
5.3.1 构件设计的基本思想与基本原则 82
5.3.2 编码风格基本规范 84
5.3.3 公共要素文件 87
5.3.4 头文件的设计规范 89
5.3.5 源程序文件的设计规范 90
5.4 硬件构件及底层软件构件的重用与移植方法 91
第6章 串行通信模块及第一个中断程序结构 95
6.1 KEA128芯片UART驱动构件及使用方法 95
6.1.1 UART的基础知识要素 95
6.1.2 UART驱动构件封装要点分析 96
6.1.3 KEA128芯片UART引脚 97
6.1.4 KEA128芯片UART驱动构件头文件及使用方法 98
6.2 UART接收中断程序实例 101
6.2.1 KEA128的中断服务程序及其“注册” 101
6.2.2 UART接收中断程序实例 103
6.2.3 printf的设置方法与使用 107
6.3 UART驱动构件的制作方法 107
6.3.1 UART模块编程结构 107
6.3.3 UART驱动构件的实现 111
第7章 Systick、RTC、PWT及PIT 117
7.1 ARM Cortex-M0+内核时钟(Systick) 117
7.1.1 Systick模块的编程结构 117
7.1.2 Systick构件设计及测试实例 118
7.2 实时时钟模块(RTC) 120
7.2.1 RTC模块概述与编程要点 120
7.2.2 RTC构件设计及测试实例 122
7.3 脉冲宽度定时器(PWT) 125
7.3.1 PWT模块概述与编程要点 125
7.3.2 PWT构件设计及测试实例 127
7.4 周期性中断定时器(PIT) 131
7.4.1 PIT模块概述与编程要点 131
7.4.2 PIT构件设计及测试实例 133
第8章 Flex定时器FTM 137
8.1 FTM基本知识 137
8.1.1 FTM概述 137
8.1.2 FTM技术要点 137
8.1.3 FTM寄存器总览 138
8.2 FTM基本定时的编程结构与测试实例 140
8.2.1 FTM基本定时的编程结构 140
8.2.2 FTM基本定时构件与测试实例 142
8.3 FTM模块的脉宽调制(PWM)功能 147
8.3.1 脉宽调试器PWM基本工作原理 147
8.3.2 KEA 128的三种PWM模式 148
8.3.3 FTM引脚复用 149
8.3.4 PWM构件与测试实例 150
8.4 FTM模块的输出比较功能 159
8.4.1 输出比较的基本知识 159
8.4.2 输出比较构件与测试实例 160
8.5 FTM模块的输入捕捉功能 168
8.5.1 输入捕捉基本含义 168
8.5.2 输入捕捉中断构件与测试实例 169
第9章 Flash在线编程 179
9.1 KEA128芯片Flash驱动构件及使用方法 179
9.1.1 Flash编程知识要素 179
9.1.2 KEA128芯片Flash构件头文件及使用方法 180
9.2 Flash驱动构件的制作方法 183
9.2.1 Flash模块编程结构 183
9.2.2 Flash驱动构件制作要点 186
9.3 Flash驱动构件封装要点分析及实现 189
9.3.1 Flash驱动构件封装要点 189
9.3.2 Flash驱动构件的实现 190
9.4 Flash模块的保护与加密 203
9.4.1 Flash模块的保护 203
9.4.2 Flash模块的安全 206
第10章 ADC与ACMP模块 207
10.1 KEA128芯片ADC驱动构件及使用方法 207
10.1.1 ADC编程知识要素 207
10.1.2 KEA128芯片的ADC引脚与通道号 208
10.1.3 KEA128芯片ADC构件头文件及使用方法 209
10.2 ADC构件的制作方法 210
10.2.1 ADC转换模块编程结构 211
10.2.2 ADC构件封装要点和函数分析 215
10.2.3 ADC驱动构件的实现 215
10.3 KEA128芯片ACMP驱动构件及使用方法 220
10.3.1 ACMP编程知识要素 220
10.3.2 ACMP引脚的标识 220
10.3.3 KEA128芯片ACMP构件头文件及使用方法 220
10.4 ACMP构件的制作方法 222
10.4.1 ACMP模块编程结构 222
10.4.2 ACMP构件封装要点和函数分析 224
10.4.3 ACMP驱动构件的实现 224
第11章 SPI与I2C模块 231
11.1 SPI模块 231
11.1.1 SPI编程知识要素 231
11.1.2 KEA128芯片SPI引脚 232
11.1.3 KEA128芯片SPI构件头文件及使用方法 233
11.1.4 SPI主从机通信实例 236
11.1.5 SPI构件的制作方法 239
11.2 I2C模块 247
11.2.1 I2C编程知识要素 247
11.2.2 KEA128芯片I2C引脚的标识 249
11.2.3 KEA128芯片I2C构件头文件及使用方法 250
11.2.4 I2C主从机通信实例 254
11.2.5 I2C构件的制作方法 257
第12章 KEA128的MSCAN总线开发方法 269
12.1 CAN总线通用知识 269
12.1.1 CAN硬件系统的原理性电路 269
12.1.2 CAN总线的有关基本概念 270
12.2 MSCAN驱动构件及使用方法 271
12.2.1 KEA128芯片MSCAN编程知识要素 272
12.2.2 MSCAN构件头文件及使用方法 274
12.3 MSCAN驱动构件制作方法 277
12.3.1 MSCAN寄存器简介 277
12.3.2 MSCAN构件封装要点分析 282
12.4 MSCAN驱动构件的设计 283
12.4.1 MSCAN初始化 283
12.4.2 MSCAN发送数据包函数 286
12.4.3 MSCAN接收数据包函数 288
第13章 系统时钟与其他功能模块 291
13.1 时钟系统 291
13.1.1 时钟系统概述 291
13.1.2 时钟模块概要与编程要点 293
13.1.3 时钟模块测试实例 293
13.2 复位模块 294
13.2.1 上电复位 295
13.2.2 系统复位源 295
13.2.3 调试复位 296
13.3 看门狗 297
13.3.1 功能描述 297
13.3.2 配置wDOG 297
13.3.3 测试实例 298
13.4 电源模式与芯片配置 298
13.4.1 电源模式控制 298
13.4.2 低功耗下的模块操作 298
13.4.3 芯片配置模块 298
13.5 循环冗余检查、杂项控制模块与交叉开关 299
13.5.1 循环冗余检查 299
13.5.2 杂项控制模块 299
13.5.3 交叉开关 299
第14章 KEA128在实时操作系统MQX-Lite下的应用 301
14.1 MQX-Lite简介 301
14.2 MQX-Lite编程知识要素 302
14.2.1 任务管理与调度 302
14.2.2 任务间同步与通信 303
14.2.3 中断处理机制 304
14.3 基于MQX-Lite的KEA 128工程框架 306
14.4 KEA128在MQX-Lite下的第一个样例工程 307
14.4.1 样例工程的功能 307
14.4.2 样例工程任务设计 307
14.4.3 样例工程的执行流程及运行结果 314
第15章 基于KEA的无刷直流电机的汽车应用 317
15.1 无刷直流电机在汽车上的应用现状和发展趋势 317
15.2 无刷直流电机在KEA 128-BLDCRD板上的操作指南 317
15.2.1 软硬件的准备 317
15.2.2 操作流程 318
15.3 无刷直流电机驱动的基本原理及无传感器控制 319
15.3.1 换向控制 320
15.3.2 转速转矩控制 321
15.3.3 互补型极性PWM调制技术 321
15.3.4 基于反电动过零的位置估计 322
15.3.5 无传感器BLDC的启动 326
15.4 基于KEA的车用无刷直流电机应用实例——车用冷却风扇 327
15.4.1 方案简介 327
15.4.2 硬件结构 327
15.4.3 电气指标 329
15.4.4 软件实现 329
15.4.5 开发中的相关工具 331
15.4.6 方案总结 334
15.5 关于车用BLDC的展望 334
第16章 有关问题的进一步讨论 335
16.1 位带技术及应用方法 335
16.1.1 位带别名区概述 335
16.1.2 位带别名区的应用机制解析 335
16.1.3 位带别名区使用注意点 337
16.2 位操作引擎技术及应用方法 338
16.2.1 位操作引擎概述 338
16.2.2 位操作引擎的应用机制解析 339
16.2.3 位操作引擎对GPIO部分的使用说明 341
16.2.4 位操作引擎使用注意点 342
16.2.5 测试实例 342
16.3 EMC问题的探讨 342
16.3.1 简介 342
16.3.2 硬件设计 342
16.3.3 软件设计 344
16.4 基于CAN接口及Bootloader的程序更新方法 345
16.4.1 概述 345
16.4.2 操作指南 345
16.4.3 地址空间分布 347
16.4.4 CAN Bootloader软件流程 347
16.5 AUTOSAR简介 348
16.5.1 概述 348
16.5.2 AUTOSAR软件架构 348
16.5.3 飞思卡尔与AUTOSAR 349
16.5.4 AUTOSAR相关问题 349
附录A SKEAZ128MLK引脚功能分配 350
附录B KEA128最小系统 352
附录C printf格式化输出 353
参考文献 355