第1章 dsPIC33F系列DSC简介 1
1.1 MCU、DSC与DSP 1
1.2 Microchip公司MCU和dsPIC系列产品简介 1
1.3 dsPIC33F中的GP、MC、GS系列的区别 2
1.4 dsPIC33F通用系列(GP)性能简介 3
1.5 程序存储器 5
1.6 数据存储器 6
1.7 CPU结构 9
1.7.1 工作寄存器阵列W0~W15 9
1.7.2 W0和文件寄存器指令 10
1.7.3 W寄存器和字节模式指令 12
1.7.4 影子寄存器 12
1.7.5 DO循环影子寄存器 12
1.7.6 未初始化的W寄存器的复位 12
1.7.7 软件堆栈指针 12
1.8 中断系统 13
1.9 开发工具的支持 13
第2章 C30及开发环境介绍 14
2.1 C30与标准C(ANSI C)的差别 14
2.1.1 关键字差别 14
2.1.2 语句差别 23
2.1.3 表达式差别 26
2.1.4 C30的头文件与引用 26
2.2 行内汇编 28
2.3 C30的数据类型 29
2.4 内建函数 30
2.5 C30在MPLAB IDE中的使用 31
2.5.1 项目的建立与编译 31
2.5.2 C30程序的仿真与调试 33
第3章 I/O口 39
3.1 I/O口概况 39
3.2 与I/O相关的寄存器 41
3.3 漏极开路配置 46
3.4 配置模拟端口引脚 47
3.5 输入状态变化与弱上拉 48
3.6 外设引脚的可重映射功能选择 51
3.6.1 控制外设引脚选择 51
3.6.2 控制配置改变 53
第4章 中断 57
4.1 中断概述 57
4.2 中断向量表 57
4.3 中断控制和状态寄存器 62
4.4 中断设置过程 69
4.4.1 中断的初始化 69
4.4.2 中断服务程序 70
4.4.3 陷阱服务程序 70
4.4.4 禁止中断 70
4.5 中断程序示例 71
第5章 系统配置 76
5.1 器件配置综述 76
5.2 FBS配置寄存器 77
5.3 FSS配置寄存器 78
5.4 FGS配置寄存器 79
5.5 FOSCSEL配置寄存器 80
5.6 FOSC配置寄存器 81
5.7 FWDT配置寄存器 81
5.8 FPOR配置寄存器 87
5.9 FICD配置寄存器 88
第6章 振荡器配置与应用 90
6.1 dsPIC33F的时钟概况 90
6.1.1 PLL配置 92
6.1.2 与振荡器相关的寄存器介绍 93
6.2 FRC振荡器 98
6.3 主振荡器(XT、HS或EC) 103
6.4 辅助振荡器(LP或SOSC) 106
6.5 低功耗内部振荡器(LPRC) 107
6.6 时钟切换 108
6.6.1 时钟切换工作原理 108
6.6.2 使能时钟切换 108
6.6.3 振荡器切换步骤 109
第7章 定时器 112
7.1 定时器Timerl 112
7.1.1 特点及简介 112
7.1.2 相关寄存器介绍 114
7.1.3 实例 115
7.2 定时器Timer2/3、Timer4/5、Timer6/7、Timer8/9 123
7.2.1 功能说明 123
7.2.2 相关寄存器 125
7.2.3 32位定时/计数器 126
第8章 输入捕捉IC 130
8.1 概述 130
8.2 相关寄存器介绍 131
第9章 输出比较OC 138
9.1 概述 138
9.2 相关寄存器介绍 138
9.3 输出比较OC的工作方式 140
9.3.1 单次比较模式(低电平有效和高电平有效) 141
9.3.2 翻转模式 143
9.3.3 延迟单次模式 145
9.3.4 连续脉冲模式 147
9.3.5 PWM模式(带故障保护与不带故障保护) 148
第10章 模/数转换器ADC 152
10.1 概述 152
10.2 ADC和DMA 153
10.3 相关寄存器介绍 153
10.4 ADC转换的相关参数与设置 161
10.4.1 ADC转换时钟周期TAD 161
10.4.2 ADC转换触发源 162
10.4.3 采样多路开关 163
10.4.4 ADC参考电压的选择 163
10.5 无DMA模块的ADC实例 164
10.6 带DMA模块的ADC实例 183
第11章 异步串行通信UART 195
11.1 概述 195
11.2 发送器 196
11.3 接收器 197
11.4 UART波特率发生器(BRG) 198
11.5 相关寄存器 198
11.6 UARTx的几种工作方式 202
11.6.1 奇偶校验 202
11.6.2 环回模式 203
11.6.3 自动波特率检测 205
11.6.4 发送间隔字符 207
11.6.5 UARTx与DMA 208
第12章 SPI通信接口 213
12.1 简介 213
12.2 相关寄存器 215
12.3 SPI模块的工作模式 218
12.3.1 8位/16位模式 218
12.3.2 主/从模式 219
12.3.3 SPI帧模式 220
12.4 相关工作模式的时序图 220
第13章 I2C通信接口 233
13.1 简介 233
13.2 波特率发生器 234
13.3 I2C地址 234
13.4 I2C相关控制寄存器 236
13.5 I2C总线特性 240
13.5.1 I2C协议 241
13.5.2 I2C报文协议的几个基本内容 242
13.6 作为主器件在单主机环境下通信 243
13.6.1 产生启动总线事件 244
13.6.2 发送数据到从器件 244
13.6.3 接收来自从器件的数据 245
13.6.4 应答产生 246
13.6.5 产生停止总线事件 246
13.6.6 产生重复启动总线事件 246
13.7 作为从器件通信 246
13.7.1 检测启动和停止条件 247
13.7.2 检测地址 247
13.7.3 接收来自主器件的数据 250
13.7.4 发送数据到主器件 254
第14章 电机控制PWM模块 272
14.1 简介 272
14.2 PWM的时基与工作模式 274
14.2.1 PWM的时基 274
14.2.2 PWM的工作模式 274
14.2.3 PWM的分频 275
14.2.4 PWM的周期 276
14.2.5 PWM对齐方式 276
14.2.6 PWM占空比比较单元 278
14.2.7 互补PWM操作 279
14.2.8 死区发生器 279
14.2.9 PWM输出引脚及相关控制 280
14.2.10 PWM故障引脚 282
14.2.11 PWM更新锁定 283
14.2.12 PWM特殊事件触发器 283
14.2.13 CPU休眠模式与空闲模式下的PWM操作 283
14.3 PWM的相关寄存器 284
14.4 MCPWM的应用实例 291
第15章 正交编码器接口QEI模块 315
15.1 概述 315
15.2 相关寄存器介绍 316
15.3 16位向上/向下位置计数器模式 319
15.3.1 位置计数器错误检查 319
15.3.2 位置计数器复位 319
15.4 x2与x4模式的区别 320
15.5 POS1CNT与MAX1CNT匹配复位计数器 321
15.6 索引脉冲复位计数器 321
15.7 可编程数字噪声滤波器 322
15.8 备用16位定时/计数器 322
15.9 正交编码器接口中断 323
第16章 直接数据存取控制器DMA 325
16.1 简介 325
16.2 DMA寄存器 326
16.3 DMA工作模式 331
16.3.1 字节或字传输 331
16.3.2 寻址模式 331
16.3.3 DMA传输方向 332
16.3.4 空数据外设写模式 332
16.3.5 连续数据块或单数据块的工作 332
16.3.6 乒乓模式 333
16.3.7 手动传输模式 333
16.3.8 DMA请求源选择 333
16.4 DMA中断和陷阱 333
16.5 DMA实例 334
第17章 CAN总线模块ECAN 343
17.1 概述 343
17.2 帧类型 344
17.3 工作模式 345
17.3.1 初始化模式 345
17.3.2 禁止模式 346
17.3.3 正常工作模式 346
17.3.4 监听模式 346
17.3.5 监听所有报文模式 347
17.3.6 环回模式 347
17.4 报文接收 347
17.4.1 接收缓冲器 347
17.4.2 FIFO缓冲器模式 347
17.4.3 报文接收过滤器 347
17.4.4 报文接收过滤器屏蔽寄存器 348
17.4.5 接收错误 348
17.4.6 接收中断 348
17.5 报文发送 349
17.5.1 发送缓冲器 349
17.5.2 发送报文优先级 349
17.5.3 发送过程 349
17.5.4 远程发送请求的自动处理 350
17.5.5 中止报文发送 350
17.5.6 发送错误 350
17.5.7 发送中断 350
17.6 波特率设置 351
17.6.1 位时序 351
17.6.2 预分频比设置 352
17.6.3 传播时间段 352
17.6.4 相位缓冲段 352
17.6.5 采样点 352
17.6.6 同步 352
17.7 相关寄存器 353
附录A 内建函数介绍 369
A.1 内建函数列表 369
A.2 内建函数 370
参考文献 391