《DSPICR通用数字信号控制器原理及应用:基于DSPIC30F系列》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:刘和平等编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2007
  • ISBN:7810778161
  • 页数:478 页
图书介绍:本书主要介绍微芯公司dsPIC30F系列通用数字信号控制器的基本原理和工程应用方面的知识,书中除介绍通用数字信号控制器的结构、工作原理和基本使用方法外,还介绍大量的应用例程和与编程相关知识,涉及到dsPIC30F系列数字信号控制器的几乎所有功能模块的编程应用,给出了典型应用实例的电路原理图以及汇编程序、C语言源程序清单,并将这些程序放在书中所附光盘中。

第1章 概述 6

第2章 CPU结构 6

2.1 概述 6

2.2 编程模型 7

2.3 软件堆栈指针/结构指针 11

2.3.1 软件堆栈指针示例 11

2.3.2 W14软件堆栈指针 13

2.3.3 堆栈指针上溢 13

2.3.4 堆栈指针下溢 13

2.4 除法支持 13

2.5 DSP引擎 14

2.5.1 乘法器 15

2.5.2 数据累加器加法器/减法器 16

2.5.3 桶形移位寄存器 20

2.6 CPU寄存器描述 20

2.6.1 CPU状态寄存器SR 20

2.6.2 内核控制寄存器CORCON 23

2.6.3 其他CPU控制寄存器 24

2.7 指令流水线类型 28

2.8 地址寄存器相依性 29

第3章 存储器结构 32

3.1 程序地址空间 32

3.1.1 程序计数器 32

3.1.2 用表读表写指令访问放在程序空间中的数据 34

3.1.3 用程序空间的可视性访问程序存储器中的数据 36

3.1.4 写程序存储器 38

3.2 数据地址空间 38

3.2.1 数据空间存储器映射 39

3.2.2 数据空间 40

3.2.3 数据空间宽度 41

3.2.4 数据对齐 41

3.2.5 Near数据空间 42

3.2.6 软件堆栈 42

第4章 寻址方式 44

4.1 地址产生单元 44

4.2 指令寻址模式 45

4.2.1 文件寄存器指令 45

4.2.2 MCU指令 45

4.2.3 移动和累加器指令 46

4.2.4 MAC指令 46

4.2.5 其他指令 47

4.3 模寻址 47

4.3.1 起始和结束地址 47

4.3.2 W地址寄存器的选择 48

4.3.3 模寻址的应用 48

4.4 位反转寻址 49

4.5 寻址寄存器 51

第5章 MPLAB IDE7.xx及MPLABC30安装及使用简介5.1 MPLAB IDE 7.xx的安装 56

5.2 MPLAB C30的安装 60

5.3 MPLAB IDE及MPLAB C18的使用简介 64

第6章 dsPIC30F6014快速入门 77

6.1 生成源程序文件 77

6.1.1 在MPLAB IDE软件环境下编辑源程序文件 77

6.1.2 在VC下编辑源程序文件 80

6.2 生成新项目 80

6.2.1 利用MPLAB IDE向导创建新项目 81

6.2.2 直接新建项目 85

6.3 编译项目 87

6.4 修改项目编译的语法错误 90

6.5 调试程序 92

6.5.1 调试程序方式 92

6.5.2 设置断点 93

6.5.3 单步运行 95

6.6 固化程序 95

6.7 编写程序中应注意的问题 97

第7章 dsPIC30F601x实验开发系统介绍7.1 dsPIC30F601x实验开发系统介绍 99

7.1.1 结构简介 99

7.1.2 主要功能及结构特点 99

7.1.3 可在实验目标板上做的实验 100

7.2 dsPIC30F601x实验目标板各模块功能介绍 100

7.2.1 实验目标板概述 100

7.2.2 人机交换接口 100

7.2.3 串行通信接口(SCI) 101

7.2.4 控制器区域网络(CAN) 101

7.2.5 串行外设接口(SPI) 101

7.2.6 用I2C总线实现的EEPROM和日历时钟电路 101

7.2.7 实验目标板的硬件设置 102

7.3 dsPIC30F601x使用中的几个建议 106

7.3.1 MCLR主清0和编程信号输入引脚 106

7.3.2 上电/手动复位电路 106

7.3.3 关于运行频率 106

7.3.4 关于EMU引脚 107

7.3.5 调试时的内存情况 107

7.3.6 MPLAB IDE调试时的几个问题 107

第8章 系统设置 108

8.1 概述 108

8.2 振荡器系统概述 109

8.3 振荡器配置 111

8.3.1 初始时钟源的选择 111

8.3.2 振荡器控制寄存器 111

8.3.3 主振荡器 112

8.3.4 晶体振荡器/陶瓷谐振器 113

