第1章 嵌入式系统入门导引 1
1.1 嵌入式系统的含义与发展历史 1
1.1.1 嵌入式系统与单片机 1
1.1.2 MCU的发展简史 3
1.2 嵌入式系统常用术语 4
1.2.1 与硬件相关的术语 5
1.2.2 与通信相关的术语 6
1.2.3 与功能模块相关的术语 7
1.2.4 与嵌入式软件相关的术语 8
1.3 嵌入式系统开发方法导引 8
1.3.1 嵌入式产品的一般构成 9
1.3.2 嵌入式产品的一般开发方法 10
1.4 嵌入式系统的特点与学习建议 13
1.4.1 嵌入式系统的特点 13
1.4.2 嵌入式系统的学习建议 14
练习题 16
第2章 HCS12/HCS12X系列MCU简介与MC9S12DG128的最小系统 17
2.1 HCS12系列MCU概述 17
2.1.1 HCS12系列MCU的命名规则 17
2.1.2 HCS12各子系列MCU简介 18
2.2 HCS12X系列MCU概述 20
2.2.1 HCS12X系列MCU与HCS12系列MCU的主要差异 20
2.2.2 典型HCS12X系列MCU简介 22
2.2.3 HCS12X系列MCU中的新增模块简介 23
2.3 MC9S12DG128 MCU及其最小系统 23
2.3.1 MCU性能概述 24
2.3.2 运行模式 24
2.3.3 内部结构简图、引脚图及引脚功能 25
2.3.4 MC9S12DG128 MCU的最小系统设计 30
2.4 MC9S12DG128的存储器映像 33
2.5 MC9S12DG128 MCU的并行I/O接口 35
2.5.1 I/O接口的基本概念 35
2.5.2 A 口、B 口、E口和K 口 36
2.5.3 H 口、J口、M口、P 口、S口和T口 37
2.5.4 其他I/O口 41
练习题 41
第3章 CPU12核 42
3.1 CPU12基本构成 42
3.2 寻址方式 45
3.3 指令系统 48
3.3.1 数据传送类指令 50
3.3.2 算术运算类指令 53
3.3.3 位操作类指令 60
3.3.4 移位类指令 61
3.3.5 程序控制类指令 64
3.3.6 模糊指令 66
3.3.7 其他指令 67
3.4 CPU12与CPU08的比较 70
3.5 CPU12汇编语言基础 71
3.5.1 HCS12汇编源代码格式 71
3.5.2 MT-IDE for HCS12开发环境中的汇编伪指令 73
3.5.3 CodeWarrior for HCS12开发环境中的汇编伪指令 75
练习题 77
第4章 HCS12工程组织及第一个样例程序 78
4.1 HCS12开发环境 78
4.1.1 MT-IDE for HCS12集成开发环境 78
4.1.2 CodeWarrior for HCS12集成开发环境 80
4.2 嵌入式系统工程文件 81
4.2.1 嵌入式系统工程文件组织 81
4.2.2 列表文件(*.lis或*.lst) 83
4.2.3 目标代码文件(*.s19文件) 83
4.2.4 与链接相关的地址信息文件 85
4.3 MT环境下的第一个汇编工程 86
4.3.1 小灯闪烁汇编工程在MT环境下的文件组织 86
4.3.2 MT环境下第一个汇编工程的链接信息文件 93
4.3.3 MT环境下第一个汇编工程的执行过程 95
4.4 MT环境下的第一个C工程 95
4.4.1 小灯闪烁C工程在MT环境下的文件组织 95
4.4.2 MT环境下第一个C工程的链接信息文件 97
4.4.3 MT环境下第一个C工程的执行过程 99
4.5 CW环境下的第一个汇编工程 100
4.5.1 小灯闪烁汇编工程在CW环境下的文件组织 100
4.5.2 CW环境下第一个汇编工程中的链接信息文件 101
4.5.3 CW环境下第一个汇编工程的执行过程 102
4.6 CW环境下的第一个C工程 103
4.6.1 小灯闪烁C工程在CW环境下的文件组织 103
4.6.2 CW环境下第一个C工程中的链接信息文件 104
4.6.3 CW环境下第一个C工程的执行过程 104
4.7 MT环境与CW环境的工程互移说明 104
练习题 105
第5章 串行通信接口SCI 106
5.1 异步串行通信的基础知识 106
5.1.1 基本概念 106
5.1.2 RS-232C总线标准 108
5.2 电平转换电路与SCI通用编程原理 109
5.2.1 SCI的外围硬件电路 110
5.2.2 SCI的基本编程原理 111
5.3 DG128 SCI模块寄存器 112
5.3.1 SCI波特率寄存器 113
5.3.2 SCI控制寄存器1 113
5.3.3 SCI控制寄存器2 114
5.3.4 SCI状态寄存器1 115
5.3.5 SCI状态寄存器2 116
5.3.6 SCI数据寄存器 116
5.4 串行口初始化与收发编程的基本方法 117
5.4.1 SCI初始化 117
5.4.2 发送一个数据与接收一个数据 118
5.5 串行通信通用函数与测试实例 119
5.5.1 串行通信子函数 119
5.5.2 查询方式收发测试工程 122
5.6 有关串行通信编程的进一步讨论 127
5.6.1 将串口端用作电源 127
5.6.2 握手 128
5.6.3 唤醒功能 128
练习题 129
第6章 键盘、LED与LCD 130
6.1 DG128键盘技术概述 130
6.1.1 键盘模型及接口 130
6.1.2 键盘的基本问题 132
6.2 HCS12 C语言键盘模块编程实例 133
6.2.1 键盘函数定义头函数(KB.h) 134
6.2.2 键盘函数定义(KB.c) 134
6.2.3 测试工程的主函数(main.c) 137
6.3 数码管编程实例 138
6.3.1 扫描法LED显示编程原理 138
6.3.2 接口实例 140
6.3.3 数码管HCS12 C语言实例 141
6.4 LCD技术概述 144
6.4.1 LCD的特点 144
6.4.2 LCD的分类 145
6.5 点阵字符型LCD的接口特性 146
6.5.1 点阵字符型液晶显示模块的基本特点 146
6.5.2 HD44780的引脚与时序 146
6.5.3 HD44780的编程结构 148
6.5.4 HD44780的指令集 151
6.6 点阵字符型LCD编程实例 152
6.6.1 LCD函数定义头文件(LCD.h) 153
6.6.2 LCD函数定义(LCD.c) 153
6.6.3 测试工程的主函数(main.c) 157
练习题 158
第7章 SPI和I2C模块及其应用实例 159
7.1 SPI的基本工作原理 159
7.1.1 功能描述 159
7.1.2 SPI模块的I/O引脚 160
7.2 SPI模块的编程基础 161
7.2.1 SPI模块的寄存器 161
7.2.2 SPI编程基本方法 165
7.3 SPI的进一步讨论 167
7.4 I2C模块 167
7.4.1 I2C总线的特点 168
7.4.2 I2C总线标准的发展历史 168
7.4.3 I2C总线的相关术语 169
7.5 I2C总线工作原理 169
7.5.1 I2C总线上的数据有效性 170
7.5.2 I2C总线上的信号 170
7.5.3 I2C总线上的数据传输格式 172
7.5.4 I2C总线上的寻址约定 172
7.5.5 主机向从机读/写1字节数据的过程 173
7.6 I2C模块的编程基础 174
7.6.1 DG128芯片的I2C模块 174
7.6.2 I2C模块寄存器介绍 174
7.6.3 I2C模块编程 180
7.7 I2C模块的进一步讨论 186
7.7.1 仲裁程序 186
7.7.2 时钟同步 186
7.7.3 握手 186
7.7.4 时钟周期延长 187
练习题 187
第8章 A/D转换和D/A转换 188
8.1 A/D和D/A转换的基本问题 188
8.1.1 A/D转换基本问题 189
8.1.2 A/D转换器 189
8.1.3 D/A转换基本问题 190
8.1.4 D/A转换器 191
8.2 DG128内部的A/D转换模块 192
8.2.1 DG128内部A/D转换模块寄存器 193
8.2.2 A/D转换模块的基本编程方法 200
8.3 DG128内部A/D转换编程实例 202
8.3.1 A/D转换的C语言头函数(ADC.h) 202
8.3.2 A/D转换的C语言子函数(ADC.c) 202
8.3.3 A/D转换测试实例主函数(main.c) 205
8.4 高位A/D扩展接口 206
8.4.1 A/D转换器TLC2543概述 206
8.4.2 SPI模块与TLC2543的接口扩展 208
8.5 扩展实现D/A转换 212
8.5.1 D/A转换器TLV5608概述 212
8.5.2 SPI模块与TLV5608的接口实现 213
8.5.3 扩展D/A转换的程序实现 214
8.6 常用传感器 216
8.6.1 热敏电阻温度传感器 216
8.6.2 灰度传感器 217
8.6.3 超声波传感器 218
8.6.4 红外线传感器 218
练习题 219
第9章 定时器接口模块 220
9.1 计数器/定时器的基本工作原理 220
9.1.1 实现计数与定时的基本方法 220
9.1.2 MC9S12DG128BMCU的定时接口基本原理概述 221
9.2 定时器模块的编程基础 224
9.2.1 定时器模块的3类基本寄存器 224
9.2.2 定时器模块的中断 226
9.2.3 定时溢出中断编程C语言程序实例(MCU方程序) 226
9.3 定时器模块的输入捕捉功能 228
9.3.1 输入捕捉的基本含义 228
9.3.2 输入捕捉寄存器 229
9.3.3 带缓冲和不带缓冲的输入捕捉通道 234
9.3.4 输入捕捉中断编程C语言程序实例 235
9.4 定时器模块的输出比较功能 236
9.4.1 输出比较的基本含义 236
9.4.2 输出比较寄存器 237
9.5 定时器模块的脉冲累加功能 240
9.5.1 脉冲累加的基本含义 240
9.5.2 脉冲累加寄存器 240
9.5.3 脉冲累加器编程C语言程序实例(MCU方程序) 246
练习题 248
第10章 CAN总线及其应用 249
10.1 CAN技术规范 249
10.1.1 CAN的基本概念 249
10.1.2 CAN的分层结构 252
10.1.3 报文传输和帧结构 252
10.1.4 位定时与同步 256
10.2 MSCAN12模块简介 257
10.2.1 MSCAN12特性 258
10.2.2 外部引脚 258
10.2.3 报文存储结构 258
10.2.4 标识符验收滤波 260
10.3 MSCAN12模块的内存映射及寄存器定义 263
10.3.1 MSCAN12模块内存映射 263
10.3.2 MSCAN12模块寄存器 264
10.4 MSCAN12模块的自环通信实例 276
10.4.1 MSCAN12初始化 276
10.4.2 MSCAN12自环通信方式测试工程 282
练习题 286
第11章 Flash存储器的在线编程 287
11.1 Flash存储器概述 287
11.2 Flash存储器分页机制 288
11.3 DG128 Flash存储器编程方法 290
11.3.1 DG128 Flash模块寄存器 290
11.3.2 DG128 Flash存储器擦除与写入的步骤 293
11.4 DG128 Flash擦/写函数的测试工程 297
11.4.1 Flash测试工程的主函数及有关技术分析 297
11.4.2 Flash测试工程的结构 299
11.5 DG128 Flash存储器的保护特性和安全性 300
11.5.1 DG128 Flash存储器的保护特性 300
11.5.2 DG128 Flash存储器的安全性 302
11.6 S12系列MCU的Flash存储器编程 306
11.6.1 几款常用S12 MCU存储空间分配情况的对比 306
11.6.2 几款常用S12 MCU Flash存储器的编程要点 306
练习题 307
第12章 系统时钟与其他功能模块 308
12.1 时钟和复位产生模块概述 308
12.1.1 锁相环技术 308
12.1.2 CRG模块的结构框图 310
12.2 CRG模块的编程方法 311
12.2.1 CRG模块寄存器 311
12.2.2 PLL编程实例 315
12.3 CRG模块的其他功能 317
12.3.1 工作模式 317
12.3.2 CRG的复位信号产生功能 318
12.3.3 中断 319
12.4 HCS12系列非常用特殊功能模块 320
练习题 321
第13章 μC/OS-Ⅱ在S12上的移植与应用 322
13.1 实时操作系统概述 322
13.1.1 实时操作系统基本含义和要求 322
13.1.2 任务和多任务 323
13.1.3 RTOS的常用术语 323
13.1.4 RTOS的现状 325
13.2 嵌入式实时操作系统μC/OS-Ⅱ 326
13.2.1 μC/OS-Ⅱ简介 326
13.2.2 μC/OS-Ⅱ与几种RTOS的比较 327
13.2.3 μC/OS-Ⅱ中的任务 328
13.2.4 μC/OS-Ⅱ用户应用程序的一般结构 329
13.3 μC/OS-Ⅱ的任务划分 330
13.3.1 任务划分的目标 331
13.3.2 任务划分的方法 331
13.4 μC/OS-Ⅱ在MC9S12DG128上的应用实例 333
13.4.1 基于μC/OS-Ⅱ的应用实例 333
13.4.2 基于RTOS的与无RTOS实例的比较 337
13.5 μC/OS-Ⅱ在MC9S12DG128上的移植 337
13.5.1 定义内核的大小和功能 338
13.5.2 与硬件相关的代码 340
练习题 344
第14章 基于UF32的USB 2.0应用 345
14.1 USB接口的基本知识 345
14.1.1 USB概述 345
14.1.2 USB 1.1与USB 2.0之间的差别 346
14.1.3 USB主机 347
14.1.4 USB设备 348
14.2 USB物理特性 350
14.2.1 USB接口 350
14.2.2 USB信号 351
14.2.3 检测设备连接与速度 353
14.3 USB的通信协议 353
14.3.1 包 354
14.3.2 信息包格式 356
14.3.3 事务 357
14.3.4 USB传输类型 359
14.3.5 设备列举 361
14.4 MC9S12UF32芯片介绍 365
14.4.1 MC9S12UF32概述 365
14.4.2 UF32 USB模块介绍 367
14.5 USB 2.0模块编程方法 368
14.5.1 USB 2.0模块寄存器介绍 368
14.5.2 USB 2.0模块编程步骤及相关程序 380
14.5.3 USB 2.0模块应用PC机方程序 386
练习题 388
附录A Freescale公司MCU常用封装形式及实际尺寸 389
附录B 实验开发HCS12 MCU的硬件平台 391
B.1 扩展板MT-Extend Board 391
B.2 核心板MT-Core 393
B.3 HCS12写入调试器MT-Programmer 393
附录C 本书配套教学资料目录结构 395
附录D 苏州大学Freescale嵌入式系统实验室已有核心板及评估板 396
参考文献 398