第1章 DSP技术概述 1
1.1什么是DSP 1
1.2 DSP技术的分类与主要技术指标 1
1.2.1 DSP的分类 2
1.2.2 DSP的主要技术指标 2
1.3 DSP的应用 3
1.4 DSP的基本结构及主要特征 4
1.5 TMS320F28x DSP芯片硬件特征 6
思考题与习题 9
第2章 TMS320F2812 CPU和时钟 10
2.1 TMS320F281x CPU 10
2.1.1 CPU功能块和寄存器 10
2.1.2状态寄存器(ST0,ST1) 15
2.1.3乘法操作 16
2.2 CPU中断向量与优先级 18
2.3可屏蔽中断与非屏蔽中断 19
2.3.1可屏蔽中断 19
2.3.2非屏蔽中断 20
2.4流水线 20
2.5 TMS320F2812引脚功能 22
2.6时钟电路 38
2.6.1时钟单元 38
2.6.2振荡器和锁相环PLL时钟模块 40
2.7锁相环与时钟控制寄存器 42
2.7.1 PLL控制寄存器PLLCR 42
2.7.2外设时钟控制寄存器PCLKCR 44
2.7.3高速外设时钟预定标寄存器HISPCP 45
2.7.4低速外设时钟预定标寄存器LOSPCP 45
2.8三种低功耗模式 47
2.9低功耗模式控制寄存器 48
2.9.1低功耗模式控制寄存器0(LPMCR0) 48
2.9.2低功耗模式控制寄存器1(LPMCR1) 48
2.10看门狗 50
2.10.1看门狗工作原理 50
2.10.2看门狗复位和中断模式 51
2.10.3低功耗模式下看门狗操作 52
2.11看门狗相关寄存器 52
2.11.1系统控制和状态寄存器SCSR 52
2.11.2看门狗计数器寄存器WDCNTR 53
2.11.3看门狗复位密钥寄存器WDKEY 54
2.11.4看门狗控制寄存器WDCR 55
思考题与习题 57
第3章 中断系统与应用 58
3.1 PIE中断控制概述 58
3.2中断向量表的映射 60
3.3中断源 62
3.4 PIE中断向量表 64
3.5 PIE中断寄存器 73
3.5.1 PIE控制寄存器PIECTRL 73
3.5.2 PIE中断应答寄存器PIEACK 74
3.5.3 PIE中断标志寄存器PIEIFRx 74
3.5.4 PIE中断使能寄存器PIEIERx 75
3.6 CPU中断寄存器 75
3.6.1 CPU中断标志寄存器IFR 75
3.6.2 CPU中断使能寄存器IER 76
3.7外部中断控制寄存器 77
3.7.1外部中断1控制寄存器XINT1 CR 78
3.7.2外部中断2控制寄存器XINT2CR 78
3.7.3外部NMI中断控制寄存器XNMICR 79
3.7.4外部中断1计数器XINT1 CTR 79
3.7.5外部中断2计数器XINT2CTR 80
3.8 LED显示与按键中断应用举例 80
思考题与习题 93
第4章GPIO功能与CPU定时器 95
4.1 GPIO功能框图 95
4.2 TMS320F2812 GPIO寄存器 96
4.3 I/O映射 100
4.4输入量化与 I/O引脚 104
4.4.1输入量化控制寄存器 104
4.4.2两种类型输入量化 105
4.5 GPIO与按键应用实例 106
4.6 CPU定时器结构与工作原理 111
4.7 CPU定时器寄存器 113
4.7.1 CPU定时器控制寄存器 TIMERxTCR 114
4.7.2 CPU定时器计数器寄存器 TIMERxTIM 116
4.7.3 CPU定时器计数器寄存器高位 TIMERxTIMH 116
4.7.4 CPU定时器周期寄存器 TIMERxPRD 117
4.7.5 CPU定时器周期寄存器高位 TIMERxPRDH 117
4.7.6 CPU定时器预定标寄存器 TIMERxTPR 117
4.7.7 CPU定时器预定标寄存器高位 TIMERxTPRH 118
4.8 CPU定时器中断应用举例 119
4.9外部中断XINT13应用举例 123
4.10非屏蔽中断应用举例 127
思考题与习题 129
第5章 存储器与外部接口 XINTF 130
5.1总线 130
5.2存储器映射 132
5.2.1存储器映射图 132
5.2.2存储器映射图中各部分功能 134
5.2.3片内存储器与外部接口映射 136
5.2.4 CSM影响的片内资源 137
5.2.5寄存器映射 138
5.3存储器和寄存器的等待状态 141
5.4 Flash存储器 142
5.4.1 Flash选择寄存器FOPT 144
5.4.2 Flash等待状态寄存器FBANKWAIT 144
5.5外部接口XINTF 145
5.5.1 XINTF功能说明 145
5.5.2 XINTF各个区域地址范围 147
5.5.3 XINTF配置 148
5.6 XINTF寄存器 150
5.6.1 XINTF时序寄存器XTIMING0/1/2/6/7 150
5.6.2 XINTF配置寄存器XINTCNF2 154
5.6.3 XBANK寄存器 156
5.7 XINTF访问时序 157
5.7.1读周期时序图 158
5.7.2写周期时序图 158
5.7.3对每一个区域的XREADY采样 158
5.7.4 XMP/MC信号对XINTF的影响 160
5.8 DSP与外部存储器连接 160
5.9 XINTF应用举例 162
5.9.1 IS61LV51216芯片概述 163
5.9.2 DSP与IS61LV51216芯片连接 164
5.10存储器程序设计举例 166
5.10.1 DSP外扩SRAM程序 166
5.10.2访问存储器程序设计 171
思考题与习题 172
第6章 事件管理器 174
6.1事件管理器功能概述 174
6.1.1事件管理器模块功能 174
6.1.2事件管理器寄存器 179
6.2通用定时器概述 182
6.3通用定时器寄存器 183
6.3.1通用定时器控制寄存器TxCON 183
6.3.2全局通用定时器控制寄存器GPTCONA/B 186
6.3.3事件管理器扩展控制寄存器EXTCONA和EXTCONB 189
6.3.4 16位定时器计数寄存器TxCNT 190
6.3.5 16位定时器比较寄存器TxCMPR 191
6.3.6 16位定时器周期寄存器TxPR 192
6.3.7比较寄存器和周期寄存器的两级缓存 193
6.4通用定时器时钟和输入/输出 194
6.4.1通用定时器时钟 194
6.4.2通用定时器输入/输出 194
6.5通用定时器中断与同步 194
6.5.1通用定时器中断 194
6.5.2事件管理器中断事件启动ADC 195
6.5.3通用定时器同步 195
6.5.4通用定时器复位 195
6.6通用定时器计数操作与比较操作 196
6.6.1停止/保持模式 196
6.6.2通用定时器连续递增计数模式 196
6.6.3通用定时器定向增/减计数模式 198
6.6.4通用定时器连续增/减计数模式 200
6.6.5通用定时器比较操作 202
6.6.6通用定时器比较输出 202
6.7利用定时器比较寄存器产生PWM波形 203
6.7.1非对称PWM波形的产生 203
6.7.2对称PWM波形的产生 205
6.7.3输出逻辑 207
6.7.4通用定时器应用举例 208
6.8比较单元 212
6.8.1全比较单元概述 212
6.8.2比较单元的工作过程 213
6.8.3比较单元操作的寄存器设置 216
6.8.4比较单元的中断和复位 216
6.9比较单元寄存器 218
6.9.1比较控制寄存器(COMCONA和COMCONB) 218
6.9.2比较方式控制寄存器(ACTRA和ACTRB) 220
6.10比较单元PWM电路 222
6.10.1比较单元PWM电路 222
6.10.2比较单元死区产生电路 224
6.10.3死区定时器控制寄存器A和B(DBTCONA和DBTCONB) 225
6.10.4死区单元输入和输出 227
6.10.5比较单元输出逻辑 228
6.10.6比较单元PWM波形发生器 229
6.10.7比较单元应用举例 234
6.11捕获单元结构 236
6.12捕获单元寄存器与FIFO堆栈 240
6.12.1捕获控制寄存器CAPCONx(x=A,B) 240
6.12.2捕获FIFO状态寄存器CAPFIFOA和CAPFIFOB 241
6.12.3捕获单元FIFO堆栈 243
6.13捕获单元操作与捕获中断 243
6.13.1捕获单元操作 243
6.13.2捕获中断 245
6.13.3捕获单元应用举例 246
6.14正交编码脉冲(QEP)电路 247
6.14.1增量式光电编码盘结构与工作原理 247
6.14.2 DSP中正交编码脉冲电路实现 250
6.14.3正交编码脉冲解码 251
6.14.4正交编码脉冲电路寄存器设置 252
6.14.5正交信号决定光电编码器旋转方向 252
6.14.6光电编码器与正交编码脉冲(QEP)电路连接 253
6.14.7正交编码脉冲(QEP)电路应用举例 254
6.15 事件管理器中断 256
6.15.1事件管理器中断概述 256
6.15.2事件管理器中断请求 256
6.15.3事件管理器中断流程 258
6.16事件管理器中断寄存器 259
6.16.1 EVA中断标志寄存器A(EVAIFRA) 260
6.16.2 EVA中断标志寄存器B(EVAIFRB) 261
6.16.3 EVA中断标志寄存器C(EVAIFRC) 262
6.16.4 EVA中断屏蔽寄存器A(EVAIMRA) 263
6.16.5 EVA中断屏蔽寄存器B(EVAIMRB) 264
6.16.6 EVA中断屏蔽寄存器C(EVAIMRC) 264
6.16.7 EVB中断标志寄存器A(EVBIFRA) 265
6.16.8 EVB中断标志寄存器B(EVBIFRB) 266
6.16.9 EVB中断标志寄存器C(EVBIFRC) 267
6.16.10 EVB中断屏蔽寄存器A(EVBIMRA) 268
6.16.11 EVB中断屏蔽寄存器B(EVBIMRB) 269
6.16.12 EVB中断屏蔽寄存器C(EVBIMRC) 269
6.17事件管理器模块应用举例 270
6.18事件管理器产生PWM控制直流电机应用举例 271
6.19控制步进电机应用举例 285
6.20控制舵机应用举例 298
思考题与习题 304
第7章 串行通信接口SCI 306
7.1 SCI模块特点 306
7.2 SCI模块功能 307
7.3 SCI工作原理 312
7.3.1 SCI通信格式 312
7.3.2数据接收与发送过程 314
7.3.3 SCI数据帧格式 316
7.4 SCI寄存器 318
7.4.1 SCI通信控制寄存器SCICCR 318
7.4.2 SCI控制寄存器1(SCICTL1) 318
7.4.3 SCI控制寄存器2(SCICTL2) 319
7.4.4 SCI接收状态寄存器SCIRXST 320
7.4.5 SCI仿真数据缓冲寄存器SCIRXEMU 322
7.4.6 SCI接收数据缓冲寄存器SCIRXBUF 323
7.4.7 SCI发送数据缓冲寄存器SCITXBUF 324
7.4.8 SCI优先级控制寄存器SCIPRI 324
7.4.9 SCI波特率选择寄存器(SCIHBAUD,SCILBAUD) 325
7.5 SCI波特率计算 326
7.6 SCI发送数据和接收数据机制 327
7.6.1 SCI查询方式 327
7.6.2 SCI中断方式 328
7.6.3发送和接收独立的中断 331
7.7 SCI多处理器通信 332
7.7.1多处理器通信概述 332
7.7.2空闲线多处理器模式 333
7.7.3地址位多处理器模式 335
7.8 SCI发送与接收数据应用实例 336
7.9 SCI FIFO寄存器 343
7.9.1 SCI FIFO发送寄存器SCIFFTX 343
7.9.2 SCI FIFO接收寄存器SCIFFRX 344
7.9.3 SCI FIFO控制寄存器SCIFFCT 346
7.10 SCI FIFO功能描述 347
7.11 SCI FIFO中断 348
7.11.1 SCI FIFO可编程中断级别 348
7.11.2 SCI FIFO中断标志和使能逻辑 349
7.12 SCI FIFO应用举例 352
7.13 SCI自动波特率检测 357
7.13.1 SCI自动波特率检测步骤 357
7.13.2 SCI自动波特率检测举例 358
思考题与习题 363
第8章A/D转换模块 368
8.1 ADC模块结构和功能 368
8.2 ADC寄存器描述 369
8.3自动排序器原理 371
8.3.1单排序器(级联)模式自动排序 372
8.3.2双排序器模式自动排序 372
8.3.3触发源 372
8.4 A/D转换配置方法 374
8.4.1 ADC输入通道选择排序控制寄存器 374
8.4.2顺序采样和同步采样 375
8.4.3确定采样通道总数 376
8.5顺序采样与同步采样应用举例 376
8.6 ADC时钟ADCCLK 380
8.7 ADC寄存器 382
8.7.1 ADC控制寄存器ADCTRL1 382
8.7.2 ADC控制寄存器ADCTRL2 383
8.7.3 ADC控制寄存器ADCTRL3 385
8.7.4 ADC转换结果缓冲寄存器ADCRESULT0~15 387
8.7.5最大转换通道寄存器ADCMAXCONV 388
8.7.6自动排序状态寄存器ADCASEQSR 389
8.7.7 ADC状态和标志寄存器ADCST 391
8.7.8 ADC寄存器应用举例 392
8.8 ADC模块转换工作原理 394
8.8.1排序器的连续排序模式和启动-停止模式 394
8.8.2触发源工作原理 397
8.8.3序列转换中断操作 398
8.8.4序列转换中断操作应用举例 398
8.9 ADC模块应用举例 405
思考题与习题 421
第9章 DSP软件开发与C语言编程 424
9.1 CCS简介 424
9.1.1 CCS功能 424
9.1.2 CCS开发应用程序步骤 425
9.2 DSP C工程文件 426
9.2.1工程与文件类型 426
9.2.2 CCS项目组成和COFF格式 428
9.2.3 C编译器产生的段 428
9.2.4链接命令文件 429
9.3 DSP C语言程序设计基础 433
9.3.1数据类型 433
9.3.2按位域定义寄存器 434
9.3.3结构与联合 436
9.3.4函数与指针 438
9.3.5宏定义、文件包含与条件编译 440
9.3.6 pragma命令 440
9.3.7 C语言与汇编语言混合编程 441
9.3.8 C28x DSP编译器关键字 443
9.4 DSP外设寄存器定义 445
9.5典型的C文件举例 450
9.6复位引导与Bootloader 452
9.6.1复位与引导模式 453
9.6.2 Bootloader操作过程 454
9.6.3 Bootloader模式 454
9.7片内Flash运行应用程序 457
9.7.1从片内Flash引导 457
9.7.2从片内Flash启动顺序 460
9.7.3从Flash引导的链接命令文件 461
思考题与习题 465
第10章 串行外设接口SPI 466
10.1异步传输与同步传输 466
10.1.1异步传输(Asynchronous Transmission) 466
10.1.2同步传输(Synchronous Transmission) 467
10.1.3异步传输和同步传输的区别 467
10.2 SPI通信原理 467
10.3 SPI结构及功能 469
10.3.1 SPI模块概述 469
10.3.2 SPI模块寄存器 470
10.3.3 SPI模块功能图 472
10.4 SPI操作模式 475
10.4.1 SPI主/从连接 475
10.4.2 SPI主机/从机操作模式 476
10.4.3 SPI数据格式 477
10.4.4 SPI波特率 478
10.4.5 SPI时钟模式 478
10.4.6 SPI中断控制 480
10.4.7 SPI初始化 481
10.4.8数据传输举例 482
10.4.9数据发送与接收 483
10.5 SPI寄存器 485
10.5.1 SPI配置控制寄存器SPICCR 485
10.5.2 SPI操作控制寄存器SPICTL 487
10.5.3 SPI状态寄存器SPISTS 488
10.5.4 SPI波特率寄存器SPIBRR 488
10.5.5 SPI仿真缓冲寄存器SPIRXEMU 489
10.5.6 SPI串行接收缓冲寄存器SPIRXBUF 490
10.5.7 SPI串行发送缓冲寄存器SPITXBUF 490
10.5.8 SPI串行数据寄存器SPIDAT 491
10.5.9 SPI FIFO发送寄存器SPIFFTX 492
10.5.10 SPI FIFO接收寄存器SPIFFRX 493
10.5.11 SPI FIFO控制寄存器SPIFFCT 495
10.5.12 SPI优先级控制寄存器SPIPRI 496
10.6 SPI FIFO操作 496
10.6.1 SPI FIFO说明 496
10.6.2 SPI FIFO中断标志和使能逻辑 498
10.7 SPI应用举例 500
10.8 SPI FIFO应用举例 505
10.9应用SPI实现D/A输出举例 508
思考题与习题 521
第11章 基于DSP的无刷直流电机控制 523
11.1无刷直流电机工作原理 523
11.1.1无刷直流电机基本组成 523
11.1.2无刷直流电机工作原理 524
11.1.3位置传感器 527
11.2无刷直流电机控制策略 527
11.2.1无刷直流电机DSP控制系统 527
11.2.2 PID调节 528
11.2.3 PWM波控制策略 529
11.3 DSP主控系统 529
11.3.1电源电路 529
11.3.2系统时钟与工作方式配置 531
11.3.3存储器扩展 531
11.3.4实时时钟 532
11.3.5按键、拨码开关和LED 533
11.3.6 TTL与CMOS转换 533
11.3.7接口定义 535
11.4无刷直流电机驱动电路 536
11.4.1逆变电路选择 537
11.4.2驱动方案选择 538
11.4.3功率半导体器件选择与驱动保护电路 540
11.4.4电机转速检测电路 541
11.4.5定子电流检测电路 542
11.4.6直流母线电压检测 543
11.4.7驱动电路电源 543
11.4.8驱动电路接口 544
11.5键盘与显示电路 549
11.5.1 ZLG7290B引脚图及功能说明 549
11.5.2键盘与数码管显示原理图 550
11.5.3 ZLG7290B寄存器 552
11.5.4 ZLG7290B指令 553
11.5.5 ZLG7290B编程说明 557
11.5.6键盘和显示应用程序 560
11.6无刷直流电机控制系统应用软件 564
11.6.1控制系统主程序 564
11.6.2控制系统初始化 564
11.6.3事件管理器设置 567
11.6.4捕获中断和计算转速 571
11.6.5电流电压采样中断 576
11.6.6功率管驱动保护 581
11.6.7电机启停 582
11.6.8功能设定 583
11.6.9系统调试 585
思考题与习题 588
第12章 基于DSP的数字信号处理算法 590
12.1卷积算法在DSP上的实现 590
12.1.1卷积原理 590
12.1.2卷积程序实现 590
12.2 FIR数字滤波器实现 593
12.2.1 FIR数字滤波器基本原理 593
12.2.2 FIR数字滤波器程序实现 594
12.3 FFT算法实现 596
12.3.1系统硬件结构 596
12.3.2数据采集功能 597
12.3.3 FFT算法原理与程序流程图 598
12.3.4 FFT算法软件实现 600
12.4 DCT实现 605
12.4.1 DCT基本原理 605
12.4.2 DCT程序实现 606
12.5 DTMF信号编解码算法实现 608
12.5.1 DTMF信号编码 609
12.5.2 DTMF信号解码 610
12.5.3 DTMF信号编码程序实现 612
12.5.4 DTMF信号检测程序实现 613
思考题与习题 616
第13章 异步感应电机DSP的矢量控制 617
13.1感应电机调速系统 617
13.1.1标量控制 617
13.1.2矢量控制 618
13.1.3直接转矩控制 618
13.2坐标变换和感应电机数学模型 619
13.2.1 Clarke变换 619
13.2.2 Park变换 620
13.2.3各坐标系下数学模型 622
13.3感应电机空间矢量调制技术 625
13.3.1电压矢量与电磁矢量的关系 625
13.3.2基本电压空间矢量 626
13.3.3 SVPWM技术关键问题 628
13.3.4 DSP中产生PWM的相关配置 631
13.3.5 SVPWM的DSP程序实现 633
13.4感应电机标量控制系统 637
13.4.1标量控制程序 637
13.4.2电压-频率曲线 638
13.4.3电压矢量调制程序 639
13.5感应电机矢量控制系统 641
13.5.1矢量控制基本原理 641
13.5.2按转子磁链定向的矢量控制理论基础 641
13.5.3磁链观测模型 642
13.5.4转速观测模型 647
13.5.5调节器设计 649
13.6系统硬件实现 653
13.6.1主回路 653
13.6.2电源设计 655
13.6.3控制电路 656
13.6.4驱动电路 665
13.7系统应用软件实现 667
思考题与习题 668
参考文献 669