dsPIC33FJ32MC302/304、
深圳市粤原点科技有限公司(丽智电子:www.LZmcu.com)
(Microchip Authorized Design Partner)指定授权
总部地址:深圳市福田区福虹路世贸广场C座1103室
Add:Room 1103,Block C,World Trade Plaza,
Fuhong Road,Futian District Shen Zhen City
电话(tel) :86-755-83666320,83685176,83666321,83666325
传真(fax) :86-755-83666329,83681854
Web: Http://www.origin-gd.com or Http://www.LZmcu.com
E-mail:01@LZmcu.com
联系人:马先生,王小姐
公司在线咨询:QQ:46885145
MSN:MSN:action_tech@hotmail.com
7x24小时在线产品咨询: 13509674380 13798484366
dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04
数据手册
高性能
16 位数字信号控制器
2008 Microchip Technology Inc. 超前信息 DS70291A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。
• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
• Microchip 愿与那些注重代码完整性的客户合作。
• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视
为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act )》。如果这种行为导致他人在未经授权的情况下,能访问您的
软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含
的英文部分,因为其中提供了有关 Microchip 产品性能和使用
情况的有用信息。Microchip Technology Inc. 及其分公司和相
关公司、各级主管与员工及事务代理机构对译文中可能存在的
任何差错不承担任何责任。建议参考 Microchip Technology
Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便
利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或
暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用
性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。如果将 Microchip 器件用于生命
维持和 / 或生命安全应用,一切风险由买方自负。买方同意在
由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障
Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识
产权保护下,不得暗中或以其他方式转让任何许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、
dsPIC、 K
EEL OQ、 K EEL OQ 徽标、 MPLAB、 PIC、
PICmicro、 PICSTART、 PRO MATE、 rfPIC 和 SmartShunt
均为 Microchip Technology Inc . 在美国和其他国家或地区的
注册商标。
FilterLab、 Linear Active Thermistor、 MXDEV、 MXLAB、
SEEVAL、SmartSensor 和 The Embedded Control Solutions
Company 均为 Microchip Technology Inc.在美国的注册商
标。
Analog-for-the-Digital Age、 Application Maestro、
CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、
dsSPEAK、 ECAN、 ECONOMONITOR、 FanSense、
In-Circuit Serial Programming、 ICSP、 ICEPIC、 Mindi、
MiWi、MPASM、 MPLAB Certified 徽标、 MPLIB、 MPLINK、
mTouch、 PICkit、 PICDEM、 PICDEM.net、 PICtail、 PIC
32
徽标、 PowerCal、 PowerInfo、 PowerMate、 PowerTool、
REAL ICE、rfLAB、 Select Mode、 Total Endurance、UNI/O、
WiperLock和 ZENA均为 Microchip Technology Inc.在美国和其
他国家或地区的商标。
SQTP 是 Microchip Technology Inc . 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。
© 2008, Microchip Technology Inc .版权所有。
Microchip
Gresham
印度的设计中心均通过了
MCU与dsPIC® DSC、KEE LOQ
设、非易失性存储器和模拟产品方面的质量体系流程均符合
16949:2002
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
ISO 9001:2000
Chandler和Te mp e
ISO/TS-16949:2002
®
跳码器件、串行
Microchip
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS70291A_CN 第 ii 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04
高性能 16 位数字信号控制器
工作范围:
• 最高 40 MIPS 的工作速度 ( 3.0-3.6V 时):
- 工业级温度范围
( -40°C 至 +85°C)
- 扩展级温度范围
(-40°C 至 +125°C )
高性能 DSC CPU :
• 改进型哈佛架构
• C 编译器优化指令集
• 16 位宽数据总线
• 24 位宽指令
• 可寻址最大 4M 指令字的线性程序存储空间
• 可寻址最大 64 KB 的线性数据存储空间
• 83 条基本指令:多为单字 / 单周期指令
• 两个带舍入和饱和选项的 40 位累加器
• 灵活而强大的寻址模式:
- 间接寻址
- 模寻址
- 位反转寻址
• 软件堆栈
• 16 x 16 位小数 / 整数乘法运算
• 32/16 位和 16/16 位除法运算
• 单周期乘 - 累加运算:
-DSP运算的累加器回写操作
- 双数据取操作
• 可将最多 40 位的数据左移或右移最多 16 位
直接存储器访问 ( Direct Memory
Access, DMA):
• 8 通道硬件 DMA
• 最大 2 KB 的双端口 DMA 缓冲区 ( DMA RAM)
用于存储通过 DMA 传输的数据:
- 允许 CPU 执行代码时在 RAM 和外设之间传
输数据 (不占用周期)
• 大部分外设都支持 DMA
定时器 / 捕捉 / 比较 /PWM :
• 定时器 / 计数器,最多 5 个 16 位定时器
- 可以配对作为最多 2 个 32 位定时器使用
-1个定时器依靠外部 32.768 kHz 振荡器作为
实时时钟运行
- 可编程预分频器
• 输入捕捉 (最多 4 路通道):
- 上升沿捕捉、下降沿捕捉或上升 / 下降沿捕捉
-16位捕捉输入功能
- 每路捕捉通道都带有 4 字深度的 FIFO 缓冲区
• 输出比较 (最多 4 路通道):
-1个或 2 个 16 位比较模式
-16位无毛刺 PWM 模式
• 硬件实时时钟 / 日历 ( Real-Time Clock/
Calendar, RTCC):
- 提供时钟、日历和闹钟功能
中断控制器:
• 中断响应延时为 5 个周期
• 118 个中断向量
• 最多 53 个中断源
• 最多 3 个外部中断
• 7 个可编程优先级
• 5 个处理器异常
数字 I/O :
• 外设引脚选择功能
• 最多 35 个可编程数字 I/O 引脚
• 最多 21 个引脚上具有唤醒 / 电平变化中断功能
• 输出引脚可驱动 3.0V 至 3.6V 的电压
• 漏极开路配置、最高 5V 的输出
• 所有数字输入引脚可承受 5V 的电压
• 所有 I/O 引脚的最大拉 / 灌电流为 4 mA
片上闪存和 SRAM :
• 闪存程序存储器 (最大 128 KB)
• 数据 SRAM (最大 16 KB)
• 闪存程序存储器的引导、安全和通用安全性
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第1 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
系统管理:
• 灵活的时钟选择:
- 外部振荡器、晶振、谐振器和内部 RC 振荡器
- 全集成锁相环 ( Phase-Locked Loop, PLL)
- 极低抖动 PLL
• 上电延时定时器
• 振荡器起振定时器 / 稳定器
• 自带 RC 振荡器的看门狗定时器
• 故障保护时钟监视器
• 多个复位源
功耗管理:
• 片上 2.5V 稳压器
• 实时时钟源切换
• 可快速唤醒的空闲、休眠和打盹模式
模数转换器 ( Analog-to-Digital
Converter, ADC):
• 10 位 1.1 Msps 或 12 位 500 ksps 转换:
-2路或 4 路输入同时采样 (10 位 ADC)
- 最多 9 路带自动扫描功能的输入通道
- 可手动启动转换或与 4 个触发源中的一个同
步
- 休眠模式下仍可进行转换
- 最大积分非线性误差为 ±2 LSb
- 最大微分非线性误差为 ±1 LSb
音频数模转换器 ( Digital-to-Analog
Converter, DAC):
-16位双通道 DAC 模块
- 最大 100 ksps 采样速率
- 二阶数字Δ -Σ 调制器
比较器模块:
• 带可编程输入 / 输出配置的两个模拟比较器
电机控制外设:
• 6 通道 16 位电机控制 PWM
-3个占空比发生器
- 独立或互补模式
- 可编程死区和输出极性
- 边沿对齐或中心对齐
- 手动输出改写控制
-1路故障输入
-ADC转换触发
-16位分辨率时的 PWM 频率
(@ 40 MIPS ):边沿对齐模式为 1220 Hz ,
中心对齐模式为 610 Hz
-11 位分辨率时的 PWM 频率
(@ 40 MIPS ):边沿对齐模式为 39.1 kHz ,
中心对齐模式为 19.55 kHz
• 2 通道 16 位电机控制 PWM
-1个占空比发生器
- 独立或互补模式
- 可编程死区和输出极性
- 边沿对齐或中心对齐
- 手动输出改写控制
-1路故障输入
-ADC转换触发
-16位分辨率时的 PWM 频率
(@ 40 MIPS ):边沿对齐模式为 1220 Hz ,
中心对齐模式为 610 Hz
-11 位分辨率时的 PWM 频率
(@ 40 MIPS ):边沿对齐模式为 39.1 kHz ,
中心对齐模式为 19.55 kHz
• 双正交编码器接口模块:
-A相、 B 相和索引脉冲输入
-16位递增 / 递减位置计数器
- 计数方向状态
- 位置测量 ( x2 和 x4)模式
- 输入端上的可编程数字噪声滤波器
- 备用 16 位定时器 / 计数器模式
- 位置计数器计满返回 / 下溢中断
CMOS 闪存技术:
• 低功耗高速闪存技术
• 全静态设计
• 3.3V (±10%)工作电压
• 工业级和扩展级温度
• 低功耗
DS70291A_CN 第2 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
通信模块:
• 4 线 SPI (最多 2 个模块):
- 帧支持与简单编解码器的 I/O 接口
- 支持 8 位和 16 位数据
- 支持所有串行时钟格式和采样模式
2
• I
C™:
- 完全支持多主机从模式
-7位和 10 位寻址
- 总线冲突检测和仲裁
- 集成信号调理
- 从地址掩码
• UART (最多 2 个模块):
- 检测到地址位时产生中断
- 出现 UART 错误时产生中断
- 检测到启动位时将器件从休眠模式唤醒
-4字符深的发送和接收 FIFO 缓冲区
-LIN总线支持
- 硬件 IrDA
- 高速波特率模式
- 使用 CTS 和 RTS 的硬件流控制
• 增强型 CAN ( ECAN™模块) 2.0B active:
- 最多 8 个发送缓冲区、最多 32 个接收缓冲区
-16个接收过滤器和 3 个屏蔽器
- 环回、监听和监听所有报文模式
- 用于诊断和总线监视的报文模式
- 接收到 CAN 报文时唤醒
- 远程发送请求的自动处理
- 使用 DMA 的 FIFO 模式
- 支持 DeviceNet™寻址模式
• 并行主从端口 (PMP/EPSP):
- 支持 8 位或 16 位数据
- 支持 16 根地址线
• 可编程循环冗余校验 ( Cyclic Redundancy
Check, CRC)
- CRC 发生器多项式的可编程位长度 (最大
16 位长度)
- 用于数据输入的 8 级深 16 位或 16 级深 8 位
FIFO
®
编解码器
封装:
• 28 引脚 SPDIP/SOIC/QFN-S
• 44 引脚 TQFP/QFN
注: 关于每个器件的具体外设特性,请参见相
应的器件数据表。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第3 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 产品系列
下表列出了每个器件的器件名、引脚数、存储容量和可
用的外设。表后各页还附有它们的引脚图。
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04 控制器系列
16 位定时器
可重映射的外设
输出比较
输入捕捉
标准 PWM
(3)
(通道)
电机控制 PWM
正交编码器
接口
UART
SPI
RTCC
ECAN™
2
C™
I
封装
(通道数)
CRC 发生器
10 位 /12 位 ADC
6 引脚 16 位 DAC
模拟比较器
(2 通道 / 稳压器)
8 位并行主
端口 (地址线)
I/O 引脚
TQFP
SOIC
QFN-S
TQFP
SOIC
QFN-S
TQFP
SOIC
QFN-S
TQFP
SOIC
QFN-S
TQFP
SOIC
QFN-S
(1)
器件
d s P I C 3 3 F J 1 2 8 M C 8 0 44 41 2 81 62 654 4 6 , 2 2 221111 9 1 1 / 1 1 1 3 5Q F N
d s P I C 3 3 F J 1 2 8 M C 8 0 22 81 2 81 61 654 4 6 , 2 2 221111 6 0 1 / 0 2 2 1S P D I P
d s P I C 3 3 F J 1 2 8 M C 2 0 44 41 2 882 654 4 6 , 2 2 220111 9 0 1 / 1 1 1 3 5Q F N
d s P I C 3 3 F J 1 2 8 M C 2 0 22 81 2 881 654 4 6 , 2 2 220111 6 0 1 / 0 2 2 1S P D I P
d s P I C 3 3 F J 6 4 M C 8 0 4 4 46 41 62 654 4 6 , 2 2 221111 9 1 1 / 1 1 1 3 5Q F N
d s P I C 3 3 F J 6 4 M C 8 0 2 2 86 41 61 654 4 6 , 2 2 221111 6 0 1 / 0 2 2 1S P D I P
d s P I C 3 3 F J 6 4 M C 2 0 4 4 46 4 82 654 4 6 , 2 2 220111 9 0 1 / 1 1 1 3 5Q F N
d s P I C 3 3 F J 6 4 M C 2 0 2 2 86 4 81 654 4 6 , 2 2 220111 6 0 1 / 0 2 2 1S P D I P
d s P I C 3 3 F J 3 2 M C 3 0 4 4 43 2 42 654 4 6 , 2 2 220111 9 0 1 / 1 1 1 3 5Q F N
d s P I C 3 3 F J 3 2 M C 3 0 2 2 83 2 41 654 4 6 , 2 2 220111 6 0 1 / 0 2 2 1S P D I P
注 1: 所有器件的 RAM 大小包括 2KB的 DMA RAM , dsPIC33FJ32MC302/304 除外,它包含 1KB 的 DMA RAM 。
2: 5 个定时器中只有 4 个是可重映射的。
3: 只有 PWM 故障引脚是可重映射的。
引脚数
(KB )
闪存程序存储器
(2)
RAM ( KB)
可重映射的引脚数
DS70291A_CN 第4 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
引脚图
28 引脚 SPDIP 和 SOIC
AN0/VREF +/CN2/RA0
AN1/V
REF-/CN3/RA1
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
PGC1/ EMUC1/ AN3/C2IN+/RP1/CN5/RB1
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/PMA0/RA3
SOSCI/RP4/CN1/PMBE/RB4
SOSCO/T1CK/CN0/PMA1/RA4
PGD3/ EMUD3/ ASDA1/RP5/CN27/PMD7/RB5
28 引脚 QFN-S
MCLR
VSS
VDD
1
2
3
dsPIC33FJ128MC802
4
5
6
7
8
9
10
11
12
13
14
dsPIC33FJ32MC302
dsPIC33FJ64MC202
dsPIC33FJ64MC802
dsPIC33FJ128MC202
AVDD
28
AVSS
27
PWM1L1/RP15/CN11/PMCS1/RB15
26
PWM1H1/RTCC/RP14/CN12/PMWR/RB14
25
PWM1L2/RP13/CN13/PMRD/RB13
24
PWM1H2/RP12/CN14/PMD0/RB12
23
PGC2/ EMUC2/TMS/PWM1L3/RP11/CN15/PMD1/RB11
22
PGD2/EMUD2/TDI/PWM1H3/RP10/CN16/PMD2/RB10
21
VCAP /VDDCORE
20
SS
V
19
TDO/PWM2L1/SDA1/RP9/CN21/PMD3/RB9
18
TCK/PWM2H1/SCL1/RP8/CN22/PMD4/RB8
17
INT0/RP7/CN23/PMD5/RB7
16
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
15
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
VSS
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/PMA0/RA3
REF-/CN3/RA1
DD
AN1/V
AV
MCLR
AN0/VREF +/CN2/RA0
8
6
7
5
2
2
2
2
1
2
dsPIC33FJ32MC302
3
dsPIC33FJ64MC202
4
dsPIC33FJ64MC802
dsPIC33FJ128MC202
5
dsPIC33FJ128MC802
6
7
9
10
8
11
VDD
SOSCI/RP4/CN1/PMBE/RB4
SOSCO/T1CK/CN0/PMA1/RA4
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
AVSS
4
2
12
PGC3/ EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PWM1L1/RP15/CN11/PMCS1/RB15
PWM1H1/RTCC/RP14/CN12/PMWR/RB14
2
3
2
2
PWM1L2/RP13/CN13/PMRD/RB13
21
PWM1H2/RP12/CN14/PMD0/RB12
20
PGC2/EMUC2/TMS/PWM1L3/RP11/CN15/PMD1/RB11
19
PGD2/EMUD2/TDI/PWM1H3/RP10/CN16/PMD2/RB10
18
CAP/V DDCORE
V
17
VSS
16
TDO/PWM2L1/SDA1/RP9/CN21/PMD3/RB9
15
14
13
INT0/RP7/CN23/PMD5/RB7
TCK/PWM2H1/SCL1/RP8/CN22/PMD4/RB8
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第5 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
引脚图 (续)
44 引脚 QFN
REF-/CN3/RA1
REF+/CN2/RA0
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
AN5/C1IN+/RP3/CN7/RB3
AN6/DAC1RM/RP16/CN8/RC0
AN7/DAC1LM/RP17/CN9/RC1
AN8/CV
REF/RP18/PMA2/CN10/RC2
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
TDO/PMA8/RA8
SOSCI/RP4/CN1/RB4
V
VSS
DD
AN1/V
AVDDAVSS
AN0/V
MCLR
23
24
25
26
27
28
29
30
31
33
20
21
22
17
18
19
dsPIC33FJ64MC804
dsPIC33FJ128MC804
39
38
37
36
35
34
SS
V
40
DD
V
16
TMS/PMA10/RA10
PWM1L1/DAC1LN/RP15/CN11/PMCS1/RB15
PWM1H1/DAC1LP/RTCC/RP14/CN12/PMWR/RB14
TCK/PMA7/RA7
PWM1L2/DAC1RN/RP13/CN13/PMRD/RB13 AN4/C1IN-/RP2/CN6/RB2
11
13
14
15
12
PWM1H2/DAC1RP/RP12/CN14/PMD0/RB12
10
PGC2/EMUC2/PWM1L3/RP11/CN15/PMD1/RB11
9
PGD2/EMUD2/PWM1H3/RP10/CN16/PMD2/RB10
8
V
CAP/V DDCORE
7
VSS
6
RP25/CN19/PMA6/RC9
5
RP24/CN20/PMA5/RC8
4
PWM2L1/RP23/CN17/PMA0/RC7
3
PWM2H1/RP22/CN18/PMA1/RC6
2 32
SDA1/RP9/CN21/PMD3/RB9
41
1
44
43
42
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
RP20/CN25/PMA4/RC4
RP21/CN26/PMA3/RC5
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
INT0/RP7/CN23/PMD5/RB7
SCL1/RP8/CN22/PMD4/RB8
DS70291A_CN 第6 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
引脚图 (续)
44 引脚 QFN
REF-/CN3/RA1
REF+/CN2/RA0
AN0/V
MCLR
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
AN1/V
AVDDAVSS
20
21
36
35
16
17
18
19
40
39
38
37
SS
DD
V
V
TMS/PMA10/RA10
PWM1L1/RP15/CN11/PMCS1/RB15
PWM1H1/RTCC/RP14/CN12/PMWR/RB14
TCK/PMA7/RA7
PWM1L2/RP13/CN13/PMRD/RB13
11
13
14
15
12
PWM1H2/RP12/CN14/PMD0/RB12
10
PGC2/EMUC2/PWM1L3/RP11/CN15/PMD1/RB11
9
PGD2/EMUD2/PWM1H3/RP10/CN16/PMD2/RB10
8
V
CAP/V DDCORE
7
VSS
6
RP25/CN19/PMA6/RC9
5
RP24/CN20/PMA5/RC8
4
PWM2L1/RP23/CN17/PMA0/RC7
3
PWM2H1/RP22/CN18/PMA1/RC6
2 32
SDA1/RP9/CN21/PMD3/RB9
41
1
44
43
42
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
AN6/RP16/CN8/RC0
AN7/RP17/CN9/RC1
AN8/CV
REF/RP18/PMA2/CN10/RC2
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
SOSCI/RP4/CN1/RB4
V
VSS
TDO/PMA8/RA8
DD
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
23
22
24
25
26
dsPIC33FJ32MC304
27
dsPIC33FJ64MC204
28
29
dsPIC33FJ128MC204
30
31
33
34
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP21/CN26/PMA3/RC5
RP20/CN25/PMA4/RC4
RP19/CN28/PMBE/RC3
INT0/RP7/CN23/PMD5/RB7
SCL1/RP8/CN22/PMD4/RB8
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第7 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
引脚图 (续)
44 引脚 TQFP
REF-/CN3/RA1
REF+/CN2/RA0
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
AN6/DAC1RM/RP16/CN8/RC0
AN7/DAC1LM/RP17/CN9/RC1
AN8/CV
REF/RP18/PMA2/CN10/RC2
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
TDO/PMA8/RA8
SOSCI/RP4/CN1/RB4
V
VSS
DD
AN1/V
AVDDAVSS
AN0/V
MCLR
18
19
20
21
22
23
24
25
26
27
dsPIC33FJ64MC804
28
dsPIC33FJ128MC804
29
30
31
32
33
363435937
17
39
38
16
40
TMS/PMA10/RA10
PWM1L1/DAC1LN/RP15/CN11/PMCS1/RB15
TCK/PMA7/RA7
PWM1H1/DAC1LP/RTCC/RP14/CN12/PMWR/RB14
12
13
14
15
11
PWM1L2/DAC1RN/RP13/CN13/PMRD/RB13
10
PWM1H2/DAC1RP/RP12/CN14/PMD0/RB12
PGC2/EMUC2/PWM1L3/RP11/CN15/PMD1/RB11
8
PGD2/EMCD2/PWM1H3/RP10/CN16/PMD2/RB10
7
CAP/V DDCORE
V
6
VSS
5
RP25/CN19/PMA6/RC9
4
RP24/CN20/PMA5/RC8
3
PWM2L1/RP23/CN17/PMA0/RC7
2
PWM2H1/RP22/CN18/PMA1/RC6
1
SDA1/RP9/CN21/PMD3/RB9
44
43
42
41
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
RP20/CN25/PMA4/RC4
SS
V
RP21/CN26/PMA3/RC5
DD
V
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
INT0/RP7/CN23/PMD5/RB7
SCL1/RP8/CN22/PMD4/RB8
DS70291A_CN 第8 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
引脚图 (续)
44 引脚 TQFP
REF-/CN3/RA1
REF+/CN2/RA0
AN0/V
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
AN6/RP16/CN8/RC0
AN8/CV
AN7/RP17/CN9/RC1
REF/RP18/PMA2/CN10/RC2
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
SOSCI/RP4/CN1/RB4
V
DD
VSS
TDO/PMA8/RA8
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
22
23
24
25
26
dsPIC33FJ32MC304
27
28
dsPIC33FJ64MC204
29
dsPIC33FJ128MC204
30
31
32
33
MCLR
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
AN1/V
17
18
19
20
21
39
363435937
38
AVDDAVSS
16
40
TMS/PMA10/RA10
PWM1L1/RP15/CN11/PMCS1/RB15
TCK/PMA7/RA7
PWM1H1/RTCC/RP14/CN12/PMWR/RB14
12
13
14
15
11
PWM1L2/RP13/CN13/PMRD/RB13
10
PWM1H2/RP12/CN14/PMD0/RB12
PGC2/EMUC2/PWM1L3/RP11/CN15/PMD1/RB11
8
PGD2/EMCD2/PWM1H3/RP10/CN16/PMD2/RB10
7
CAP/V DDCORE
V
6
VSS
5
RP25/CN19/PMA6/RC9
4
RP24/CN20/PMA5/RC8
3
PWM2L1/RP23/CN17/PMA0/RC7
2
PWM2H1/RP22/CN18/PMA1/RC6
1
SDA1/RP9/CN21/PMD3/RB9
44
43
42
41
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
RP20/CN25/PMA4/RC4
RP21/CN26/PMA3/RC5
SS
DD
V
V
INT0/RP7/CN23/PMD5/RB7
SCL1/RP8/CN22/PMD4/RB8
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第9 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
目录
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04 产品系列 ......................................................... 4
1.0 器件概述 ..................................................................................................................................................................................... 13
2.0 CPU............................................................................................................................................................................................ 19
3.0 存储器构成 ................................................................................................................................................................................. 31
4.0 闪存程序存储器 .......................................................................................................................................................................... 67
5.0 复位 ............................................................................................................................................................................................ 73
6.0 中断控制器 ................................................................................................................................................................................. 81
7.0 直接存储器访问 ( DMA) ......................................................................................................................................................... 123
8.0 振荡器配置 ............................................................................................................................................................................... 135
9.0 节能特性 ................................................................................................................................................................................... 147
10.0 I/O 端口 ..................................................................................................................................................................................... 149
11.0 Timer2/3 和 Timer4/5 特性 ........................................................................................................................................................ 181
12.0 Timer1 ...................................................................................................................................................................................... 187
13.0 输入捕捉 ................................................................................................................................................................................... 189
14.0 输出比较 ................................................................................................................................................................................... 191
15.0 电机控制 PWM 模块 ................................................................................................................................................................. 195
16.0 正交编码器接口 ( QEI)模块 ................................................................................................................................................... 217
17.0 串行外设接口 ( SPI)............................................................................................................................................................... 225
2
18.0 I
C™ ........................................................................................................................................................................................ 233
19.0 通用异步收发器 ( UART) ....................................................................................................................................................... 243
20.0 增强型 CAN ( ECAN™)模块 ................................................................................................................................................. 251
21.0 10 位 /12 位模数转换器 ( ADC1)............................................................................................................................................ 281
22.0 音频数模转换器 ( DAC) ......................................................................................................................................................... 295
23.0 比较器模块 ............................................................................................................................................................................... 301
24.0 实时时钟和日历 ( RTCC) ....................................................................................................................................................... 307
25.0 可编程循环冗余校验 ( CRC)发生器 ...................................................................................................................................... 319
26.0 并行主端口 ( PMP) ................................................................................................................................................................ 323
27.0 特殊功能 ................................................................................................................................................................................... 333
28.0 指令集汇总 ............................................................................................................................................................................... 343
29.0 开发支持 ................................................................................................................................................................................... 351
30.0 电气特性 ................................................................................................................................................................................... 355
31.0 封装信息 ................................................................................................................................................................................... 399
Microchip 网站 .................................................................................................................................................................................... 413
变更通知客户服务 .............................................................................................................................................................................. 413
客户支持............................................................................................................................................................................................. 413
读者反馈表 ......................................................................................................................................................................................... 414
产品标识体系...................................................................................................................................................................................... 415
DS70291A_CN 第10 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
致客户
我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。
出版物的质量将随新文档及更新版本的推出而得到提升。
如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本
数据手册后附的 《读者反馈表》传真到 86-21-5407 5066 。我们期待您的反馈。
最新数据手册
欲获得本数据手册的最新版本,请查询我公司的网站:
http://www.microchip.com
查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A 是DS30000
的 A 版本。
勘误表
现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到
器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。
欲了解某一器件是否存在勘误表,请通过以下方式之一查询:
• Microchip 网站, http://www.microchip.com
• 当地 Microchip 销售办事处 (见最后一页)
在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。
客户通知系统
欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 11 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
注:
DS70291A_CN 第12 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
1.0 器件概述
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信 息,请 参 考 “dsPIC33F Family
Reference Manual ”的相关章节,该文档
可从 Microchip 网站
(www.microchip.com)下载。
本文档包含 dsPIC33FJ32MC302/304 、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 数字信号控制器(Digital Signal Controller,DSC)
器件的特定信息。dsPIC33F 器件在高性能 16 位单片机
(MCU )架构中,融合了丰富的数字信号处理器
(Digital Signal Processor , DSP )功能。
图 1-1 给出了 dsPIC33FJ32MC302/304 、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 系列器件内核和外设模块的通用框图。表 1-1 列出
了引脚图中所示各引脚的功能。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 13 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 1-1 : dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
框图
PSV
和表
数据访问
控制模块
23
23
地址锁存器
中断
控制器
23
8
PCU
程序计数器
堆栈
控制
逻辑
16
PCH PCL
循环
控制
逻辑
Y
数据总线
X
数据总线
16
16
数据锁存器
X RAM
地址
锁存器
16
地址发生器单元
数据锁存器
Y RAM
地址
锁存器
16
16
PORTA
DMA
RAM
PORTB
DMA
控制器
16
PORTC
程序存储器
数据锁存器
OSC2/CLKO
OSC1/CLKI
时序
发生
FRC/LPRC
振荡器
高精度
带隙
参考
稳压器
VDDCORE /VCAP
地址总线
至各模块的
控制信号
DD 和 V SS
V
24
指令
译码和
控制
上电延时
定时器
振荡器
起振定时器
上电
复位
看门狗
定时器
欠压
复位
MCLR
DSP
除法支持
ROM
指令寄存器
引擎
锁存器
EA
多路开关
16
立即数数据
16 x 16
W
寄存器阵列
可重映射的
引脚
16
16
16
16位ALU
16
PMP/
EPSP
RTCC
注: 并非所有器件的引脚配置中都实现了全部的引脚或特性。请参见引脚图了解每个器件上的特定引脚和特性的信息。
比较器
1, 2
DAC1
ECAN1
SPI1, 2
定时器
1-5
IC1, 2, 7, 8
UART1, 2
CNx
ADC1
I2C1
输出比较 /
PWM1-4
QEI1, 2
PWM
2 通道
PWM
6 通道
DS70291A_CN 第 14 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 1-1 : 引脚输入 / 输出说明
引脚名称
AN0-AN8
CLKI
CLKO
OSC1
OSC2
SOSCI
SOSCO
CN0-CN30 I ST
IC1-IC2
IC7-IC8
OCFA
OC1-OC4
INT0
INT1
INT2
RA0-RA4
RA7-RA10
RB0-RB15 I/O ST
RC0-RC9 I/O ST
T1CK
T2CK
T3CK
T4CK
T5CK
U1CTS
U1RTS
U1RX
U1TX
U2CTS
U2RTS
U2RX
U2TX
SCK1
SDI1
SDO1
SS1
SCK2
SDI2
SDO2
SS2
SCL1
SDA1
ASCL1
ASDA1
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入 P = 电源
ST = CMOS 电平的施密特触发器输入 O = 输出 I = 输入
引脚类型缓冲器
类型
IA n a l o g
I
ST/CMOS
O
I
I/O
I
O
I
I
I
O
I
I
I
I/O
I/O
I
I
I
I
I
I
O
I
O
I
O
I
O
I/O
I
O
I/O
I/O
I
O
I/O
I/O
I/O
I/O
I/O
—
ST/CMOS
—
ST/CMOS
—
ST
ST
ST
—
ST
ST
ST
ST
ST
ST
ST
ST
ST
ST
ST
—
ST
—
ST
—
ST
—
ST
ST
—
ST
ST
ST
—
ST
ST
ST
ST
ST
说明
模拟输入通道。
外部时钟源输入。总是与 OSC1 引脚功能相关联。
晶振输出。在晶振模式下,连接到晶振或谐振器。也可选择在 RC 和 EC 模式
下用作 CLKO 。总是与 OSC2 引脚功能相关联。
晶振输入。配置为 RC 模式时为 ST 缓冲器输入;否则为 CMOS 缓冲器输入。
晶振输出。在晶振模式下,连接到晶振或谐振器。也可选择在 RC 和 EC 模式
下用作 CLKO 。
32.768 kHz 低功耗晶振输入;否则为 CMOS 输入。
32.768 kHz 低功耗晶振输出。
电平变化通知输入。
可将所有输入用软件编程为内部弱上拉。
捕捉输入 1/2
捕捉输入 7/8 。
比较故障 A 输入 (用于比较通道 1、 2、 3 和 4)。
比较输出 1 至 4 。
外部中断 0 。
外部中断 1 。
外部中断 2 。
PORTA 是双向 I/O 端口。
PORTA 是双向 I/O 端口。
PORTB 是双向 I/O 端口。
PORTC 是双向 I/O 端口。
Timer1 外部时钟输入。
Timer2 外部时钟输入。
Timer3 外部时钟输入。
Timer4 外部时钟输入。
Timer5 外部时钟输入。
UART1 允许发送。
UART1 请求发送。
UART1 接收。
UART1 发送。
UART2 允许发送。
UART2 请求发送。
UART2 接收。
UART2 发送。
SPI1 的同步串行时钟输入 / 输出。
SPI1 数据输入。
SPI1 数据输出。
SPI1 从同步或帧脉冲 I/O。
SPI2 的同步串行时钟输入 / 输出。
SPI2 数据输入。
SPI2 数据输出。
SPI2 从同步或帧脉冲 I/O。
I2C1 的同步串行时钟输入 / 输出。
I2C1 的同步串行数据输入 / 输出。
I2C1 的备用同步串行时钟输入 / 输出。
I2C1 的备用同步串行数据输入 / 输出。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 15 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 1-1 : 引脚输入 / 输出说明 (续)
引脚名称
TMS
TCK
TDI
TDO
INDX1
QEA1
QEB1
UPDN1
INDX2
QEA2
QEB2
UPDN2
C1RX
C1TX
RTCC O —
REF OA N A
CV
C1IN-
C1IN+
C1OUT
C2INC2IN+
C2OUT
PMA0
PMA1
PMA2 -PMPA10
PMBE
PMCS1
PMD0-PMPD7
PMRD
PMWR
DAC1RN
DAC1RP
DAC1RM
DAC2RN
DAC2RP
DAC2RM
FLTA1
PWM1L1
PWM1H1
PWM1L2
PWM1H2
PWM1L3
PWM1H3
FLTA2
PWM2L1
PWM2H1
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入 P = 电源
ST = CMOS 电平的施密特触发器输入 O = 输出 I = 输入
引脚
类型
I
I
I
O
I
I
I
O
I
I
I
O
I
O
I
I
O
I
I
O
I/O
I/O
O
O
O
I/O
O
O
O
O
O
O
O
O
I
O
O
O
O
O
O
I
O
O
缓冲器
类型
CMOS
CMOS
ANA
ANA
ANA
ANA
ST
—
—
—
—
—
—
ST
—
—
ST
ST
ST
—
ST
ST
ST
ST
ST
ST
ST
—
—
—
ST
ST
—
—
—
ST
—
—
—
—
—
—
—
—
说明
JTAG 测试模式选择引脚。
JTAG 测试时钟输入引脚。
JTAG 测试数据输入引脚。
JTAG 测试数据输出引脚。
正交编码器索引 1 脉冲输入。
在 QEI1 模式下为正交编码器 A 相输入。
在定时器模式下为辅助定时器外部时钟 / 门控输入。
在 QEI1 模式下为正交编码器 B 相输入。
在定时器模式下为辅助定时器外部时钟 / 门控输入。
位置递增 / 递减计数器方向状态。
正交编码器索引 2 脉冲输入。
在 QEI2 模式下为正交编码器 A 相输入。
在定时器模式下为辅助定时器外部时钟 / 门控输入。
在 QEI2 模式下为正交编码器 B 相输入。
在定时器模式下为辅助定时器外部时钟 / 门控输入。
位置递增 / 递减计数器方向状态。
ECAN1 总线接收引脚。
ECAN1 总线发送引脚。
实时时钟闹钟输出。
比较器参考电压输出。
比较器 1 反相输入。
比较器 1 同相输入。
比较器 1 输出。
比较器 2 反相输入。
比较器 2 同相输入。
比较器 2 输出。
并行主端口地址 Bit 0 输入 (缓冲从模式下)和输出 (主模式下)。
并行主端口地址 Bit 1 输入 (缓冲从模式下)和输出 (主模式下)。
并行主端口地址线 (非复用主模式)。
并行主端口字节使能选通。
并行主端口片选 1 选通。
并行主端口数据线 (非复用主模式下)或者地址 / 数据线 (复用主模式下)。
并行主端口读选通。
并行主端口写选通。
DAC1 负输出。
DAC1 正输出。
DAC1 中点电压值输出 (典型值为 1.65V)。
DAC2 负输出。
DAC2 正输出。
DAC2 中点电压值输出 (典型值为 1.65V)。
PWM1 故障 A 输入。
PWM1 低端输出 1
PWM1 高端输出 1
PWM1 低端输出 2
PWM1 高端输出 2
PWM1 低端输出 3
PWM1 高端输出 3
PWM2 故障 A 输入。
PWM2 低端输出 1
PWM2 高端输出 1
DS70291A_CN 第 16 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 1-1 : 引脚输入 / 输出说明 (续)
引脚名称
PGD1/EMUD1
PGC1/EMUC1
PGD2/EMUD2
PGC2/EMUC2
PGD3/EMUD3
PGC3/EMUC3
MCLR
AVDD PP
AVSS PP
V
DD P—
VDDCORE P—
Vss P —
V
REF+I A n a l o g
VREF -I A n a l o g
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入 P = 电源
ST = CMOS 电平的施密特触发器输入 O = 输出 I = 输入
引脚类型缓冲器
类型
I/O
I
I/O
I
I/O
I
ST
ST
ST
ST
ST
ST
I/P ST
说明
编程 / 调试通信通道 1 使用的数据 I/O 引脚。
编程 / 调试通信通道 1 使用的时钟输入引脚。
编程 / 调试通信通道 2 使用的数据 I/O 引脚。
编程 / 调试通信通道 2 使用的时钟输入引脚。
编程 / 调试通信通道 3 使用的数据 I/O 引脚。
编程 / 调试通信通道 3 使用的时钟输入引脚。
主复位输入。此引脚为低电平有效的器件复位输入。
模拟模块的正电源。
模拟模块的参考地。
外设逻辑和 I/O 引脚的正电源。
CPU 逻辑滤波电容连接。
逻辑和 I/O 引脚的参考地。
模拟参考电压 (高电压)输入。
模拟参考电压 (低电压)输入。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 17 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
注:
DS70291A_CN 第18 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.0 CPU
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信 息,请 参 考 “dsPIC33F Family
Reference Manual ”的 “ Section 2. CPU ”
(DS70204 ),该文档可从 Microchip 网站
(www.microchip.com)下载。
2.1 概述
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 的 CPU 模块采用 16 位
(数据)的改进型哈佛架构,具有增强指令集,包括对
DSP 的强大支持。CPU 具有 24 位指令字,指令字带有
长度可变的操作码字段。程序计数器(Program
Counter , PC )为 23 位宽,可寻址最大 4M x 24 位的
用户程序存储空间。实际实现的程序存储容量因器件而
异。单周期指令预取机制可帮助维持吞吐量并提供指令
的预测执行功能。除了改变程序流的指令、双字传送
(MOV.D )指令和表指令以外,所有指令都在单个周期
内执行。使用 DO 和 REPEAT 指令支持无开销的程序循
环结构,这两条指令在任何时间都可以被中断。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件的编程模型中有 16
个 16 位工作寄存器。每个工作寄存器都可以充当数据、
地址或地址偏移量寄存器。第 16 个工作寄存器(W15 )
作为软件堆栈指针(Stack Pointer ,SP ),用于中断和
调用。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件具有两类指令:MCU
类指令和 DSP 类指令。这两类指令无缝地集成到单个
CPU 中。指令集包括很多寻址模式,指令的设计可使 C
编译器的效率达到最优。对于大多数指令,
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04能够在每个指令周期内执
行一次数据 (或程序数据)存储器读取、一次工作寄存
器 (数据)读取、一次数据存储器写入以及一次程序
(指令)存储器读取操作。因此,支持三操作数指令,
允许在单个周期内执行 A + B = C 这样的操作。
CPU 的框图如图 2-1 所示,dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 的编程模型如图 2-2 所示。
2.2 数据寻址概述
数据空间可以作为 32K 字或 64 KB 寻址,并被分成两
块,称为 X 和 Y 数据存储区。每个存储区有各自独立的
地址发生单元 (Address Generation Unit, AGU )。
MCU 类指令只通过 X 存储空间 AGU 进行操作,可将整
个存储器映射作为一个线性数据空间访问。某些 DSP 指
令通过 X 和 Y 的 AGU 进行操作以支持双操作数读操作,
这样会将数据地址空间分成两个部分。X 和 Y 数据空间
的边界视具体器件而定。
X 和 Y 地址空间都支持无开销循环缓冲区 (模寻址模
式)。模寻址省去了 DSP 算法的软件边界检查开销。此
外,X AGU 的循环寻址可以用于任何 MCU 类指令。X
AGU 还支持位反转寻址,大幅简化了基为 2 的 FFT 算
法对输入或输出数据的重新排序。
可以选择将数据存储空间的高 32 KB 映射到由 8 位程序
空间可视性页 (Program Space Visibility Page,
PSVPAG )寄存器定义的任何 16K 程序字边界内的程序
空间内。程序空间到数据空间的映射功能让任何指令都
能像访问数据空间一样访问程序空间。
2.3 DSP 引擎概述
DSP 引擎具有一个高速 17 位 x 17 位乘法器、一个 40
位 ALU 、两个 40 位饱和累加器和一个 40 位双向桶形移
位寄存器。该桶形移位寄存器能在单个周期内将一个 40
位的值右移或左移最多 16 位。DSP 指令可以无缝地与
所有其他指令一起操作,且设计为能获得最佳实时性
能。MAC 指令和其他相关指令可以在同一个周期内,同
时完成从存储器中取两个数据操作数,将两个 W 寄存器
相乘并累加,且可选择使结果饱和。这要求 RAM 数据空
间对于这些指令拆分为两块,但对于所有其他指令保持
线性。数据空间分块是通过将某些工作寄存器专用于每
个地址空间,以透明和灵活的方式实现的。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 19 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.4 MCU 的特性
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 支持小数和整数的 16/16
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 具有一个由 MCU ALU 和
DSP 引擎共用的 17 位 x 17 位单周期乘法器。此乘法器
可以进行有符号、无符号和混合符号的乘法运算。使用
17 位 x 17 位乘法器进行 16 位 x 16 位乘法运算不仅允
许您执行混合符号的乘法运算,而且对于 (-1.0) x (-1.0)
这样的特殊运算也可以得到准确结果。
位和32/16 位除法运算。所有的除法指令都是迭代操作。
它们必须在一个 REPEAT 循环内执行,总执行时间为 19
个指令周期。在这 19 个周期的任一周期内可以中断除
法运算而不会丢失数据。
一个 40 位桶形移位寄存器用于在单个周期内将数据左
移或右移最多 16 位。 MCU 和 DSP 指令都可以使用该
桶形移位寄存器。
图 2-1 : dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
的 CPU 内核框图
PSV 和表
数据访问
控制模块
地址锁存器
中断
控制器
8
23
23
23
PCU
程序计数器
堆栈
控制
逻辑
16
PCH PCL
循环
控制
逻辑
Y 数据总线
X 数据总线
16
16
数据锁存器
X RAM
地址
锁存器
地址发生器单元
数据锁存器
16
16
Y RAM
地址
锁存器
16
DMA
RAM
16
DMA
控制器
程序存储器
数据锁存器
地址总线
24
指令
译码和
控制
至各模块的
控制信号
指令寄存器
DSP 引擎
除法支持
ROM 锁存器
EA 多路开关
16
16
立即数数据
16 x 16
W 寄存器阵列
16 位 ALU
16
16
16
至外设模块
DS70291A_CN 第 20 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 2-2 : dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
的编程模型
D0 D15
DSP 操作数
寄存器
DSP 地址
寄存器
W0/WREG
W1
W2
W3
W4
W5
W6
W7
W8
W9
W10
W11
W12/DSP 偏移量
W13/DSP 回写
W14/ 帧指针
W15/ 堆栈指针
工作寄存器
PUSH.S 影子寄存器
DO 影子寄存器
图注
DSP
累加器
PC22
7
22
22
TBLPAG
7
PSVPAG
AD39 AD0 AD31
ACCA
ACCB
0
数据表页地址
0
程序空间可视性页地址
15
15
DOSTART
DOEND
SPLIM 堆栈指针限制寄存器
AD15
PC0
程序计数器
0
0
RCOUNT
DCOUNT
REPEAT 循环计数器
0
DO 循环计数器
0
DO 循环起始地址
DO 循环结束地址
15
CORCON
OA OB SA SB
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 21 页
OAB SAB
SRH
DA DC
IPL2 IPL1
RA
IPL0 OV
SRL
0
内核控制寄存器
N
C
Z
状态寄存器
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.5 CPU 控制寄存器
寄存器 2-1: SR: CPU 状态寄存器
R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R -0 R/W-0
OA OB SA
(1)
bit 15 bit 8
SB
(1)
OAB SAB DA DC
R/W-0
(3)
IPL<2:0>
R/W-0
(3)
(2)
R/W-0
(3)
R-0 R/W-0 R/W-0 R/W-0 R/W-0
RA N OV Z C
bit 7 bit 0
图注:
C = 只可清零位 R = 可读位 U = 未实现位,读为 0
S = 只可置 1 位 W = 可写位 -n = POR 时的值
1 = 置 10 = 清零 x = 未知
bit 15
OA : 累加器 A 溢出状态位
1 = 累加器 A 溢出
0 = 累加器 A 未溢出
bit 14
OB : 累加器 B 溢出状态位
1 = 累加器 B 溢出
0 = 累加器 B 未溢出
bit 13
SA:累加器 A 饱和 “粘住”状态位
(1)
1 = 累加器 A 饱和或在某时已经饱和
0 = 累加器 A 未饱和
bit 12
SB:累加器 B 饱和 “粘住”状态位
(1)
1 = 累加器 B 饱和或在某时已经饱和
0 = 累加器 B 未饱和
bit 11
OAB : OA || OB 组合的累加器溢出状态位
1 = 累加器 A 或 B 已经溢出
0 = 累加器 A 和 B 都未溢出
bit 10
SAB: SA || SB 组合的累加器饱和 (粘住)状态位
(4)
1 = 累加器 A 或 B 饱和或在过去某时已经饱和
0 = 累加器 A 和 B 都未饱和
bit 9
DA : DO 循环活动位
1 = 正在进行 DO 循环
0 = 不在进行 DO 循环
bit 8
DC : MCU ALU 半进位 / 借位标志位
1 = 结果的第 4 个低位 (对于字节大小的数据)或第 8 个低位 (对于字大小的数据)发生了进位
0 = 结果的第 4 个低位 (对于字节大小的数据)或第 8 个低位 (对于字大小的数据)未发生进位
注 1: 此位可被读取或清零 (但不能置 1 )。
2: IPL<2:0> 位与 IPL<3> 位(CORCON<3>)组合形成 CPU 中断优先级。如果 IPL<3> = 1,那么括号中的
值表示 IPL 。当 IPL<3> = 1 时,禁止用户中断。
3: 当 NSTDIS (INTCON1<15> ) = 1 时, IPL<2:0> 状态位是只读的。
4: 此位可被读取或清零 (但不能置 1 )。清零此位的同时将清零 SA 和 SB 。
DS70291A_CN 第 22 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 2-1 : SR :CPU 状态寄存器 (续)
bit 7-5
bit 4
bit 3
bit 2
bit 1
bit 0
IPL<2:0> : CPU 中断优先级状态位
111 = CPU 中断优先级为 7 (15 ),禁止用户中断
110 = CPU 中断优先级为 6 (14 )
101 = CPU 中断优先级为 5 (13 )
100 = CPU 中断优先级为 4 (12 )
011 = CPU 中断优先级为 3 (11 )
010 = CPU 中断优先级为 2 (10 )
001 = CPU 中断优先级为 1 (9 )
000 = CPU 中断优先级为 0 (8 )
RA : REPEAT 循环活动位
1 = 正在进行 REPEAT 循环
0 = 不在进行 REPEAT 循环
N: MCU ALU 负标志位
1 = 结果为负
0 = 结果为非负 (零或正值)
OV : MCU ALU 溢出标志位
此位用于有符号的算术运算 (以二进制补码方式进行) 。它表示量值上的溢出,这种溢出将导致符号
位改变状态。
1 = 有符号算术运算中发生溢出 (本次运算)
0 = 未发生溢出
Z: MCU ALU 全零标志位
1 = 影响 Z 位的任何运算在过去某时已将该位置 1
0 = 影响 Z 位的最近一次运算已将该位清零 (即运算结果非零)
C: MCU ALU 进位 / 借位
1 = 结果的最高位发生了进位
0 = 结果的最高位未发生进位
标志位
(2)
注 1: 此位可被读取或清零 (但不能置 1 )。
2: IPL<2:0> 位与 IPL<3> 位(CORCON<3>)组合形成 CPU 中断优先级。如果 IPL<3> = 1,那么括号中的
值表示 IPL 。当 IPL<3> = 1 时,禁止用户中断。
3: 当 NSTDIS (INTCON1<15> ) = 1 时, IPL<2:0> 状态位是只读的。
4: 此位可被读取或清零 (但不能置 1 )。清零此位的同时将清零 SA 和 SB 。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 23 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 2-2 : CORCON :内核控制寄存器
U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0
— — —U S E D T
(1)
DL<2:0>
bit 15 bit 8
R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R/W-0 R/W-0 R/W-0
SATA SATB SATDW ACCSAT IPL3
(2)
PSV RND IF
bit 7 bit 0
图注:
C = 只可清零位
R = 可读位 W = 可写位 -n = POR 时的值 1 = 置 1
0 = 清零 x = 未知 U = 未实现位,读为 0
bit 15-13
bit 12
未实现:读为 0
US : DSP 乘法无符号 / 有符号控制位
1 = DSP 引擎执行无符号乘法运算
0 = DSP 引擎执行有符号乘法运算
bit 11
EDT: DO 循环提前终止控制位
(1)
1 = 在当前循环迭代结束时终止执行 DO 循环
0 = 无影响
bit 10-8
DL<2:0> :DO 循环嵌套层级状态位
111 = 正在进行 7 层 DO 循环嵌套
•
•
•
001 = 正在进行 1 层 DO 循环嵌套
000 = 无 DO 循环嵌套
bit 7
SATA : ACCA 饱和使能位
1 = 使能累加器 A 饱和
0 = 禁止累加器 A 饱和
bit 6
SATB : ACCB 饱和使能位
1 = 使能累加器 B 饱和
0 = 禁止累加器 B 饱和
bit 5
SATDW : DSP 引擎的数据空间写饱和使能位
1 = 使能数据空间写饱和
0 = 禁止数据空间写饱和
bit 4
ACCSAT : 累加器饱和模式选择位
1 = 9.31 饱和 (超饱和)
0 = 1.31 饱和 (正常饱和)
bit 3
IPL3: CPU 中断优先级状态位 3
(2)
1 = CPU 中断优先级大于 7
0 = CPU 中断优先级等于或小于 7
bit 2
PSV : 数据空间中程序空间可视性使能位
1 = 程序空间在数据空间中可视
0 = 程序空间在数据空间中不可视
注 1: 此位总是读为 0 。
2: IPL3 位与 IPL<2:0> 位(SR<7:5>)组合形成 CPU 中断优先级。
DS70291A_CN 第 24 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 2-2 : CORCON :内核控制寄存器 (续)
bit 1
bit 0
注 1: 此位总是读为 0 。
2: IPL3 位与 IPL<2:0> 位(SR<7:5>)组合形成 CPU 中断优先级。
RND: 舍入模式选择位
1 = 使能有偏 (常规)舍入
0 = 使能无偏 (收敛)舍入
IF: 整数或小数乘法器模式选择位
1 = 使能 DSP 乘法运算的整数模式
0 = 使能 DSP 乘法运算的小数模式
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 25 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.6 算术逻辑单元 ( ALU)
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 的 ALU 为 16 位宽,可
进行加法、减法、移位和逻辑运算。除非另外指明,算
术运算实际上采用二进制补码形式进行。根据不同的运
算,ALU 可能会影响 SR 寄存器中的进位标志位(C )、
全零标志位(Z )、负标志位(N )、溢出标志位(OV )
和半进位状态位(DC )的值。在减法运算中, C 和 DC
状态位分别作为借位
根据所使用的指令模式,ALU 可执行 8 位或 16 位运算。
根据指令的寻址模式, ALU 运算的数据可以来自 W 寄
存器阵列或数据存储器。同样地,ALU 的输出数据可被
写入 W 寄存器阵列或数据存储单元。
有关每条指令所影响的 SR 位的信息,请参见
《dsPIC30F/33F 程序员参考手册》(DS70157B_CN )。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 的 CPU 融入了对乘法和
除法的硬件支持。它包含了专门的硬件乘法器以及支持
16 位除数除法的硬件。
2.6.1 乘法器
通过使用 DSP 引擎的高速 17 位 x 17 位乘法器, ALU
支持各种无符号、有符号或混合符号的 MCU 乘法运算:
• 16 位 x 16 位有符号
• 16 位 x 16 位无符号
• 16 位有符号 x 5 位 (立即数)无符号
• 16 位无符号 x 16 位无符号
• 16 位无符号 x 5 位 (立即数)无符号
• 16 位无符号 x 16 位有符号
• 8 位无符号 x 8 位无符号
标志位和半借位标志位。
2.6.2 除法器
除法模块支持以下数据长度的 32 位 /16 位和 16 位 /16
位有符号和无符号整数除法运算:
1. 32 位有符号 /16 位有符号除法
2. 32 位无符号 /16 位无符号除法
3. 16 位有符号 /16 位有符号除法
4. 16 位无符号 /16 位无符号除法
所有除法指令的商都被放在 W0 中,余数放在 W1 中。
16 位有符号和无符号 DIV 指令可为 16 位除数指定任一
W 寄存器 ( Wn),为 32 位被除数指定任意连续的 W
寄存器对 (W(m + 1):Wm )。除法运算中处理除数的每
一位需要一个周期,因此执行 32 位 /16 位和 16 位 /16
位指令所需的周期数相同。
2.7 DSP 引擎
DSP 引擎由一个高速 17 位 x 17 位乘法器、一个桶形移
位寄存器和一个 40 位加法器 / 减法器 (两个目标累加
器、舍入逻辑和饱和逻辑)组成。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04采用单周期指令流架构;
因此 DSP 引擎的工作不能与 MCU 指令流同时进行。但
是,某些 MCU ALU 和 DSP 引擎资源可由同一条指令
(如 ED 和 EDAC )同时使用。
DSP 引擎还可以执行固有的不需要其他数据的累加器
-累加器操作。这些指令是 ADD 、 SUB 和 NEG 。
通过 CPU 内核控制寄存器 (CORCON )中的各个位,
可以对 DSP 引擎的操作进行多种选择,这些选择如下:
• 小数或整数 DSP 乘法 ( IF)
• 有符号或无符号 DSP 乘法 ( US)
• 常规或收敛舍入 ( RND)
• ACCA 自动饱和使能 / 禁止 (SATA)
• ACCB 自动饱和使能 / 禁止 (SATB)
• 对于写数据存储器,自动饱和使能 / 禁止
( SATDW)
• 累加器饱和模式选择 ( ACCSAT)
DSP 引擎的框图如图 2-3 所示。
DS70291A_CN 第 26 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 2-1 : DSP 指令汇总
指令 代数运算 ACC 回写
CLR A = 0
ED A = (x – y)2
EDAC A = A + (x – y)2
MAC A = A + (x • y)
MAC A = A + x2
MOVSAC
A 中内容将不发生改变 有
MPY A = x • y
MPY A = x 2
MPY.N A = – x • y
MSC A = A – x • y
图 2-3 : DSP 引擎框图
有
无
无
有
无
无
无
无
有
40
进位 / 借位输出
进位 / 借位输入
Y 数据总线
40 位累加器 A
40 位累加器 B
饱和
加法器
取补
40
40
符号扩展
33
40
桶形移位
寄存器
32
40
40
16
32
补零
舍入
逻辑
饱
16
和
X 数据总线
16
17 位
乘法器 / 定标器
16
至 / 来自 W 阵列
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 27 页
16
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.7.1 乘法器
17 位 x17 位乘法器可以进行有符号或无符号运算,其输
出经过定标器进行换算后可支持 1.31 小数 ( Q31)或
32 位整数结果。无符号操作数经过零扩展后,送入乘法
器输入值的第 17 位。有符号操作数经过符号扩展后,送
入乘法器输入值的第 17 位。 17 位 x17 位乘法器 / 定标
器的输出是 33 位值,它将被符号扩展为 40 位。整型数
据的固有表示形式为有符号的二进制补码值,其中最高
有效位(MSb )定义为符号位。N 位二进制补码整数的
范围为 -2
N-1
到 2
N-1
– 1。
• 对于 16 位整数,数据范围为 -32768 ( 0x8000)
到 32767 ( 0x7FFF),包括 0 在内。
• 对于 32 位整数,数据范围为 -2,147,483,648
( 0x8000 0000)到 2,147,483,647 ( 0x7FFF
FFFF)。
当乘法器配置为小数乘法时,数据表示为二进制补码小
数,其中 MSb 定义为符号位,小数点暗含在符号位之
后(QX 格式)。暗含小数点的 N 位二进制补码小数的
范围为 -1.0 到(1 – 2
1-N
)。对于 16 位小数, Q15 数
据范围为 -1.0 (0x8000 )到 0.999969482(0x7FFF ),
包括 0 在内,其精度为 3.01518x10 -5。在小数模式下,
16 x 16 乘法运算将产生 1.31 乘积,其精度为 4.65661
-10
x 10
。
同一个乘法器还用来支持 MCU 乘法指令,包括整数的
16 位有符号、无符号和混合符号乘法。
MUL 指令可以使用字节或字长度的操作数。字节操作数
将产生 16 位结果,而字操作数将产生 32 位结果,结果
存放在 W 寄存器阵列的指定寄存器中。
2.7.2 数据累加器和加法器 / 减法器
数据累加器包含一个 40 位加法器 / 减法器,它带有自动
符号扩展逻辑。它可以选择两个累加器 (A 或 B )之一
作为其累加前的源累加器和累加后的目标累加器。对于
ADD 和 LAC 指令,可选择通过桶形移位器在累加之前将
要累加或装入的数据进行换算。
2.7.2.1 加法器 / 减法器、溢出和饱和
加法器 / 减法器是一个 40 位加法器,一侧输入可以选择
为零,而另一侧输入可以是原数据或求补后的数据。
• 对于加法,进位 / 借位
输入是原数据 (没有求补的)。
• 对于减法,进位 / 借位
输入是求补后的数据。
输入为高电平有效,另一侧
输入为低电平有效,另一侧
加法器 / 减法器产生溢出状态位 SA/SB 和 OA/OB ,这
些状态位被锁存在状态寄存器中并在其中得到反映。
• 从 bit 39 溢出:这是灾难性溢出,会破坏累加器的
符号位。
• 溢出到警戒位 (bit 32 到 bit 39 ):这是可恢复的
溢出。每当警戒位彼此不完全一致时,就将把这个
状态位置 1 。
加法器有一个额外的饱和模块,如果选取的话,饱和模
块将控制累加器的数据饱和。饱和模块使用加法器的结
果、上述的溢出状态位、SAT<A:B>(CORCON<7:6> )
和 ACCSAT (CORCON<4> )模式控制位,来确定何
时饱和、达到何值为饱和。
状态寄存器中有 6 个支持饱和与溢出的位:
• OA:ACCA 溢出到警戒位
• OB:ACCB 溢出到警戒位
• SA:ACCA 已饱和 ( bit 31 溢出并饱和)
或者
ACCA 溢出到警戒位并饱和 ( bit 39 溢出并饱和)
• SB:ACCB 已饱和 ( bit 31 溢出并饱和)
或者
ACCB 溢出到警戒位并饱和 ( bit 39 溢出并饱和)
• OAB:OA 和 OB 的逻辑或 (OR)
• SAB:SA 和 SB 的逻辑或 (OR)
每次数据通过加法器 / 减法器,就会修改 OA 和 OB 位。
置 1 时,它们表明最近的操作已溢出到累加器警戒位
(bit 32 到 bit 39 )。如果 OA 和 OB 位置 1 而且 INTCON1
寄存器中相应的溢出陷阱标志允许位 (OVATE 和
OVBTE )置 1 的话,还可以选择用 OA 和 OB 位产生算
术警告陷阱 (见第 6.0 节 “中断控制器”)。这使得用
户应用程序能够立即采取措施,例如,校正系统增益。
每次数据通过加法器 / 减法器,就会修改 SA 和 SB 位,
但用户应用程序只能对它们进行清零。置 1 时,它们表
明累加器已溢出其最大范围(对于 32 位饱和是 bit 31 ,
而 40 位饱和是 bit 39 ),并发生饱和(如果饱和使能的
话)。如果没有使能饱和, SA 和 SB 置 1 默认为 bit 39
溢出,以此指示产生了灾难性溢出。如果 INTCON1 寄
存器中的 COVTE 位置 1 ,当饱和被禁止时, SA 和 SB
位将产生算术警告陷阱。
DS70291A_CN 第28 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
在状态寄存器 (SR )中,对于溢出和饱和状态位,可
以将 OA 和 OB 的逻辑或形成 OAB 位,将 SA 和 SB 的
逻辑或形成 SAB 位。这样,只需检查状态寄存器中的一
个位,程序员就能判断是否有累加器溢出;检查状态寄
存器中的另一个位,就可以判断是否有累加器饱和。对
于通常要使用两个累加器的复数运算而言,这很有用。
器件支持三种饱和与溢出模式:
• bit 39 溢出和饱和:
当发生 bit 39 溢出和饱和时,饱和逻辑将最大的正
9.31 值(0x7FFFFFFFFF)或最小的负 9.31 值
(0x8000000000 )装入目标累加器。 SA 或 SB 位
置 1 并保持直到被用户应用程序清零。这称为
“超饱和”,为错误数据或不可预期的算法问题
(例如,增益计算)提供了保护机制。
• bit 31 溢出和饱和:
当发生 bit 31 溢出和饱和时,饱和逻辑将最大的正
1.31 值(0x007FFFFFFF)或最小的负 1.31 值
(0x0080000000 )装入目标累加器。 SA 或 SB 位
置 1 并保持直到被用户应用程序清零。当这种饱
和模式生效时,不使用警戒位,因此 OA 、 OB 或
OAB 位不会被置 1。
• bit 39 灾难性溢出:
加法器的 bit 39 溢出状态位用来将 SA 或 SB 位置
1 ;这两位置 1 后,将保持状态直到被用户应用程
序清零。不进行饱和操作,允许累加器溢出 (破
坏其符号位)。如果 INTCON1 寄存器中的
COVTE 位置 1 ,灾难性溢出会导致一个陷阱异
常。
2.7.3 累加器 “回写”
MAC 类指令(MPY 、MPY.N 、ED 和 EDAC 除外)可以选
择将累加器高位字 (bit 16 到 bit 31 )的舍入形式写入
数据存储空间,前提是当前指令不对该累加器进行操
作。通过 X 总线寻址组合的 X 和 Y 地址空间,执行回写
操作。支持以下寻址模式:
• W13 ,寄存器直接寻址:
非操作目标的累加器的舍入内容以 1.15 小数形式
写入 W13 。
• [W13]+ = 2 ,执行后递增的寄存器间接寻址:
非操作目标的累加器的舍入内容以 1.15 小数形式
写入 W13 指向的地址。然后 W13 递增 2 (对于字
写入)。
2.7.3.1 舍入逻辑
舍入逻辑是一个组合模块,在累加器写 (存储)过程
中执行常规的(有偏)或收敛的(无偏)舍入功能。舍
入模式由 CORCON 寄存器中 RND 位的状态决定。它
会产生一个 16 位的 1.15 数据值,该值被送到数据空间
写饱和逻辑。如果指令不指明舍入,就会存储一个截取
的 1.15 数据值,简单地丢弃低位字。
常规舍入取累加器的 bit 15 ,对它进行零扩展并将扩展
后的值加到 ACCxH 字 (累加器的 bit 16 到 bit 31 )。
• 如果 ACCxL 字 (累加器的 bit 0 到 bit 15)在
0x8000 和 0xFFFF 之间 (包括 0x8000),则
ACCxH 递增 1。
• 如果 ACCxL 在 0x0000 和 0x7FFF 之间,则
ACCxH 不变。
此算法的结果经过一系列随机舍入操作,值会稍稍偏大
(正偏)。
除非 ACCxL 等于 0x8000 ,否则收敛的(或无偏)舍入
操作方式与常规舍入相同。在这种情况下,要对 ACCxH
的最低位 (累加器的 bit 16 )进行检测:
• 如果它为 1 , ACCxH 递增 1。
• 如果它为 0 , ACCxH 不变。
假设 bit 16 本身是随机的,这样的机制将消除任何可
能累加的舍入偏差。
通过 X 总线,SAC 和 SAC.R 指令将目标累加器内容的截
取(SAC)或舍入 (SAC.R)形式存入数据存储空间
(这受数据饱和的影响,请参见第 2.7.3.2 节 “数据空
间写饱和”)。对于 MAC 类指令,累加器回写操作将以
同样的方式进行,通过 X 总线寻址组合的 MCU (X 和
Y )数据空间。对于此类指令,数据始终要进行舍入。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 29 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
2.7.3.2 数据空间写饱和
除了加法器 / 减法器饱和,对数据空间进行写操作也会
饱和,但不会影响源累加器的内容。数据空间写饱和逻
辑块接受来自舍入逻辑块的一个 16 位的 1.15 小数值作
为输入,还接受来自源 (累加器)和 16 位舍入加法器
的溢出状态。这些输入经过组合用来选择适当的 1.15 小
数值作为输出,写入数据存储空间中。
如果 CORCON 寄存器中的 SATDW 位置 1 ,将检测(经
过舍入或截取后的)数据是否溢出,并进行相应的调整:
• 如果输入数据大于 0x007FFF ,则写入存储器中的
数据被强制为最大的正 1.15 值, 0x7FFF 。
• 如果输入数据小于 0xFF8000 ,则写入存储器中的
数据被强制为最小的负 1.15 值, 0x8000 。
源累加器的最高位 (bit 39 )用来决定被检测的操作数
的符号。
如果 CORCON 寄存器中的 SATDW 位没有置 1 ,则输
入数据都将通过,在任何情况下都不会被修改。
2.7.4 桶形移位寄存器
桶形移位寄存器在单个周期内可将数据算术或逻辑右移
或左移最多 16 位。源操作数可以是两个 DSP 累加器中
的任何一个或 X 总线(支持寄存器或存储器中数据的多
位移位)。
移位寄存器需要一个有符号二进制值,用来确定移位操
作的幅度 (位数)和方向。正值将操作数右移。负值则
将操作数左移。值为 0 则不改变操作数。
桶形移位寄存器为 40 位宽,于是,它为 DSP 移位操作
提供了 40 位的结果,而为 MCU 移位操作提供 16 位的
结果。来自 X 总线的数据在桶形移位寄存器中的存放方
式是:右移则数据存放在 bit 16 到 bit 31 ,左移则存放
在 bit 0 到 bit 15 。
DS70291A_CN 第30 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.0 存储器构成
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信 息,请 参 考 “dsPIC33F Family
Reference Manual ”的 “Section 4.
Program Memory”(DS70203),该文档
可从 Microchip 网站
(www.microchip.com)下载。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04架构具有独立的程序和数
据存储空间 / 总线。这一架构还允许在代码执行过程中
3.1 程序地址空间
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04器件的程序存储空间可存
储 4M 个指令字。可通过 24 位值寻址这一空间, 24 位
值由程序执行过程中的 23 位程序计数器 (PC )或第
3.6 节 “程序存储空间与数据存储空间的接口”中所述
的表操作或数据空间重映射得到。
用户应用程序只能访问程序存储空间的低半地址范围
(0x000000 至 0x7FFFFF )。使 用 TBLRD/TBLWT 指令
时,情况有所不同,这两条指令使用 TBLPAG<7> 来允
许访问配置存储空间中的配置位和器件 ID 。
图 3-1 给出了 dsPIC33FJ32MC302/304 、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 器件的程序存储器映射。
从数据空间直接访问程序存储器。
图 3-1 : dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
器件的程序存储器映射
dsPIC33FJ32MC302/304
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储空间
(11264 指令字)
用户存储空间
未实现
(读为 0 )
dsPIC33FJ64MCX02/X04
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储空间
(22016 指令字)
未实现
(读为 0 )
dsPIC33FJ128MCX02/X04
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储空间
(44032 指令字)
未实现
(读为 0)
0x000000
0x000002
0X000004
0x0000FE
0x000100
0X000104
0X0001FE
0X000200
0X0057FE
0X005800
0X00ABFE
0X00AC00
0X0157FE
0X015800
0X7FFFFE
0x800000
保留
器件配置
寄存器
配置存储空间
注: 存储区大小未按比例绘制。
保留
DEVID (2)
保留
保留
器件配置
寄存器
保留
DEVID (2)
保留
保留
器件配置
寄存器
保留
DEVID (2)
保留
0xF7FFFE
0xF80000
0xF80017
0xF80018
0xFEFFFE
0xFF0000
0xFF0002
0XFFFFFE
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 31 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.1.1 程序存储器构成
程序存储空间由可字寻址的块构成。虽然它被视为 24 位
宽,但将程序存储器的每个地址视作一个低位字和一个
高位字的组合更加合理,其中高位字的高字节部分没有
实现。低位字的地址始终为偶数,而高位字的地址为奇
数(图3-2 )。
程序存储器地址始终在低位字处按字对齐,并且在代码
执行过程中地址将递增或递减 2 。这种寻址模式与数据
存储空间寻址兼容,且为访问程序存储空间中的数据提
供了可能。
3.1.2 中断向量和陷阱向量
所有 dsPIC33FJ32MC302/304、dsPIC33FJ64MCX02/
X04 和 dsPIC33FJ128MCX02/X04 器件中 0x00000 和
0x000200 之间的地址空间都是保留的,用来存储硬编
图 3-2 : 程序存储器构成
msw
地址 ( lsw 地址)
0x000001
0x000003
0x000005
0x000007
最高有效字
23
00000000
00000000
00000000
00000000
码的程序执行向量。提供了一个硬件复位向量将代码执
行从器件复位时 PC 的默认值重定向到代码实际起始
处。用户应用程序可在地址 0x000000 处编写一条 GOTO
指令以将代码的实际起始地址设置为 0x000002 。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04器件也具有两个中断向量
表,地址分别为从 0x000004 到 0x0000FF 和 0x000100
到 0x0001FF 。这两个中断向量表允许使用不同的中断
服务程序(Interrupt Service Routines,ISR)处理器件
的每个中断源。关于中断向量表更详细的讨论,请参见
第 6.1 节 “中断向量表”。
最低有效字
PC 地址
0 8 16
0x000000
0x000002
0x000004
0x000006
程序存储器
“虚拟”字节
(读为 0 )
指令宽度
DS70291A_CN 第 32 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.2 数据地址空间
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 的 CPU 具有独立的 16
位宽数据存储空间。使用独立的地址发生单元(AGU )
对数据空间执行读写操作。数据存储器映射如图 3-4 所
示。
数据存储空间中的所有有效地址 (Effective Addresse ,
EA )均为 16 位宽,并且指向数据空间内的字节。这种
构成方式使得数据空间的地址范围为 64 KB 或 32K 字。
数据存储空间的低半地址区 (即当 EA<15> = 0 时)用
作实现的存储地址,而高半地址区(EA<15> = 1 )则保
留为程序空间可视性(Program Space Visibility,PSV)
区域 (见第 3.6.3 节 “使用程序空间可视性读程序存储
器中的数据”)。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件实现最大 16 KB 的
数据存储器。如果 EA 指向了该区域以外的存储单元,
则将返回一个全零的字或字节。
3.2.1 数据空间宽度
数据存储空间由可字节寻址的 16 位宽的块构成。在数
据存储器和寄存器中的数据是以16 位字为单位对齐的,
但所有数据空间 EA 都将解析为字节。每个字的低字节
(Least Significant Byte,LSB )部分具有偶地址,而高
字节 (Most Significant Byte, MSB )部分则具有奇地
址。
3.2.2 数据存储器构成和对齐方式
为维持与 PIC
空间的使用效率,dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 的指令集同时支持字和字节操作。字节访问会在内
部对按字对齐的存储空间的所有有效地址计算进行调
整。例如,对于执行后修改寄存器间接寻址模式 [Ws++]
的结果,字节操作时,内核将其识别为值 Ws + 1 ,而 字
操作时,内核将其识别为值 Ws + 2 。
使用任何 EA 的 LSB 来确定要选取的字节,数据字节读
取将读取包含字节的整个字。选定的字节被放在数据路
径的 LSB 处。这就是说,数据存储器和寄存器被组织为
两个并行的字节宽的实体,它们共享 (字)地址译码,
但写入线独立。数据字节写操作只写入阵列或寄存器中
与字节地址匹配的那一侧。
®
MCU 器件的后向兼容性和提高数据存储
所有字访问必须按偶地址对齐。不支持不对齐的字数据
取操作,所以在混合字节和字操作时,或者从 8 位 MCU
代码移植时,必须要小心。如果试图进行不对齐的读或
写操作,将产生地址错误陷阱。如果在读操作时产生错
误,正在执行的指令将完成。而如果在写操作时产生错
误,指令仍将执行,但不会进行写入。无论是哪种情况
都将执行陷阱,从而允许系统和 / 或用户应用程序能够
检查地址错误发生之前的机器状态。
所有装入任何 W 寄存器的字节都将装入 W 寄存器的低
字节 (LSB ), W 寄存器的高字节 (MSB )不变。
提供了一条符号扩展(SE )指令,允许用户应用程序把
8 位有符号数据转换为 16 位有符号值。或者,对于 16
位无符号数据,用户应用程序可以通过在适当地址处执
行一条零扩展 (ZE )指令清零任何 W 寄存器的 MSB 。
3.2.3 SFR 空间
Near 数据空间的前 2KB 存储单元 (从 0x0000 到
0x07FF)主要被特殊功能寄存器(Special Function
Registers, SFR)占 用。 dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 的内核和外设模块使用这些寄存器来控制器件的工
作。
SFR 分布在受其控制的模块中,通常一个模块会使用一
组 SFR。大部分 SFR 空间包含未用的地址;它们读为
0 。
注: 不同器件的实际外设功能集和中断也有所
不同。请参见相应器件的数据表和引脚图
了解特定器件的信息。
3.2.4 NEAR 数据空间
在 0x0000 和 0x1FFF 之间的 8 KB 区域被称为 near 数
据空间。可以使用所有存储器直接寻址指令中的 13 位
绝对地址字段直接寻址这一空间中的存储单元。此外,
还可以使用 MOV 指令寻址整个数据空间,MOV 指令支持
使用 16 位地址字段的存储器直接寻址模式或使用工
作寄存器作为地址指针的间接寻址模式。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 33 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 3-3 :带4 KB RAM 的 dsPIC33FJ32MC302/304 器件的数据存储器映射
2 KB
SFR 空间
4 KB
SRAM 空间
MSB
地址
0x0001
0x07FF
0x0801
0x0FFF
0x1001
0x13FF
0x1401
0x17FF
0x1801
0x8001 0x8000
16 位
LSB MSB
SFR 空间
X 数据 RAM(X)
Y 数据 RAM(Y)
DMA RAM
LSB
地址
0x0000
0x07FE
0x0800
0x0FFE
0x1000
0x13FE
0x1400
0x17FE
0x1800
6 KB
Near
数据
空间
可选择
映射到
程序存
储器
0xFFFF
X 数据
未实现(X)
0xFFFE
DS70291A_CN 第 34 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 3-4 :带8 KB RAM 的 dsPIC33FJ128MC202/204 和 dsPIC33FJ64MC202/204 器件的数据
存储器映射
2 KB
SFR 空间
8 KB
SRAM 空间
MSB
地址
0x0001
0x07FF
0x0801
0x17FF
0x1801
0x1FFF
0x2001
0x27FF 0x27FE
0x8001
16 位
LSB MSB
SFR 空间
X 数据 RAM(X)
Y 数据 RAM(Y)
DMA RAM
LSB
地址
0x0000
0x07FE
0x0800
0x17FE
0x1800
0x1FFE
0x2000
0x2800 0x2801
0x8000
8 KB
Near
数据
空间
可选择
映射到
程序存
储器
0xFFFF
X 数据
未实现( X)
0xFFFE
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 35 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 3-5 :带16 KB RAM 的 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804 器件的数
据存储器映射
2 KB
SFR 空间
16 KB
SRAM 空间
MSB
地址
0x0001
0x07FF
0x0801
0x1FFF
0x27FF
0x2801
0x3FFF
0x4001
0x47FF 0x47FE
0x8001
16 位
LSB MSB
SFR 空间
X 数据 RAM(X)
Y 数据 RAM(Y)
DMA RAM
LSB
地址
0x0000
0x07FE
0x0800
0x1FFE
0x27FE
0x2800
0x3FFE
0x4000
0x4800 0x4801
0x8000
8 KB
Near
数据
空间
可选择
映射到
程序存
储器
0xFFFF
X 数据
未实现( X)
0xFFFE
DS70291A_CN 第 36 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.2.5 X 和 Y 数据空间
内核有两个数据空间 X 和 Y 。这些数据空间可以看作是
独立的(对于一些 DSP 指令),或者看作是统一的线性
地址范围 (对于 MCU 指令)。使用两个地址发生单元
(AGU )和独立的数据总线来访问这两个数据空间。此
特性允许某些指令同时从 RAM 中取两个字,因此提高
了某些 DSP 算法的执行效率,如有限冲激响应(Finite
Impulse Response ,FIR )滤波算法和快速傅立叶变换
(Fast Fourier Transform, FFT)。
X 数据空间可用于所有指令,并且支持所有寻址模式。
X 数据空间的读 / 写数据总线相互独立。所有将数据空
间视为组合的 X 和 Y 地址空间的指令均将 X 读数据总线
作为读数据路径。X 读数据总线也可为双操作数 DSP 指
令(MAC 类)的 X 数据预取路径。
MAC 类指令(CLR、ED、EDAC、MAC、MOVSAC、MPY、
MPY.N 和 MSC)同时使用 Y 数据空间与 X 数据空间,
从而提供两条可同时对数据进行读操作的路径。
X 和 Y 数据空间都支持所有指令的模寻址,但要受到寻
址模式的限制。位反转寻址模式只是在写 X 数据空间时
才支持。
所有数据存储器写操作 (包括 DSP 指令中的数据存储
器写操作)均把数据空间视为组合的 X 和 Y 地址空间。
X 和 Y 数据空间的分界取决于具体的器件,且不能由用
户编程。
所有有效地址均为16 位宽并且指向数据空间内的字节。
因此,数据空间地址范围为 64 KB 或 32K 字,尽管不同
器件上实际实现的存储单元有所不同。
3.2.6 DMA RAM
每个 dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/
X04 和 dsPIC33FJ128MCX02/X04 器件包含最大 2 KB
的双端口 DMA RAM,位于 Y 数据空间的末端。 DMA
RAM 空间中的存储单元可被 CPU 和 DMA 控制器模块
同时访问。 DMA 控制器使用 DMA RAM 来存储要使用
DMA 传输到各外设的数据以及使用 DMA 从各外设传输
进来的数据。 DMA 控制器对 DMA RAM 的访问无须占用
CPU 周期。
当 CPU 和 DMA 控制器尝试同时写同一个 DMA RAM 存
储单元时,硬件确保 CPU 具有对 DMA RAM 存储单元
的优先访问权。因此, DMA RAM 提供了传输 DMA 数
据的可靠方式,而无须暂停 CPU 。
注: 在不需要使用 DMA 功能的应用中, DMA
RAM 可作为通用数据存储区使用。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第 37 页
DS70291A_CN 第 38 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-1 : CPU 内核寄存器映射
SFR 名称
WREG0 0000
WREG1 0002
WREG2 0004
WREG3 0006
WREG4 0008
WREG5 000A
WREG6 000C
WREG7 000E
WREG8 0010
WREG9 0012
WREG10 0014
WREG11 0016
WREG12 0018
WREG13 001A
WREG14 001C
WREG15 001E
SPLIM 0020
ACCAL 0022 ACCAL
ACCAH 0024 ACCAH
ACCAU 0026 ACCA<39> ACCAU
ACCBL 0028 ACCBL
ACCBH 002A ACCBH
ACCBU 002C ACCB<39> ACCBU
PCL 002E
PCH 0030 — — — — — — — —
TBLPAG 0032 — — — — — — — —
PSVPAG 0034 — — — — — — — —
RCOUNT 0036
DCOUNT
DOSTARTL
DOSTARTH
DOENDL
DOENDH
SR 0042 OA OB SA SB OAB SAB DA DC IPL2 IPL1 IPL0 RA N OV Z C
CORCON 0044 — — — US EDT DL<2:0>
MODCON 0046 XMODEN YMODEN
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以 16 进制表示。
SFR
地址
0038 DCOUNT<15:0> xxxx
003A DOSTARTL<15:1> 0x x x x
003C
003E DOENDL<15:1> 0x x x x
0040
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
工作寄存器
堆栈指针限制寄存器
程序计数器低位字寄存器
Repeat
循环计数器寄存器
— — — — — — — — — —
— — — — — — — — — —
— —
BWM<3:0> YWM<3:0> XWM<3:0> 0000
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
程序计数器高字节寄存器
表页地址指针寄存器
程序存储器可视性页地址指针寄存器
DOSTARTH<5:0> 00xx
DOENDH 00xx
SATA SATB SATDW ACCSAT IPL3 PSV RND IF
所有复位
时的状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0800
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
0000
0000
0000
xxxx
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第39 页
表 3-1 : CPU 内核寄存器映射 (续)
SFR 名称
XMODSRT 0048 XS<15:1> 0x x x x
XMODEND 004A XE<15:1> 1x x x x
YMODSRT 004C YS<15:1> 0x x x x
YMODEND 004E YE<15:1> 1x x x x
XBREV 0050 BREN XB<14:0> xxxx
DISICNT 0052 —
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以 16 进制表示。
SFR
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—
禁止中断计数器寄存器
所有复位
时的状态
xxxx
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-2 : dsPIC33FJ128MC202/802 、 dsPIC33FJ64MC202/802 和 dsPIC33FJ32MC302 的电平变化通知寄存器映射
SFR名称SFR
CNEN1
CNEN2
CNPU1
CNPU2
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
00C2
006A
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
0060 CN15IE CN14IE CN13IE CN12IE CN11IE
—
CN30IE CN29IE
0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE
—
CN30PUE CN29PUE
—
CN27IE
—
CN27PUE
— — —
— —
— — —
— —
CN24IE CN23IE CN22IE CN21IE
CN24PUE CN23PUE CN22PUE CN21PUE
CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE
— — — —
CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE
— — — —
CN16IE
CN16PUE
所有复
位时的
状态
0000
0000
0000
0000
表 3-3: dsPIC33FJ128MC204/804、 dsPIC33FJ64MC204/804 和 dsPIC33FJ32MC304 的电平变化通知寄存器映射
SFR名称SFR
CNEN1
CNEN2
CNPU1
CNPU2
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
0060 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE CN9IE CN8IE CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE
—
00C2
0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE CN9PUE CN8PUE CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE
006A
CN30IE CN29IE CN28IE CN27IE CN26IE CN25IE CN24IE CN23IE CN22IE CN21IE CN20IE CN19IE CN18IE CN17IE CN16IE
—
CN30PUE CN29PUE CN28PUE CN27PUE CN26PUE CN25PUE CN24PUE CN23PUE CN22PUE CN21PUE CN20PUE CN19PUE CN18PUE CN17PUE CN16PUE
所有复
位时的
状态
0000
0000
0000
0000
DS70291A_CN 第 40 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-4 : 中断控制器寄存器映射
SFR
SFR 名称
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
INTCON1 0080 NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE SFTACERR DIV0ERR DMACERR MATHERR ADDRERR STKERR OSCFAIL
INTCON2 0082 ALTIVT DISI
IFS0 0084
— DMA1IF AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF T2IF OC2IF IC2IF DMA0IF T1IF OC1IF IC1IF INT0IF 0000
IFS1 0086 U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF DMA2IF IC8IF IC7IF
IFS2 0088
— DMA4IF PMPIF — — — — — — — — DMA3IF C1IF
IFS3 008A FLTA1IF RTCIF DMA5IF
IFS4 008C DAC1LIF
IEC0 0094
(2)
DAC1RIF
— DMA1IE AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE T2IE OC2IE IC2IE DMA0IE T1IE OC1IE IC1IE INT0IE 0000
IEC1 0096 U2TXIE U2RXIE INT2IE T5IE T4IE OC4IE OC3IE DMA2IE IC8IE IC7IE
IEC2 0098
— DMA4IE PMPIE — — — — — — — — DMA3IE C1IE
IEC3 009A FLTA1IE RTCIE DMA5IE
IEC4 009C DAC1LIE
IPC0 00A4
IPC1 00A6
IPC2 00A8
IPC3 00AA
IPC4 00AC
IPC5 00AE
IPC6 00B0
IPC7 00B2
IPC8 00B4
IPC9 00B6
IPC11 00BA
IPC14 00C0
IPC15 00C2
IPC16 00C4
IPC17 00C6
IPC18 00C8
IPC19 00CA
INTTREG 00E0
(2)
DAC1RIE
— T1IP<2:0> —O C 1 I P < 2 : 0 > —I C 1 I P < 2 : 0 >— INT0IP<2:0> 4444
— T2IP<2:0> —O C 2 I P < 2 : 0 > —I C 2 I P < 2 : 0 >— DMA0IP<2:0> 4444
— U1RXIP<2:0> — SPI1IP<2:0> — SPI1EIP<2:0> — T3IP<2:0> 4444
— — — — — DMA1IP<2:0> —A D 1 I P < 2 : 0 >— U1TXIP<2:0> 0444
— CNIP<2:0> — CMIP<2:0> — MI2C1IP<2:0> — SI2C1IP<2:0> 4444
—I C 8 I P < 2 : 0 >—I C 7 I P < 2 : 0 > — — — — — INT1IP<2:0> 4404
— T4IP<2:0> —O C 4 I P < 2 : 0 > — OC3IP<2:0> — DMA2IP<2:0> 4444
— U2TXIP<2:0> — U2RXIP<2:0> — INT2IP<2:0> — T5IP<2:0> 4444
— C1IP<2:0>
— — — — — — — — — — — — — DMA3IP<2:0> 0004
— — — — — DMA4IP<2:0> — PMPIP<2:0> — — — — 0440
— — — — — QEI1IP<2:0> — PWM1IP<2:0> — — — — 0440
— FLTA1IP<2:0> —R T C I P < 2 : 0 > — DMA5IP<2:0> — — — — 4440
— CRCIP<2:0> — U2EIP<2:0> —U 1 E I P < 2 : 0 >— — — — 4440
— — — — — C1TXIP<2:0>
— QEI2IP<2:0> — FLTA2IP<2:0> — PWM2IP<2:0> — — — — 4440
— DAC1LIP<2:0>
— — — — ILR<3:0>> — VECNUM<6:0> 4444
— — — — — — — — — — — INT2EP INT1EP INT0EP 0000
— INT1IF CNIF CMIF MI2C1IF SI2C1IF 0000
(1)
C1RXIF
(1)
SPI2IF SPI2EIF 0000
— —Q E I 1 I F P W M 1 I F— — — — — — — — — 0000
(2)
— — QEI2IF FLTA2IF PWM2IF — —C 1 T X I F
(1)
DMA7IF DMA6IF CRCIF U2EIF U1EIF — 0000
— INT1IE CNIE CMIE MI2C1IE SI2C1IE 0000
(1)
C1RXIE
(1)
SPI2IE SPI2EIE 0000
— —Q E I 1 I E P W M 1 I E— — — — — — — — — 0000
(2)
— — QEI2IE FLTA2IE PWM2IE — —C 1 T X I E
(1)
(2)
— C1RXIP<2:0>
—D A C 1 R I P < 2 : 0 >
(1)
(1)
(2)
— SPI2IP<2:0> — SPI2EIP<2:0> 4444
— DMA7IP<2:0> — DMA6IP<2:0> 0444
— — — — — — — — 4400
(1)
DMA7IE DMA6IE CRCIE U2EIE U1EIE — 0000
图注: x = 复位时的未知值, — = 未实现,读为 0。复位值以十六进制表示。
注 1 : 对于不带 ECAN™ 模块的器件禁止此类中断。
2 : 对于不带 DAC 模块的器件禁止此类中断。
所有复
位时的
状态
— 0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第41 页
表 3-5 : 定时器寄存器映射
SFR
SFR 名称
TMR1 0100
PR1 0102
T1CON 0104 TON
TMR2 0106
TMR3HLD 0108
TMR3 010A
PR2 010C
PR3 010E
T2CON 0110 TON
T3CON 0112 TON
TMR4 0114
TMR5HLD 0116
TMR5 0118
PR4 011A
PR5 01C2
T4CON 011E TON
T5CON 0120 TON
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
—
—
—
—
—
TSIDL
TSIDL
TSIDL
TSIDL
TSIDL
— — — — — —
— — — — — —
— — — — — —
— — — — — —
— — — — — —
Tim er1
寄存器
周期寄存器
Tim er2
Timer 3
保持寄存器 (仅适用于32位定时器操作)
Tim er3
周期寄存器
周期寄存器
Tim er4
Timer 5
保持寄存器 (仅适用于32位定时器操作)
Tim er5
周期寄存器
周期寄存器
1
寄存器
寄存器
2
3
寄存器
寄存器
4
5
TGATE TCKPS<1:0>
TGATE TCKPS<1:0> T32
TGATE TCKPS<1:0>
TGATE TCKPS<1:0> T32
TGATE TCKPS<1:0>
—
— —
— —
TSYNC TCS
—
—
TCS
TCS
TCS
TCS
所有复
位时的
状态
xxxx
FFFF
—
0000
xxxx
xxxx
xxxx
FFFF
FFFF
—
0000
—
0000
xxxx
xxxx
xxxx
FFFF
FFFF
—
0000
—
0000
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-6 : 输入捕捉寄存器映射
SFR
SFR 名称
IC1BUF 0140
IC1CON 0142
IC2BUF 0144
IC2CON 0146
IC7BUF 0158
IC7CON 015A
IC8BUF 015C
IC8CON 015E
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
— —
— —
— —
— —
ICSIDL
ICSIDL
ICSIDL
ICSIDL
— — — — —
— — — — —
— — — — —
— — — — —
输入捕捉1寄存器
ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
输入捕捉2寄存器
ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
输入捕捉7寄存器
ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
输入捕捉8寄存器
ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
所有复
位时的
状态
xxxx
0000
xxxx
0000
xxxx
0000
xxxx
0000
DS70291A_CN 第 42 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-7 : 输出比较寄存器映射
SFR
SFR 名称
OC1RS 0180
OC1R 0182
OC1CON 0184
OC2RS 0186
OC2R 0188
OC2CON 018A
OC3RS 018C
OC3R 018E
OC3CON 0190
OC4RS 0192
OC4R 0194
OC4CON 0196
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
— —
— —
— —
— —
OCSIDL
OCSIDL
OCSIDL
OCSIDL
— — — — — — — —
— — — — — — — —
— — — — — — — —
— — — — — — — —
输出比较1辅助寄存器
输出比较1寄存器
OCFLT OCTSEL OCM<2:0>
输出比较2辅助寄存器
输出比较2寄存器
OCFLT OCTSEL OCM<2:0>
输出比较3辅助寄存器
输出比较3寄存器
OCFLT OCTSEL OCM<2:0>
输出比较4辅助寄存器
输出比较4寄存器
OCFLT OCTSEL OCM<2:0>
所有复位
时的状态
xxxx
xxxx
0000
xxxx
xxxx
0000
xxxx
xxxx
0000
xxxx
xxxx
0000
表 3-8: 6 路输出 PWM1 寄存器映射
SFR 名称
P1TCON 01C0 PTEN
P1TMR 01C2 PTDIR
P1TPER 01C4 —
P1SECMP 01C6 SEVTDIR
PWM1CON1
PWM1CON2
P1DTCON1 01CC DTBPS<1:0> DTB<5:0> DTAPS<1:0> DTA<5:0>
P1DTCON2 01CE — — — — — — — — — — DTS3A DTS3I DTS2A DTS2I DTS1A DTS1I
P1FLTACON 01D0 — — FAOV3H FAOV3L FAOV2H FAOV2L FAOV1H FAOV1L FLTAM — — — — FAEN<2:0>
P1OVDCON 01D4 — — POVD3H POVD3L POVD2H POVD2L POVD1H POVD1L — — POUT3H POUT3L POUT2H POUT2L POUT1H POUT1L
P1DC1 01D6
P1DC2 01D8
P1DC3 01DA
图注: x = 未初始化位, — = 未实现,读为 0 。
SFR
地址
01C8 — — — — — PMOD3 PMOD2 PMOD1 — PEN3H PEN2H PEN1H — PEN3L PEN2L PEN1L
01CA — — — — SEVOPS<3:0> — — — — — IUE OSYNC UDIS
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—P T S I D L — — — — — PTOPS<3:0> PTCKPS<1:0> PTMOD<1:0>
PWM 定时器计数值寄存器
PWM 时基周期寄存器
PWM 特殊事件比较寄存器
PWM 占空比 1 寄存器
PWM 占空比 2 寄存器
PWM 占空比 3 寄存器
复位时的
状态
0000
0000
0000
0000
00FF
0000
0000
0000
0000
FF00
0000
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第43 页
表 3-9 : 2 路输出 PWM2 寄存器映射
SFR 名称 地址
P2TCON 05C0 PTEN
P2TMR 05C2 PTDIR
P2TPER 05C4
P2SECMP 05C6 SEVTDIR
PWM2CON1 05C8
PWM2CON2 05CA
P2DTCON1 05CC DTBPS<1:0> DTB<5:0> DTAPS<1:0> DTA<5:0> 0000
P2DTCON2 05CE
P2FLTACON 05D0
P2OVDCON 05D4
P2DC1 05D6
图注: u = 未初始化位, — = 未实现,读为 0 。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—P T S I D L— — — — — PTOPS<3:0> PTCKPS<1:0> PTMOD<1:0> 0000
—
— — — — — — —P M O D 1— — — PEN1H — — — PEN1L 00FF
— — — — SEVOPS<3:0> — — — — — IUE OSYNC UDIS 0000
— — — — — — — — — — — — — —D T S 1 AD T S 1 I0000
— — — — — — FAOV1H FAOV1L FLTAM — — — — — —F A E N 10000
— — — — — — POVD1H POVD1L — — — — — — POUT1H POUT1L FF00
表 3-10: QEI1 寄存器映射
SFR
名称
QEI1CON 01E0 CNTERR
DFLT1CON 01E2
POS1CNT 01E4
MAX1CNT 01E6
图注: u = 未初始化位, — = 未实现,读为 0 。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
—
— — — — — IMV<1:0> CEID QEOUT QECK<2:0> — — — — 0000
复位时的状
态
PWM 定时器计数值寄存器
PWM 时基周期寄存器
PWM 特殊事件比较寄存器
PWM 占空比 1 寄存器
QEISIDL INDX UPDN QEIM<2:0> SWPAB PCDOUT TQGATE TQCKPS<1:0> POSRES TQCS UPDN_SRC 0000
位置计数器 <15:0>
最大计数 <15:0>
0000
0000
0000
0000
复位时的
状态
0000
FFFF
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-11 : QEI2 寄存器映射
SFR
名称
QEI2CON 01F0 CNTERR
DFLT2CON 01F2
POS2CNT 01F4
MAX2CNT 01F6
图注: u = 未初始化位, — = 未实现,读为 0 。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
—
— — — — — IMV<1:0> CEID QEOUT QECK<2:0> — — — — 0000
复位时的
状态
QEISIDL INDX UPDN QEIM<2:0> SWPAB PCDOUT TQGATE TQCKPS<1:0> POSRES TQCS UPDN_SRC 0000
位置计数器 <15:0>
最大计数 <15:0>
0000
FFFF
DS70291A_CN 第 44 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-12 : I2C 寄存器映射
SFR 名称
I2C1RCV 0200 — — — — — — — —
I2C1TRN 0202 — — — — — — — —
I2C1BRG 0204 — — — — — — —
I2C1CON 0206 I2CEN — I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN
I2C1STAT 0208 ACKSTAT TRSTAT — — — BCL GCSTAT ADD10 IWCOL I2COV D_A P S R_W RBF TBF
I2C1ADD 020A — — — — — —
I2C1MSK 020C — — — — — —
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
SFR
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
接收寄存器
发送寄存器
波特率发生器寄存器
地址寄存器
地址掩码寄存器
所有复位
时的状态
0000
00FF
0000
1000
0000
0000
0000
表 3-13: UART1 寄存器映射
SFR 名称
U1MODE 0220 UARTEN — USIDL IREN RTSMD — UEN1 UEN0 WAKE LPBACK ABAUD URXINV BRGH PDSEL<1:0> STSEL
U1STA 0222 UTXISEL1 UTXINV UTXISEL0 — UTXBRK UTXEN UTXBF TRMT URXISEL<1:0> ADDEN RIDLE PERR FERR OERR URXDA
U1TXREG 0224 — — — — — — —U T X 8
U1RXREG 0226 — — — — — — — URX8
U1BRG 0228
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
SFR
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
UART
发送寄存器
UART
接收寄存器
波特率发生器预分频器
所有复位
时的状态
0000
0110
xxxx
0000
0000
表 3-14: UART2 寄存器映射
SFR 名称
U2MODE 0230 UARTEN — USIDL IREN RTSMD — UEN1 UEN0 WAKE LPBACK ABAUD URXINV BRGH PDSEL<1:0> STSEL
U2STA 0232 UTXISEL1 UTXINV UTXISEL0 — UTXBRK UTXEN UTXBF TRMT URXISEL<1:0> ADDEN RIDLE PERR FERR OERR URXDA
U2TXREG 0234 — — — — — — —U T X 8
U2RXREG 0236 — — — — — — — URX8
U2BRG 0238
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
SFR
地址
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
UART
发送寄存器
UART
接收寄存器
波特率发生器预分频器
所有复位
时的状态
0000
0110
xxxx
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第45 页
表 3-15 : SPI1 寄存器映射
SFR
SFR 名称
SPI1STAT 0240 SPIEN — SPISIDL — — — — — — SPIROV — — — — SPITBF SPIRBF
SPI1CON1 0242 — — — DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE<2:0> PPRE<1:0>
SPI1CON2 0244 FRMEN SPIFSD FRMPOL — — — — — — — — — — —F R M D L Y—
SPI1BUF 0248
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
发送和接收缓冲寄存器
SPI1
所有复位
时的状态
0000
0000
0000
0000
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-16 : SPI2 寄存器映射
SFR
SFR 名称
SPI2STAT 0260 SPIEN — SPISIDL — — — — — — SPIROV — — — — SPITBF SPIRBF
SPI2CON1 0262 — — — DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE<2:0> PPRE<1:0>
SPI2CON2 0264 FRMEN SPIFSD FRMPOL — — — — — — — — — — —F R M D L Y—
SPI2BUF 0268
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
SPI2
发送和接收缓冲寄存器
所有复位
时的状态
0000
0000
0000
0000
表 3-17 : dsPIC33FJ64MC202/802 、 dsPIC33FJ128MC202/802 和 dsPIC33FJ32MC302 的 ADC1 寄存器映射
寄存器名称 地址
ADC1BUF0 0300
AD1CON1 0320 ADON
AD1CON2 0322 VCFG<2:0>
AD1CON3 0324 ADRC
AD1CHS123 0326
AD1CHS0 0328 CH0NB
AD1PCFGL 032C
AD1CSSL 0330
AD1CON4 0332
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADSIDL ADDMABM — AD12B FORM<1:0> SSRC<2:0> — SIMSAM ASAM SAMP DONE 0000
— — CSCNA CHPS<1:0> BUFS — SMPI<3:0> BUFM ALTS 0000
— — SAMC<4:0> ADCS<7:0> 0000
— — — — — CH123NB<1:0> CH123SB — — — — — CH123NA<1:0> CH123SA 0000
— — CH0SB<4:0> CH0NA — — CH0SA<4:0> 0000
— — — — — — — — — — PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000
— — — — — — — — — — CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 0000
— — — — — — — — — — — — —
ADC 数据缓冲区 0
DMABL<2:0>
所有复
位时的
状态
xxxx
0000
DS70291A_CN 第 46 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-18 : dsPIC33FJ64MC204/804 、 dsPIC33FJ128MC204/804 和 dsPIC33FJ32MC304 的 ADC1 寄存器映射
寄存器名称 地址
ADC1BUF0 0300
AD1CON1 0320 ADON
AD1CON2 0322 VCFG<2:0>
AD1CON3 0324 ADRC
AD1CHS123 0326
AD1CHS0 0328 CH0NB
AD1PCFGL 032C
AD1CSSL 0330
AD1CON4 0332
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— ADSIDL ADDMABM — AD12B FORM<1:0> SSRC<2:0> — SIMSAM ASAM SAMP DONE 0000
— — CSCNA CHPS<1:0> BUFS — SMPI<3:0> BUFM ALTS 0000
— — SAMC<4:0> ADCS<7:0> 0000
— — — — — CH123NB<1:0> CH123SB — — — — — CH123NA<1:0> CH123SA 0000
— — CH0SB<4:0> CH0NA — — CH0SA<4:0> 0000
— — — — — — — PCFG8 PCFG7 PCFG6 PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000
— — — — — — — CSS8 CSS7 CSS6 CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 0000
— — — — — — — — — — — — —
ADC 数据缓冲区 0
DMABL<2:0>
所有复
位时的
状态
xxxx
0000
表 3-19: dsPIC33FJ128MC804 和 dsPIC33FJ64MC804 的 DAC1 寄存器映射
SFR
SFR 名称
DAC1CON 03F0 DACEN
DAC1STAT 03F2 LOEN
DAC1DFLT 03F4 DAC1DFLT<15:0>
DAC1RDAT 03F6 DAC1RDAT<15:0>
DAC1LDAT 03F8 DAC1LDAT<15:0>
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
— DACSIDL AMPON — — —F O R M—D A C F D I V < 6 : 0 >
—L M V O E N— — LITYPE LFULL LEMPTY ROEN —R M V O E N— —R I T Y P ER F U L LR E M P T Y
所有复
位时的
状态
0000
0000
0000
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第47 页
表 3-20 : DMA 寄存器映射
寄存器名称 地址
DMA0CON 0380 CHEN SIZE DIR HALF NULLW
DMA0REQ 0382 FORCE
DMA0STA 0384 STA<15:0> 0000
DMA0STB 0386 STB<15:0> 0000
DMA0PAD 0388 PAD<15:0> 0000
DMA0CNT 038A
DMA1CON 038C CHEN SIZE DIR HALF NULLW
DMA1REQ 038E FORCE
DMA1STA 0390 STA<15:0> 0000
DMA1STB 0392 STB<15:0> 0000
DMA1PAD 0394 PAD<15:0> 0000
DMA1CNT 0396
DMA2CON 0398 CHEN SIZE DIR HALF NULLW
DMA2REQ 039A FORCE
DMA2STA 039C STA<15:0> 0000
DMA2STB 039E STB<15:0> 0000
DMA2PAD 03A0 PAD<15:0> 0000
DMA2CNT 03A2
DMA3CON 03A4 CHEN SIZE DIR HALF NULLW
DMA3REQ 03A6 FORCE
DMA3STA 03A8 STA<15:0> 0000
DMA3STB 03AA STB<15:0> 0000
DMA3PAD 03AC PAD<15:0> 0000
DMA3CNT 03AE
DMA4CON 03B0 CHEN SIZE DIR HALF NULLW
DMA4REQ 03B2 FORCE
DMA4STA 03B4 STA<15:0> 0000
DMA4STB 03B6 STB<15:0> 0000
DMA4PAD 03B8 PAD<15:0> 0000
DMA4CNT 03BA
DMA5CON 03BC CHEN SIZE DIR HALF NULLW
DMA5REQ 03BE FORCE
DMA5STA 03C0 STA<15:0> 0000
DMA5STB 03C2 STB<15:0> 0000
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
所有复
位时的
状态
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
DS70291A_CN 第48 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-20 : DMA 寄存器映射 (续)
寄存器名称 地址
DMA5PAD 03C4 PAD<15:0> 0000
DMA5CNT 03C6
DMA6CON 03C8 CHEN SIZE DIR HALF NULLW
DMA6REQ 03CA FORCE
DMA6STA 03CC STA<15:0> 0000
DMA6STB 03CE STB<15:0> 0000
DMA6PAD 03D0 PAD<15:0> 0000
DMA6CNT 03D2
DMA7CON 03D4 CHEN SIZE DIR HALF NULLW
DMA7REQ 03D6 FORCE
DMA7STA 03D8 STA<15:0> 0000
DMA7STB 03DA STB<15:0> 0000
DMA7PAD 03DC PAD<15:0> 0000
DMA7CNT 03DE
DMACS0 03E0 PWCOL7 PWCOL6 PWCOL5 PWCOL4 PWCOL3 PWCOL2 PWCOL1 PWCOL0 XWCOL7 XWCOL6 XWCOL5 XWCOL4 XWCOL3 XWCOL2 XWCOL1 XWCOL0 0000
DMACS1 03E2
DSADR 03E4 DSADR<15:0> 0000
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — —A M O D E < 1 : 0 > — —M O D E < 1 : 0 >0000
— — — — — — — — IRQSEL<6:0> 0000
— — — — — — CNT<9:0> 0000
— — — — LSTCH<3:0> PPST7 PPST6 PPST5 PPST4 PPST3 PPST2 PPST1 PPST0 0000
所有复
位时的
状态
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第49 页
表 3-21 :当C1CTRL1.WIN = 0 或 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804)
寄存器名称 地址
C1CTRL1 0400
C1CTRL2 0402
C1VEC 0404
C1FCTRL 0406 DMABS<2:0>
C1FIFO 0408
C1INTF 040A
C1INTE 040C
C1EC 040E TERRCNT<7:0> RERRCNT<7:0> 0000
C1CFG1 0410
C1CFG2 0412
C1FEN1 0414
C1FMSKSEL1 0418 F7MSK<1:0> F6MSK<1:0> F5MSK<1:0> F4MSK<1:0> F3MSK<1:0> F2MSK<1:0> F1MSK<1:0> F0MSK<1:0> 0000
C1FMSKSEL2 041A F15MSK<1:0> F14MSK<1:0> F13MSK<1:0> F12MSK<1:0> F11MSK<1:0> F10MSK<1:0> F9MSK<1:0> F8MSK<1:0> 0000
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — CSIDL ABAT CANCK
— — — — — — — — — — — DNCNT<4:0> 0000
— — — FILHIT<4:0> — ICODE<6:0> 0000
— — — — — — — —
— — FBP<5:0> — — FNRB<5:0> 0000
— — TXBO TXBP RXBP TXWAR RXWAR EWARN IVRIF WAKIF ERRIF — FIFOIF RBOVIF RBIF TBIF 0000
— — — — — — — — IVRIE WAKIE ERRIE — FIFOIE RBOVIE RBIE TBIE 0000
— — — — — — — — SJW<1:0> BRP<5:0> 0000
—W A K F I L— — — SEG2PH<2:0> SEG2PHTS SAM SEG1PH<2:0> PRSEG<2:0> 0000
FLTEN15 FLTEN14 FLTEN13 FLTEN12 FLTEN11 FLTEN10 FLTEN9 FLTEN8 FLTEN7 FLTEN6 FLTEN5 FLTEN4 FLTEN3 FLTEN2 FLTEN1 FLTEN0
S
REQOP<2:0> OPMODE<2:0> — CANCAP — —W I N0480
FSA<4:0>
所有复
位时的
状态
0000
FFFF
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-22 :当C1CTRL1.WIN = 0 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804)
寄存器名称 地址
C1RXFUL1 0420 RXFUL15 RXFUL14 RXFUL13 RXFUL12 RXFUL11 RXFUL10 RXFUL9 RXFUL8 RXFUL7 RXFUL6 RXFUL5 RXFUL4 RXFUL3 RXFUL2 RXFUL1 RXFUL0 0000
C1RXFUL2 0422 RXFUL31 RXFUL30 RXFUL29 RXFUL28 RXFUL27 RXFUL26 RXFUL25 RXFUL24 RXFUL23 RXFUL22 RXFUL21 RXFUL20 RXFUL19 RXFUL18 RXFUL17 RXFUL16 0000
C1RXOVF1 0428 RXOVF15 RXOVF14 RXOVF13 RXOVF12 RXOVF11 RXOVF10 RXOVF9 RXOVF8 RXOVF7 RXOVF6 RXOVF5 RXOVF4 RXOVF3 RXOVF2 RXOVF1 RXOVF0 0000
C1RXOVF2 042A RXOVF31 RXOVF30 RXOVF29 RXOVF28 RXOVF27 RXOVF26 RXOVF25 RXOVF24 RXOVF23 RXOVF22 RXOVF21 RXOVF20 RXOVF19 RXOVF18 RXOVF17 RXOVF16 0000
C1TR01CON 0430
C1TR23CON 0432
C1TR45CON 0434
C1TR67CON 0436
C1RXD 0440
C1TXD 0442
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0400-
041E
TXEN1 TXABT1 TXLARB1 TXERR1 TXREQ1 RTREN1 TX1PRI<1:0> TXEN0 TXABT0 TXLARB0 TXERR0 TXREQ0 RTREN0 TX0PRI<1:0>
TXEN3 TXABT3 TXLARB3 TXERR3 TXREQ3 RTREN3 TX3PRI<1:0> TXEN2 TXABT2 TXLARB2 TXERR2 TXREQ2 RTREN2 TX2PRI<1:0>
TXEN5 TXABT5 TXLARB5 TXERR5 TXREQ5 RTREN5 TX5PRI<1:0> TXEN4 TXABT4 TXLARB4 TXERR4 TXREQ4 RTREN4 TX4PRI<1:0>
TXEN7 TXABT7 TXLARB7 TXERR7 TXREQ7 RTREN7 TX7PRI<1:0> TXEN6 TXABT6 TXLARB6 TXERR6 TXREQ6 RTREN6 TX6PRI<1:0>
参见 WIN = x 时的定义
接收的数据字
发送的数据字
所有复
位时的
状态
0000
0000
0000
0000
xxxx
xxxx
DS70291A_CN 第 50 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-23 :当C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804)
寄存器名称 地址
0400-
041E
C1BUFPNT1 0420 F3BP<3:0> F2BP<3:0> F1BP<3:0> F0BP<3:0> 0000
C1BUFPNT2 0422 F7BP<3:0> F6BP<3:0> F5BP<3:0> F4BP<3:0> 0000
C1BUFPNT3 0424 F11BP<3:0> F10BP<3:0> F9BP<3:0> F8BP<3:0> 0000
C1BUFPNT4 0426 F15BP<3:0> F14BP<3:0> F13BP<3:0> F12BP<3:0> 0000
C1RXM0SID 0430 SID<10:3> SID<2:0>
C1RXM0EID 0432 EID<15:8> EID<7:0> xxxx
C1RXM1SID 0434 SID<10:3> SID<2:0>
C1RXM1EID 0436 EID<15:8> EID<7:0> xxxx
C1RXM2SID 0438 SID<10:3> SID<2:0>
C1RXM2EID 043A EID<15:8> EID<7:0> xxxx
C1RXF0SID 0440 SID<10:3> SID<2:0>
C1RXF0EID 0442 EID<15:8> EID<7:0> xxxx
C1RXF1SID 0444 SID<10:3> SID<2:0>
C1RXF1EID 0446 EID<15:8> EID<7:0> xxxx
C1RXF2SID 0448 SID<10:3> SID<2:0>
C1RXF2EID 044A EID<15:8> EID<7:0> xxxx
C1RXF3SID 044C SID<10:3> SID<2:0>
C1RXF3EID 044E EID<15:8> EID<7:0> xxxx
C1RXF4SID 0450 SID<10:3> SID<2:0>
C1RXF4EID 0452 EID<15:8> EID<7:0> xxxx
C1RXF5SID 0454 SID<10:3> SID<2:0>
C1RXF5EID 0456 EID<15:8> EID<7:0> xxxx
C1RXF6SID 0458 SID<10:3> SID<2:0>
C1RXF6EID 045A EID<15:8> EID<7:0> xxxx
C1RXF7SID 045C SID<10:3> SID<2:0>
C1RXF7EID 045E EID<15:8> EID<7:0> xxxx
C1RXF8SID 0460 SID<10:3> SID<2:0>
C1RXF8EID 0462 EID<15:8> EID<7:0> xxxx
C1RXF9SID 0464 SID<10:3> SID<2:0>
C1RXF9EID 0466 EID<15:8> EID<7:0> xxxx
C1RXF10SID 0468 SID<10:3> SID<2:0>
C1RXF10EID 046A EID<15:8> EID<7:0> xxxx
C1RXF11SID 046C SID<10:3> SID<2:0>
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
参见 WIN = x 时的定义
—M I D E—E I D < 1 7 : 1 6 >xxxx
—M I D E—E I D < 1 7 : 1 6 >xxxx
—M I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
所有复位
时的状态
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第51 页
表 3-23 :当C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804) (续)
寄存器名称 地址
C1RXF11EID 046E EID<15:8> EID<7:0> xxxx
C1RXF12SID 0470 SID<10:3> SID<2:0>
C1RXF12EID 0472 EID<15:8> EID<7:0> xxxx
C1RXF13SID 0474 SID<10:3> SID<2:0>
C1RXF13EID 0476 EID<15:8> EID<7:0> xxxx
C1RXF14SID 0478 SID<10:3> SID<2:0>
C1RXF14EID 047A EID<15:8> EID<7:0> xxxx
C1RXF15SID 047C SID<10:3> SID<2:0>
C1RXF15EID 047E EID<15:8> EID<7:0> xxxx
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
—E X I D E—E I D < 1 7 : 1 6 >xxxx
所有复位
时的状态
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
DS70291A_CN 第52 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-24 : 外设引脚选择输入寄存器映射
寄存器名称 地址
RPINR0
RPINR1
RPINR3
RPINR4
RPINR7
RPINR10
RPINR11
RPINR12
RPINR13
RPINR14
RPINR15
RPINR16
RPINR17
RPINR18
RPINR19
RPINR20
RPINR21
RPINR22
RPINR23
(1)
RPINR26
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以 16 进制表示。
注 1 : 仅 dsPIC33FJ128MC802/804 和 dsPIC33FJ64MC802/804 器件具有该寄存器。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0680
0682
0686
0688
068E
0694
0696
0698
069A
069C
069E
06A0
06A2
06A4
06A6
06A8
06AA
06AC
06AE
06B4 — — — — — — — — — — —C 1 R X R < 4 : 0 >
— — — INT1R<4:0> — — — — — — — —
— — — — — — — — — — —I N T 2 R < 4 : 0 >
— — —T 3 C K R < 4 : 0 >— — —T 2 C K R < 4 : 0 >
— — —T 5 C K R < 4 : 0 >— — —T 4 C K R < 4 : 0 >
— — — IC2R<4:0> — — — IC1R<4:0>
— — — IC8R<4:0> — — — IC7R<4:0>
— — — — — — — — — — —O C F A R < 4 : 0 >
— — — — — — — — — — —F L T A 1 R < 4 : 0 >
— — — — — — — — — — —F L T A 2 R < 4 : 0 >
— — — QEB1R<4:0> — — — QEA1R<4:0>
— — — — — — — — — — — INDX1R<4:0>
— — — QEB2R<4:0> — — — QEA2R<4:0>
— — — — — — — — — — — INDX2R<4:0>
— — — U1CTSR<4:0> — — —U 1 R X R < 4 : 0 >
— — — U2CTSR<4:0> — — —U 2 R X R < 4 : 0 >
— — —S C K 1 R < 4 : 0 >— — —S D I 1 R < 4 : 0 >
— — — — — — — — — — —S S 1 R < 4 : 0 >
— — —S C K 2 R < 4 : 0 >— — —S D I 2 R < 4 : 0 >
— — — — — — — — — — —S S 2 R < 4 : 0 >
所有复
位时的
状态
1F00
001F
1F1F
1F1F
1F1F
1F1F
001F
001F
001F
1F1F
001F
1F1F
001F
1F1F
1F1F
1F1F
001F
1F1F
001F
001F
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第53 页
表 3-25 : dsPIC33FJ128MC202/802 、 dsPIC33FJ64MC202/802 和 dsPIC33FJ32MC302 的外设引脚选择输出寄存器映射
寄存器名称 地址
RPOR0
RPOR1
RPOR2
RPOR3
RPOR4
RPOR5
RPOR6
RPOR7
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
06C0 — — — RP1R<4:0> — — — RP0R<4:0>
06C2
06C4
06C6
06C8
06CA
06CC
06CE
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — —R P 3 R < 4 : 0 >— — —R P 2 R < 4 : 0 >
— — —R P 5 R < 4 : 0 >— — —R P 4 R < 4 : 0 >
— — —R P 7 R < 4 : 0 >— — —R P 6 R < 4 : 0 >
— — —R P 9 R < 4 : 0 >— — —R P 8 R < 4 : 0 >
— — —R P 1 1 R < 4 : 0 >— — —R P 1 0 R < 4 : 0 >
— — —R P 1 3 R < 4 : 0 >— — —R P 1 2 R < 4 : 0 >
— — —R P 1 5 R < 4 : 0 >— — —R P 1 4 R < 4 : 0 >
所有复位
时的状态
0000
0000
0000
0000
0000
0000
0000
0000
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-26 : dsPIC33FJ128MC204/804 、 dsPIC33FJ64MC204/804 和 dsPIC33FJ32MC304 的外设引脚选择输出寄存器映射
寄存器名称 地址
RPOR0
RPOR1
RPOR2
RPOR3
RPOR4
RPOR5
RPOR6
RPOR7
RPOR8
RPOR9
RPOR10
RPOR11
RPOR12
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
06C0 — — — RP1R<4:0> — — — RP0R<4:0>
06C2
06C4
06C6
06C8
06CA
06CC
06CE
06D0
06D2
06D4
06D6
06D8
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — —R P 3 R < 4 : 0 >— — —R P 2 R < 4 : 0 >
— — —R P 5 R < 4 : 0 >— — —R P 4 R < 4 : 0 >
— — —R P 7 R < 4 : 0 >— — —R P 6 R < 4 : 0 >
— — —R P 9 R < 4 : 0 >— — —R P 8 R < 4 : 0 >
— — —R P 1 1 R < 4 : 0 >— — —R P 1 0 R < 4 : 0 >
— — —R P 1 3 R < 4 : 0 >— — —R P 1 2 R < 4 : 0 >
— — —R P 1 5 R < 4 : 0 >— — —R P 1 4 R < 4 : 0 >
— — —R P 1 7 R < 4 : 0 >— — —R P 1 6 R < 4 : 0 >
— — —R P 1 9 R < 4 : 0 >— — —R P 1 8 R < 4 : 0 >
— — —R P 2 1 R < 4 : 0 >— — —R P 2 0 R < 4 : 0 >
— — —R P 2 3 R < 4 : 0 >— — —R P 2 2 R < 4 : 0 >
— — —R P 2 5 R < 4 : 0 >— — —R P 2 4 R < 4 : 0 >
所有复位
时的状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
DS70291A_CN 第 54 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-27 : dsPIC33FJ128MC202/802 、 dsPIC33FJ64MC202/802 和 dsPIC33FJ32MC302 的并行主 / 从端口寄存器映射
寄存器名称 地址
PMCON 0600 PMPEN — PSIDL ADRMUX<1:0> PTBEEN PTWREN PTRDEN CSF1 CSF0 ALP — CS1P BEP WRSP RDSP
PMMODE 0602 BUSY IRQM<1:0> INCM<1:0> MODE16 MODE<1:0> WAITB<1:0> WAITM<3:0> WAITE<1:0>
PMADDR
PMDOUT1
PMDOUT2 0606
PMDIN1 0608
PMPDIN2 060A
PMAEN 060C —P T E N 1 4— — — — — — — — — — — —
PMSTAT 060E
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0604
ADDR15
IBF IBOV
CS1
— —
ADDR<13:0>
并行端口数据输出寄存器1(缓冲区0和缓冲区1)
并行端口数据输出寄存器2(缓冲区2和缓冲区3)
并行端口数据输入寄存器1(缓冲区0和缓冲区1)
并行端口数据输入寄存器2(缓冲区2和缓冲区3)
IB3F IB2F IB1F IB0F OBE OBUF
— —
OB3E OB2E OB1E OB0E
PTEN<1:0>
所有复
位时的
状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
表 3-28 : dsPIC33FJ128MC204/804 、 dsPIC33FJ64MC204/804 和 dsPIC33FJ32MC304 的并行主 / 从端口寄存器映射
寄存器名称 地址
PMCON 0600 PMPEN — PSIDL ADRMUX<1:0> PTBEEN PTWREN PTRDEN CSF1 CSF0 ALP — CS1P BEP WRSP RDSP
PMMODE 0602 BUSY IRQM<1:0> INCM<1:0> MODE16 MODE<1:0> WAITB<1:0> WAITM<3:0> WAITE<1:0>
PMADDR
PMDOUT1
PMDOUT2 0606
PMDIN1 0608
PMPDIN2 060A
PMAEN 060C —P T E N 1 4— — —
PMSTAT 060E
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0604
ADDR15
IBF IBOV
CS1
— —
ADDR<13:0>
并行端口数据输出寄存器1(缓冲区0和缓冲区1)
并行端口数据输出寄存器2(缓冲区2和缓冲区3)
并行端口数据输入寄存器1(缓冲区0和缓冲区1)
并行端口数据输入寄存器2(缓冲区2和缓冲区3)
IB3F IB2F IB1F IB0F OBE OBUF
PTEN<10:0>
— —
OB3E OB2E OB1E OB0E
所有复
位时的
状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第55 页
表 3-29 : 实时时钟和日历寄存器映射
寄存器名称 地址
ALRMVAL 0620
ALCFGRPT 0622 ALRMEN CHIME AMASK<3:0> ALRMPTR<1:0> ARPT<7:-0>
RTCVAL 0624
RCFGCAL 0626 RTCEN — RTCWREN RTCSYNC HALFSEC RTCOE RTCPTR<1:0> CAL<7:0>
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
基于
APTR<1:0>
基于
RTCPTR<1 :0>的RTCC
的闹钟值寄存器窗口
值寄存器窗口
所有复
位时的
状态
xxxx
0000
xxxx
0000
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-30 : CRC 寄存器映射
寄存器名称 地址
CRCCON 0640 — — CSIDL VWORD<4:0> CRCFUL CRCMPT — CRCGO PLEN<3:0>
CRCXOR 0642 X<15:0>
CRCDAT 0644
CRCWDAT 0646
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
CRC
数据输入寄存器
CRC
结果寄存器
所有复
位时的
状态
0000
0000
0000
0000
表 3-31 : 双比较器寄存器映射
寄存器名称 地址
CMCON 0630 CMIDL — C2EVT C1EVT C2EN C1EN C2OUTEN C1OUTEN C2OUT C1OUT C2INV C1INV C2NEG C2POS C1NEG C1POS
CVRCON 0632 — — — — — — — — CVREN CVROE CVRR CVRSS CVR<3:0>
图注: — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
所有复位
时的状态
0000
0000
表 3-32 : dsPIC33FJ128MC202/802 、 dsPIC33FJ64MC202/802 和 dsPIC33FJ32MC302 的 PORTA 寄存器映射
寄存器名称 地址
TRISA
PORTA
LATA
ODCA
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
02C0 — — — — — — — — — — — TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
02C2 — — — — —
02C4 — — — — — — — — — — — L ATA4 L ATA3 L ATA2 L ATA1 LATA 0
02C6 — — — — — — — — — — — ODCA4 ODCA3 ODCA2 ODCA1 ODCA0
— — — —
— — RA4 RA3 RA2 RA1 RA0
所有复位
时的状态
079F
xxxx
xxxx
xxxx
DS70291A_CN 第 56 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-33 : dsPIC33FJ128MC204/804 、 dsPIC33FJ64MC204/804 和 dsPIC33FJ32MC304 的 PORTA 寄存器映射
寄存器名称 地址
TRISA
PORTA
LATA
ODCA
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
02C0 — — — — — TRISA10 TRISA9 TRISA8 TRISA7 — — TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
02C2 — — — — — RA10 RA9 RA8 RA7 — — RA4 RA3 RA2 RA1 RA0
02C4 — — — — — LATA10 LATA9 LATA8 LATA7 — — LATA 4 L ATA3 L ATA2 L ATA1 L ATA0
02C6 — — — — — ODCA10 ODCA9 ODCA8 ODCA7 — — ODCA4 ODCA3 ODCA2 ODCA1 ODCA0
所有复位
时的状态
079F
xxxx
xxxx
xxxx
表 3-34 : PORTB 寄存器映射
寄存器名称 地址
TRISB 02C8 TRISB15 TRISB14 TRISB13 TRISB12 TRISB11 TRISB10 TRISB9 TRISB8 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0
PORTB 02CA RB15 RB14 RB13 RB12 RB11 RB10 RB9 RB8 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
LATB 02CC LATB15 LATB14 LATB13 LATB12 LATB11 LATB10 LATB9 LATB8 LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0
ODCB 02CE
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ODCB15 ODCB14 ODCB13 ODCB12 ODCB11 ODCB10 ODCB9 ODCB8 ODCB7 ODCB6 ODCB5 ODCB4 ODCB3 ODCB2 ODCB1 ODCB0
所有复位
时的状态
FFFF
xxxx
xxxx
xxxx
表 3-35 :
寄存器名称 地址
TRISC 02D0
PORTC 02D2
LATC 02D4
ODCC 02D6
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
dsPIC33FJ128MC204/804、 dsPIC33FJ64MC204/804 和 dsPIC33FJ32MC304 的 PORTC 寄存器映射
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — — —
— — — — — —
— — — — — —
— — — — — — ODCC9 ODCC8 ODCC7 ODCC6 ODCC5 ODCC4 ODCC3 ODCC2 ODCC1 ODCC0
表 3-36 : 系统控制寄存器映射
寄存器名称 地址
RCON
OSCCON
CLKDIV
PLLFBD
OSCTUN
ACLKCON
图注: x = 复位时的未知值, — = 未实现,读为 0。复位值以十六进制表示。
注 1 : RCON 寄存器的复位值取决于复位类型。
2: OSCCON 寄存器的复位值取决于 FOSC 配置位和复位类型。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0740 TRAPR IOPUWR — — — — CM VREGS EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR
0742 —C O S C < 2 : 0 > — NOSC<2:0> CLKLOCK IOLOCK LOCK —C F— LPOSCEN OSWEN 0300
0744 ROI DOZE<2:0> DOZEN FRCDIV<2:0> PLLPOST<1:0> — PLLPRE<4::0> 0040
0746 — — — — — — — PLLDIV<8:0> 0030
0748 — — — — — — — — — — TUN<5:0> 0000
074A
— — SELACLK AOSCMD<1:0> APSTSCLR<2:0> ASRCSEL — — — — — — — 0000
TRISC9 TRISC8 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
RC9 RC8 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
LATC9 LATC8 LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0
所有复位
时的状态
03FF
xxxx
xxxx
xxxx
所有复位
时的状态
xxxx
(1)
(2)
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第57 页
表 3-37 :仅 限dsPIC33FJ128MC204/804 和 dsPIC33FJ64MC204/804 的安全性寄存器映射
寄存器名
称
BSRAM 0750 — — — — — — — — — — — — — IW_BSR IR_BSR RL_BSR
SSRAM 0752 — — — — — — — — — — — — —I W _ S S R
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
地址
IR_SSR
RL_SSR
所有复位
时的状态
0000
0000
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-38 : NVM 寄存器映射
寄存器名称 地址
NVMCON 0760 WR WREN WRERR — — — — — —E R A S E— —N V M O P < 3 : 0 >
NVMKEY 0766
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — — — — — — NVMKEY<7:0>
所有复位
时的状态
0000
0000
表 3-39 : PMD 寄存器映射
寄存器名称 地址
PMD1 0770 T5MD T4MD T3MD T2MD T1MD QEI1MD PWM1MD
PMD2 0772 IC8MD IC7MD
PMD3 0774
图注: x = 复位时的未知值, — = 未实现,读为 0 。复位值以十六进制表示。
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
— — — —I C 2 M DI C 1 M D— — — — OC4MD OC3MD OC2MD OC1MD 0000
— — — — — CMPMD RTCCMD PMPMD CRCMD DAC1MD QEI2MD PWM2MD — — — — 0000
—
I2C1MD U2MD U1MD SPI2MD SPI1MD
—
C1MD AD1MD 0000
所有复位
时的状态
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.2.7 软件堆栈
除了用作工作寄存器外,dsPIC33FJ32MC302/304 、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 器件中的 W15 寄存器也可用作软件堆栈指针。堆栈
指针总是指向第一个可用的空字,并且从低地址向高地
址方向增长。它在弹出堆栈之前递减,而在压入堆栈之
后递增,如图 3-6 所示。对于执行任何 CALL 指令期间
的 PC 压栈,在压入堆栈之前,PC 的 MSb 要进行零扩
展,从而确保 MSb 始终是清零的。
注: 在异常处理期间,在将 PC 压入堆栈之前,
要先将 PC 的 MSb 与SRL 寄存器组合在一
起。
堆栈指针限制寄存器 (SPLIM )与堆栈指针相关联,它
设置堆栈地址上边界的值。复位时 SPLIM 不被初始化。
与堆栈指针的情况一样, SPLIM<0> 被强制为 0 ,因为
所有的堆栈操作必须是字对齐的。
每当使用 W15 作为源指针或目标指针生成 EA 时,生成
的有效地址会与 SPLIM 中的值进行比较。如果堆栈指针
(W15 )的内容与 SPLIM 寄存器的内容相等,则会执行
压栈操作而不产生堆栈错误陷阱。但在随后的压栈操作
时将会产生堆栈错误陷阱。例如,当堆栈增长超过 RAM
中地址 0x2000 时,如果要想产生堆栈错误陷阱,则需
要用值 0x1FFE 来初始化 SPLIM 。
类似地,当堆栈指针地址小于 0x0800 时,就会产生堆
栈指针下溢 (堆栈错误)陷阱。这可防止堆栈进入特殊
功能寄存器 (SFR )空间。
在对 SPLIM 寄存器进行写操作之后,不应紧跟着使用
W15 进行间接读操作的指令。
图 3-6 : CALL 堆栈帧
0x0000
000000000
堆栈向高地址增长
PC<15:0>
PC<22:16>
< 空字 >
0 15
W15(CALL 之前)
W15(CALL 之后)
POP : [--W15]
PUSH : [W15++]
3.2.8 数据 RAM 保护功能
dsPIC33F 产品系列支持数据 RAM 保护功能,允许使用
引导和安全代码段安全性来保护 RAM 段。 BS 的安全
RAM 段(Secure RAM Segment for BS,BSRAM)使
能时,只能从引导段闪存代码进行访问。 RAM 的安全
RAM 段(Secure RAM Segment for RAM, SSRAM)
使能时,只能从安全段闪存代码进行访问。请参见表 337 中对 BSRAM 和 SSRAM SFR 的概括。
3.3 指令寻址模式
表 3-40 给出了基本的寻址模式,这些寻址模式经过优化
可以支持各指令的具体功能。MAC 类指令中提供的寻址
模式与其他指令类型中的寻址模式有所不同。
3.3.1 文件寄存器指令
大多数文件寄存器指令使用一个 13 位地址字段 (f )来
直接寻址数据存储器中的前 8192 字节 (Near 数据空
间)。大多数文件寄存器指令使用工作寄存器 W0 ,W0
在这些指令中表示为 WREG 。目标寄存器通常是同一个
文件寄存器或 WREG (MUL 指令除外,它把结果写入
寄存器或寄存器对)。使用 MOV 指令能够获得更大的灵
活性,且可以访问整个数据空间。
3.3.2 MCU 指令
三操作数 MCU 指令的形式是:
操作数 3 = 操作数 1< 功能 > 操作数 2
其中,操作数 1 始终是称为 Wb 的工作寄存器(即,寻
址模式只能是寄存器直接寻址)。操作数 2 可以是一个
W 寄存器,取自数据存储器或一个 5 位立即数。结果可
以被保存在 W 寄存器或数据存储单元中。MCU 指令支
持以下寻址模式:
• 寄存器直接寻址
• 寄存器间接寻址
• 执行后修改的寄存器间接寻址
• 执行前修改的寄存器间接寻址
• 5 位或 10 位立即数寻址
注: 并非所有指令都支持上述所有的寻址模
式。各条指令可能支持这些寻址模式中的
某些模式。
DS70291A_CN 第58 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-40 : 支持的基本寻址模式
寻址模式 说明
文件寄存器直接寻址 明确指定文件寄存器的地址。
寄存器直接寻址 直接访问寄存器的内容。
寄存器间接寻址 Wn 的内容形成有效地址 (EA )。
执行后修改的寄存器间接寻址 Wn 的内容形成 EA 。然后用一个常量值来修改 (递增或递减) Wn 。
执行前修改的寄存器间接寻址 先用一个有符号常量值修改 (递增或递减) Wn ,再由此时的 Wn 内容形成
EA 。
带寄存器偏移量的寄存器间接寻址
(寄存器变址寻址)
带立即数偏移量的寄存器间接寻址 Wn 和立即数的和形成 EA 。
Wn 和 Wb 的和形成 EA。
3.3.3 传送指令和累加器指令
与其他指令相比,传送指令和 DSP 累加器类指令提供
了更为灵活的寻址模式。除了大多数 MCU 指令支持的
寻址模式以外,传送和累加器指令还支持带寄存器偏移
量的寄存器间接寻址模式,这也称为寄存器变址寻址模
式。
注: 对于 MOV 指令,指令中指定的寻址模式对
于源和目标 EA ,可以是不同的。然而, 4
位 Wb (寄存器偏移量)字段为源和目标
EA 所共用 (但通常只由其中之一使用)。
概括地说,传送和累加器指令支持以下寻址模式:
• 寄存器直接寻址
• 寄存器间接寻址
• 执行后修改的寄存器间接寻址
• 执行前修改的寄存器间接寻址
• 带寄存器偏移量的寄存器间接寻址 (变址寻址)
• 带立即数偏移量的寄存器间接寻址
• 8 位立即数寻址
• 16 位立即数寻址
注: 并非所有指令都支持上述所有的寻址模
式。各条指令可能支持这些寻址模式中的
某些模式。
3.3.4 MAC 指令
双源操作数 DSP 指令(CLR 、ED 、EDAC 、MAC 、MPY 、
MPY.N 、MOVSAC和 MSC ),也称为 MAC 指令,它们使用
一组简化的寻址模式,允许用户应用程序通过寄存器间
接寻址表高效地对数据指针进行操作。
双源操作数预取寄存器必须是集合 {W8, W9, W10,
W11} 的成员。对于数据读取操作,W8 和 W9 始终用于
X RAGU,而 W10 和 W11 始终用于 Y AGU。从而,产
生的有效地址(无论是在修改之前还是之后),对于 W8
和 W9 必须是 X 数据空间中的有效地址,对于 W10 和
W11 则必须是 Y 数据空间中的有效地址。
注: 带寄存器偏移量的寄存器间接寻址模式仅
可用于 W9 (在 X 空间中)和 W11 (在 Y
空间中)。
概括地说, MAC 类指令支持以下寻址模式:
• 寄存器间接寻址
• 执行后修改 (修改量为 2)的寄存器间接寻址
• 执行后修改 (修改量为 4)的寄存器间接寻址
• 执行后修改 (修改量为 6)的寄存器间接寻址
• 带寄存器偏移量的寄存器间接寻址 (变址寻址)
3.3.5 其他指令
除上述寻址模式外,一些指令使用各种大小的立即数常
量。例如,BRA (转移)指令使用 16 位有符号立即数常
量来直接指定转移的目标,而 DISI 指令则使用一个 14
位无符号立即数字段。在一些指令中,例如 ADD Acc ,
操作数的来源和运算结果已经暗含在操作码中。某些操
作,例如 NOP ,没有任何操作数。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第59 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.4 模寻址
模寻址模式是一种使用硬件来自动支持循环数据缓冲区
的方法。目的是在执行紧密循环代码时(这在许多 DSP
算法中很典型),不需要用软件来执行数据地址边界检
查。
可以在数据空间或程序空间中进行模寻址 (因为这两种
空间的数据指针机制本质上是相同的)。每个 X (也提
供指向程序空间的指针)和 Y 数据空间中都可支持一个
循环缓冲区。模寻址可以对任何 W 寄存器指针进行操
作。然而,最好不要将 W14 或 W15 用于模寻址,因为
这两个寄存器分别用作堆栈帧指针和堆栈指针。
总的来说,任何特定的循环缓冲区只能配置为单向工
作,因为根据缓冲区的方向,对缓冲区起始地址(对于
递增缓冲区)或结束地址(对于递减缓冲区)有某些限
制。
使用限制的唯一例外是那些长度为 2 的幂的缓冲区。这
些缓冲区满足起始和结束地址判据,它们可以双向工作
(即在低地址边界和高地址边界上都将进行地址边界检
查)。
3.4.1 起始地址和结束地址
模寻址机制要求指定起始和结束地址,并将它们装入 16
位模缓冲区地址寄存器中:XMODSRT、 XMODEND、
YMODSRT 和 YMODEND (见表 3-1 )。
注: Y 空间模寻址的 EA 计算使用字长度的数据
(每个 EA 的 LSb 始终清零)。
循环缓冲区的长度没有直接指定。它由相应的起始和结
束地址之差决定。循环缓冲区的最大长度为 32K 字
(64 KB )。
3.4.2 W 地址寄存器选择
模寻址和位反转寻址控制寄存器 MODCON<15:0> 包含
使能标志以及指定W 地址寄存器的W 寄存器字段。XWM
和 YWM 字段选择对哪些寄存器进行模寻址:
• 如果 XWM = 15 ,则禁止 XRAGU 和 X WAGU 模
寻址。
• 如果 YWM = 15 ,则禁止 Y AGU 模寻址。
要进行模寻址的 X 地址空间指针 W 寄存器(XWM )存
储在 MODCON<3:0> 中(见表 3-1 )。当 XWM 被设置
为除15 之外的任何值且XMODEN 位( MODCON<15> )
置 1 时, X 数据空间的模寻址被使能。
要对其进行模寻址的Y 地址空间指针 W 寄存器(YWM )
存储在 MODCON<7:4> 中。当 YWM 被设置为除 15 之
外的任何值且 YMODEN 位(MODCON<14> )置 1 时,
Y 数据空间的模寻址被使能。
图 3-7 : 模寻址操作示例
字节
地址
0x1100
0x1163
起始地址 = 0x1100
结束地址 = 0x1163
长度 = 0x0032 字
MOV #0x1100, W0
MOV W0, XMODSRT ;set modulo start address
MOV #0x1163, W0
MOV W0, MODEND ;set modulo end address
MOV #0x8001, W0
MOV W0, MODCON ;enable W1, X AGU for modulo
MOV #0x0000, W0 ;W0 holds buffer fill value
MOV #0x1110, W1 ;point W1 to buffer
DO AGAIN, #0x31 ;fill the 50 buffer locations
MOV W0, [W1++] ;fill the next location
AGAIN: INC W0, W0 ;increment the fill value
DS70291A_CN 第 60 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.4.3 模寻址的应用
模寻址可以应用于任何与 W 寄存器相关的有效地址
(EA )计算中。地址边界检查功能等于:
• 递增缓冲器的上边界地址
• 递减缓冲器的下边界地址
重要的是要意识到,地址边界检查功能不仅会检查地址
是否正好在地址边界上,而且会检查地址是否小于或大
于上限 (对于递增缓冲区)、是否低于下限 (对于递减
缓冲区)。因此,地址变化可能会越过边界,但仍然可
以正确调整。
注: 只有在使用执行前修改或执行后修改寻址
模式来计算有效地址时,模修正有效地址
才被写回寄存器。如果使用了地址偏移量
(例如,[W7 + W2]),会进行模地址修正,
但寄存器的内容保持不变。
3.5 位反转寻址
位反转寻址模式用来简化基为 2 的FFT 算法的数据重新
排序。它为 X AGU 所支持,仅限于数据写入。
地址修改量可以是常数或寄存器的内容,可视为将其位
顺序反转。源地址和目标地址仍然是正常的顺序。于
是,唯一需要反转的操作数就是地址修改量。
3.5.1 位反转寻址的实现
在下列情况下使能位反转寻址模式:
• MODCON 寄存器中 BWM 位( W 寄存器选择)
的值是除 15 以外的任何值 (不能使用位反转寻址
访问堆栈)
• XBREV 寄存器中的 BREN 位置 1
• 使用的寻址模式是预递增或后递增的寄存器间接寻
址模式
N
如果位反转缓冲区的长度为 M = 2
区起始地址的最后 “N ”位必须为零。
XB<14:0> 是位反转地址修改量或 “中心点”,通常是
一个常数。对于 FFT 计算,其值等于 FFT 数据缓冲区
长度的一半。
注: 所有位反转 EA 的计算都使用字数据 (每
个 EA 的 LSb 始终清零)。为了产生兼容
(字节)地址,要相应地调整 XB 的值。
使能位反转寻址时,仅对预递增或后递增的寄存器间接
寻址、且仅对字长度数据写入,才会进行位反转寻址。
对于任何其他寻址模式或对于字节长度数据,不会进行
位反转寻址,而是生成正常的地址。在进行位反转寻址
时,W 地址指针的增量将始终加上地址修改量(XB ),
与寄存器间接寻址模式相关的偏移量将被忽略。此外,
由于要求是字数据,EA 的 LSb 被忽略(且始终清零)。
注: 不应同时使能模寻址和位反转寻址。如果
应用试图这么做的话,对于 X WAGU ,位
反转寻址将优先, X WAGU 模寻址将被禁
止。然而,在 X RAGU 中,模寻址继续起
作用。
如果通过将 BREN 位(XBREV<15>)置 1 使能了位反
转寻址,那么,在写 XBREV 寄存器之后,不应立即进
行要使用被指定为位反转指针的 W 寄存器的间接读操
作。
字节,则数据缓冲
图 3-8 : 位反转地址示例
b15 b14 b13 b12
b15 b14 b13 b12
b11 b10 b9 b8
b11 b10 b9 b8
b7 b6 b5 b4
b7 b6 b5 b1
中心点
正常顺序的地址
b3 b2 b1 0
围绕二进制值的中心
左右交换位位置
b2 b3 b4
位反转地址
0
对于 16 字位反转缓冲区, XB = 0x0008
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第61 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 3-41 : 位反转地址序列 (16 项)
正常地址 位反转地址
A3 A2 A1 A0
0000 0 0000 0
0001 1 1000 8
0010 2 0100 4
0011 3 1100 12
0100 4 0010 2
0101 5 1010 10
0110 6 0110 6
0111 7 1110 14
1000 8 0001 1
1001 9 1001 9
1010 10 0101 5
1011 11 1101 13
1100 12 0011 3
1101 13 1011 11
1110 14 0111 7
1111 15 1111 15
十进制
A3 A2 A1 A0
十进制
DS70291A_CN 第62 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.6 程序存储空间与数据存储空间的接口
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 架构采用 24 位宽的程序
空间和 16 位宽的数据空间。该架构也是一种改进型哈
佛结构,这意味着数据也能存放在程序空间内。要成功
使用这种数据,在访问数据时必须确保这两种存储空间
中的信息是对齐的。
除了正常执行外,dsPIC33FJ32MC302/304、
dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/
X04 架构还提供了两种可在操作过程中访问程序空间的
方法:
• 使用表指令访问程序空间中任意位置的各个字节或
字
• 将程序空间的一部分重映射到数据空间 (程序空
间可视性)
表指令允许应用程序读写小块程序存储区。这一功能使
得这种方法对于访问需要定期更新的数据表来说非常理
想。也可通过表指令访问一个程序字的所有字节。重映
射方法允许应用程序访问一大块数据,但只限于读操
作,它非常适合于在一个大的静态数据表中进行查找。
采用这种方法应用程序只能访问程序字的低位字。
3.6.1 对程序空间进行寻址
由于数据和程序空间的地址范围分别为 16 位和 24 位
宽,因此需要一个从 16 位数据寄存器创建 23 位或 24
位程序地址的方法。方法取决于所采用的接口方式。
对于表操作,使用 8 位的表页寄存器 (TBLPAG )定义
程序空间内一个 32K 字的区域。这与 16 位 EA 组合形
成一个完整的 24 位程序空间地址。在这种地址形式下,
TBLPAG 的最高位用来决定操作是发生在用户存储区中
(TBLPAG<7> = 0)还是配置存储区中 (TBLPAG<7>
= 1)。
对于重映射操作,使用 8 位的程序空间可视性页寄存器
(PSVPAG)定义程序空间中的 16K 字页。当 EA 的最
高位为 1 时, PSVPAG 与 EA 的低 15 位组合形成一个
23 位的程序空间地址。与表操作不同,重映射操作被严
格限制在用户存储区中。
表 3-42 和图 3-9 显示了如何为表操作和重映射访问来从
数据 EA 生成程序 EA 。本文中, P<23:0> 指程序空间
字,而 D<15:0> 指数据空间字。
表 3-42 : 程序空间地址构成
访问类型
指令访问
(代码执行)
TBLRD/TBLWT
(读 / 写字节或字)
程序空间可视性
(块重映射 / 读)
注 1 : 在这种情况下,数据 EA<15> 始终为 1 ,但并不用它来计算程序空间地址。地址的 bit 15 为
PSVPAG<0> 。
用户
用户
配置
用户
访问
空间
<23> <22:16> <15> <14:1> <0>
0 PC<22:1> 0
0xx xxxx xxxx xxxx xxxx xxx0
TBLPAG<7:0>
0xxx xxxx xxxx xxxx xxxx xxxx
TBLPAG<7:0>
1xxx xxxx xxxx xxxx xxxx xxxx
0 PSVPAG<7:0>
0 xxxx xxxx xxx xxxx xxxx xxxx
程序空间地址
数据 EA<15:0>
数据 EA<15:0>
数据 EA<14:0>
(1)
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第63 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 3-9 : 访问程序空间内数据的地址生成方式
程序计数器
表操作
(1)
(2)
程序空间可视性
(重映射)
(1)
0
1/0
0
用户 / 配置
空间选择
TBLPAG
8 位
选择
PSVPAG
8 位
23 位
24 位
1
23 位
EA
16 位
EA
15 位
0程序计数器
1/0
0
字节选择
注 1 : 程序空间地址的最低位 (LSb )始终为 0 ,从而确保程序空间和数据空间中的数据是字对齐
的。
2 : 表操作不需要字对齐。允许对配置存储空间执行表读操作。
DS70291A_CN 第64 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.6.2 使用表指令访问程序存储器中的数据
TBLRDL 和 TBLWTL 指令提供了直接读或写程序空间内
任何地址的低位字的方法,无需通过数据空间。
TBLRDH 和 TBLWTH 指令是可以将一个程序空间字的高
8 位作为数据读写的唯一方法。
对于每个连续的 24 位程序字,PC 的递增量为 2 。这使
得程序存储器地址能够直接映射到数据空间地址。于
是,程序存储器可以看作是两个 16 位字宽的地址空间,
它们并排放置,具有相同的地址范围。TBLRDL 和
TBLWTL 访问存有低位字的空间,而 TBLRDH 和 TBLWTH
则访问存有最高数据字节的空间。
提供了两条表指令来向 / 从程序空间传送字节或字(16
位)大小的数据。两条表指令都可以采用字节或字操作
的形式。
• TBLRDL (表读低位字):
- 在字模式下,该指令将程序空间地址的低位字
(P<15:0> ) 映射到数据地址 (D<15:0> )中。
图 3-10 : 使用表指令访问程序存储器
TBLPAG
02
23 15 0
0x000000
0x020000
0x030000
程序空间
- 在字节模式下,低位程序字的高字节或低字节
被映射到数据地址的低字节中。当字节选择位
为 1 时映射高字节;当字节选择位为 0 时映
射低字节。
• TBLRDH (表读高位字):
- 在字模式下,该指令将程序地址的整个高位字
(P<23:16> )映射到数据地址中。“虚拟”字
节(D<15:8>)始终为 0 。
- 在字节模式下,该指令将程序字的高字节或低
字节映射到数据地址的 D<7:0> 中,就如同
TBLRDL 指令。当选择高位 “虚拟”字节
(字节选择位 = 1 )时,数据将始终为 0 。
两条表指令 TBLWTH 和 TBLWTL 以类似的方式向程序空
间地址写入各字节或字。第 4.0 节“闪存程序存储器”
对这两条指令的详细操作进行了说明。
对于所有的表操作,要访问程序存储空间的哪个区域是
由表页寄存器(TBLPAG )决定的。TBLPAG 可寻址器
件的整个程序存储空间,包括用户应用程序空间和配置
空间。当 TBLPAG<7> = 0 时,表页位于用户存储空间
中。当 TBLPAG<7> = 1时,表页位于配置存储空间中。
0 8 16 23
00000000
00000000
00000000
00000000
0x800000
“虚拟”字节
TBLRDH.B(Wn<0> = 0)
TBLRDL.B(Wn<0> = 1)
TBLRDL.B(Wn<0> = 0)
TBLRDL.W
表操作的地址是由 TBLPAG 寄存器定义的页中的数据 EA 决定的。
只给出了读操作的过程;也可以对用户存储区执行写操作。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第65 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
3.6.3 使用程序空间可视性读程序存储器中
的数据
可选择将数据空间的高 32 KB 映射到程序空间中的任何
16K 字页中。这提供了通过数据空间对存储的常量数据
的透明访问,而无需使用特殊指令 (如 TBLRDL/H )。
如果数据空间 EA 的最高有效位为 1 ,并且程序空间可
视性使能 (通过将内核控制寄存器中的 PSV 位
(CORCON<2> )置 1 )时,就能通过数据空间访问程
序空间。由程序空间可视性页寄存器 (PSVPAG )确定
要被映射到数据空间中的程序存储空间的位置。这一 8
位的寄存器定义程序空间中 256 个可能的 16K 字页中的
任何一个。事实上,PSVPAG 作为程序存储地址的高 8
位,而 EA 的 15 位则作为地址的低位。对于每个程序存
储字,PC 都将递增 2 ,数据空间地址的低 15 位将直接
映射到相应程序空间地址的低 15 位。
对该区域进行数据读取的指令,需要一个额外的指令周
期,因为这类指令需要对程序存储器进行两次数据取操
作。
尽管大于或等于8000h 的每个数据空间地址直接映射到
对应的程序存储器地址 (见图 3-11 ),但只使用 24 位
程序字的低 16 位来存放数据。所有用来存放数据的程
图 3-11 : 程序空间可视性操作
当 CORCON<2> = 1 且 EA<15> = 1 时:
序存储单元的高 8 位都应被编程设置为 1111 1111 或
0000 0000 ,强制为一条 NOP 指令,从而避免了可能
意外执行这一区域内代码的情况。
注: 在表读 / 写期间,暂时禁止 PSV 访问。
对于使用 PSV 而又在 REPEAT 循环外执行的操作,MOV
和 MOV.D 指令除了规定的执行时间之外,还需要一个额
外的指令周期。所有其他指令都需要在规定的执行时间
之外额外增加两个指令周期。
对于使用 PSV 而又在 REPEAT 循环内执行的操作,下
列情况,除了规定的指令执行时间之外,还需要两个额
外的指令周期:
• 在第一次迭代中执行的指令
• 在最后一次迭代中执行的指令
• 由于中断而退出循环之前执行的指令
• 中断得到处理后再次进入循环时执行的指令
REPEAT 循环的所有其他各次迭代,都允许使用 PSV 访
问数据的指令在一个周期内执行。
PSVPAG
02
由 PSVPAG 指定的
页中的数据被映射到
数据存储空间的高半
地址区……
程序空间
23 15 0
0x000000
0x010000
0x018000
0x800000
数据空间
PSV 区域
0x0000
0x8000
0xFFFF
数据 EA<14:0>
……EA 的低 15 位指定
PSV 区域内的确切地
址。这与实际程序空间
地址的低 15 位是完全
对应的。
DS70291A_CN 第66 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
4.0 闪存程序存储器
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
“
充信 息,请 参 考
Reference Manual
Programming”(DS70191),该文档可从
Microchip 网站 ( www.microchip.com)下
载。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04器件包含用于存储和执行
应用代码的内部闪存程序存储器。在整个 VDD 范围内,
正常操作期间,存储器都是可读写、可擦除的。
可采用两种方式对闪存程序存储器进行编程:
• 在线串行编程 ( In-Circuit Serial
Programming™ , ICSP™)功能
• 运行时自编程 ( Run-Time Self-Programming,
RTSP)
ICSP允许在最终的应用电路中对 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 器件进行串行编程。编程首
先需要两根线作为编程时钟线和编程数据线 (以下备
用编程引脚对之一:PGC1/PGD1、 PGC2/PGD2 或
dsPIC33F Family
”
的“Section 5. Flash
PGC3/PGD3 ),还需要三根线作为电源线(V
地线 (V
SS)和主复位线 (MCLR)。这允许用户在生
DD)、接
产电路板时使用未编程器件,而在产品交付之前才对数
字信号控制器进行编程,从而可以使用最新版本的固件
或者定制固件进行编程。
使用 TBLRD (表读)和 TBLWT (表写)指令来 实 现
RTSP 。使用 RTSP ,用户应用程序可以一次将 64 条指
令(192 字节)的块 (或 “行”)或单个程序存储字写
入程序存储器,也可以一次擦除 512 条指令 (1536 字
节)的块 (或 “页”)。
4.1 表指令和闪存编程
闪存的编程都是用表读和表写指令实现的,与使用的编
程方法无关。这些指令允许器件在正常工作模式下从数
据存储器直接读写程序存储空间。程序存储器中 24 位
目标地址由 TBLPAG 寄存器的 bit<7:0> 和表指令中指定
W 寄存器中的有效地址 (EA )组成,如图 4-1 所示。
TBLRDL 和 TBLWTL 指令用来读写程序存储器的
bit<15:0> 。TBLRDL 和 TBLWTL 能以字或字节模式访问
程序存储器。
TBLRDH 和 TBLWTH 指令用来读或写程序存储器的
bit<23:16> 。 TBLRDH 和 TBLWTH 同样能以字或字节模
式访问程序存储器。
图 4-1 : 表寄存器的寻址
使用
程序计数器
使用
表指令
用户/配置
空间选择
0
1/0
TBLPAG
8
位
寄存器
24
位
程序计数器
24位EA
工作寄存器
16
位
0
EA
字节
选择
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第67 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
4.2 RTSP 工作原理
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04的闪存程序存储器阵列是
由 64 条指令或 192 字节的行组成的。 RTSP 允许用户
应用程序一次擦除由 8 行(512 条指令)组成的程序存
储器页,一次编程一行或一个字。表 30-12 给出了典型
的擦除和编程次数。 8 行擦除页和单行写入行都是边界
对齐的,从程序存储器起始地址开始,分别到 1536 字
节边界和 192 字节边界。
程序存储器实现了保持缓冲区,它能缓冲 64 条指令的
编程数据。在实际编程操作前,必须将待写数据顺序装
入缓冲区。要装入的指令字必须总是来自一组 64 个指
令字的边界。
RTSP 编程的基本步骤是先建立一个表指针,然后执行
一系列 TBLWT 指令来装载缓冲区。通过设置 NVMCON
寄存器中的控制位来执行编程。装载总共需要 64 条
TBLWTL 和 TBLWTH 指令。
由于只写缓冲区,所以所有的表写操作都是单字写操作
(2 个指令周期)。编程每一行需要一个编程周期。
4.3 控制寄存器
有两个 SFR 用于读写闪存程序存储器:NVMCON 和
NVMKEY。
NVMCON 寄存器 (寄存器 4-1)控制要擦除哪些块、
要编程的存储器类型以及编程周期的启动。
NVMKEY 是一个只写寄存器,用于写保护。要启动编程
或擦除序列,用户应用程序必须按顺序将 0x55 和 0xAA
写入 NVMKEY 寄存器。更多详细信息,请参见第 4.4 节
“编程操作”。
4.4 编程操作
在 RTSP 模式下,编程或擦除内部闪存需要执行完整的
编程序列。编程操作的持续时间通常为 4ms,在此期间
处理器暂停等待操作完成。将 WR 位(NVMCON<15> )
置 1 启动编程或擦除操作,当操作完成时 WR 位被自动
清零。
DS70291A_CN 第68 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 4-1 : NVMCON :闪存控制寄存器
R/SO-0
(1)
WR WREN WRERR — — — — —
bit 15 bit 8
R/W-0
(1)
R/W-0
(1)
U-0 U-0 U-0 U-0 U-0
U-0 R/W-0
(1)
U-0 U-0 R/W-0
— ERASE — —N V M O P < 3 : 0 >
(1)
R/W-0
(1)
R/W-0
(2)
(1)
R/W-0
(1)
bit 7 bit 0
图注:
SO = 只可置 1 位
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
WR:写控制位
1 = 启动闪存编程或擦除操作。该操作是自定时的,一旦操作完成该位即由硬件清零。
0 = 编程或擦除操作完成,处于停止状态
bit 14
WREN:写使能位
1 = 使能闪存编程 / 擦除操作
0 = 禁止闪存编程 / 擦除操作
bit 13
WRERR:写序列错误标志位
1 = 试图执行不合法的编程或擦除序列,或者发生终止 (将 WR 位置 1 时自动置 1 该位)
0 = 编程或擦除操作正常完成
bit 12-7
bit 6
未实现:读为 0
ERASE :擦除 / 编程使能位
1 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的擦除操作
0 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的编程操作
bit 5-4
bit 3-0
未实现:读为 0
NVMOP<3:0>: NVM 操作选择位
(2)
如果 ERASE = 1:
1111 = 存储器批量擦除操作
1110 = 保留
1101 = 擦除通用段
1100 = 擦除安全段
1011 = 保留
0011 = 无操作
0010 = 存储器页擦除操作
0001 = 无操作
0000 = 擦除单个配置寄存器字节
ERASE = 0:
如果
1111 = 无操作
1110 = 保留
1101 = 无操作
1100 = 无操作
1011 = 保留
0011 = 存储器字编程操作
0010 = 无操作
0001 = 存储器行编程操作
0000 = 编程单个配置寄存器字节
注 1: 这些位只能在 POR 时被复位。
2: NVMOP<3:0> 的所有其他组合均未实现。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第69 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 4-2 : NVMKEY :非易失性存储器密钥寄存器
U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
bit 15 bit 8
W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0
NVMKEY<7:0>
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15-8
bit 7-0
未实现:读为 0
NVMKEY<7:0> :密钥寄存器 (只写)位
DS70291A_CN 第70 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
4.4.1 闪存程序存储器的编程算法
程序员一次可以编程闪存程序存储器的一行。要实现该
操作,需要擦除包含该行在内的一个 8 行大小的页。一
般过程如下:
1. 读取程序存储器的 8 行内容 ( 512 条指令),并
存储在数据 RAM 中。
2. 用所需的新数据更新 RAM 中的程序数据。
3. 擦除程序存储器块 (见例 4-1):
a) 将 NVMOP 位(NVMCON<3:0>)设置为
“0010 ”,配置为块擦除操作。将 ERASE
(NVMCON<6> )和 WREN
(NVMCON<14> )位置 1 。
b) 将要被擦除的页的起始地址写入 TBLPAG和
W 寄存器。
c) 将 0x55 写入 NVMKEY。
d) 将 0xAA 写入 NVMKEY。
e) 将 WR 位(NVMCON<15>)置 1。擦除周
期开始,在擦除周期中 CPU 会暂停。当擦除
完成时, WR 位被自动清零。
例 4-1 : 擦除程序存储器页
; Set up NVMCON for block erase operation
MOV #0x4042, W0 ;
MOV W0, NVMCON ; Initialize NVMCON
; Init pointer to row to be ERASED
MOV #tblpage(PROG_ADDR), W0 ;
MOV W0, TBLPAG ; Initialize PM Page Boundary SFR
MOV #tbloffset(PROG_ADDR), W0 ; Initialize in-page EA[15:0] pointer
TBLWTL W0, [W0] ; Set base address of erase block
DISI #5 ; Block all interrupts with priority <7
MOV #0x55, W0
MOV W0, NVMKEY ; Write the 55 key
MOV #0xAA, W1 ;
MOV W1, NVMKEY ; Write the AA key
BSET NVMCON, #WR ; Start the erase sequence
NOP ; Insert two NOPs after the erase
NOP ; command is asserted
4. 将数据 RAM 中的前 64 条指令写入程序存储器缓
冲区 (见例 4-2 )。
5. 将程序块写入闪存程序存储器:
a) 将 NVMOP 位设置为 “0001 ”,配置为行
编程操作。将 ERASE 位清零,将 WREN 位
置 1 。
b) 将 0x55 写入 NVMKEY。
c) 将 0xAA 写入 NVMKEY。
d) 将 WR 位置 1。编程周期开始,在写周期中
CPU 会暂停。当对闪存程序存储器的写操作
完成时, WR 位被自动清零。
6. 通过将 TBLPAG 中的值递增 1,使用数据 RAM
块中下一组 64 条指令重复步骤 4 和 5 ,直到所有
512 条指令被写回到闪存程序存储器。
为防止意外操作,必须向 NVMKEY 写入写启动序列,
用于允许执行擦除或编程操作。在执行编程命令后,用
户应用程序必须等待一段编程时间,直至编程完成。紧
跟编程启动序列后面的两条指令应为 NOP ,如例 4-3 所
示。
; for next 5 instructions
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第71 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
例 4-2 : 装载写缓冲区
; Set up NVMCON for row programming operations
; Set up a pointer to the first program memory location to be written
; program memory selected, and writes enabled
; Perform the TBLWT instructions to write the latches
; 0th_program_word
; 1st_program_word
; 2nd_program_word
; 63rd_program_word
MOV #0x4001, W0 ;
MOV W0, NVMCON ; Initialize NVMCON
MOV #0x0000, W0 ;
MOV W0, TBLPAG ; Initialize PM Page Boundary SFR
MOV #0x6000, W0 ; An example program memory address
MOV #LOW_WORD_0, W2 ;
MOV #HIGH_BYTE_0, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch
MOV #LOW_WORD_1, W2 ;
MOV #HIGH_BYTE_1, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch
MOV #LOW_WORD_2, W2 ;
MOV #HIGH_BYTE_2, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch
•
•
•
MOV #LOW_WORD_31, W2 ;
MOV #HIGH_BYTE_31, W3 ;
TBLWTL W2, [W0] ; Write PM low word into program latch
TBLWTH W3, [W0++] ; Write PM high byte into program latch
例 4-3 : 启动编程序列
DISI #5 ; Block all interrupts with priority <7
MOV #0x55, W0
MOV W0, NVMKEY ; Write the 55 key
MOV #0xAA, W1 ;
MOV W1, NVMKEY ; Write the AA key
BSET NVMCON, #WR ; Start the erase sequence
NOP ; Insert two NOPs after the
NOP ; erase command is asserted
; for next 5 instructions
DS70291A_CN 第 72 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
5.0 复位
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
“
充信 息,请 参 考
Reference Manual
Reset ”(DS70192),该文档可从
Microchip 网站 ( www.microchip.com)下
载。
复位模块结合了所有复位源并控制器件的主复位信号
SYSRST
。下面列出了器件的复位源:
• POR:上电复位
• BOR:欠压复位
• MCLR:主复位引脚复位
• SWR:RESET 指令
• WDTO:看门狗定时器复位
• CM:配置不匹配复位
• TRAPR:陷阱冲突复位
• IOPUWR:非法条件器件复位
- 非法操作码复位
- 未初始化的 W 寄存器复位
- 安全性复位
dsPIC33F Family
”
的 “Section 8.
复位模块的简化框图如图 5-1 所示。
任何有效的复位源都将使 SYSRST 信号有效。在系统复
位时,某些与 CPU 和外设相关的寄存器被强制为已知
的复位状态,而有一些寄存器不受影响。
注: 如需了解寄存器复位状态的信息,请参见
本手册中特定的外设章节或第 2.0 节
“CPU ”。
所有类型的器件复位都会将RCON 寄存器中相应的状态
位置 1 ,以表明复位类型 (见寄存器 5-1 )。
POR 将清零 RCON 寄存器中除 POR 位(RCON<0> )
之外的所有位, POR 位在 POR 时置 1 。用户应用程序
可在代码执行过程中的任何时间置 1 或清零任意位。
RCON 寄存器中的位仅用作状态位。用软件将某个复位
状态位置 1 不会导致器件发生复位。
RCON 寄存器还包含与看门狗定时器和器件节能状态相
关的其他位。本手册的其他章节中将讨论这些位的功
能。
注: RCON 寄存器中的状态位应该在被读取后
清零,这样在器件复位后的下一个 RCON
寄存器值才有意义。
图 5-1 : 复位系统框图
RESET 指令
MCLR
WDT
模块
休眠或空闲
内部
VDD
稳压器
陷阱冲突
非法操作码
未初始化的 W 寄存器
配置不匹配
毛刺滤波器
V DD 上升
检测
BOR
SYSRST
POR
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第73 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 5-1 : RCON :复位控制寄存器
(1)
R/W-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0
TRAPR IOPUWR — — — —C M V R E G S
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1
(2)
EXTR SWR SWDTEN
WDTO SLEEP IDLE BOR POR
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
TRAPR:陷阱复位标志位
1 = 发生了陷阱冲突复位
0 = 未发生陷阱冲突复位
bit 14
IOPUWR :非法操作码或未初始化的 W 寄存器访问复位标志位
1 = 检测到非法操作码、非法地址模式或将未初始化的 W 寄存器用作地址指针从而导致复位
0 = 未发生非法操作码或未初始化的 W 寄存器复位
bit 13-10
bit 9
未实现:读为 0
CM :配置不匹配标志位
1 = 发生了配置不匹配复位
0 = 未发生配置不匹配复位
bit 8
VREGS:休眠模式下稳压器待机位
1 = 在休眠模式下稳压器继续工作
0 = 在休眠模式下稳压器进入待机模式
bit 7
EXTR :外部复位 (MCLR
)引脚位
1 = 发生主复位 (引脚)复位
0 = 未发生主复位 (引脚)复位
bit 6
SWR:软件复位 (指令)标志位
1 = 执行了 RESET 指令
0 = 未执行 RESET 指令
bit 5
SWDTEN:软件使能 / 禁止 WDT 位
(2)
1 = 使能 WDT
0 = 禁止 WDT
bit 4
WDTO:看门狗定时器超时标志位
1 = 发生了 WDT 超时
0 = 未发生 WDT 超时
bit 3
SLEEP:从休眠模式唤醒标志位
1 = 器件处于休眠模式
0 = 器件未处于休眠模式
bit 2
IDLE:从空闲模式唤醒标志位
1 = 器件处于空闲模式
0 = 器件未处于空闲模式
注 1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的某一位置 1 不会导致器件复位。
2: 如果 FWDTEN 配置位为 1 (未编程),则 WDT 始终使能,而与 SWDTEN 位的设置无关。
DS70291A_CN 第 74 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 5-1 : RCON :复位控制寄存器
bit 1
bit 0
注 1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的某一位置 1 不会导致器件复位。
2: 如果 FWDTEN 配置位为 1 (未编程),则 WDT 始终使能,而与 SWDTEN 位的设置无关。
BOR:欠压复位标志位
1 = 发生了欠压复位
0 = 未发生欠压复位
POR:上电复位标志位
1 = 发生了上电复位
0 = 未发生上电复位
(1)
(续)
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第75 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
5.1 系统复位
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 系列器件有两种复位类
型:
• 冷复位
• 热复位
上电复位 (POR )或欠压复位 (BOR )的结果是引起
冷复位。在冷复位时,FOSC 器件配置寄存器的 FNOSC
配置位选择器件时钟源。
所有其他复位源 (包括 RESET 指令)都引发热复位。
在热复位时,器件继续依靠当前时钟源下运行,这个时
钟源由振荡器控制寄存器的当前振荡器选择
COSC<2:0> (OSCCON<14:12> )位来指示。
器件将保持在复位状态,直到系统电源稳定在适当的电
平并且振荡器时钟准备就绪。其时序在下文详述,如
图 5-2 所示。
1. POR 复位:当电源开启时, POR 电路将器件保
持在复位状态。 POR 电路保持有效直到 V
POR 门限并且 T POR 延时已经完成。
过 V
DD 超
2. BOR 复位:片内稳压器有一个 BOR 电路,它将
器件保持在复位状态,直到 V
BOR 延时已经完成。TBOR 延时确保了稳压
并且 T
DD 超过 V BOR 门限
器的输出稳定。
3. PWRT 定时器:可编程上电延时定时器在 BOR
之后继续将处理器保持在复位状态一段特定时间
(T
PWRT)。 T PWRT 延时确保了系统电源稳定在
适当电平供全速工作。 T
SYSRST
变为无效,从而使能选定的振荡器开始
PWRT 延时完成后,
产生时钟。
4. 振荡器延时:表 5-1 给出了各种可选择时钟源从
起振到时钟就绪之前的总延时。更多信息,请参
见第 8.0 节 “振荡器配置”。
5. 当振荡器时钟就绪时,处理器从地址 0x000000
开始执行。用户应用程序可以在复位地址中写入
GOTO 指令,将程序重定向到相应的启动程序。
6. 如果使能了故障保护时钟监视器 (Fail-Safe
Clock Mnitor,FSCM),则当系统时钟就绪并且
TFSCM 延时已完成时,它开始监视系统时钟。
表 5-1 : 振荡器延时
振荡器模式
FRC 、 FRCDIV16 和
振荡器
起振延时
OSCD ——TOSCD
T
FRCDIVN
FRCPLL TOSCD —TLOCK TOSCD + T LOCK
XT TOSCD TOST —TOSCD + T OST
HS TOSCD TOST —TOSCD + TOST
E C ————
XTPLL TOSCD TOST T LOCK TOSCD + TOST +
HSPLL TOSCD TOST T LOCK TOSCD + TOST +
ECPLL — — TLOCK TLOCK
SOSC TOSCD T OST —TOSCD + TOST
LPRC TOSCD ——TOSCD
注 1 : TOSCD = 振荡器起振延时 (对于 FRC 最大值为 1.1 µs ,对于 LPRC 最大值为 70 µs )。晶振起振时间随晶
体特性和负载电容等变化。
2 : T
OST = 振荡器起振定时器延时 (1024 个振荡器时钟周期)。例如, 10 MHz 晶振的 TOST = 102.4 µs,
32 kHz 晶振的 T
OST =32ms。
3 : 如果 PLL 使能, TLOCK = PLL 锁定时间 (标称值为 1.5 ms )。
振荡器
起振定时器
PLL 锁定时间
总延时
LOCK
T
LOCK
T
DS70291A_CN 第 76 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 5-2 : 系统复位时序
VBOR
Vbor
VPOR
V
DD
TPOR
POR 复位
1
TBOR
BOR 复位
SYSRST
振荡器时钟
FSCM
器件状态
2
3
TPWRT
复位
时间
OSCD T OST
T
4
TLOCK
6
T
FSCM
5
运行
注 1 : POR 复位:当电源开启时,POR 电路将器件保持在复位状态。POR 电路保持有效直到 VDD 超过 VPOR 门限
POR 延时已经完成。
并且 T
2 : BOR 复位:片内稳压器有一个 BOR 电路,它将器件保持在复位状态,直到 V
DD 超过 V BOR 门限并且 T BOR
延时已经完成。 TBOR 延时确保了稳压器的输出稳定。
3 : PWRT 定时器:可编程上电延时定时器在 BOR 之后继续将处理器保持在复位状态一段特定时间( T
PWRT 延时确保了系统电源稳定在适当电平供全速工作。TPWRT 延时完成后, SYSRST 变为无效,从而使能
T
PWRT)。
选定的振荡器开始产生时钟。
4 : 振荡器延时:表 5-1 给出了可选择的各种时钟源从起振到时钟就绪的总延时。更多信息,请参见第 8.0 节“振
荡器配置”。
5 : 当振荡器时钟就绪时,处理器从地址 0x000000 开始执行。用户应用程序可以在复位地址中写入 GOTO 指令,
将程序重定向到相应的启动程序。
6 : 如果使能了故障保护时钟监视器 (FSCM),则当系统时钟就绪并且 T
FSCM 延时已完成时,它开始监视系统
时钟。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第77 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 5-2 : 振荡器延时
符号 参数 值
VPOR
POR
T
BOR
V
T
BOR
PWRT
T
FSCM
T
POR 门限 1.8V 标称值
POR 延时时间 30 µ s 最大值
BOR 门限 2.5V 标称值
BOR 延时时间 100 µ s 最大值
可编程上电延时 0-128 ms 标称值
故障保护时钟监视器延时 900 µs 最大值
注: 当器件退出复位状态 (开始正常操作)
时,器件工作参数 (电压、频率和温度
等)必须它们的工作范围内,否则器件可
能无法正常工作。用户应用程序必须确保
从最开始上电到SYSRST 变成无效之间的
延时足够长,以使所有工作参数都符合规
范。
5.2 上电复位 (POR )
上电复位 (POR )电路确保器件在上电时复位。 POR
电路保持有效直到 V
已经完成。T
POR 延时确保了器件内部偏置电路的稳定。
器件供电电压的特性必须符合规定的起始电压和上升率
要求以产生 POR 。更多详细信息,请参见第 30.0 节“电
气特性”。
复位控制寄存器中的 POR 状态位 POR (RCON<0> )
置 1 ,表示发生上电复位。
DD 超过 V POR 门限并且 T POR 延时
5.2.1 欠压复位 (BOR )和上电延时定
时器 (PWRT )
片上稳压器有一个欠压复位 (BOR )电路,当 VDD 太
DD < V BOR)器件无法正常工作时将复位器件。
低( V
BOR 电路将器件保持在复位状态,直到 V
门限并且 TBOR 延时已经完成。TBOR 延时确保了稳压器
的输出稳定。
复位控制寄存器中的 BOR 状态位 BOR (RCON<1> )
置 1 ,表示发生欠压复位。
BOR 之后器件不会全速工作,因为全速工作需要 V
升至可接受的电平。 PWRT 提供上电延时 (TPWRT ),
确保释放SYSRST
之前系统电源已稳定在供全速工作的
适当电平上。
上电延时定时器的延时 (TPWRT )由 POR 配置寄存器
中的上电复位定时器值选择位 FPWRT<2:0>
(FPOR<2:0> )来编程设定,它提供了 8 种设定 (从
0ms 到 128 ms )。更多详细信息,请参见第 27.0 节
“特殊功能”。
图 5-3 给出了典型的欠压情形。复位延时(T
T
PWRT)在每次 V DD 上升到超过 V BOR 跳变点时开始。
DD 超过 V BOR
DD
BOR +
DS70291A_CN 第 78 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 5-3 : 欠压情形
VDD
VBOR
TBOR + TPWRT
SYSRST
VDD
SYSRST
VDD 在 PWRT 延时结束前骤降
VDD
SYSRST
5.3 外部复位 (EXTR )
通过将 MCLR 引脚驱动为低电平产生外部复位。MCLR
引脚是附带毛刺滤波器的施密特触发器输入。宽度大于
最小脉冲宽度的复位脉冲会产生复位。最小脉冲宽度规
范请参见第 30.0 节“电气特性”。复位控制(RCON )
寄存器中的外部复位(MCLR
表示发生 MCLR
复位。
5.3.1 外部监控电路
许多系统具有外部监控电路,这种监控电路可产生复位
信号将系统中的多个器件复位。可将外部复位信号直接
连接到 MCLR
件。
引脚,使系统的其他部分复位时复位器
)引脚 (EXTR )位置 1,
BOR + T PWRT
T
TBOR + TPWRT
VBOR
VBOR
复位控制寄存器中的软件复位 (指令)标志位 SWR
(RCON<6> )置 1 ,表示发生软件复位。
5.5 看门狗超时复位(WDT R)
只要发生看门狗超时,器件都将异步产生 SYSRST 信
号。时钟源保持不变。在休眠或空闲模式下, WDT 超
时将唤醒处理器,但不会复位处理器。
复位控制寄存器中的看门狗定时器超时标志 WDTO
(RCON<4> )位置 1 ,表示发生看门狗复位。更多关于
看门狗复位的信息,请参见第 27.4 节 “看门狗定时器
(WDT )”。
5.6 陷阱冲突复位
5.3.2 内部监控电路
当使用内部电源监控电路复位器件时,外部复位引脚
(MCLR
下, MCLR
(MCLR
)应直连或通过电阻连接到 VDD 。在这种情况
引脚不用于产生复位。外部复位引脚
)没有内部上拉,所以不能处于未连接状态。
如果在某个高优先级的陷阱正在进行处理时,发生了低
优先级的硬陷阱,则将发生硬陷阱冲突复位。硬陷阱包
括优先级为 13 到 15 的异常。地址错误 (优先级 13 )
和振荡器错误 (优先级 14 )陷阱都属于此类。
复位控制寄存器中的陷阱复位标志 TRAPR
(RCON<15> )位置 1 ,表示发生陷阱冲突复位。更多
5.4 软件 RESET 指令 ( SWR )
关于陷阱冲突复位的信息,请参见第 6.0 节 “中断控制
器”。
每当执行 RESET 指令时,器件都将产生 SYSRST ,将
器件置于特殊的复位状态。此种复位状态不会重新初始
化时钟。执行 RESET 指令前使用的时钟源仍然继续使
用。SYSRST
在下一个指令周期释放,并且开始取复位
向量。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第79 页
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
5.7 配置不匹配复位
为保持外设引脚选择控制寄存器的完整性,使用硬件影
子寄存器不断监视它们。如果任何寄存器发生了异常改
变 (例如 ESD 或其他外部事件引起的干扰),将会发
生配置不匹配复位。
复位控制寄存器中的配置不匹配标志位 CM
(RCON<9> )置 1 ,表示发生配置不匹配复位。更多关
于配置不匹配复位的信息,请参见第 10.0 节“I/O 端
口”。
注: 配置不匹配特性和相关的复位标志并非在
所有的器件上都可用。
5.8 非法条件器件复位
如下原因会发生非法条件器件复位:
• 非法操作码复位
• 未初始化的 W 寄存器复位
• 安全性复位
复位控制寄存器中的非法操作码或访问未初始化的W 寄
存器复位标志 IOPUWR (RCON<14> )位置 1 ,表示
发生非法条件器件复位。
5.8.1 非法操作码复位
如果器件试图执行从程序存储器中取出的非法操作码
值,将会产生器件复位。
非法操作码复位功能可以阻止器件执行用于存储常量数
据的程序存储器段。要利用非法操作码复位,只能使用
每个程序存储器段的低 16 位存储数据值。高 8 位应该
被编程为非法操作码值 3Fh 。
5.8.2 未初始化的 W 寄存器复位
任何试图使用未初始化的 W 寄存器作为地址指针的操
作,都将复位器件。所有复位过程中都将清零 W 寄存器
阵列 (W15 除外),并在写入前将 W 寄存器阵列视作
未初始化状态。
5.8.3 安全性复位
如果程序流变化(Program Flow Change ,PFC )或 向
量流变化(Vector Flow Change ,VFC )的目标是受保
护段 (引导和安全段)中的受限地址,该操作将导致安
全性复位。
当调用、跳转、计算跳转、返回、从子程序返回或者其
他形式的转移指令导致程序计数器被重载时,将发生
PFC 。
当中断或者陷阱向量导致程序计数器被重载时发生
VFC 。
更多关于安全性复位的信息,请参见第 27.8 节 “代码
保护和 CodeGuard 安全性”。
5.9 使用 RCON 状态位
任何器件复位后,用户应用程序都可以读取复位控制
(RCON )寄存器以判断复位原因。
注: RCON 寄存器中的状态位应该在被读取后
清零,这样在器件复位后的下一个 RCON
寄存器值才有意义。
表 5-3 提供了复位标志位操作的总结。
表 5-3 : 复位标志位操作
标志位
TRAPR ( RCON<15>) 陷阱冲突事件 POR 和 BOR
IOPWR ( RCON<14>) 非法操作码、访问了未初始化的 W 寄存器或
安全性复位
CM ( RCON<9>)
EXTR ( RCON<7>) MCLR
SWR ( RCON<6>) RESET 指令 POR 和 BOR
WDTO ( RCON<4>) WDT 超时 PWRSAV 指令、 CLRWDT 指令、 POR 和 BOR
SLEEP ( RCON<3>) PWRSAV #SLEEP 指令 POR 和 BOR
IDLE ( RCON<2>) PWRSAV #IDLE 指令 POR 和 BOR
BOR ( RCON<1>) POR 和 BOR
POR ( RCON<0>)
注: 所有复位标志位均可由用户软件置 1 或清零。
配置不匹配 POR 和 BOR
复位
POR
置 1 原因
清零原因
POR 和 BOR
POR
DS70291A_CN 第 80 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
6.0 中断控制器
注: 本数据手册总结了 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 系列器件的特
性。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
“
充信 息,请 参 考
Reference Manual
Reset”(DS70184),该文档可从
Microchip 网站 ( www.microchip.com)下
载。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和dsPIC33FJ128MCX02/X04的中断控制器将诸多外设
中断请求信号缩减为一个送往 dsPIC33FJ32MC302/
304、 dsPIC33FJ64MCX02/X04 和
dsPIC33FJ128MCX02/X04 CPU 的中断请求。
中断控制器具有以下特性:
• 多达 8 个处理器异常和软件陷阱
• 8 个由用户选择的优先级
• 多达 118 个向量的中断向量表 ( Interrupt Vector
Table, IVT)
• 每个中断或异常源对应一个唯一的向量
• 在指定的用户优先级内具有固定的优先级
• 用于支持调试功能的备用中断向量表 ( Alternate
Interrupt Vector Table, AIVT)
• 固定的中断进入和返回延时
dsPIC33F Family
”
的“Section 6.
6.1.1 备用中断向量表
备用中断向量表 (AIVT )位于 IVT 之后,如图 6-1 所
示。由 ALTIVT 控制位(INTCON2<15> )控制对 AIVT
的访问。如果 ALTIVT 位置 1 ,则所有的中断和异常处
理都将使用备用向量,而非默认向量。备用向量与默认
向量的组织方式相同。
AIVT 通过提供一种不需要重新编程中断向量就可以在
应用程序和支持环境之间切换的方法,来支持调试功
能。此特性也支持运行时在应用程序之间切换以便评估
各种不同的软件算法。如果不需要 AIVT ,则应该用 IVT
中同样的地址编程 AIVT 。
6.2 复位过程
器件复位不是真正的异常,因为复位过程中并不涉及到
中断控制器。作为对复位的响应,
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件清零其寄存器,同时
强制 PC 为零。然后数字信号控制器从地址 0x000000
处开始执行程序。在复位地址中写入一条 GOTO 指令,
可以将程序执行重定向到相应的启动程序。
注: 应该使用包含 RESET 指令的默认中断处理
程序的入口地址编程 IVT 和 AIVT 中所有未
实现或未使用的向量存储单元。
6.1 中断向量表
IVT (如图 6-1 所示)位于程序存储器中,起始存储单
元地址是 000004h 。IVT 包含 126 个向量,由 8 个不可
屏蔽陷阱向量和多达 118 个中断源组成。一般来说,每
个中断源都有自己的中断向量。每个中断向量都包含一
个 24 位宽的地址。每个中断向量存储单元中设置的值
是其相关的中断服务程序 (ISR )的起始地址。
中断向量根据它们的自然优先级区分优先次序。也就是
说每个中断向量的优先级与其在向量表中的位置有关。
一般而言,较低地址的中断向量具有较高的自然优先
级。例如,与向量 0 相关的中断比任何其他向量地址的
中断具有更高的自然优先级。
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件实现了多达 53 个唯
一中断和 5 个不可屏蔽陷阱中断。表6-1 对此作了总结。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第81 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
图 6-1 : dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
中断向量表
自然优先级降序排列
复位——GOTO 指令
复位——GOTO 地址
保留
振荡器故障陷阱向量
地址错误陷阱向量
堆栈错误陷阱向量
数学错误陷阱向量
DMA 错误陷阱向量
保留
保留
中断向量 0
中断向量 1
~
~
~
中断向量 52
中断向量 53
中断向量 54
~
~
~
中断向量 11 6
中断向量 11 7
保留
保留
保留
振荡器故障陷阱向量
地址错误陷阱向量
堆栈错误陷阱向量
数学错误陷阱向量
DMA 错误陷阱向量
保留
保留
中断向量 0
中断向量 1
~
~
~
中断向量 52
中断向量 53
中断向量 54
~
~
~
中断向量 11 6
中断向量 11 7
代码起始单元
0x000000
0x000002
0x000004
0x000014
0x00007C
0x00007E
0x000080
0x0000FC
0x0000FE
0x000100
0x000102
0x000114
0x00017C
0x00017E
0x000180
0x0001FE
0x000200
中断向量表(IVT )
备用中断向量表(AIVT )
(1)
(1)
注 1 : 请参见表 6-1 了解所实现的中断向量列表。
DS70291A_CN 第 82 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 6-1 : 中断向量
向量编号 IVT 地址 AIVT 地址 中断源
0 0x000004 0x000104
1 0x000006 0x000106
2 0x000008 0x000108
3 0x00000A 0x00010A
4 0x00000C 0x00010C
5 0x00000E 0x00010E
6 0x000010 0x000110
7 0x000012 0x000112
8 0x000014 0x000114
9 0x000016 0x000116
10 0x000018 0x000118
11 0x00001A 0x00011A
12 0x00001C 0x00011C
13 0x00001E 0x00011E
14 0x000020 0x000120
15 0x000022 0x000122
16 0x000024 0x000124
17 0x000026 0x000126
18 0x000028 0x000128
19 0x00002A 0x00012A
20 0x00002C 0x00012C
21 0x00002E 0x00012E
22 0x000030 0x000130
23 0x000032 0x000132
24 0x000034 0x000134
25 0x000036 0x000136
26 0x000038 0x000138
27 0x00003A 0x00013A
28 0x00003C 0x00013C
29 0x00003E 0x00013E
30 0x000040 0x000140
31 0x000042 0x000142
32 0x000044 0x000144
33 0x000046 0x000146
34 0x000048 0x000148
35 0x00004A 0x00014A
36 0x00004C 0x00014C
37 0x00004E 0x00014E
38 0x000050 0x000150
39 0x000052 0x000152
40 0x000054 0x000154
41 0x000056 0x000156
42 0x000058 0x000158
43 0x00005A 0x00015A
44 0x00005C 0x00015C
45 0x00005E 0x00015E
46 0x000060 0x000160
保留
振荡器故障
地址错误
堆栈错误
数学错误
DMA 错误
保留
保留
INT0——外部中断 0
IC1——输入捕捉 1
OC1——输出比较 1
T1—— Timer1
DMA0—— DMA 通道 0
IC2——输入捕捉 2
OC2——输出比较 2
T2—— Timer2
T3—— Timer3
SPI1E—— SPI1 错误
SPI1—— SPI1 传输完成
U1RX—— UART1 接收器
U1TX—— UART1 发送器
ADC1—— ADC 1
DMA1—— DMA 通道 1
保留
SI2C1—— I2C1 从事件
MI2C1——I2C1 主事件
CM——比较器中断
电平变化通知中断
INT1 ——外部中断 1
保留
IC7——输入捕捉 7
IC8——输入捕捉 8
DMA2—— DMA 通道 2
OC3——输出比较 3
OC4——输出比较 4
T4—— Timer4
T5—— Timer5
INT2——外部中断 2
U2RX—— UART2 接收器
U2TX—— UART2 发送器
SPI2E—— SPI2 错误
SPI2—— SPI2 传输完成
C1RX—— ECAN1 接收数据就绪
C1—— ECAN1 事件
DMA3—— DMA 通道 3
保留
保留
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第83 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
表 6-1 : 中断向量 (续)
向量编号 IVT 地址 AIVT 地址 中断源
47 0x000062 0x000162
48 0x000064 0x000164
49 0x000066 0x000166
50 0x000068 0x000168
51 0x00006A 0x00016A
52 0x00006C 0x00016C
53 0x00006E 0x00016E
54 0x000070 0x000170
55 0x000072 0x000172
56 0x000074 0x000174
57 0x000076 0x000176
58 0x000078 0x000178
59 0x00007A 0x00017A
60 0x00007C 0x00017C
61 0x00007E 0x00017E
62 0x000080 0x000180
63 0x000082 0x000182
64 0x000084 0x000184
65 0x000086 0x000186
66 0x000088 0x000188
67 0x00008A 0x00018A
68 0x00008C 0x00018C
69 0x00008E 0x00018E
70 0x000090 0x000190
71 0x000092 0x000192
72 0x000094 0x000194
73 0x000096 0x000196
74 0x000098 0x000198
75 0x00009A 0x00019A
76 0x00009C 0x00019C
77 0x00009E 0x00019E
78 0x0000A0 0x0001A0
79 0x0000A2 0x0001A2
80 0x0000A4 0x0001A4
81 0x0000A6 0x0001A6
82 0x0000A8 0x0001A8
83 0x0000AA 0x0001AA
84 0x0000AC 0x0001AC
85 0x0000AE 0x0001AE
86 0x0000B0 0x0001B0
87 0x0000B2 0x0001B2
88-126 0x0000B4-0x0000FE 0x0001B4-0x0001FE
保留
保留
保留
保留
保留
保留
PMP——并行主端口
DMA4—— DMA 通道 4
保留
保留
保留
保留
保留
保留
保留
保留
保留
保留
PWM1—— PWM1 周期匹配
QEI1——位置计数器比较
保留
保留
DMA5—— DMA 通道 5
RTCC——实时时钟
FLTA1
——PWM1 故障 A
保留
U1E—— UART1 错误
U2E—— UART2 错误
CRC—— CRC 发生器中断
DMA6—— DMA 通道 6
DMA7—— DMA 通道 7
C1TX—— ECAN1 发送数据请求
保留
保留
PWM2—— PWM2 周期匹配
FLTA2
—— PWM2 故障 A
QEI2——位置计数器比较
保留
保留
DAC1R—— DAC1 右声道数据请求
DAC1L—— DAC1 左声道数据请求
保留
DS70291A_CN 第84 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
6.3 中断控制和状态寄存器
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04
和 dsPIC33FJ128MCX02/X04 器件共有 30 个用于中断
控制器的寄存器:
• INTCON1
• INTCON2
• IFSx
• IECx
• IPCx
• INTTREG
6.3.1 INTCON1 和 INTCON2
INTCON1 和 INTCON2 控制全局中断。 INTCON1 包
含中断嵌套禁止 (NSTDIS )位以及处理器陷阱源的控
制和状态标志。 INTCON2 寄存器控制外部中断请求信
号行为以及备用中断向量表的使用。
6.3.2 IFS0–IFS4
IFS 寄存器维护所有中断请求标志。每个中断源都有一
个状态位,由各自的外设或外部信号置 1 ,而由软件清
零。
6.3.3 IEC0–IEC4
IEC 寄存器维护所有中断允许位。这些控制位用于单独
允许外设或外部信号中断。
6.3.4 IPC0–IPC19
IPC 寄存器用于设置每个中断源的中断优先级。可以将
每个用户中断源分配为 8 个优先级之一。
6.3.5 INTTREG
INTTREG 寄存器包含相关的中断向量编号和新的 CPU
中断优先级,分别锁存在 INTTREG 寄存器中的向量编
号(VECNUM<6:0> )和中断优先级 (ILR<3:0> )位域
中。新的中断优先级是等待处理中断的优先级。
中断源按表 6-1 中的顺序分配给 IFSx 、IECx 和 IPCx 寄
存器。例如,INT0(外部中断 0 )表示为向量编号为 8 、
自然优先级为 0 的外部中断。所以 INT0IF 位在IFS0<0>
中,INT0IE 位在 IEC0<0> 中,INT0IP 位在 IPC0 的第
一个位位置 (IPC0<2:0> )中。
6.3.6 状态 / 控制寄存器
尽管这两个 CPU 控制寄存器不是中断控制硬件的特定
组成部分,但它们仍包含控制中断功能的位。
• CPU 状态寄存器 SR 包含 IPL<2:0> 位
(SR<7:5> )。这些位表示当前 CPU 中断优先级。
用户软件可以通过写 IPL 位来更改当前 CPU 优先
级。
• CORCON 寄存器包含 IPL3 位,这个位与
IPL<2:0> 位一起表示当前 CPU 优先级。 IPL3 是
只读位,所以用户软件无法屏蔽陷阱事件。
在下面各页中的寄存器 6-1 到寄存器 6-32 描述了所有的
中断寄存器。
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第85 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-1 : SR :CPU 状态寄存器
(1)
R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R -0 R/W-0
OA OB SA SB OAB SAB DA DC
bit 15 bit 8
R/W-0
IPL2
(3)
(2)
R/W-0
IPL1
(2)
(3)
R/W-0
IPL0
(2)
(3)
R-0 R/W-0 R/W-0 R/W-0 R/W-0
RA N OV Z C
bit 7 bit 0
图注:
C = 只可清零位 R = 可读位 U = 未实现位,读为 0
S = 只可置 1 位 W = 可写位 -n = POR 时的值
1 = 置 10 = 清零 x = 未知
bit 7-5
IPL<2:0>: CPU 中断优先级状态位
(2)
111 = CPU 中断优先级为 7 (15 ),禁止用户中断
110 = CPU 中断优先级为 6 (14 )
101 = CPU 中断优先级为 5 (13 )
100 = CPU 中断优先级为 4 (12 )
011 = CPU 中断优先级为 3 (11 )
010 = CPU 中断优先级为 2 (10 )
001 = CPU 中断优先级为 1 (9 )
000 = CPU 中断优先级为 0 (8 )
注 1: 如需了解整个寄存器的详细信息,请参见寄存器 2-1:“ SR: CPU 状态寄存器”。
2: IPL<2:0> 位与 IPL<3> 位(CORCON<3>)组合形成 CPU 中断优先级。如果 IPL<3> = 1,那么括号中的
值表示 IPL 。当 IPL<3> = 1 时,禁止用户中断。
3 : 当 NSTDIS ( INTCON1<15> ) = 1 时, IPL<2:0> 状态位是只读的。
寄存器 6-2 : CORCON :内核控制寄存器
(1)
U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0
— — — US EDT DL<2:0>
bit 15 bit 8
R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R/W-0 R/W-0 R/W-0
SATA SATB SATDW ACCSAT IPL3
(2)
PSV RND IF
bit 7 bit 0
图注:
C = 只可清零位
R = 可读位 W = 可写位 -n = POR 时的值 1 = 置 1
0 = 清零 x = 未知 U = 未实现位,读为 0
bit 3
IPL3: CPU 中断优先级状态位 3
(2)
1 = CPU 中断优先级大于 7
0 = CPU 中断优先级等于或小于 7
注 1: 如需了解整个寄存器的详细信息,请参见寄存器 2-2:“ CORCON:内核控制寄存器”。
2: IPL3 位与 IPL<2:0> 位(SR<7:5>)组合形成 CPU 的中断优先级。
DS70291A_CN 第 86 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-3 : INTCON1 :中断控制寄存器 1
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
SFTACERR DIV0ERR DMACERR MATHERR ADDRERR STKERR OSCFAIL
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
—
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
NSTDIS : 中断嵌套禁止位
1 = 禁止中断嵌套
0 = 使能中断嵌套
OVAERR: 累加器 A 溢出陷阱标志位
1 = 陷阱是由累加器 A 溢出引起
0 = 陷阱不是由累加器 A 溢出引起
OVBERR: 累加器 B 溢出陷阱标志位
1 = 陷阱是由累加器 B 溢出引起
0 = 陷阱不是由累加器 B 溢出引起
COVAERR: 累加器 A 灾难性溢出陷阱标志位
1 = 陷阱是由累加器 A 灾难性溢出引起
0 = 陷阱不是由累加器 A 灾难性溢出引起
COVBERR: 累加器 B 灾难性溢出陷阱标志位
1 = 陷阱是由累加器 B 灾难性溢出引起
0 = 陷阱不是由累加器 B 灾难性溢出引起
OVATE: 累加器 A 溢出陷阱允许位
1 = 允许累加器 A 溢出陷阱
0 = 禁止陷阱
OVBTE: 累加器 B 溢出陷阱允许位
1 = 允许累加器 B 溢出陷阱
0 = 禁止陷阱
COVTE: 灾难性溢出陷阱允许位
1 = 允许累加器 A 或 B 的灾难性溢出陷阱
0 = 禁止陷阱
SFTACERR: 累加器移位错误状态位
1 = 数学错误陷阱是由非法的累加器移位引起的
0 = 数学错误陷阱不是由非法的累加器移位引起的
DIV0ERR: 算术错误状态位
1 = 数学错误陷阱是由被零除引起的
0 = 数学错误陷阱不是由被零除引起的
DMACERR: DMA 控制器错误状态位
1 = 发生了 DMA 控制器错误陷阱
0 = 未发生 DMA 控制器错误陷阱
MATHERR: 算术错误状态位
1 = 发生了数学错误陷阱
0 = 未发生数学错误陷阱
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第87 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-3 : INTCON1 :中断控制寄存器 1 (续)
bit 3
bit 2
bit 1
bit 0
ADDRERR : 地址错误陷阱状态位
1 = 发生了地址错误陷阱
0 = 未发生地址错误陷阱
STKERR:堆栈错误陷阱状态位
1 = 发生了堆栈错误陷阱
0 = 未发生堆栈错误陷阱
OSCFAIL:振荡器故障陷阱状态位
1 = 发生了振荡器故障陷阱
0 = 未发生振荡器故障陷阱
未实现:读为 0
DS70291A_CN 第 88 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-4 : INTCON2 :中断控制寄存器 2
R/W-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0
ALTIVT DISI — — — — — —
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0
— — — — — INT2EP INT1EP INT0EP
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
bit 14
bit 13-3
bit 2
bit 1
bit 0
ALTIVT : 备用中断向量表使能位
1 = 使用备用向量表
0 = 使用标准 (默认)向量表
DISI : DISI 指令状态位
1 = 执行了 DISI 指令
0 = 未执行 DISI 指令
未实现:读为 0
INT2EP: 外部中断 2 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
INT1EP:外部中断 1 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
INT0EP: 外部中断 0 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第89 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-5 : IFS0 :中断标志状态寄存器 0
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— DMA1IF AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
T2IF OC2IF IC2IF DMA0IF T1IF OC1IF IC1IF INT0IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
未实现:读为 0
DMA1IF :DMA 通道 1 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
AD1IF: ADC1 转换完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U1TXIF: UART1 发送器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U1RXIF:UART1 接收器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SPI1IF: SPI1 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SPI1EIF: SPI1 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T3IF: Timer3 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T2IF: Timer2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC2IF:输出比较通道 2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC2IF:输入捕捉通道 2 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DMA0IF:DMA 通道 0 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T1IF: Timer1 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DS70291A_CN 第 90 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-5 : IFS0 :中断标志状态寄存器 0 (续)
bit 2
bit 1
bit 0
OC1IF :输出比较通道 1 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC1IF:输入捕捉通道 1 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
INT0IF:外部中断 0 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第91 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-6 : IFS1 :中断标志状态寄存器 1
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF DMA2IF
bit 15 bit 8
R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
IC8IF IC7IF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
— INT1IF CNIF CMIF MI2C1IF SI2C1IF
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
U2TXIF : UART2 发送器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
U2RXIF:UART2 接收器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
INT2IF:外部中断 2 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T5IF: Timer5 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
T4IF: Timer4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC4IF:输出比较通道 4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
OC3IF:输出比较通道 3 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DMA2IF:DMA 通道 2 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC8IF:输入捕捉通道 8 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC7IF:输入捕捉通道 7 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
INT1IF:外部中断 1 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
CNIF:输入电平变化通知中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DS70291A_CN 第 92 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-6 : IFS1 :中断标志状态寄存器 1 (续)
bit 2
bit 1
bit 0
CMIF : 比较器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
MI2C1IF: I2C1 主事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SI2C1IF: I2C1 从事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第93 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-7 : IFS2 :中断标志状态寄存器 2
U-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0
— DMA4IF PMPIF — — — — —
bit 15 bit 8
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — — DMA3IF C1IF
(1)
C1RXIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
SPI2IF SPI2EIF
bit 15
bit 14
bit 13
bit 12-5
bit 4
bit 3
bit 2
bit 1
bit 0
未实现:读为 0
DMA4IF :DMA 通道 4 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
PMPIF:并行主端口中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
DMA3IF:DMA 通道 3 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
C1IF: ECAN1 事件中断标志状态位
(1)
1 = 产生了中断请求
0 = 未产生中断请求
C1RXIF:ECAN1 接收数据就绪中断标志状态位
(1)
1 = 产生了中断请求
0 = 未产生中断请求
SPI2IF: SPI2 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SPI2EIF: SPI2 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
注 1 : 对于不带 ECAN™模块的器件禁止此类中断。
DS70291A_CN 第 94 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-8 : IFS3 :中断标志状态寄存器 3
R/W-0 R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 U-0
FLTA1IF RTCIF DMA5IF — — QEI1IF PWM1IF —
bit 15 bit 8
U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12-11
bit 10
bit 9
bit 8-0
FLTA1IF : PWM1 故障 A 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
RTCIF:实时时钟 / 日历中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DMA5IF:DMA 通道 5 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
QEI1IF: QEI1 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
PWM1IF: PWM1 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第95 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-9 : IFS4 :中断标志状态寄存器 4
R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 U-0
DAC1LIF
(2)
DAC1RIF
bit 15 bit 8
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0
—C 1 T X I F
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
(1)
(2)
— — QEI2IF FLTA2IF PWM2IF —
DMA7IF DMA6IF CRCIF U2EIF U1EIF —
bit 15
DAC1LIF : DAC 左声道中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 14
DAC1RIF : DAC 右声道中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 13-12
bit 11
未实现:读为 0
QEI2IF :QEI2 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 10
FLTA2IF : PWM2 故障 A 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 9
PWM2IF : PWM2 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 8-7
bit 6
未实现:读为 0
C1TXIF :ECAN1 接收数据就绪中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 5
DMA7IF :DMA 通道 7 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 4
DMA6IF :DMA 通道 6 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 3
CRCIF : CRC 发生器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 2
U2EIF : UART2 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 1
U1EIF : UART1 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 0
未实现:读为 0
注 1 : 对于不带 ECAN™ 模块的器件禁止此类中断。
2: 对于不带 DAC 模块的器件禁止此类中断。
(2)
(2)
(1)
DS70291A_CN 第 96 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-10 : IEC0 :中断允许控制寄存器 0
U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— DMA1IE AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
T2IE OC2IE IC2IE DMA0IE T1IE OC1IE IC1IE INT0IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
未实现:读为 0
DMA1IE :DMA 通道 1 数据传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
AD1IE: ADC1 转换完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U1TXIE:UART1 发送器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
U1RXIE:UART1 接收器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SPI1IE: SPI1 事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SPI1EIE: SPI1 错误中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T3IE: Timer3 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T2IE: Timer2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
OC2IE:输出比较通道 2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
IC2IE:输入捕捉通道 2 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
DMA0IE: DMA 通道 0 数据传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
T1IE: Timer1 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
2008 Microchip Technology Inc. 超前信息 DS70291A_CN 第97 页
dsPIC33FJ32MC302/304 、 dsPIC33FJ64MCX02/X04 和 dsPIC33FJ128MCX02/X04
寄存器 6-10 : IEC0 :中断允许控制寄存器 0 (续)
bit 2
bit 1
bit 0
OC1IE :输出比较通道 1 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
IC1IE:输入捕捉通道 1 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
INT0IE:外部中断 0 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
DS70291A_CN 第 98 页 超前信息 2008 Microchip Technology Inc.