8.3.5 C1、C2和Rs值的确定 115

8.3.6 振荡器起振定时器 116

8.3.7 外部RC振荡器 116

8.3.8 锁相环 117

8.3.9 LP振荡器 117

8.3.10 快速RC振荡器 118

8.3.11 低功耗的RC振荡器 118

8.3.12 故障保护时钟监视器 119

8.3.13 可编程振荡器后分频器 119

8.3.14 时钟切换原理 120

8.4 复位 122

8.4.1 上电复位 123

8.4.2 可编程掉电复位 125

8.5 看门狗定时器 127

8.5.1 看门狗定时器操作 127

8.5.2 使用和禁止WDT 127

8.5.3 WDT定时器周期选择 128

8.5.4 WDT预分频器 128

8.5.5 复位看门狗定时器 128

8.5.6 WDT在休眠或空闲模式的工作 129

8.6 电压过低检测 129

8.6.1 LVD初始化 129

8.6.2 LVD运行时的电流消耗 130

8.6.3 在休眠和空闲模式下工作 130

8.7 低功耗模式 130

8.7.1 休眠模式 130

8.7.2 空闲模式 131

8.8 外设模块禁止寄存器 132

8.9 在线调试器 132

8.10 寄存器 133

8.10.1 振荡器控制寄存器 133

8.10.2 复位控制寄存器 135

8.10.3 器件配置寄存器 137

第9章 I/O端口 143

9.1 并行I/O端口 143

9.1.1 I/O端口控制寄存器 143

9.1.2 外设复用 144

9.2 模拟端口引脚配置 149

9.3 输入电平变化中断模式 149

9.3.1 输入电平变化中断控制寄存器 150

9.3.2 输入电平变化中断配置和操作 150

9.3.3 休眠和空闲模式下的输入电平变化中断工作 150

9.3.4 输入电平变化中断控制寄存器 150

9.4 I/O端口编程 152

第10章 中断 163

10.1 概述 163

10.2 中断优先级 165

10.3 复位顺序 165

10.4 陷阱 166

10.4.1 陷阱源 166

10.4.2 硬件及软件陷阱 167

10.5 中断序列 167

10.6 备用中断向量表 168

10.7 快速上下文保存 168

10.8 外部中断请求 169

10.9 从休眠和空闲状态唤醒 169

10.10 中断处理时序 169

10.10.1 单周期指令的中断延迟 169

10.10.2 双周期指令的中断延迟 170

10.10.3 从中断返回 171

10.10.4 中断延迟的特殊条件 171

10.11 中断寄存器 171

10.12 中断编程 198

第11章 程序存储器 199

11.1 在线串行编程 199

11.2 运行时自编程 199

11.3 表读表写指令 199

11.4 运行时自编程 200

11.5 控制寄存器 200

11.6 自编程操作 201

11.6.1 Flash程序存储器的编程规则 201

11.6.2 擦除程序存储器一行 202

11.6.3 装载写锁存器 202

11.6.4 启动编程序列 203

11.7 控制寄存器 204

第12章 非易失数据存储器 206

12.1 读非易失数据存储器 206

12.2 擦除非易失数据存储器 207

12.2.1 擦除非易失数据存储器的一个区域 207

12.2.2 擦除非易失数据存储器的一个字 207

12.3 写非易失数据存储器 208

12.3.1 写非易失数据存储器一个字 209

12.3.2 写非易失数据存储器的一个区域 209

12.4 写校验 211

12.5 误写操作保护 211

12.6 非易失数据存储器编程 211

第13章 定时器1模块 214

13.1 Timer1模块简介 214

13.2 门控定时器 215

13.3 定时器预分频器 215

13.4 休眠模式下的定时器操作 216

13.5 定时器中断方式 216

13.6 实时时钟 217

13.6.1 RTC振荡器 217

13.6.2 实时时钟中断 219

13.7 秒表显示程序 219

第14章 定时器2/3和4/5模块 226

14.1 Timer2/3模块 226

14.2 定时器门控方式 229

14.3 ADC事件触发方式 229

14.4 定时器预分频器 229

14.5 Timer3定时器比较结束时启动A/D转换例程 232

14.6 定时器Timer4/5模块 236

第15章 输入捕捉模块 237

15.1 概述 237

15.2 简单的捕捉事件模式 238

15.2.1 预分频器捕捉事件 238

15.2.2 捕捉缓冲操作 238

15.2.3 Timer2和Timer3的选择模式 238

15.2.4 边沿检测模式 239

15.3 在休眠和空闲状态下的输入捕捉操作 239

15.3.1 休眠模式下的输入捕捉操作 239

15.3.2 空闲模式下的输入捕捉操作 239

15.4 输入捕捉中断 239

15.5 输入捕捉编程 241

