本书以TMS320F28335(简称F28335)的工程应用为主线,从电力电子产品的嵌入式应用角度出发,介绍了其软硬件的开发方法;例程内容力求涵盖电力电子技术中所有的控制、算法、逻辑等操作.本书以提高读者的DSP应用水平为目的,本着循序渐进的原则,前半部分基础简单,后半部分难度较高,详细介绍了浮点算法开发、程序固化、FLASH 片上升级优化、用户自定义BootLoader等内容.本书例程不仅调试通过而且其基本思想均应用于目前主流电力电子产品中,具有很高的参考和实用价值.
本书摒弃以往翻译TI数据手册的弊端,结构更加严谨,内容更加注重理论与实际的结合,可作为自动化专业、电气工程专业研究生和工程技术人员的参考用书.
第1章 绪 论………………………………………………………………………… 1
1.1 数字信号处理………………………………………………………………… 1
1.1.1 模拟和数字信号的处理方式…………………………………………… 1
1.1.2 数字信号处理的优缺点………………………………………………… 2
1.2 DSP的发展及特点…………………………………………………………… 3
1.3 DSP产品简介………………………………………………………………… 5
1.3.1 TI公司的DSP产品…………………………………………………… 5
1.3.2 TMS320C28x产品简介………………………………………………… 6
第2章 F28335的结构原理………………………………………………………… 8
2.1 F28335的内部结构…………………………………………………………… 8
2.2 F28335的CPU ……………………………………………………………… 10
2.2.1 CPU 运算单元………………………………………………………… 10
2.2.2 CPU 寄存器组………………………………………………………… 12
2.2.3 辅助寄存器算术单元ARAU ………………………………………… 14
2.2.4 FPU 浮点运算单元…………………………………………………… 15
2.3 F28335的存储器及应用…………………………………………………… 15
2.3.1 SARAM 存储器………………………………………………………… 17
2.3.2 FLASH 及使用详解…………………………………………………… 17
2.3.3 BootROM ……………………………………………………………… 22
2.3.4 CSM 代码安全模块及使用详解……………………………………… 24
2.3.5 OTP存储器…………………………………………………………… 31
2.3.6 外设帧…………………………………………………………………… 31
2.3.7 外部存储器接口………………………………………………………… 32
2.4 外设及引脚功能……………………………………………………………… 33
2.5 F28335的时钟及控制……………………………………………………… 36
2.5.1 系统时钟的产生………………………………………………………… 36
2.5.2 系统时钟的分配………………………………………………………… 37
2.5.3 F28335的低功耗模式及相关寄存器………………………………… 42
2.5.4 F28335的看门狗模块………………………………………………… 44
2.6 F28335的CPU 定时器……………………………………………………… 47
2.6.1 定时器结构……………………………………………………………… 47
2.6.2 定时器中断申请………………………………………………………… 48
2.6.3 定时器寄存器及位域结构体定义……………………………………… 48
2.6.4 定时器应用例程———如何记录函数的运行时间……………………… 51
第3章 集成开发环境及程序开发语言…………………………………………… 53
3.1 CCS集成开发环境………………………………………………………… 53
3.1.1 CCS集成的工具软件………………………………………………… 53
3.1.2 CCSv5.4安装及基本配置…………………………………………… 55
3.1.3 ControlSuite简介……………………………………………………… 59
3.1.4 在CCSv5.4下运行工程项目………………………………………… 59
3.1.5 CCSv3.3到CCSv5.4的项目迁移…………………………………… 66
3.1.6 在CCSv5.4下新建一个工程文件…………………………………… 68
3.2 F28335汇编语言概述……………………………………………………… 74
3.2.1 F28335汇编指令描述………………………………………………… 75
3.2.2 寻址方式及常用汇编指令……………………………………………… 76
3.2.3 CMD文件及汇编程序示例…………………………………………… 80
3.2.4 汇编语言应用例程……………………………………………………… 82
3.3 F28335的C语言编程基础………………………………………………… 83
3.3.1 F28335的C语言数据类型…………………………………………… 84
3.3.2 C语言的重要关键字…………………………………………………… 85
3.3.3 C语言CMD文件的编写……………………………………………… 86
第4章 F28335的通用I/O 口…………………………………………………… 90
4.1 GPIO的功能结构…………………………………………………………… 90
4.2 GPIO寄存器及传统定义方法示例………………………………………… 92
4.2.1 GPIO控制类寄存器…………………………………………………… 92
4.2.2 GPIO数据类寄存器…………………………………………………… 94
4.2.3 传统寄存器定义方法示例……………………………………………… 95
4.3 寄存器的位域结构方法示例………………………………………………… 96
4.3.1 GPIO寄存器组类型定义……………………………………………… 96
4.3.2 定义存放寄存器组的存储器段……………………………………… 101
4.3.3 寄存器组的存储器段地址定位……………………………………… 102
4.3.4 寄存器位结构定义的使用…………………………………………… 102
4.4 GPIO应用例程…………………………………………………………… 103
第5章 F28335的中断系统……………………………………………………… 104
5.1 中断系统的结构…………………………………………………………… 104
5.1.1 中断管理机制………………………………………………………… 104
5.1.2 中断处理及响应过程………………………………………………… 106
5.1.3 CPU 中断向量………………………………………………………… 106
5.1.4 CPU 级中断相关寄存器……………………………………………… 108
5.2 PIE外设中断扩展模块…………………………………………………… 109
5.2.1 PIE模块的结构……………………………………………………… 109
5.2.2 PIE中断向量表映射………………………………………………… 110
5.2.3 PIE模块相关寄存器………………………………………………… 117
5.2.4 PIE模块寄存器的程序操作………………………………………… 119
5.3 非屏蔽中断………………………………………………………………… 123
5.3.1 软件中断……………………………………………………………… 123
5.3.2 非法指令中断………………………………………………………… 124
5.3.3 硬件NMI中断……………………………………………………… 124
5.3.4 硬件复位中断XRS…………………………………………………… 125
5.4 中断应用实例———如何创建中断嵌套服务程序………………………… 125
第6章 模/数转换单元ADC …………………………………………………… 127
6.1 ADC模块概述……………………………………………………………… 127
6.1.1 ADC模块构成及原理………………………………………………… 127
6.1.2 时钟及采样频率……………………………………………………… 130
6.1.3 ADC采样工作方式…………………………………………………… 131
6.2 ADC模块校准功能及使用详解…………………………………………… 134
6.3 ADC模块寄存器…………………………………………………………… 136
6.4 ADC性能实验分析………………………………………………………… 143
6.5 ADC模块的应用———如何进行数据处理及程序校准…………………… 146
第7章 F28335片上控制外设…………………………………………………… 148
7.1 增强型脉宽调制模块ePWM ……………………………………………… 148
7.1.1 时间基准子模块TB原理及应用…………………………………… 150
7.1.2 计数器比较子模块CC原理及应用………………………………… 155
7.1.3 动作限定子模块AQ 原理及应用…………………………………… 157
7.1.4 死区控制子模块DB原理及应用…………………………………… 163
7.1.5 错误控制子模块TZ原理及应用…………………………………… 165
7.1.6 事件触发子模块ET原理及应用…………………………………… 169
7.2 增强型捕获模块eCAP …………………………………………………… 174
7.2.1 eCAP工作模式……………………………………………………… 174
7.2.2 捕获模块寄存器……………………………………………………… 177
7.2.3 eCAP程序例程———如何捕获外部脉冲信号……………………… 183
第8章 F28335的片上串行通信单元…………………………………………… 185
8.1 串行通信的基本概念……………………………………………………… 185
8.1.1 异步通信和同步通信………………………………………………… 185
8.1.2 串行通信的传输方向………………………………………………… 186
8.1.3 串行通信的错误校验………………………………………………… 186
8.2 SCI通信模块及应用……………………………………………………… 187
8.2.1 SCI通信模块简介…………………………………………………… 187
8.2.2 SCI工作原理………………………………………………………… 188
8.2.3 SCI基本数据格式…………………………………………………… 188
8.2.4 多处理器通信方式…………………………………………………… 190
8.2.5 SCI相关寄存器……………………………………………………… 191
8.2.6 SCI应用实例———如何实现异步通信数据的收发………………… 194
8.3 SPI通信模块及应用……………………………………………………… 195
8.3.1 SPI模块简介………………………………………………………… 195
8.3.2 SPI工作原理………………………………………………………… 196
8.3.3 SPI的时钟与波特率………………………………………………… 198
8.3.4 SPI相关寄存器……………………………………………………… 198
8.3.5 SPI模块应用实例———如何建立有效的全双工数据通信………… 202
8.4 McBSP模块及应用………………………………………………………… 203
8.4.1 McBSP数据收发原理………………………………………………… 204
8.4.2 数据的压缩和扩展…………………………………………………… 205
8.4.3 McBSP数据帧………………………………………………………… 205
8.4.4 时钟及采样率发生器………………………………………………… 207
8.4.5 McBSP工作模式简介………………………………………………… 210
8.4.6 McBSP相关寄存器…………………………………………………… 210
8.4.7 McBSP的应用———如何实现在SPI模式下的数据收发…………… 218
8.5 I2C通信模块及应用……………………………………………………… 220
8.5.1 I2C总线基础………………………………………………………… 220
8.5.2 I2C相关寄存器……………………………………………………… 223
8.5.3 I2C应用实例———EEPROM 数据的读/写………………………… 227
8.5.4 I2C真实波形数据格式分析………………………………………… 229
8.6 CAN 通信模块……………………………………………………………… 232
8.6.1 CAN 模块简介………………………………………………………… 232
8.6.2 CAN 相应寄存器……………………………………………………… 233
8.6.3 CAN 应用注意事项及数据收发程序详解…………………………… 239
第9章 浮点运算单元……………………………………………………………… 245
9.1 浮点单元简介……………………………………………………………… 245
9.1.1 C28x+FPU 的特点…………………………………………………… 245
9.1.2 浮点指令流水线结构………………………………………………… 246
9.1.3 IEEE754单精度浮点格式…………………………………………… 247
9.2 FPU 的寄存器……………………………………………………………… 248
9.3 浮点汇编指令详解………………………………………………………… 250
9.3.1 移动指令……………………………………………………………… 251
9.3.2 浮点算术运算指令…………………………………………………… 259
9.3.3 寄存器数据传递指令………………………………………………… 272
9.3.4 特殊运算指令………………………………………………………… 275
9.3.5 寄存器清0指令……………………………………………………… 276
9.4 F28335库函数使用详解…………………………………………………… 277
9.4.1 FPUFastRTS库简介……………………………………………… 278
9.4.2 FPUFastRTS库使用方法………………………………………… 279
9.4.3 FPUFastRTS库软件优化………………………………………… 280
9.4.4 FPU 软件应用实例…………………………………………………… 281
第10章 BootLoader原理及应用………………………………………………… 283
10.1 BootLoader基本工作流程……………………………………………… 283
10.1.1 F2833x片内引导过程……………………………………………… 284
10.1.2 基本工作流程代码解析……………………………………………… 285
10.2 BootLoader基本数据传输协议………………………………………… 289
10.2.1 16位数据流结构…………………………………………………… 289
10.2.2 8位数据流结构……………………………………………………… 290
10.2.3 数据引导装载过程…………………………………………………… 291
10.2.4 数据格式转换………………………………………………………… 292
10.3 引导模式之跳转模式……………………………………………………… 294
10.3.1 FLASH 上电复位跳转模式及代码解析…………………………… 294
10.3.2 片上其他跳转模式…………………………………………………… 296
10.4 引导模式之加载模式……………………………………………………… 297
第11章 打开FLASH 升级的“潘多拉”盒子…………………………………… 299
11.1 F2833xFLASH 烧录基础……………………………………………… 299
11.1.1 FLASH 烧录的一般要求…………………………………………… 299
11.1.2 FLASH 烧录步骤…………………………………………………… 300
11.2 CCS插件升级方式……………………………………………………… 300
11.2.1 CCSv3.3版本下的FLASH 升级………………………………… 300
11.2.2 CCSv5.4版本下的FLASH 升级………………………………… 301
11.3 SDFLASH 插件操作方式………………………………………………… 305
11.3.1 SDFLASH 的串行升级基本操作…………………………………… 305
11.3.2 如何更改串行升级文件……………………………………………… 310
11.4 用户自定义升级方式……………………………………………………… 311
11.4.1 FLASH API的应用解析…………………………………………… 311
11.4.2 基于SCI总线的远程FLASH 加载方案………………………… 315
第12章 基于F28335的电力电子应用案例分析……………………………… 323
附录A CRC数据表……………………………………………………………… 402
附录B SCIBoot参考代码………………………………………………………… 404
参考文献……………………………………………………………………………… 407