1.1 TMS320F2812性能概述 2
1.2 TMS320F2812结构概述 4
1.2.1 引脚分布 4
1.2.2 TMS320F2812引脚信号描述 5
1.3 TMS320F2812功能概览 5
1.3.1 存储空间示意图 6
1.3.2 简要描述 9
1.4 DSP集成环境CCS介绍 13
1.4.1 CCS安装 13
1.4.2 CCS配置软件设置 15
1.4.3 CCS软件概述 17
1.4.4 File(文件)菜单介绍 18
1.4.5 Edit(编辑)菜单介绍 18
1.4.6 View(视图)菜单介绍 19
1.4.7 Project(工程)菜单介绍 19
1.4.8 Debug(调试)菜单介绍 20
1.5 CCS工程管理 20
1.5.1 创建新的工程文件 21
1.5.2 编译并运行程序 22
1.6 一个简单的例子程序介绍 22
1.6.1 基本的程序代码生成 22
1.6.2 具体的程序开发介绍 24
1.7 嵌入式项目开发流程管理 25
1.7.1 概述 25
1.7.2 项目启动 27
1.7.3 项目计划 29
1.7.4 项目研发 33
1.7.5 项目结束 34
第2章 C语言程序设计基础 35
2.1 C语言数据结构及语法 35
2.1.1 C语言数据结构 35
2.1.2 C语言运算符与表达式 36
2.2 程序控制结构 38
2.2.1 if语句 38
2.2.2 switch语句 41
2.2.3 while语句 42
2.2.4 for语句 43
2.2.5 程序控制中的特殊运算符 45
2.3 数组 46
2.4 指针 47
2.5 函数 48
2.6 C语言编程规范 51
2.6.1 环境 51
2.6.2 语言规范 51
2.6.3 字符类 51
2.6.4 变量类型 52
2.6.5 函数声明和定义 53
2.6.6 变量初始化 53
2.6.7 算法类型转换 54
2.6.8 编程风格 54
第3章 TMS320F2812外设的C语言程序设计 55
3.1 导言 55
3.2 传统的#define方法 55
3.3 位定义和寄存器结构体定义方式 56
3.3.1 定义寄存器结构体 57
3.3.2 使用DATA_SECTION将寄存器结构体映射到地址空间 59
3.3.3 添加位定义 60
3.3.4 共同体定义 61
3.4 位操作和寄存器结构体定义方式的优点 62
3.5 对位或寄存器整体进行操作 63
3.6 一个特殊的例子(eCAN控制寄存器) 64
第4章 TMS320F2812系统控制及中断 66
4.1 存储空间 66
4.1.1 Flash存储器 66
4.1.2 OTP存储器 66
4.1.3 Flash和OTP寄存器 66
4.2 时钟及系统控制 68
4.2.1 时钟及系统控制概述 68
4.2.2 外设时钟控制寄存器(PCLKCR) 70
4.2.3 系统控制和状态寄存器(SCSR) 71
4.2.4 高/低速外设时钟预定标寄存器(HISPCP/LOSPCP) 72
4.3 振荡器及锁相环模块 73
4.4 低功耗模式 75
4.5 F2812外设结构 77
4.5.1 外设结构寄存器 77
4.5.2 受EALLOW保护的寄存器 79
4.6 F2812外设中断扩展模块 82
4.6.1 PIE控制器概述 83
4.6.2 中断操作步骤 83
4.6.3 向量表的映射 85
4.6.4 中断源 85
4.6.5 复用中断操作过程 86
4.6.6 使能/禁止复用外设中断的程序步骤 87
4.6.7 外设向CPU发出的复用中断请求流程 88
4.6.8 PIE向量表 89
4.6.9 PIE配置寄存器 94
4.6.10 中断程序设计 95
4.7 看门狗模块 102
4.7.1 看门狗模块介绍 102
4.7.2 看门狗计数寄存器(WDCNTR) 103
4.7.3 看门狗复位寄存器(WDKEY) 103
4.7.4 看门狗控制寄存器(WDCR) 103
4.7.5 看门狗模块程序设计 104
4.8 32位CPU定时器 106
4.8.1 TIMERxTIM寄存器 108
4.8.2 TIMERxPRD寄存器 108
4.8.3 TIMERxTCR寄存器 109
4.8.4 TIMERxTPR寄存器 110
4.8.5 定时器程序设计 110
4.9 通用输入输出口(GPIO) 112
4.9.1 GPIO介绍 112
4.9.2 输入限制 114
4.9.3 GPxMUX寄存器(功能选择寄存器) 116
4.9.4 GPxDIR寄存器(方向控制寄存器 116
4.9.5 GPxDAT寄存器(数据寄存器) 116
4.9.6 GPxSET寄存器(置位寄存器) 117
4.9.7 GPxCLEAR寄存器(清除寄存器) 117
4.9.8 GPxTOGGLE寄存器(取反触发寄存器) 117
4.9.9 寄存器位与I/O引脚的映射 117
4.9.10 GPIO程序设计 120
第5章 TMS320F2812外部接口(XINTF) 122
5.1 外部接口功能概述 122
5.2 XINTF配置概述 124
5.2.1 改变XINTF配置和时序寄存器的程序 125
5.2.2 XINTF时钟 125
5.2.3 写缓冲器 126
5.2.4 XINTF每个区域访问的引导、激活、跟踪的时序 126
5.2.5 XREADY信号采样 127
5.2.6 区域切换 127
5.2.7 XMP/MC信号对XINTF的影响 127
5.3 引导、激活、跟踪等待状态的配置 128
5.4 XINTF寄存器 131
5.4.1 XINTF时序寄存器(XTIMINGx) 132
5.4.2 XINTF配置寄存器(XINTCNFx) 135
5.4.3 XBANK寄存器 137
5.5 信号描述 137
5.6 XINTF操作时序图 138
5.7 XINTF应用开发及C语言程序设计 141
5.7.1 XINTF应用开发概述 141
5.7.2 XINTF模块的C语言程序设计 141
第6章 TMS320F2812串行通信接口(SCI) 149
6.1 SCI概述 149
6.1.1 增强型SCI模块特点概述 149
6.1.2 SCI模块框图 151
6.1.3 SCI模块结构 151
6.2 SCI模块寄存器 159
6.2.1 寄存器概述 159
6.2.2 SCI通信控制寄存器(SCICCR) 160
6.2.3 SCI控制寄存器1(SCICTIL1) 162
6.2.4 SCI波特率选择寄存器(SCIHBAUD,SCILBAUD) 163
6.2.5 SCI控制寄存器2(SCICTIL2) 164
6.2.6 SCI接收状态寄存器(SCIRXST) 165
6.2.7 SCI接收数据缓冲寄存器(SCIRXEMU,SCIRXBUF) 167
6.2.8 SCI发送数据缓冲寄存器(SCITXBUF) 168
6.2.9 SCIFIFO寄存器(SCIFFTX,SCIFFRX,SCIFFCT) 169
6.2.10 SCI优先级控制寄存器(SCIPRI) 171
6.3 C语言程序设计 172
6.3.1 SCI接口硬件设计 172
6.3.2 程序中关于SCI的头文件的相关定义介绍 173
6.3.3 串口自测试程序 177
6.3.4 串口向主机发送数据程序 179
6.3.5 串口中断接收程序 181
6.3.6 串口中断发送、接收C程序 184
6.3.7 自动波特率设定程序 189
6.4 心得 194
第7章 TMS320F2812的串行外围设备接口(SPI) 195
7.1 增强型SPI概述 195
7.1.1 SPI结构图 197
7.1.2 SPI模块信号概述 197
7.2 SPI模块寄存器概述 198
7.3 SPI操作 199
7.3.1 SPI操作介绍 199
7.3.2 SPI模块主/从操作模式 200
7.4 SPI中断 201
7.4.1 SPI中断控制位 201
7.4.2 数据格式 202
7.4.3 波特率和时钟配置 203
7.4.4 复位后系统状态 204
7.4.5 数据传输实例 205
7.5 SPI FIFO描述 206
7.6 SPI控制寄存器 207
7.6.1 SPI配置控制寄存器(SPICCR) 207
7.6.2 SPI操作控制寄存器(SPICTL) 209
7.6.3 SPI状态寄存器(SPISTS) 210
7.6.4 SPI波特率寄存器(SPIBRR) 211
7.6.5 SPI仿真缓冲寄存器(SPIRXEMU) 212
7.6.6 SPI串行接收缓冲寄存器(SPIRXBUF) 213
7.6.7 SPI串行发送缓冲寄存器(SPITXBUF) 213
7.6.8 SPI串行数据寄存器(SPIDAT) 214
7.6.9 SPI FIFO发送寄存器(SPIFFTX) 214
7.6.10 SPI FIFO接收寄存器(SPIFFRX) 216
7.6.11 SPI FIFO控制寄存器(SPIFFCT) 217
7.6.12 SPI优先级控制寄存器(SPIPRI) 217
7.7 SPI实例波形 218
7.8 SPI模块的C语言程序设计 221
7.8.1 SPI模块的发送接收程序设计 221
7.8.2 SPI自测程序 223
7.8.3 SPI中断发送、接收程序 225
7.9 SPI接口的应用设计(ADS1256) 229
第8章 TMS320F2812增强型区域控制网络(eCAN)模块 233
8.1 eCAN模块体系结构 233
8.1.1 eCAN模块概述 233
8.1.2 eCAN网络和模块 235
8.1.3 eCAN控制器 236
8.1.4 消息对象 238
8.1.5 消息邮箱 239
8.2 eCAN模块的寄存器 241
8.2.1 邮箱使能寄存器(CANME) 241
8.2.2 邮箱数据方向寄存器(CANMD) 241
8.2.3 发送请求置位寄存器(CANTRS) 242
8.2.4 发送请求复位寄存器(CANTRR) 242
8.2.5 发送响应寄存器(CANTA) 243
8.2.6 异常中断响应寄存器(CANAA) 244
8.2.7 接收消息挂起寄存器(CANRMP) 244
8.2.8 接收消息丢失寄存器(CANRML) 245
8.2.9 远程帧挂起寄存器(CANRFP) 245
8.2.10 全局接收屏蔽寄存器(CANGAM) 246
8.2.11 主控寄存器(CANMC) 247
8.2.12 位时序配置寄存器(CANBTC) 250
8.2.13 错误和状态寄存器(CANES) 251
8.2.14 错误计数寄存器(CANTEC/CANREC) 254
8.2.15 中断寄存器 254
8.2.16 覆盖保护控制寄存器(CANOPC) 259
8.2.17 eCANI/O控制寄存器(CANTIOC、CANRIOC) 259
8.2.18 定时器管理单元 260
8.2.19 邮箱构成 264
8.2.20 消息数据寄存器(CANMDL、CANMDH) 266
8.2.21 接收过滤器 267
8.3 eCAN模块配置及C程序开发 268
第9章 TMS320F2812模/数转换(ADC)模块 274
9.1 模拟/数字转换(ADC)模块 274
9.1.1 模块特性 274
9.1.2 自动转换排序器的工作原理 276
9.1.3 双排序模式下的同步采样设计实例 279
9.1.4 级联模式下的同步采样设计实例 279
9.1.5 ADC时钟预定标器 280
9.1.6 低功耗模式 281
9.1.7 上电顺序 281
9.1.8 参考电压校正(通过外部提供基准) 282
9.2 ADC模块电压基准校正 283
9.2.1 增益和偏移误差的定义 283
9.2.2 增益和偏移误差的影响 284
9.2.3 校准 285
9.2.4 硬件设计 287
9.2.5 ADC采样技术 288
9.3 ADC模块寄存器 290
9.3.1 ADC控制寄存器 291
9.3.2 最大转换通道寄存器(MAXCONV) 297
9.3.3 自动排序状态寄存器(ADCASEQSR) 297
9.3.4 ADC状态和标志寄存器(ADCST) 298
9.3.5 ADC输入通道选择排序控制寄存器(CHSELSEQn) 300
9.3.6 ADC转换结果缓冲寄存器(ADCRESULTn) 301
9.4 ADC模块配置及C语言程序开发 301
第10章 TMS320F2812事件管理器(EV)模块 306
10.1 事件管理器概述 306
10.1.1 EV功能概述 306
10.1.2 增强EV特性 311
10.1.3 EV寄存器地址 311
10.1.4 GP定时器 313
10.1.5 使用GP定时器产生PWM信号 322
10.1.6 比较单元 323
10.2 PWM电路 324
10.2.1 与比较单元相关联的PWM电路 324
10.2.2 PWM波形产生 327
10.3 捕获单元 330
10.3.1 捕获单元概述 330
10.3.2 捕获单元操作 331
10.3.3 捕获单元FIFO堆栈 331
10.3.4 捕获中断 332
10.3.5 QEP电路 332
10.4 EV中断 334
10.4.1 EV中断概述 334
10.4.2 EV中断请求和服务子程序 335
10.4.3 中断产生 335
10.4.4 中断向量 335
10.5 EV寄存器 336
10.5.1 定时器寄存器 336
10.5.2 比较器控制寄存器 342
10.5.3 比较行为控制寄存器 346
10.5.4 捕获单元寄存器 348
10.5.5 EV中断标志寄存器 354
10.5.6 EV控制寄存器 363
10.6 C程序设计 364
10.6.1 PWM波形产生程序 364
10.6.2 EVGP定时器程序 367
第11章 Boot ROM介绍和F2812程序仿真与下载 373
11.1 BootROM概述 373
11.1.1 XMPNMC对Boot ROM的影响 373
11.1.2 片内ROM介绍 374
11.2 CPU中断向量表 375
11.3 Bootloader的特性 376
11.3.1 Bootloader的功能操作 376
11.3.2 Bootloader的配置 377
11.3.3 Bootloader的模式 378
11.3.4 Bootloader的数据流结构 380
11.3.5 基本的传输程序 381
11.3.6 InitBoot汇编程序 381
11.3.7 模式选择功能 382
11.3.8 串口(SCI)下载模式 384
11.3.9 并行GPIO口下载模式 385
11.3.10 SPI下载模式 387
11.3.11 ExitBoot汇编程序 390
11.4 语言程序设计 391
11.4.1 F2812Boot.h 391
11.4.2 SelectMode_Boot.c(模式选择) 394
11.4.3 SCI_Boot.c(SCI下载模式) 395
11.4.4 Parallel_Boot.c(并行I/O口下载模式) 400
11.4.5 SPI_Boot.c(SPI口下载模式) 404
11.5 F2812程序仿真与下载 409
11.5.1 从内部Flash运行应用程序 409
11.5.2 从内部RAM运行应用程序 412
第12章 基于TMS320F2812的电气平台开发设计 413
12.1 核心处理系统 414
12.2 数/模转换(DAC)设计 416
12.2.1 硬件设计 416
12.2.2 软件设计 418
12.3 SRAM设计 420
12.3.1 硬件设计 420
12.3.2 软件设计 422
12.4 E2PROM(I2C)设计 423
12.4.1 硬件设计 423
12.4.2 软件设计 425
12.5 RS-232(串口)设计 431
12.5.1 硬件设计 431
12.5.2 软件设计 432
12.6 RS-485设计 433
12.6.1 硬件设计 434
12.6.2 软件设计 436
12.7 CAN模块设计 437
12.7.1 硬件设计 437
12.7.2 软件设计 439
12.8 3.3V和5V数字I/O设计 442
12.9 液晶设计 446
12.10 实时时钟(DS1302)设计 450
12.10.1 概述 450
12.10.2 软件设计 451
12.11 平台调试中的常见问题解答 456
附录 μ.C/OS-Ⅱ操作系统在F2812上移植及实时多任务管理 462
参考文献 466