第16章 输出比较模块 245

16.1 输出比较模块 245

16.2 Timer2和Timer3选择模式 246

16.3 单输出比较匹配模式 246

16.3.1 单比较模式驱动为高电平 246

16.3.2 单比较模式输出驱动为低电平 247

16.3.3 单比较模式电平交替翻转输出 248

16.4 双输出比较匹配模式 249

16.4.1 单脉冲输出模式 249

16.4.2 连续脉冲输出模式 250

16.5 简单PWM模式 252

16.5.1 带故障保护输入的PWM模式 252

16.5.2 PWM周期 252

16.5.3 PWM占空比 253

16.6 在CPU休眠模式下的输出比较操作 254

16.7 在CPU空闲模式下输出比较操作 254

16.8 输出比较中断 254

16.9 输出比较编程 256

第17章 SPI模块 264

17.1 概述 264

17.2 操作功能描述 265

17.3 字和字节通信 265

17.4 关闭SDOx(SPI仅启动接收功能) 265

17.5 主控模式和从动模式 266

17.5.1 主控模式 266

17.5.2 从动模式 268

17.6 SPI错误的处理 272

17.7 串行通信的帧支持 272

17.7.1 在SPI帧模式下的SCKx 273

17.7.2 在SPI帧模式下的SPIx缓冲寄存器 273

17.7.3 SPI主控模式和帧主控模式 273

17.7.4 SPI主控模式和帧从动模式 274

17.7.5 SPI从动模式和帧主控模式 275

17.7.6 SPI从动模式和帧从动模式 276

17.8 SPI主控模式时钟频率 276

17.9 CPU休眠模式下SPI操作 277

17.10 CPU空闲模式下SPI操作 277

17.11 SPI状态和控制寄存器 277

17.12 SPI编程 281

第18章 I2C模块 287

18.1 概述 287

18.2 操作功能描述 287

18.2.1 I2C操作模式 287

18.2.2 I2C模式下的引脚设置 287

18.2.3 I2C寄存器 288

18.3 I2C模块地址 289

18.4 I2C的7位从动模式操作 289

18.4.1 从动发送 289

18.4.2 从动接收 290

18.5 I2C的10位地址从动模式操作 291

18.6 自动时钟延长 292

18.7 软件控制时钟延长 293

18.8 中断 293

18.9 波形边沿斜率控制 293

18.10 IPMI支持 294

18.11 通用地址寻址 294

18.12 I2C主控方式支持 294

18.13 I2C主控模式操作 294

18.13.1 产生启动总线事件 295

18.13.2 I2C主控方式发送 296

18.13.3 I2C主动方式接收 297

18.13.4 应答产生 298

18.13.5 产生停止总线事件 299

18.13.6 重复启动产生 300

18.13.7 波特率发生器 300

18.13.8 时钟仲裁 301

18.13.9 多主机通信、总线冲突和总线仲裁 301

18.14 休眠和空闲模式下的I2C总线操作 301

18.15 I2C模块编程 306

18.15.1 I2C模块扩展片外的串行EEPROM编程 306

18.15.2 I2C模块扩展片外的日历时钟模块 309

第19章 通用异步收发器模块 319

19.1 UART模块特性 319

19.2 UART设置 319

19.2.1 UART使能 320

19.2.2 关闭UART 320

19.2.3 设置数据、奇偶和停止位 320

19.3 发送数据 320

19.3.1 8位数据发送方式 321

19.3.2 9位数据发送方式 322

19.3.3 发送缓冲器(UxTXB) 322

19.3.4 发送中断 322

19.3.5 设置UART发送 323

19.3.6 发送中止 323

19.4 接收数据 324

19.4.1 8位或9位数据接收方式 324

19.4.2 接收缓冲器(UxRXB) 325

19.4.3 接收中断 325

19.4.4 设置UART接收 325

19.5 处理接收错误 326

19.6 地址检测模式 327

19.7 自检模式 327

19.8 波特率发生器 328

19.9 自动波特率 328

19.10 休眠和空闲模式下的UART操作 329

19.10.1 休眠模式下的UART操作 329

19.10.2 空闲模式下的UART操作 329

19.11 USART编程 332

第20章 CAN模块 341

20.1 概述 341

20.2 帧类型 343

20.3 CAN操作模式 349

20.3.1 配置模式 349

20.3.2 禁止模式 349

20.3.3 正常工作模式 350

20.3.4 监听模式 350

20.3.5 监听所有报文模式 350

20.3.6 自检模式 350

20.3.7 错误识别模式 350

20.4 报文接收 351

20.4.1 接收缓冲器 351

20.4.2 报文接收过滤器 351

20.4.3 报文接收屏蔽器 352

20.4.4 接收溢出 354

