第1章 DSP芯片基本结构与特点1.1 DSP简介 1
1.1.1 什么是DSP? 1
1.1.2 为什么要使用DSP? 2
1.1.3 DSP芯片的发展简史 2
1.2 DSP芯片基本结构 3
1.2.1 DSP算法特点 3
1.2.2 实时处理 4
1.2.3 DSP芯片的结构特征 5
1.2.4 DSP与MCU、通用处理器、FPGA三者的比较 7
1.3 TMS320系列DSP产品介绍 8
1.3.1 C2000系列 8
1.3.2 C5000系列 8
1.3.3 C6000系列 9
第2章 DSP2407引脚与内部结构2.1 DSP2407引脚定义 10
2.2 DSP2407的内部结构 18
2.2.1 DSP2407内部包含哪些部分 18
2.2.2 DSP2407的体系结构 18
2.3 CPU结构 20
2.3.1 CPU组成框图 20
2.3.2 乘法器 23
2.3.3 中央算术逻辑部分 23
2.3.4 辅助寄存器算术单元 25
2.3.5 状态寄存器 25
2.4 存储器及存储空间配置 27
2.4.1 片内存储器的种类 27
2.4.2 程序存储器 28
2.4.3 数据存储器 30
2.4.4 I/O口 31
第3章 系统配置和中断——全局控制3.1 系统配置寄存器 33
3.1.1 系统控制和状态寄存器1 33
3.1.2 系统控制和状态寄存器2 34
3.2 DSP2407中断组织和结构 35
3.2.1 DSP2407中断概述——两层结构 35
3.2.2 DSP2407内核级中断 36
3.2.3 DSP2407外设级中断 38
3.2.4 中断优先级和中断向量总表 39
3.2.5 假中断向量 41
3.3 DSP2407中断寄存器 42
3.3.1 中断标志寄存器 42
3.3.2 中断屏蔽寄存器 43
3.4 外设中断向量寄存器 44
3.5 外部中断控制寄存器 45
3.5.1 外部中断1控制寄存器 45
3.5.2 外部中断2控制寄存器 46
第4章 DSP2407最小硬件系统设计4.1 DSP2407最小系统电源设计 49
4.1.1 DSP2407最小系统电源种类和要求 49
4.1.2 DSP2407最小硬件系统电源解决方案 49
4.2 晶体振荡器电路 50
4.2.1 PLL滤波电路 50
4.2.2 晶振电路 51
4.3 JTAG接口 52
4.3.1 JTAG标准接口 52
4.3.2 仿真器与DSP2407最小系统的连接 52
4.4 片外存储器扩展 53
4.4.1 外部存储器接口 53
4.4.2 DSP仿真开发状态的特点 54
4.4.3 DSP2407最小系统外部存储器的设计 55
4.5 最小系统其他引脚的处理和说明 57
4.5.1 DSP其他功能引脚的处理 57
4.5.2 未用的输入/输出引脚的处理 57
4.5.3 指示灯简要说明 57
4.6 最小硬件系统模板 58
第5章 仿真环境建立和工程文件组织5.1 硬件仿真开发环境的建立 59
5.1.1 硬件仿真方法简介 59
5.1.2 硬件仿真器连接 60
5.2 软件仿真开发环境——CCS 61
5.2.1 程序开发环境CCS及其建立 61
5.2.2 第1次启用CCS调试最小硬件系统 64
5.2.3 查看、修改CPU寄存器和数据空间内容实例 66
5.3 创建我的第1个工程 69
5.3.1 创建新工程 69
5.3.2 创建寄存器头文件的实例 70
5.3.3 COFF目标文件 78
5.3.4 创建CMD文件的实例 79
5.3.5 创建中断向量表文件vector.asm实例 83
5.3.6 创建最小汇编语言软件工程模板 85
第6章 汇编语言——DSP的灵魂6.1 使用汇编语言编写程序的好处 92
6.2 汇编语言初步 93
6.2.1 汇编程序格式 93
6.2.2 第1个具有控制功能的汇编程序 94
6.2.3 使XF发光二极管LED熄灭 96
6.3 控制XF引脚LED闪烁 97
6.3.1 如何使XF的LED交替点亮和熄灭 97
6.3.2 用外部信号标志BIO控制LED 99
6.3.3 用汇编指令产生长时间延迟 101
6.4 直接寻址 104
6.4.1 直接寻址基础知识 104
6.4.2 用直接寻址方式在数据存储器与累加器之间搬移数据 106
6.4.3 直接寻址方式数据读/写实例 107
6.5 间接寻址 112
6.5.1 间接寻址方式知识准备 113
6.5.2 间接寻址的使用 113
6.5.3 间接寻址高级内容 117
6.6 常用汇编指令 120
6.6.1 汇编指令分类 120
6.6.2 常用汇编指令详解 126
第7章 C语言——DSP的快捷工具7.1 C语言概述 194
7.2 C编译器和C代码优化 195
7.2.1 C编译器特性 195
7.2.2 Shell程序的作用及使用 196
7.2.3 优化C代码 199
7.3 C程序代码链接 200
7.3.1 C程序代码链接概述 200
7.3.2 把运行支持库包含到工程文件中 201
7.3.3 指定初始化类型 203
7.3.4 把段分配到物理存储器中 204
7.4 创建C语言软件模板实例 206
7.4.1 创建C语言寄存器头文件实例 206
7.4.2 创建main()函数实例 213
7.4.3 创建DSP2407芯片初始化函数实例 214
7.4.4 创建假中断处理函数实例 216
7.4.5 最小C语言软件工程模板 216
7.4.6 _c_int0函数的深入研究 218
7.5 TMS320LF240x的C语言 221
7.5.1 数据类型 221
7.5.2 C语言标准库函数的使用 222
7.5.3 常用C语言标准库函数 224
7.5.4 使用C语言标准库函数实例 230
7.6 C语言和汇编语言混合编程 233
7.6.1 在C语言中嵌入单句汇编语言 233
7.6.2 在C语言中调用汇编子程序 234
7.7 C语言中断程序 236
7.7.1 中断处理要点 236
7.7.2 中断函数 236
7.7.3 中断的嵌套 238
第8章 数字输入/输出(I/O)端口8.1 数字I/O端口概述 239
8.2 数字I/O端口结构 240
8.3 数字I/O端口控制寄存器 241
8.3.1 I/O口复用控制寄存器 241
8.3.2 I/O口数据和方向寄存器 243
8.4 I/O端口应用编程实例 245
8.4.1 I/O端口输出编程实例 245
8.4.2 Map文件的功能和使用实例 249
第9章 事件管理器 252
9.1 事件管理器结构和组成 252
9.1.1 事件管理器结构 252
9.1.2 事件管理器引脚 255
9.1.3 事件管理器控制寄存器及其地址 256
9.1.4 功率驱动保护中断 258
9.2 事件管理器中断处理 258
9.2.1 事件管理器中断事件的处理 258
9.2.2 事件管理器中断控制寄存器 262
9.3 通用定时器的工作过程 271
9.3.1 通用定时器的结构和组成 271
9.3.2 定时器控制寄存器 277
9.3.3 通用定时器的工作模式 280
9.4 通用定时器的应用实例 283
9.4.1 通用定时器使用实例 283
9.4.2 中断嵌套实例 288
9.4.3 调用TI定点数学库开方函数实例 294
9.4.4 自测程序代码执行时间实例 296
第10章 A/D转换——第2个硬件系统10.1 A/D转换芯片AD7865简介 302
10.1.1 AD7865简述 302
10.1.2 AD7865引脚定义 303
10.2 第2个硬件系统的硬件和软件设计 305
10.2.1 A/D转换芯片的选择 305
10.2.2 硬件设计 305
10.2.3 软件设计 309
10.3 220V电压采样实例 309
10.3.1 访问I/O口空间 310
10.3.2 220V电压采样实例 310
10.4 220V电压有效值计算实例 318
10.4.1 利用DFT算法计算220V电压有效值实例 318
10.4.2 利用时域算法计算220V电压有效值实例 326
第11章 快速傅里叶变换FFT11.1 FFT的基本原理 330
11.1.1 离散傅里叶变换DFT 330
11.1.2 FFT算法的导出 331
11.2 FFT库 333
11.2.1 FFT库简介 334
11.2.2 FFT32C计算模块介绍 336
11.3 32点FFT计算实例 338
11.3.1 伪指令#pragma的用法 339
11.3.2 32点FFT计算实例 339
第12章 C2000 DSP芯片的发展与比较12.1 C24xx系列芯片的发展与比较 361
12.1.1 C2000系列芯片的发展简史 361
12.1.2 C24xx系列芯片的比较 361
12.2 TMS320X281x DSP系列性能简介 362
12.2.1 F/C281x系列功能简介 362
12.2.2 F/C281x系列DSP的性能 363
12.2.3 F/C281x与C240x内核的比较 365
12.2.4 C240x汇编代码向F/C281x的移植 365
第13章 世界向数字化方向发展13.1 集成电路在TI公司的发明 367
13.2 数字技术创造未来 368
参考文献 371