第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 系统控制和状态寄存器133
3.1.2 系统控制和状态寄存器234
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 软件仿真开发环境——CCS61
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控制LED99
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章 事件管理器
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 220 V电压采样实例309
10.3.1 访问I/O口空间310
10.3.2 220 V电压采样实例310
10.4 220 V电压有效值计算实例318
10.4.1 利用DFT算法计算220 V电压有效值实例318
10.4.2 利用时域算法计算220 V电压有效值实例326
第11章 快速傅里叶变换FFT
11.1 FFT的基本原理330
11.1.1 离散傅里叶变换DFT330
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
展开