20.4.5 接收错误 354

20.4.6 接收中断 354

20.5 报文发送 355

20.5.1 发送缓冲器 355

20.5.2 发送报文优先级 355

20.5.3 发送序列 356

20.5.4 发送报文中止 356

20.5.5 发送错误 358

20.5.6 发送中断 358

20.6 波特率设置 359

20.6.1 位时序 359

20.6.2 预分频设置 359

20.6.3 传输时间段 360

20.6.4 相位缓冲段 360

20.6.5 采样点 361

20.6.6 同步时间段 361

20.7 CAN模块在低功耗模式下工作 361

20.7.1 CAN模块在休眠模式下工作 361

20.7.2 CAN模块在空闲模式下的工作 362

20.8 CAN模块的寄存器 362

20.8.1 CAN控制状态寄存器 362

20.8.2 CAN发送缓冲器 364

20.8.3 CAN接收缓冲器 367

20.8.4 报文接收过滤器 370

20.8.5 接收过滤器屏蔽寄存器 372

20.8.6 CAN波特率寄存器 373

20.8.7 CAN模块错误计数寄存器 375

20.8.8 CAN中断寄存器 375

20.9 CAN总线编程 378

第21章 12位模/数转换器 383

21.1 概述 383

21.2 A/D转换结果缓冲寄存器 384

21.3 转换过程 384

21.4 A/D模块配置 386

21.4.1 参考电压源的选择 386

21.4.2 A/D转换时钟的选择 386

21.4.3 模拟输入通道的选择 387

21.5 采样/转换的控制 388

21.5.1 模块使能 388

21.5.2 采样开始 388

21.5.3 停止采样并开始转换 389

21.5.4 采样/转换的编程 393

21.6 转换结果写入缓冲器 394

21.7 A/D采样要求 395

21.8 输出格式 395

21.9 连接注意事项 396

21.10 复位的影响 396

21.11 配置模拟引脚 396

21.12 转换异常中断 397

21.13 A/D初始化及转换过程示例 397

21.13.1 A/D初始化 397

21.13.2 转换过程示例 398

21.14 在休眠和空闲模式下的A/D操作 400

21.15 控制寄存器 400

21.16 A/D编程 406

第22章 数据传输接口模块 410

22.1 概述 410

22.2 DCI引脚 410

22.3 编解码器接口 411

22.4 DCI模块操作 413

22.5 使用DCI缓冲器、状态位及中断发送和接收数据 421

22.5.1 DCI起动和数据缓冲 422

22.5.2 DCI禁止 423

22.6 多通道工作 424

22.7 AC-Link工作 425

22.8 I2S工作 427

22.9 DCI模块低功耗模式 430

22.10 DCI寄存器 430

第23章 汇编指令集与C语言库函数概述23.1 汇编指令概述 436

23.2 DSP函数库 443

23.2.1 DSF函数库的使用 444

23.2.2 矢量(数组)函数 445

23.2.3 窗函数 447

23.2.4 矩阵函数 447

23.2.5 滤波函数 448

23.2.6 变换函数 450

23.3 dsPIC外设函数库 451

23.3.1 dsPIC外设函数库的使用 451

23.3.2 外部LCD函数 451

23.3.3 CAN函数 452

23.3.4 ADC12函数 453

23.3.5 ADC10函数 453

23.3.6 定时器函数 454

23.3.7 复位/控制函数 455

23.3.8 I/O端口函数 455

23.3.9 输入捕捉函数 456

23.3.10 输出比较函数 456

23.3.11 UART函数 457

23.3.12 DCI函数 458

23.3.13 SPI函数 458

23.3.14 QEI函数 459

23.3.15 PWM函数 459

23.3.16 I2C函数 460

23.4 标准C函数库和数学函数 461

23.4.1 使用标准C函数库 461

23.4.2 <assert.h>诊断 461

23.4.3 <ctype.h>字符处理 462

23.4.4 <errno.h>错误 462

23.4.5 <float.h>浮点特征 463

23.4.6 <limits.h>实现定义的限制 464

23.4.7 <locale.h>语言环境 465

23.4.8 <setjmp.h>与语言环境无关的跳转 465

23.4.9 <signal.h>信号处理 466

23.4.10 <stdarg.h>可变参数列表 466

23.4.11 <stddef.h>公共定义 467

23.4.12 <stdio.h>输入和输出 467

23.4.13 <stdlib.h>实用函数 470

23.4.14 <string.h>字符串函数 471

23.4.15 <time.h>日期和时间函数 472

23.4.16 <math.h>数学函数 473

23.4.17 PIC30函数库 474

23.5 MPLAB C30内建函数 476

23.5.1 内建函数列表 476

23.5.2 内建函数错误消息 477

参考文献 478