dsPIC33FJ32GP302/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
dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04
数据手册
高性能 16 位
数字信号控制器
2008 Microchip Technology Inc. 超前信息 DS70292A_CN
请注意以下有关 Microchip 器件代码保护功能的要点:
•M i c r o c h i p的产品均达到 Microchip 数据手册中所述的技术指标。
•M i c r o c h i p确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的
操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•M i c r o c h i p愿与那些注重代码完整性的客户合作。
•M i c r o c h i p或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 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
系也已通过了
位于美国亚利桑那州
的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和
。此外,
Microchip
ISO 9001:2000
Chandler和Te mp e
ISO/TS-16949:2002
®
跳码器件、串行
在开发系统的设计和生产方面的质量体
认证。
与位于俄勒冈州
认证。公司在
EEPROM
®
PIC
、单片机外
ISO/TS-
DS70292A_CN 第 ii 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/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 位
直接存储器访问 (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个中断向量
• 最多 49 个中断源
• 最多 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. 超前信息 DS70292A_CN 第 1 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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)
- 最多 13 路带自动扫描功能的输入通道
- 可手动启动转换或与 4 个触发源中的一个同步
- 休眠模式下仍可进行转换
- 积分非线性误差最大为 ±2 LSb
- 微分非线性误差最大为 ±1 LSb
音频数模转换器 ( Digital-to-Analog
Converter, DAC):
•16位双通道 DAC 模块
• 100 Ksps 最大采样速率
• 二阶数字 ∆−Σ 调制器
数据转换器接口 ( Data Converter
Interface, DCI)模块:
• 编解码器接口
• 支持 I
• 最多 16 位数据字,每帧最多 16 字
•4字深度的发送和接收缓冲区
2
S 和 AC’97 协议
通信模块:
•4线 SPI (最多 2 个模块):
- 帧支持简单编解码器的 I/O 接口
- 支持 8 位和 16 位数据
- 支持所有串行时钟格式和采样模式
2
C™:
•I
- 完全支持多主机从模式
-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
®
编解码
封装:
比较器模块:
•2 个模拟比较器,具有可编程输入 / 输出配置
CMOS 闪存技术:
• 低功耗高速闪存技术
• 全静态设计
•3.3V(±10%)工作电压
• 工业级和扩展级温度
• 低功耗
DS70292A_CN 第 2 页 超前信息 2008 Microchip Technology Inc.
•28引脚 SDIP/SOIC/QFN-S
•44引脚 TQFP/QFN
注: 关于每个器件的具体外设特性,请参见相
应的器件数据表。
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 产品系列
下表列出了每个系列的器件名称、引脚数、存储容量和
可用的外设,表后还附有它们的引脚图。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
控制器系列
(1)
器件
dsPIC33FJ128GP804 44 128 16 26 5 4 4 1 2 2 1 1 1 1 13 6 1/1 11 35 QFN
dsPIC33FJ128GP802 28 128 16 16 5 4 4 1 2 2 1 1 1 1 10 4 1/0 2 21 SDIP
dsPIC33FJ128GP204 44 128 8 26 5 4 4 1 2 2 0 1 1 1 13 0 1/1 11 35 QFN
dsPIC33FJ128GP202 28 128 8 16 5 4 4 1 2 2 0 1 1 1 10 0 1/0 2 21 SDIP
dsPIC33FJ64GP804 44 64 16 26 5 4 4 1 2 2 1 1 1 1 13 6 1/1 11 35 QFN
dsPIC33FJ64GP802 28 64 16 16 5 4 4 1 2 2 1 1 1 1 10 4 1/0 2 21 SDIP
dsPIC33FJ64GP204 44 64 8 26 5 4 4 1 2 2 0 1 1 1 13 0 1/1 11 35 QFN
dsPIC33FJ64GP202 28 64 8 16 5 4 4 1 2 2 0 1 1 1 10 0 1/0 2 21 SDIP
dsPIC33FJ32GP304 44 32 4 26 5 4 4 1 2 2 0 1 1 1 13 0 1/1 11 35 QFN
dsPIC33FJ32GP302 28 32 4 16 5 4 4 1 2 2 0 1 1 1 10 0 1/0 2 21 SDIP
注 1: 除了 dsPIC33FJ32GP302/304 以外,所有器件的 RAM 中包括 2KB的 DMA RAM , dsPIC33FJ32GP302/304 包括 1KB 的 DMA RAM 。
2: 5 个定时器中只有 4 个是可重映射的。
引脚数
闪存程序存储器
(KB )
RAM (KB )
可重映射的引脚数
(2)
16 位定时器
可重映射的外设
输出比较
输入捕捉
标准 PWM
UART
数据转换器接口
C™
2
I
SPI
RTCC
ECAN™
(通道数)
(引脚数)
CRC 发生器
10 位 /12 位 ADC
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
封装
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 3 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
引脚图
28 引脚 SDIP 和 SOIC
MCLR
AN0/VREF +/CN2/RA0
REF-/CN3/RA1
AN1/V
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
SOSCI/RP4/CN1/PMBE/RB4
SOSCO/T1CK/CN0/PMA1/RA4
VDD
PGD3/ EMUD3/ ASDA1/RP5/CN27/PMD7/RB5
1
2
3
dsPIC33FJ128GP802
4
5
6
7
8
9
10
11
12
13
14
dsPIC33FJ64GP802
AVDD
28
AVSS
27
AN9/DAC1LN/RP15/CN11/PMCS1/RB15
26
AN10/DAC1LP/RTCC/RP14/CN12/PMWR/RB14
25
AN11/DAC1RN/RP13/CN13/PMRD/RB13
24
AN12/DAC1RP/RP12/CN14/PMD0/RB12
23
PGC2/ EMUC2/TMS/RP11/CN15/PMD1/RB11
22
PGD2/EMUD2/TDI/RP10/CN16/PMD2/RB10
21
VCAP /VDDCORE
20
SS
V
19
TDO/SDA1/RP9/CN21/PMD3/RB9
18
TCK/SCL1/RP8/CN22/PMD4/RB8
17
INT0/RP7/CN23/PMD5/RB7
16
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
15
28 引脚 SDIP 和 SOIC
AN0/VREF +/CN2/RA0
AN1/V
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
MCLR
REF-/CN3/RA1
VSS
VDD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
dsPIC33FJ128GP202
26
dsPIC33FJ32GP302
dsPIC33FJ64GP202
25
24
23
22
21
20
19
18
17
16
15
AVDD
AVSS
AN9/RP15/CN11/PMCS1/RB15
AN10/RTCC/RP14/CN12/PMWR/RB14
AN11/RP13/CN13/PMRD/RB13
AN12/RP12/CN14/PMD0/RB12
PGC2/ EMUC2/TMS/RP11/CN15/PMD1/RB11
PGD2/EMUD2/TDI/RP10/CN16/PMD2/RB10
VCAP /VDDCORE
SS
V
TDO/SDA1/RP9/CN21/PMD3/RB9
TCK/SCL1/RP8/CN22/PMD4/RB8
INT0/RP7/CN23/PMD5/RB7
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
DS70292A_CN 第 4 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
引脚图 (续)
28 引脚 QFN-S
REF-/CN3/RA1
DD
AV
MCLR
AN0/VREF +/CN2/RA0
6
7
5
2
2
2
11
10
9
AVSS
AN10/DAC1LP/RP15/CN11/PMCS1/RB15
4
2
13
12
AN9/DAC1LN/RTCC/RP14/CN12/PMWR/RB14
3
2
2
2
21
20
19
18
17
16
15
14
AN11/DAC1RN/RP13/CN13/PMRD/RB13
AN12/DAC1RP/RP12/CN14/PMD0/RB12
PGC2/EMUC2/TMS/RP11/CN15/PMD1/RB11
PGD2/EMUD2/TDI/RP10/CN16/PMD2/RB10
CAP/V DDCORE
V
VSS
TDO/SDA1/RP9/CN21/PMD3/RB9
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
AN1/V
8
2
1
2
3
dsPIC33FJ64GP802
4
dsPIC33FJ128GP802
5
6
7
8
VDD
SOSCI/RP4/CN1/PMBE/RB4
SOSCO/T1CK/CN0/PMA1/RA4
INT0/RP7/CN23/PMD5/RB7
TCK/SCL1/RP8/CN22/PMD4/RB8
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 5 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
引脚图 (续)
28 引脚 QFN-S
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
VSS
REF-/CN3/RA1
9
AN0/VREF +/CN2/RA0
27
MCLR
26
10
VDD
DD
AV
AVSS
5
24
2
11
12
AN1/V
8
2
1
2
dsPIC33FJ32GP302
3
dsPIC33FJ64GP202
4
dsPIC33FJ128GP202
5
6
7
8
/RB14
/RB15
AN10/DAC1LP/RP15/CN11/PMCS1
AN9/DAC1LN/RTCC/RP14/CN12/PMWR
3
2
2
2
13
14
AN11/RP13/CN13/PMRD/RB13
21
AN12/RP12/CN14/PMD0/RB12
20
PGC2/EMUC2/TMS/RP11/CN15/PMD1/RB11
19
PGD2/EMUD2/TDI/RP10/CN16/PMD2/RB10
18
VCAP /VDDCORE
17
VSS
16
TDO/SDA1/RP9/CN21/PMD3/RB9
15
SOSCI/RP4/CN1/PMBE/RB4
SOSCO/T1CK/CN0/PMA1/RA4
INT0/RP7/CN23/PMD5/RB7
TCK/SCL1/RP8/CN22/PMD4/RB8
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
DS70292A_CN 第 6 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
AN9/DAC1LN/RP15/CN11/PMCS1/RB15
AN10/DAC1LP/RTCC/RP14/CN12/PMWR/RB14
TCK/PMA7/RA7
11
13
14
15
12
10
9
8
7
6
5
4
3
2 32
41
1
44
43
42
AN11/DAC1RN/RP13/CN13/PMRD/RB13
AN12/DAC1RP/RP12/CN14/PMD0/RB12
PGC2/EMUC2/RP11/CN15/PMD1/RB11
PGD2/EMUD2/RP10/CN16/PMD2/RB10
CAP/V DDCORE
V
VSS
RP25/CN19/PMA6/RC9
RP24/CN20/PMA5/RC8
RP23/CN17/PMA0/RC7
RP22/CN18/PMA1/RC6
SDA1/RP9/CN21/PMD3/RB9
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
AN6/DAC1RM/RP16/CN8/RC0
AN7/DAC1LM/RP17/CN9/RC1
REF/RP18/PMA2/CN10/RC2
AN8/CV
OSCI/CLKI/CN30/RA2
OSCO/CLKO/CN29/RA3
TDO/PMA8/RA8
SOSCI/RP4/CN1/RB4
V
VSS
DD
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
23
22
24
25
26
27
dsPIC33FJ64GP804
28
dsPIC33FJ128GP804
29
30
31
33
34
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
SOSCO/T1CK/CN0/RA4
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
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 7 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
AN9/RP15/CN11/PMCS1/RB15
15
41
TMS/PMA10/RA10
AN10/RTCC/RP14/CN12/PMWR/RB14
TCK/PMA7/RA7
AN11/RP13/CN13/PMRD/RB13
11
13
14
12
AN12/RP12/CN14/PMD0/RB12
10
PGC2/EMUC2/RP11/CN15/PMD1/RB11
9
PGD2/EMUD2/RP10/CN16/PMD2/RB10
8
CAP/V DDCORE
V
7
VSS
6
RP25/CN19/PMA6/RC9
5
RP24/CN20/PMA5/RC8
4
RP23/CN17/PMA0/RC7
3
RP22/CN18/PMA1/RC6
2 32
SDA1/RP9/CN21/PMD3/RB9
1
44
43
42
AN4/C1IN-/RP2/CN6/RB2
AN5/C1IN+/RP3/CN7/RB3
AN6/RP16/CN8/RC0
AN7/RP17/CN9/RC1
REF/RP18/PMA2/CN10/RC2
AN8/CV
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
23
22
24
25
26
dsPIC33FJ32GP304
27
dsPIC33FJ64GP204
28
29
dsPIC33FJ128GP204
30
31
33
34
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
SOSCO/T1CK/CN0/RA4
RP20/CN25/PMA4/RC4
RP21/CN26/PMA3/RC5
INT0/RP7/CN23/PMD5/RB7
SCL1/RP8/CN22/PMD4/RB8
PGC3/EMUC3/ASCL1/RP6/CN24/PMD6/RB6
PGD3/EMUD3/ASDA1/RP5/CN27/PMD7/RB5
DS70292A_CN 第 8 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
引脚图 (续)
44 引脚 TQFP
REF-/CN3/RA1
REF+/CN2/RA0
AN0/V
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
MCLR
AN1/V
20
363435937
AVDDAVSS
16
17
18
19
40
39
38
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
21
22
23
24
25
26
27
dsPIC33FJ64GP804
28
dsPIC33FJ128GP804
29
30
31
32
33
AN9/DAC1LN/RP15/CN11/PMCS1/RB15
15
41
AN10/DAC1LP/RTCC/RP14/CN12/PMWR/RB14
14
42
13
43
TCK/PMA7/RA7
TMS/PMA10/RA10
12
11
AN11/DAC1RN/RP13/CN13/PMRD/RB13
10
AN12/DAC1RP/RP12/CN14/PMD0/RB12
PGC2/EMUC2/RP11/CN15/PMD1/RB11
8
PGD2/EMCD2/RP10/CN16/PMD2/RB10
7
CAP/V DDCORE
V
6
VSS
5
RP25/CN19/PMA6/RC9
4
RP24/CN20/PMA5/RC8
3
RP23/CN17/PMA0/RC7
2
RP22/CN18/PMA1/RC6
1
SDA1/RP9/CN21/PMD3/RB9
44
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
VSS
RP21/CN26/PMA3/RC5
RP20/CN25/PMA4/RC4
DD
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. 超前信息 DS70292A_CN 第 9 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
MCLR
AN1/V
20
363435937
AVDDAVSS
16
17
18
19
40
39
38
PGC1/EMUC1/AN3/C2IN+/RP1/CN5/RB1
PGD1/EMUD1/AN2/C2IN-/RP0/CN4/RB0
21
22
23
24
25
26
dsPIC33FJ32GP304
27
28
dsPIC33FJ64GP204
29
dsPIC33FJ128GP204
30
31
32
33
AN9/RP15/CN11/PMCS1/RB15
15
41
TMS/PMA10/RA10
AN10/RTCC/RP14/CN12/PMWR/RB14
TCK/PMA7/RA7
12
13
14
11
AN11/RP13/CN13/PMRD/RB13
10
AN12/RP12/CN14/PMD0/RB12
PGC2/EMUC2/RP11/CN15/PMD1/RB11
8
PGD2/EMCD2/RP10/CN16/PMD2/RB10
7
CAP/V DDCORE
V
6
VSS
5
RP25/CN19/PMA6/RC9
4
RP24/CN20/PMA5/RC8
3
RP23/CN17/PMA0/RC7
2
RP22/CN18/PMA1/RC6
1
SDA1/RP9/CN21/PMD3/RB9
44
43
42
SOSCO/T1CK/CN0/RA4
TDI/PMA9/RA9
RP19/CN28/PMBE/RC3
VSS
RP21/CN26/PMA3/RC5
RP20/CN25/PMA4/RC4
DD
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
DS70292A_CN 第 10 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
目录
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04 产品系列 .......................................................... 3
1.0 器件概述 ..................................................................................................................................................................................... 13
2.0 CPU ............................................................................................................................................................................................ 17
3.0 存储器构成 ................................................................................................................................................................................. 29
4.0 闪存程序存储器 .......................................................................................................................................................................... 63
5.0 复位 ............................................................................................................................................................................................ 69
6.0 中断控制器 ................................................................................................................................................................................. 77
7.0 直接存储器访问 ( DMA) ......................................................................................................................................................... 119
8.0 振荡器配置 ............................................................................................................................................................................... 131
9.0 节能特性 ................................................................................................................................................................................... 143
10.0 I/O 端口 .................................................................................................................................................................................... 145
11.0 Timer1 ...................................................................................................................................................................................... 175
12.0 Timer2/3 和 TImer4/5 特性 ...................................................................................................................................................... 177
13.0 输入捕捉 ................................................................................................................................................................................... 183
14.0 输出比较 ................................................................................................................................................................................... 185
15.0 串行外设接口 ( SPI)............................................................................................................................................................... 189
2
16.0 I
C™......................................................................................................................................................................................... 197
17.0 通用异步收发器 ( UART) ....................................................................................................................................................... 207
18.0 增强型 CAN ( ECAN™)模块 ................................................................................................................................................. 215
19.0 数据转换器接口 ( DCI)模块 ................................................................................................................................................... 245
20.0 10 位 /12 位模数转换器 ( ADC1)............................................................................................................................................ 259
21.0 音频数模转换器 ( DAC) ......................................................................................................................................................... 271
22.0 比较器模块 ............................................................................................................................................................................... 277
23.0 实时时钟和日历 ( RTCC)....................................................................................................................................................... 283
24.0 可编程循环冗余校验 ( CRC)发生器 ...................................................................................................................................... 295
25.0 并行主端口 ( PMP) ................................................................................................................................................................ 299
26.0 特殊功能 ................................................................................................................................................................................... 309
27.0 指令集汇总 ............................................................................................................................................................................... 319
28.0 开发支持 ................................................................................................................................................................................... 327
29.0 电气特性 ................................................................................................................................................................................... 331
30.0 封装信息 ................................................................................................................................................................................... 375
附录 A :版 本 历 史........................................................................................................................................................................ 383
索引................................................................................................................................................................................................... 385
Microchip 网站.................................................................................................................................................................................... 391
变更通知客户服务 .............................................................................................................................................................................. 391
客户支持............................................................................................................................................................................................. 391
读者反馈表 ......................................................................................................................................................................................... 392
产品标识体系 ..................................................................................................................................................................................... 393
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 11 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 上注册。
DS70292A_CN 第 12 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
1.0 器件概述
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》中的相关章节,该文档可从 Microchip
网站 (www.microchip.com )下载。
本文档包含 dsPIC33FJ32GP302/304 、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
X04 数字信号控制器(Digital Signal Controller,DSC)
器件的特定信息。dsPIC33F 器件在其高性能 16 位单片
机(MCU)架构中,融合了丰富的数字信号处理器
(Digital Signal Processor , DSP )功能。
图 1-1 给出了 dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
X04 系列器件中内核和外设模块的一般框图。表 1-1 列
出了引脚图中显示的各引脚的功能。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 13 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 1-1 : dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
框图
PSV 和表
数据访问
控制模块
Y 数据总线
23
地址锁存器
程序存储器
数据锁存器
OSC2/CLKO
OSC1/CLKI
中断
控制器
23
时序
发生
FRC/LPRC
振荡器
高精度
带隙
参考
稳压器
23
PCU
堆栈
控制
逻辑
地址总线
24
指令
译码和
控制
至各模块的
控制信号
上电延时
起振定时器
8
PCH PCL
程序计数器
循环
控制
逻辑
定时器
振荡器
上电
复位
看门狗
定时器
欠压
复位
16
X 数据总线
16
数据锁存器
X RAM
锁存器
ROM 锁存器
指令寄存器
DSP 引擎
除法支持
16
数据锁存器
地址
16
地址发生器单元
16
Y RAM
地址
锁存器
16
EA 多路开关
16
立即数数据
16 x 16
W 寄存器阵列
16 位 ALU
16
16
DMA
RAM
DMA
控制器
16
16
16
PORTA
PORTB
PORTC
可重映射的
引脚
VDDCORE /VCAP
PMP/
EPSP
RTCC
注: 并非在所有器件的引脚配置中都实现了全部的引脚或功能。请参见引脚图了解每个器件上的特定引脚和功能的信息。
DD 和 V SS
V
比较器
1, 2
DAC1
MCLR
ECAN1
SPI1, 2
定时器
1-5
IC1, 2, 7, 8
UART1, 2
CNx
ADC1
I2C1
输出比较 /
PWM1-4
DCI
DS70292A_CN 第 14 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 1-1 : 引脚说明
引脚名称
AN0-AN12
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
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/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. 超前信息 DS70292A_CN 第 15 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 1-1 : 引脚说明 (续)
引脚名称
引脚
类型
TMS
TCK
TDI
TDO
O
C1RX
C1TX
O
RTCC O —
CVREF OA N A
C1IN-
C1IN+
C1OUT
O
C2INC2IN+
C2OUT
PMA0
PMA1
PMA2 -PMPA10
PMBE
PMCS1
PMD0-PMPD7
PMRD
PMWR
DAC1RN
DAC1RP
DAC1RM
DAC1LN
DAC1LP
DAC1LM
O
I/O
I/O
O
O
O
I/O
O
O
O
O
O
O
O
O
COFS I/O ST
CSCK I/O ST
CSDI I ST
CSDO O —
PGD1/EMUD1
I/O
PGC1/EMUC1
PGD2/EMUD2
I/O
PGC2/EMUC2
PGD3/EMUD3
I/O
PGC3/EMUC3
MCLR
AV
DD PP
AV
SS PP
I/P ST
VDD P—
V
DDCORE P—
Vss P —
V
REF+ I Analog
V
REF- I Analog
图注: CMOS = CMOS 兼容输入或输出 Analog = 模拟输入 P = 电源
ST = CMOS 电平的施密特触发器输入 O = 输出 I = 输入
缓冲器
类型
I
I
I
I
ST
ST
ST
—
ST
—
JTAG 测试模式选择引脚。
JTAG 测试时钟输入引脚。
JTAG 测试数据输入引脚。
JTAG 测试数据输出引脚。
ECAN1 总线接收引脚。
ECAN1 总线发送引脚。
说明
实时时钟闹钟输出。
比较器参考电压输出。
I
I
I
I
ANA
ANA
—
ANA
ANA
—
ST
ST
—
—
—
ST
—
—
—
—
—
—
—
—
比较器 1 的负极输入。
比较器 1 的正极输入。
比较器 1 的输出。
比较器 2 的负极输入。
比较器 2 的正极输入。
比较器 2 的输出。
并行主端口地址 bit 0 的输入 (带缓冲的从模式)和输出 (主模式)。
并行主端口地址 bit 1 的输入 (带缓冲的从模式)和输出 (主模式)。
并行主端口地址 (非复用的主模式)。
并行主端口字节使能选通。
并行主端口片选 1 选通。
并行主端口数据 (非复用的主模式)或地址 / 数据 (复用的主模式)。
并行主端口读选通。
并行主端口写选通。
DAC1 右通道的负极输出。
DAC1 右通道的正极输出。
DAC1 右通道的中点值 (典型值为 1.65V)。
DAC1 左通道的负极输出。
DAC1 左通道的正极输出。
DAC1 左通道的中点值 (典型值为 1.65V)。
数据转换器接口帧同步引脚。
数据转换器接口串行时钟输入 / 输出引脚。
数据转换器接口串行数据输入引脚。
数据转换器接口串行数据输出引脚。
ST
I
ST
ST
I
ST
ST
I
ST
编程 / 调试通信通道 1 使用的数据 I/O 引脚。
编程 / 调试通信通道 1 使用的时钟输入引脚。
编程 / 调试通信通道 2 使用的数据 I/O 引脚。
编程 / 调试通信通道 2 使用的时钟输入引脚。
编程 / 调试通信通道 3 使用的数据 I/O 引脚。
编程 / 调试通信通道 3 使用的时钟输入引脚。
主复位输入。此引脚为低电平有效的器件复位输入端。
模拟模块的正电源。
模拟模块的参考地。
外设逻辑和 I/O 引脚的正电源。
CPU 逻辑滤波电容连接。
逻辑和 I/O 引脚的参考地。
模拟参考电压 (高电压)输入。
模拟参考电压 (低电压)输入。
DS70292A_CN 第 16 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2.0 CPU
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》的“第 2 章 CPU ”(DS70204A_CN ),
该文档也能从 Microchip 网站
(www.microchip.com )下载。
2.1 概述
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 CPU 模块采用 16 位( 数
据)的改进型哈佛架构,具有增强指令集,其中包括对
DSP 的强大支持。CPU 具有 24 位指令字,指令字带有
长度可变的操作码字段。程序计数器(Program
Counter , PC )为 23 位宽,可以寻址最大 4M x 24 位
的用户程序存储空间。实际实现的程序存储容量因器件
而异。单周期指令预取机制可帮助维持吞吐量并使指令
的执行具有预测性。除了改变程序流的指令、双字传送
(MOV.D )指令和表指令以外,所有指令都在单个周期
内执行。使用 DO 和 REPEAT 指令支持无开销的程序循
环结构,这两条指令在任何时间都可以被中断。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 器件在编程模型中有 16
个 16 位工作寄存器。每个工作寄存器都可以充当数据、
地址或地址偏移量寄存器。第 16 个工作寄存器(W15 )
作为软件堆栈指针(Stack Pointer ,SP ),用于中断和
调用。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 器件具有两类指令:MCU
类指令和 DSP 类指令。这两类指令无缝地集成到单个
CPU 中。指令集包含多种寻址模式,指令的设计可使 C
编译器的效率达到最优。对于大多数指令,
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 能够在每个指令周期内执
行一次数据 (或程序数据)存储器读取、一次工作寄存
器 (数据)读取、一次数据存储器写入以及一次程序
(指令)存储器读取操作。因此,支持 3 操作数指令,
允许在单个周期内执行 A + B = C 这样的操作。
CPU 的框图如图 2-1 所示,dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
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. 超前信息 DS70292A_CN 第 17 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2.4 MCU 的特性
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 支持小数和整数的 16/16
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/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 : dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
CPU 内核框图
PSV 和表
数据访问
控制模块
23
地址锁存器
中断
控制器
8
23
23
PCU
程序计数器
堆栈
控制
逻辑
16
PCH PCL
循环
控制
逻辑
Y 数据总线
X 数据总线
16
16
数据锁存器
X RAM
地址
锁存器
16
地址发生器单元
数据锁存器
16
Y RAM
地址
锁存器
16
DMA
RAM
16
DMA
控制器
程序存储器
数据锁存器
地址总线
24
指令
译码和
控制
至各模块的
控制信号
ROM 锁存器
DSP 引擎
除法支持
指令寄存器
EA 多路开关
16
16
立即数数据
16 x 16
W 寄存器阵列
16 位 ALU
16
16
16
至外设模块
DS70292A_CN 第 18 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 2-2 : dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
7
22
22
TBLPAG
PSVPAG
AD39 AD0 AD31
ACCA
ACCB
0
数据表页地址
0
程序空间可视性页地址
15
15
DOSTART
DOEND
SPLIM
RCOUNT
DCOUNT
PC0
0
堆栈指针限制寄存器
AD15
程序计数器
0
REPEAT 循环计数器
0
DO 循环计数器
0
DO 循环起始地址
DO 循环结束地址
15
CORCON
OA OB SA SB
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 19 页
OAB SAB
SRH
DA DC
IPL2 IPL1
RA
IPL0 OV
SRL
0
内核配置寄存器
N
C
Z
状态寄存器
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 。
DS70292A_CN 第 20 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 21 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 未实现:读为 0
bit 12
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 = 正在进行 0 层 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 中断优先级。
DS70292A_CN 第 22 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 23 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2.6 算术逻辑单元 ( ALU)
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 ALU 为 16 位宽,并能进
行加法、减法、移位和逻辑运算。除非特别指明,算术
运算一般采用二进制补码。根据不同的运算,ALU 可能
会影响 SR 寄存器中的进位标志位 (C )、全零标志位
(Z )、负标志位 (N )、溢出标志位 (OV )和半进位
标志位 (DC )的值。在减法运算中, C 和 DC 状态位
分别作为借位
根据所使用的指令模式,ALU 可执行 8 位或 16 位运算。
根据指令的寻址模式, ALU 运算的数据可以来自 W 寄
存器阵列或数据存储器。同样,ALU 的输出数据可被写
入 W 寄存器阵列或数据存储单元。
有关每条指令所影响的 SR 位的信息,请参见
《dsPIC30F/33F 程序员参考手册》(DS70157B_CN)。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/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 位加法器 / 减法器 (两个目标累加
器、舍入逻辑和饱和逻辑)组成。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/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 所示。
DS70292A_CN 第 24 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 引擎框图
有
无
无
有
无
无
无
无
有
Y 数据总线
40
进位 / 借位输出
进位 / 借位输入
40 位累加器 A
40 位累加器 B
饱和
加法器
取补
40
40
符号扩展
33
40
桶形
移位
寄存器
32
32
40
16
40
补零
舍入
逻辑
饱
16
和
X 数据总线
16
17 位
乘法器 / 定标器
16
至 / 来自 W 阵列
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 25 页
16
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2.7.1 乘法器
17 位 x 17 位乘法器可以进行有符号或无符号运算,其
输出经过定标器进行换算后可支持 1.31 小数( Q31)或
32 位整数结果。无符号操作数经过零扩展后,送入乘法
器输入值的第 17 位。有符号操作数经过符号扩展后,送
入乘法器输入值的第 17 位。17 位 x 17 位乘法器 / 定标
器的输出是 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
位将产生算术警告陷阱。
DS70292A_CN 第 26 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 27 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 。
DS70292A_CN 第 28 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
3.0 存储器构成
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》的 “第 4 章 程序存储器”
(DS70202A_CN ),该文档也能从
Microchip 网站 (www.microchip.com )下
载。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 架构具有独立的程序和数
据存储空间以及总线。这一架构同时还允许在代码执行
3.1 程序地址空间
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 器件的程序存储空间可存
储 4M 个指令字。可通过由程序执行过程中 23 位程序计
数器 (PC )和第 3.6 节 “程序存储空间与数据存储空
间的接口”中所述的表操作或数据空间重映射得到的 24
位值寻址这一空间。
用户只能访问程序存储空间的低半地址部分(地址范围
为 0x000000 至 0x7FFFFF )。使用 TBLRD/TBLWT 指
令时,情况有所不同,这两条指令采用 TBLPAG<7> 以
允许访问配置存储空间中的配置位和器件 ID 。
图 3-1 给出了 dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
X04 器件的存储器映射情况。
过程中从数据空间直接访问程序存储器。
图 3-1 : dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
器件的程序存储器映射
dsPIC33FJ32GP302/304
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
(11264 指令字)
用户存储空间
未实现
(读为 0)
dsPIC33FJ64GPX02/X04
GOTO 指令
复位地址
中断向量表
保留
备用向量表
用户闪存
程序存储器
(22016 指令字)
未实现
(读为 0)
dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第29 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
3.1.1 程序存储器构成
程序存储空间由可字寻址的块构成。虽然它被视为 24 位
宽,但将程序存储器的每个地址视作一个低位字和一个
高位字的组合更加合理,其中高位字的高字节部分没有
实现。低位字的地址始终为偶数,而高位字的地址为奇
数(图3-2 )。
程序存储器地址始终在低位字处按字对齐,并且在代码
执行过程中地址将递增或递减 2 。这种寻址模式与数据
存储空间寻址兼容,且为访问程序存储空间中的数据提
供了可能。
3.1.2 中断和陷阱向量
所有 dsPIC33FJ32GP302/304 、dsPIC33FJ64GPX02/
X04 和 dsPIC33FJ128GPX02/X04 器件中从 0x00000
到 0x000200 之间的地址空间都是保留的,用来存储硬
图 3-2 : 程序存储器构成
msw
地址 ( lsw 地址)
0x000001
0x000003
0x000005
0x000007
00000000
00000000
00000000
00000000
最高有效字
23
编码的程序执行向量。提供了一个硬件复位向量将代码
执行从器件复位时 PC 的默认值重新定位到代码实际起
始处。用户可在地址 0x000000 处编写一条 GOTO 指令
以将代码的实际起始地址设置为 0x000002 。
dsPIC33FJ32GP302/304、dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 器件也具有两个中断向量
表,地址分别为从 0x000004 到 0x0000FF 和 0x000100
到0x0001FF 。这两个向量表允许使用不同的中断服务程
序(Interrupt Service Routines,ISR )处理每个器件中
断源。关于中断向量表更详细的讨论,请参见第 6.1 节
“中断向量表”。
最低有效字
PC 地址
0 8 16
0x000000
0x000002
0x000004
0x000006
程序存储器
“虚拟”字节
(读为 0 )
指令宽度
DS70292A_CN 第 30 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
3.2 数据地址空间
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/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 节 “使用程序空间可视性读程
序存储器中的数据”)。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 器件共实现了最大 16 KB
的数据存储空间。如果 EA 指向了该区域以外的存储单
元,则将返回一个全零的字或字节。
3.2.1 数据空间宽度
数据存储空间组织为可字节寻址的 16 位宽的块。在数
据存储器和寄存器中的数据是以16 位字为单位对齐的,
但所有数据空间 EA 都将解析为字节。每个字的低字节
(Least Significant Byte ,LSB )部分具有偶地址,而高
字节 (Most Significant Byte , MSB )部分则具有奇地
址。
3.2.2 数据存储器构成和对齐方式
为维持与 PIC
空间的使用效率,dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
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)占 用。 dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
X04 内核和外设模块使用这些寄存器来控制器件的工
作。
SFR 分布在受其控制的模块中,通常一个模块会使用一
组 SFR 。大部分 SFR 空间包含未用的存储单元;它们
读为 0 。
注: 不同器件的实际外设功能集和中断也各不
相同。关于特定器件的信息,请参见相应
器件的数据表和引脚图。
3.2.4 NEAR 数据空间
在 0x0000 和 0x1FFF 之间的 8 KB 的区域被称为 near
数据空间。可以使用所有存储器直接寻址指令中的13 位
绝对地址字段直接寻址这一空间中的存储单元。此外,
还可以使用 MOV 指令寻址整个数据空间,支持使用 16
位地址字段的存储器直接寻址模式或使用工作寄存器作
为地址指针的间接寻址模式。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第31 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 3-3 :带 有4 KB RAM 的 dsPIC33FJ32GP302/304 器件的数据存储器映射
2 KB
SFR 空间
4 KB
SRAM 空间
MSb
地址
0x0000
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
DS70292A_CN 第 32 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 3-4 :带 有8 KB RAM 的 dsPIC33FJ128GP202/204 和 dsPIC33FJ64GP202/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. 超前信息 DS70292A_CN 第33 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 3-5 :带 有16 KB RAM 的 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/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
DS70292A_CN 第 34 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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)将同时使用X 数据空间和 Y 数据空间,从
而提供两条可同时对数据进行读操作的路径。
X 和 Y 数据空间都支持所有指令的模寻址,但要受到寻
址模式的限制。位反转寻址模式只是在写 X 数据空间时
才支持。
所有数据存储器写操作 (包括 DSP 指令中的数据存储
器写操作)均把数据空间视为组合的 X 和 Y 地址空间。
X 和 Y 数据空间的分界取决于具体的器件,且不能由用
户编程。
所有有效地址均为16 位宽并且指向数据空间内的字节。
因此,数据空间地址范围为 64 KB 或 32K 字,尽管不同
器件上实际实现的存储单元有所不同。
3.2.6 DMA RAM
每个 dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/
X04 和 dsPIC33FJ128GPX02/X04 器件包含最多 2 KB
的双端口 DMA RAM,位于 Y 数据空间的末端。 DMA
RAM 空间中的存储单元可被 CPU 和 DMA 控制器模块
同时访问。 DMA 控制器使用 DMA RAM 存储使用 DMA
传输到各个外设的数据,以及使用 DMA 从各个外设传输
进来的数据。 DMA 控制器可以在不占用 CPU 周期的情
况下访问 DMA RAM 。
当 CPU 和 DMA 控制器尝试同时写同一个 DMA RAM 单
元时,硬件确保 CPU 具有优先访问权。因此, DMA
RAM 提供了传输 DMA 数据的可靠方式,而无须暂停
CPU。
注: 在不需要使用 DMA 功能的应用中, DMA
RAM 可作为通用数据存储区使用。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第35 页
DS70292A_CN 第 36 页 超前信息 2008 Microchip Technology Inc.
表 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
MODCON 0046 XMODEN YMODEN
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
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
循环计数器寄存器
— — — — — —
— — — — — — — — —
—
— — US EDT DL<2:0>
— —
—
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
— — —
SATA SATB SATDW ACCSAT IPL3 PSV RND IF
程序计数器高字节寄存器
表页地址指针寄存器
程序存储器可视性页地址指针寄存器
DOSTARTH<5:0> 00xx
—
DOENDH 00xx
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
所有复位
时的状态
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. 超前信息 DS70292A_CN 第 37 页
表 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 )。复位值以十六进制显示。
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
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-2 : dsPIC33FJ128GP202/802 、 dsPIC33FJ64GP202/802 和 dsPIC33FJ32GP302 的电平变化通知寄存器映射
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
— — —
— —
—
— —
CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE
CN24IE CN23IE CN22IE CN21IE
—
—
CN24PUE CN23PUE CN22PUE CN21PUE
CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE
— — — —
— — — —
CN16IE
CN16PUE
所有复
位时的
状态
0000
0000
0000
0000
表 3-3: dsPIC33FJ128GP204/804、 dsPIC33FJ64GP204/804 和 dsPIC33FJ32GP304 的电平变化通知寄存器映射
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
DS70292A_CN 第 38 页 超前信息 2008 Microchip Technology Inc.
表 3-4 : 中断控制器寄存器映射
SFR 名称
INTCON1 0080 NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE SFTACERR DIV0ERR DMACERR MATHERR ADDRERR STKERR OSCFAIL
INTCON2 0082 ALTIVT DISI
IFS0 0084
IFS1 0086 U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF DMA2IF IC8IF IC7IF
IFS2 0088
IFS3 008A
IFS4 008C DAC1LIF
IEC0 0094
IEC1 0096 U2TXIE U2RXIE INT2IE T5IE T4IE OC4IE OC3IE DMA2IE IC8IE IC7IE
IEC2 0098
IEC3 009A FLTA1IE RTCIE DMA5IE DCIIE DCIEIE
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
IPC19 00CA
INTTREG 00E0
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
注 1 : 在不具有 ECAN™ 模块的器件上被禁止的中断。
SFR
地址
2: 在不具有音频 DAC 模块的器件上被禁止的中断。
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
—
— — — — — — — — —
—
DMA1IF AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF T2IF OC2IF IC2IF DMA0IF T1IF OC1IF IC1IF INT0IF 0000
—
—
—
—
DMA4IF PMPIF
RTCIF DMA5IF DCIIF DCIEIF
(2)
DAC1RIF
(2)
— — — — — — —
— — — — — — — —
— — — — — — — — — — —
(1)
C1TXIF
DMA7IF DMA6IF CRCIF U2EIF U1EIF
DMA1IE AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE T2IE OC2IE IC2IE DMA0IE T1IE OC1IE IC1IE INT0IE 0000
—
—
DMA4IE PMPIE
— — — — — — — —
—
INT1IF CNIF CMIF MI2C1IF SI2C1IF 0000
DMA3IF C1IF
INT1IE CNIE CMIE MI2C1IE SI2C1IE 0000
DMA3IE C1IE
—
INT2EP INT1EP INT0EP 0000
(1)
(1)
C1RXIF
C1RXIE
(1)
SPI2IF SPI2EIF 0000
(1)
SPI2IE SPI2EIE 0000
—
— — — — — — — — — — —
(2)
DAC1RIE
—
—
—
— — — — —
—
—
—
—
—
— — — — — — — — — — — — —
— — — —
—
— — — — —
—
— — — — —
—
— — — —
(2)
— — — — — — —
T1IP<2:0>
T2IP<2:0>
U1RXIP<2:0>
—
—
—
OC1IP<2:0>
OC2IP<2:0>
SPI1IP<2:0>
DMA1IP<2:0>
CNIP<2:0>
IC8IP<2:0>
T4IP<2:0>
U2TXIP<2:0>
C1IP<2:0>
DCIEIP<2:0>
(1)
—
—
—
—
—
—
CMIP<2:0>
IC7IP<2:0>
OC4IP<2:0>
U2RXIP<2:0>
C1RXIP<2:0>
DMA4IP<2:0>
— — — — — — — — — — — —
RTCIP<2:0>
CRCIP<2:0>
—
U2EIP<2:0>
C1TXIP<2:0>
DAC1LIP<2:0>
(2)
—
DAC1RIP<2:0>
ILR<3:0>>
(1)
C1TXIE
—
—
—
—
—
— — — — —
—
—
(1)
—
DMA7IE DMA6IE CRCIE U2EIE U1EIE
IC1IP<2:0>
IC2IP<2:0>
SPI1EIP<2:0>
AD1IP<2:0>
MI2C1IP<2:0>
—
—
—
—
—
INT0IP<2:0> 4444
DMA0IP<2:0> 4444
T3IP<2:0> 4444
U1TXIP<2:0> 0444
SI2C1IP<2:0> 4444
INT1IP<2:0> 4404
OC3IP<2:0>
INT2IP<2:0>
SPI2IP<2:0>
—
—
—
DMA2IP<2:0> 4444
T5IP<2:0> 4444
SPI2EIP<2:0> 4444
—
DMA3IP<2:0> 0004
—
—
—
(1)
(2)
—
— — — — — — — —
—
PMPIP<2:0>
DMA5IP<2:0>
U1EIP<2:0>
DMA7IP<2:0>
— —
—
—
DCIIP<2:0> 4440
—
— — — —
—
DMA6IP<2:0> 0444
VECNUM<6:0> 4444
所有
复位时
的状态
0000
0000
0000
0000
0000
0440
0440
4440
4400
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 39 页
表 3-5 : 定时器寄存器映射
SFR
SFR 名称
TMR1 0100
PR1 0102
T1CON 0104 TON —T S I D L— — — — — — TGATE TCKPS<1:0> —T S Y N CT C S —
TMR2 0106
TMR3HLD 0108
TMR3 010A
PR2 010C
PR3 010E
T2CON 0110 TON —T S I D L
T3CON 0112 TON —T S I D L— — — — — — TGATE TCKPS<1:0> — —T C S—
TMR4 0114
TMR5HLD 0116
TMR5 0118
PR4 011A
PR5 011C
T4CON 011E TON —T S I D L— — — — — — TGATE TCKPS<1:0> T32 —T C S—
T5CON 0120 TON —T S I D L— — — — — — TGATE TCKPS<1:0> — —T C S—
图注: 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
地址
Timer1
寄存器
周期寄存器
Timer2
Timer3
保持寄存器 (仅适用于32位定时器操作)
Timer3
周期寄存器
周期寄存器
—
— — — — — TGATE TCKPS<1:0> T32 —T C S—
Timer4
Timer5
保持寄存器 (仅适用于32位定时器操作)
Timer5
周期寄存器
周期寄存器
1
寄存器
寄存器
2
3
寄存器
寄存器
4
5
所有复
位时的
状态
xxxx
FFFF
0000
xxxx
xxxx
xxxx
FFFF
FFFF
0000
0000
xxxx
xxxx
xxxx
FFFF
FFFF
0000
0000
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-6 : 输入捕捉寄存器映射
SFR
SFR 名称
IC1BUF 0140
IC1CON 0142 — —I C S I D L— — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
IC2BUF 0144
IC2CON 0146 — —I C S I D L— — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
IC7BUF 0158
IC7CON 015A — —I C S I D L— — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>
IC8BUF 015C
IC8CON 015E — —I C S I D L— — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<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
地址
输入1捕捉寄存器
输入2捕捉寄存器
输入7捕捉寄存器
输入8捕捉寄存器
所有复
位时的
状态
xxxx
0000
xxxx
0000
xxxx
0000
xxxx
0000
DS70292A_CN 第 40 页 超前信息 2008 Microchip Technology Inc.
表 3-7 : 输出比较寄存器映射
SFR 名称
OC1RS 0180
OC1R 0182
OC1CON 0184 — —O C S I D L— — — — — — — — OCFLT OCTSEL OCM<2:0>
OC2RS 0186
OC2R 0188
OC2CON 018A — —O C S I D L— — — — — — — — OCFLT OCTSEL OCM<2:0>
OC3RS 018C
OC3R 018E
OC3CON 0190 — —O C S I D L— — — — — — — — OCFLT OCTSEL OCM<2:0>
OC4RS 0192
OC4R 0194
OC4CON 0196 — —O C S I D L— — — — — — — — OCFLT OCTSEL OCM<2:0>
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
SFR
地址
表 3-8 : 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
输出比较1辅助寄存器
输出比较1寄存器
输出比较2辅助寄存器
输出比较2寄存器
输出比较3辅助寄存器
输出比较3寄存器
输出比较4辅助寄存器
输出比较4寄存器
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bi t 7B i t 6B i t 5B i t 4B i t 3B i t 2B i t 1B i t 0
接收寄存器
发送寄存器
波特率发生器寄存器
地址寄存器
地址掩码寄存器
所有复位
时的状态
xxxx
xxxx
0000
xxxx
xxxx
0000
xxxx
xxxx
0000
xxxx
xxxx
0000
所有复位
时的状态
0000
00FF
0000
1000
0000
0000
0000
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-9 : 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
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 41 页
表 3-10 : 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 — — — — — —
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
表 3-11: SPI1 寄存器映射
SFR
SFR 名称
SPI1STAT 0240 SPIEN — SPISIDL — — — — — —S P I R O V— — — — SPITBF SPIRBF
SPI1CON1 0242 — — — DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE<2:0> PPRE<1:0>
SPI1CON2 0244 FRMEN SPIFSD FRMPOL — — — — — — — — — — — FRMDLY —
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
地址
表 3-12 : SPI2 寄存器映射
SFR
SFR 名称
SPI2STAT 0260 SPIEN — SPISIDL — — — — — —S P I R O V— — — — SPITBF SPIRBF
SPI2CON1 0262 — — — DISSCK DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE<2:0> PPRE<1:0>
SPI2CON2 0264 FRMEN SPIFSD FRMPOL — — — — — — — — — — — FRMDLY —
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
地址
URX8
—
波特率发生器预分频器
SPI1
发送和接收缓冲寄存器
SPI2
发送和接收缓冲寄存器
UART
UART
发送寄存器
接收寄存器
所有复位
时的状态
0000
0110
xxxx
0000
0000
所有复位
时的状态
0000
0000
0000
0000
所有复位
时的状态
0000
0000
0000
0000
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
DS70292A_CN 第 42 页 超前信息 2008 Microchip Technology Inc.
表 3-13 : dsPIC33FJ64GP202/802 、 dsPIC33FJ128GP202/802 和 dsPIC33FJ32GP302 的 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)。复位值以十六进制显示。
表 3-14 : dsPIC33FJ64GP204/804 、 dsPIC33FJ128GP204/804 和 dsPIC33FJ32GP304 的 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
ADC 数据缓冲器 0
—
ADSIDL ADDMABM
— —
— —
— — — — —
— —
— — —
— — —
— — — — — — — — — — — — —
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
— —
— — — — —
— —
— — —
— — —
— — — — — — — — — — — — —
PCFG12 PCFG11 PCFG10 PCFG9
CSS12 CSS11 CSS10 CSS9
— —
PCFG12 PCFG11 PCFG10 PCFG9 PCFG8 PCFG7 PCFG6 PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000
CSS12 CSS11 CSS10 CSS9 CSS8 CSS7 CSS6 CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 0000
—
AD12B FORM<1:0> SSRC<2:0>
CSCNA CHPS<1:0> BUFS
SAMC<4:0>
CH123NB<1:0> CH123SB
CH0SB<4:0> CH0NA
— — —
— — —
ADC 数据缓冲器 0
—
AD12B FORM<1:0> SSRC<2:0>
CSCNA CHPS<1:0> BUFS
SAMC<4:0>
CH123NB<1:0> CH123SB
CH0SB<4:0> CH0NA
—
SIMSAM ASAM SAMP DONE 0000
—
— —
— — — — —
— —
PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000
CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 0000
—
— —
— — — — —
— —
SMPI<3:0> BUFM ALTS 0000
—
SIMSAM ASAM SAMP DONE 0000
SMPI<3:0> BUFM ALTS 0000
ADCS<7:0> 0000
CH123NA<1:0> CH123SA 0000
CH0SA<4:0> 0000
DMABL<2:0>
ADCS<7:0> 0000
CH123NA<1:0> CH123SA 0000
CH0SA<4:0> 0000
DMABL<2:0>
所有复
位时的
状态
xxxx
0000
所有复
位时的
状态
xxxx
0000
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-15 : dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/804 的 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
—
LMVOEN
— —
— — —
LITYPE LFULL LEMPTY ROEN
FORM
—
—
RMVOEN
DACFDIV<6:0>
— —
RITYPE RFULL REMPTY
所有复
位时的
状态
0000
0000
0000
0000
0000
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 43 页
表 3-16 : 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
— — — — —
— — — — — — — —
— — — — — —
— — — — —
— — — — — — — —
— — — — — —
— — — — —
— — — — — — — —
— — — — — —
— — — — —
— — — — — — — —
— — — — — —
— — — — —
— — — — — — — —
— — — — — —
— — — — —
— — — — — — — —
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
所有复
位时的
状态
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
DS70292A_CN 第 44 页 超前信息 2008 Microchip Technology Inc.
表 3-16 : 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<1 5: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
— — — — — —
— — — — — — — —
— — — — — —
— — — — — — — —
— — — — — —
— — — —
— — — — —
— — — — —
LSTCH<3:0> PPST7 PPST6 PPST5 PPST4 PPST3 PPST2 PPST1 PPST0 0000
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
AMODE<1:0>
CNT<9:0> 0000
— —
IRQSEL<6:0> 0000
— —
IRQSEL<6:0> 0000
MODE<1:0> 0000
MODE<1:0> 0000
所有复
位时的
状态
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 45 页
表 3-17 :当C1CTRL1.WIN = 0 或 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/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
— —
— — — — — — — — — — —
— — —
— —
— —
— — — — — — — —
— — — — — — — —
—
WAKFI L
FLTEN15 FLTEN14 FLTEN13 FLTEN12 FLTEN11 FLTEN10 FLTEN9 FLTEN8 FLTEN7 FLTEN6 FLTEN5 FLTEN4 FLTEN3 FLTEN2 FLTEN1 FLTEN0
CSIDL ABAT CANCKS REQOP<2:0> OPMODE<2:0>
FILHIT<4:0>
— — — — — — — —
FBP<5:0>
TXBO TXBP RXBP TXWAR RXWAR EWARN IVRIF WAKIF ERRIF
— — —
SEG2PH<2:0> SEG2PHTS SAM SEG1PH<2:0> PRSEG<2:0> 0000
—
— —
IVRIE WAKIE ERRIE
SJW<1:0> BRP<5:0> 0000
—
CANCAP
ICODE<6:0> 0000
FNRB<5:0> 0000
—
FIFOIF RBOVIF RBIF TBIF 0000
—
FIFOIE RBOVIE RBIE TBIE 0000
— —
DNCNT<4:0> 0000
FSA<4:0>
所有复
位时的
状态
WIN 0480
0000
FFFF
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-18 :当C1CTRL1.WIN = 0 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/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
DS70292A_CN 第 46 页 超前信息 2008 Microchip Technology Inc.
表 3-19 :当C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/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 时的定义
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
MIDE
MIDE
MIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
EXIDE
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
所有复位
时的状态
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 47 页
表 3-19 :当C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 (对于 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/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
—
EXIDE
—
EXIDE
—
EXIDE
—
EXIDE
—
—
—
—
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
EID<17:16> xxxx
所有复位
时的状态
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-20 : DCI 寄存器映射
SFR 名称 地址
DCICON1 0280 DCIEN
DCICON2 0282
DCICON3 0284
DCISTAT 0286
TSCON 0288 TSE15 TSE14 TSE13 TSE12 TSE11 TSE10 TSE9 TSE8 TSE7 TSE6 TSE5 TSE4 TSE3 TSE2 TSE1 TSE0 0000 0000 0000 0000
RSCON 028C RSE15 RSE14 RSE13 RSE12 RSE11 RSE10 RSE9 RSE8 RSE7 RSE6 RSE5 RSE4 RSE3 RSE2 RSE1 RSE0 0000 0000 0000 0000
RXBUF0 0290
RXBUF1 0292
RXBUF2 0294
RXBUF3 0296
TXBUF0 0298
TXBUF1 029A
TXBUF2 029C
TXBUF3 029E
图注: — = 未实现 (读为 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
—
DCISIDL
— — — —
— — — —
— — — —
—
DLOOP CSCKD CSCKE COFSD UNFM CSDOM DJST
BLEN1 BLEN0
SLOT3 SLOT2 SLOT1 SLOT0
—
接收缓冲器 0 数据寄存器
接收缓冲器 1 数据寄存器
接收缓冲器 2 数据寄存器
接收缓冲器 3 数据寄存器
发送缓冲器 0 数据寄存器
发送缓冲器 1 数据寄存器
发送缓冲器 2 数据寄存器
发送缓冲器 3 数据寄存器
COFSG<3:0>
— — — —
— — —
—
BCG<11:0> 0000 0000 0000 0000
ROV RFUL TUNF TMPTY 0000 0000 0000 0000
COFSM1 COFSM0 0000 0000 0000 0000
WS<3:0> 0000 0000 0000 0000
复位状态
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
DS70292A_CN 第 48 页 超前信息 2008 Microchip Technology Inc.
表 3-21 : 外设引脚选择输入寄存器映射
寄存器名称 地址
RPINR0
RPINR1
RPINR3
RPINR4
RPINR7
RPINR10
RPINR11
RPINR18
RPINR19
RPINR20
RPINR21
RPINR22
RPINR23
RPINR24
RPINR24
RPINR26
图注: x = 复位时的未知值, — = 未实现 (读为 0)。复位值以十六进制显示。
注 1 : 该寄存器仅存在于 dsPIC33FJ128GP802/804 和 dsPIC33FJ64GP802/804 上。
0680
0682
0686
0688
068E
0694
0696
06A4
06A6
06A8
06AA
06AC
06AE
06B0
06B2
(1)
06B4
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
— — —
— — — — — — — — — — —
— — —
— — —
— — —
— — —
— — — — — — — — — — —
— — —
— — —
— — —
— — — — — — — — — — —
— — —
— — — — — — — — — — —
— — —
— — —
— — — — — — — — — — —
INT1R<4:0>
T3CKR<4:0>
T5CKR<4:0>
IC2R<4:0>
IC8R<4:0>
U1CTSR<4:0>
U2CTSR<4:0>
SCK1R<4:0>
SCK2R<4:0>
CSCKR<4:0>
COFSR<4:0>
— — — — — — — —
INT2R<4:0>
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — — — — — — —
T2CKR<4:0>
T4CKR<4:0>
IC1R<4:0>
IC7R<4:0>
OCFAR<4:0>
U1RXR<4:0>
U2RXR<4:0>
SDI1R<4:0>
SS1R<4:0>
SDI2R<4:0>
SS2R<4:0>
CSDIR<4:0>
C1RXR<4:0>
所有复
位时的
状态
1F00
001F
1F1F
1F1F
1F1F
1F1F
001F
1F1F
1F1F
1F1F
001F
1F1F
001F
1F1F
001F
001F
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 49 页
表 3-22 : dsPIC33FJ128GP202/802 、 dsPIC33FJ64GP202/802 和 dsPIC33FJ32GP302 的外设引脚选择输出寄存器映射
寄存器名称 地址
RPOR0
RPOR1
RPOR2
RPOR3
RPOR4
RPOR5
RPOR6
RPOR7
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
06C0
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
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
RP1R<4:0>
RP3R<4:0>
RP5R<4:0>
RP7R<4:0>
RP9R<4:0>
RP11R<4:0>
RP13R<4:0>
RP15R<4:0>
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
RP0R<4:0>
RP2R<4:0>
RP4R<4:0>
RP6R<4:0>
RP8R<4:0>
RP10R<4:0>
RP12R<4:0>
RP14R<4:0>
所有复位
时的状态
0000
0000
0000
0000
0000
0000
0000
0000
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-23 : dsPIC33FJ128GP204/804 、 dsPIC33FJ64GP204/804 和 dsPIC33FJ32GP304 的外设引脚选择输出寄存器映射
寄存器名称 地址
RPOR0
RPOR1
RPOR2
RPOR3
RPOR4
RPOR5
RPOR6
RPOR7
RPOR8
RPOR9
RPOR10
RPOR11
RPOR12
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
06C0
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
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
RP1R<4:0>
RP3R<4:0>
RP5R<4:0>
RP7R<4:0>
RP9R<4:0>
RP11R<4:0>
RP13R<4:0>
RP15R<4:0>
RP17R<4:0>
RP19R<4:0>
RP21R<4:0>
RP23R<4:0>
RP25R<4:0>
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
— — —
RP0R<4:0>
RP2R<4:0>
RP4R<4:0>
RP6R<4:0>
RP8R<4:0>
RP10R<4:0>
RP12R<4:0>
RP14R<4:0>
RP16R<4:0>
RP18R<4:0>
RP20R<4:0>
RP22R<4:0>
RP24R<4:0>
所有复位
时的状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
DS70292A_CN 第 50 页 超前信息 2008 Microchip Technology Inc.
表 3-24 : dsPIC33FJ128GP202/802 、 dsPIC33FJ64GP202/802 和 dsPIC33FJ32GP302 的并行主 / 从端口寄存器映射
寄存器名称 地址
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 )。复位值以十六进制显示。
0604
表 3-25 : dsPIC33FJ128GP204/804 、 dsPIC33FJ64GP204/804 和 dsPIC33FJ32GP304 的并行主 / 从端口寄存器映射
寄存器名称 地址
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 )。复位值以十六进制显示。
0604
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
ADDR15
IBF IBOV
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
ADDR15
IBF IBOV
CS1
CS1
— —
— —
ADDR<13:0>
并行端口数据输出寄存器1(缓冲器0和1)
并行端口数据输出寄存器2(缓冲器2和3)
并行端口数据输入寄存器1(缓冲器0和1)
并行端口数据输入寄存器2(缓冲器2和3)
IB3F IB2F IB1F IB0F OBE OBUF
ADDR<13:0>
并行端口数据输出寄存器1(缓冲器0和1)
并行端口数据输出寄存器2(缓冲器2和3)
并行端口数据输入寄存器1(缓冲器0和1)
并行端口数据输入寄存器2(缓冲器2和3)
IB3F IB2F IB1F IB0F OBE OBUF
— —
PTEN<10:0>
— —
PTEN<1 :0>
OB3E OB2E OB1E OB0E
OB3E OB2E OB1E OB0E
所有复
位时的
状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
所有复
位时的
状态
0000
0000
0000
0000
0000
0000
0000
0000
0000
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 51 页
表 3-26 : 实时时钟和日历寄存器映射
寄存器名称 地址
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
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-27 : 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-28 : 双比较器寄存器映射
寄存器名称 地址
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-29 : dsPIC33FJ128GP202/802 、 dsPIC33FJ64GP202/802 和 dsPIC33FJ32GP302 的 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
02C2
02C4
02C6
— — — — — — — — — — —
— — — — — — — — — — —
— — — — — — — — — — —
— — — — — — — — — — —
TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
RA4 RA3 RA2 RA1 RA0
LATA 4 L ATA3 L ATA2 L ATA1 L ATA0
ODCA4 ODCA3 ODCA2 ODCA1 ODCA0
所有复位
时的状态
079F
xxxx
xxxx
xxxx
DS70292A_CN 第 52 页 超前信息 2008 Microchip Technology Inc.
表 3-30 : dsPIC33FJ128GP204/804 、 dsPIC33FJ64GP204/804 和 dsPIC33FJ32GP304 的 PORTA 寄存器映射
寄存器名称 地址
TRISA
PORTA
LATA
ODCA
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
02C0
02C2
02C4
02C6
表 3-31 : 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
LAT B 0 2C C L ATB 15 LAT B14 LAT B1 3 L ATB 12 LAT B11 LAT B1 0 LAT B9 LAT B8 L ATB7 L ATB 6 LAT B5 LAT B4 L ATB 3 LAT B2 L ATB 1 L ATB0
ODCB 02CE
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
表 3-32 : dsPIC33FJ128GP204/804 、 dsPIC33FJ64GP204/804 和 dsPIC33FJ32GP304 的 PORTC 寄存器映射
寄存器名称 地址
TRISC 02D0
PORTC 02D2 — — — — — — RC9 RC8 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
LATC 02D4 — — — — — — LATC9 LATC8 LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0
ODCC 02D6 — — — — — —
图注: 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
— — — — —
— — — — —
— — — — —
— — — — —
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
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
— — — — — —
TRISA10 TRISA9 TRISA8 TRISA7
RA10 RA9 RA8 RA7
LATA10 LATA9 LATA8 LATA7
ODCA10 ODCA9 ODCA8 ODCA7
TRISC9 TRISC8 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
ODCC9 ODCC8 ODCC7 ODCC6 ODCC5 ODCC4 ODCC3 ODCC2 ODCC1 ODCC0
— —
— —
— —
— —
TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
RA4 RA3 RA2 RA1 RA0
LATA4 LATA3 LATA2 LATA1 LATA0
ODCA4 ODCA3 ODCA2 ODCA1 ODCA0
所有复位
时的状态
079F
xxxx
xxxx
xxxx
所有复位
时的状态
FFFF
xxxx
xxxx
xxxx
所有复位
时的状态
03FF
xxxx
xxxx
xxxx
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 53 页
表 3-33 : 系统控制寄存器映射
寄存器名称 地址
RCON 0740 TRAPR IOPUWR — — — — CM VREGS EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR
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
0742
0744 ROI DOZE<2:0> DOZEN FRCDIV<2:0> PLLPOST<1:0>
0746
0748
074A
—
— — — — — — —
— — — — — — — — — —
— —
COSC<2:0>
SELACLK AOSCMD<1:0> APSTSCLR<2:0> ASRCSEL
—
NOSC<2:0> CLKLOCK IOLOCK LOCK
—
—
PLLDIV<8:0> 0030
— — — — — — —
CF
—
PLLPRE<4::0> 0040
TUN<5:0> 0000
LPOSCEN OSWEN 0300
所有复位
时的状态
xxxx
0000
(1)
(2)
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-34 : 安全性寄存器映射
寄存器名称 地址
BSRAM 0750 — — — — — — — — — — — — — IW_BSR IR_BSR RL_BSR
SSRAM 0752
图注: x = 复位时的未知值, — = 未实现 (读为 0 )。复位值以十六进制显示。
注 1 : 该寄存器在带有 4K RAM 和 32K 闪存存储器的器件上不存在。
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
— — — — — — — — — — — — —
(1)
IW_ SSR
IR_SSR
所有复位
时的状态
RL_SSR
表 3-35 : 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>
所有复位
时的状态
表 3-36 : PMD 寄存器映射
寄存器名称 地址
PMD1 0770 T5MD T4MD T3MD T2MD T1MD
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
— —
— — — —
— — — — —
CMPMD RTCCMD PMPMD CRCMD DAC1MD
DCIMD
IC2MD IC1MD
I2C1MD U2MD U1MD SPI2MD SPI1MD
— — — —
— — — — — —
OC4MD OC3MD OC2MD OC1MD 0000
—
C1MD AD1MD 0000
所有复位
时的状态
0000
0000
0000
0000
0000
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
3.2.7 软件堆栈
除了用作工作寄存器外, dsPIC33FJ32GP302/304 、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
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
堆栈向高地址增长
PC<15:0>
000000000
< 空字 >
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 )使能时,
只能从安全段闪存代码进行访问。表 3-1 对 BSRAM 和
SSRAM SFR 进行了概括。
3.3 指令寻址模式
表 3-37 给出了基本的寻址模式,这些寻址模式经过优化
可以支持各指令的具体功能。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 位立即数寻址
注: 并非所有指令都支持上述所有的寻址模
式。各条指令可能支持这些寻址模式中的
某些模式。
DS70292A_CN 第 54 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-37 : 支持的基本寻址模式
寻址模式 说明
文件寄存器直接寻址 明确指定文件寄存器的地址。
寄存器直接寻址 直接访问寄存器的内容。
寄存器间接寻址 Wn 的内容形成有效地址 (EA )。
执行后修改的寄存器间接寻址 Wn 的内容形成 EA 。然后用一个常量值来修改 Wn (递增或递减)。
执行前修改的寄存器间接寻址 先用一个有符号常量值修改 Wn (递增或递减),再由此时的 Wn 内容形成 EA 。
带寄存器偏移量的寄存器间接寻址
(寄存器变址寻址)
带立即数偏移量的寄存器间接寻址 Wn 和立即数的和形成 EA 。
Wn 和 Wb 的和形成 EA。
3.3.3 传送指令和累加器指令
与其他指令相比,传送指令和 DSP 累加器类指令提供
了更为灵活的寻址模式。除了大多数 MCU 指令支持的
寻址模式以外,传送和累加器指令还支持带寄存器偏移
量的寄存器间接寻址模式,这也称为寄存器变址寻址模
式。
注: 对于 MOV 指令,指令中指定的寻址模式对
于源寄存器和目标寄存器 EA ,可以是不同
的。然而,4 位 Wb (寄存器偏移量)字段
为源寄存器和目标寄存器所共用 (但通常
只由其中之一使用)。
概括地说,传送和累加器指令支持以下寻址模式:
• 寄存器直接寻址
• 寄存器间接寻址
• 执行后修改的寄存器间接寻址
• 执行前修改的寄存器间接寻址
• 带寄存器偏移量的寄存器间接寻址 (变址寻址)
• 带立即数偏移量的寄存器间接寻址
•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. 超前信息 DS70292A_CN 第55 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
DS70292A_CN 第 56 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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> 是位反转地址修改量或 “中心点”(pivot
point),通常是一个常数。对于 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. 超前信息 DS70292A_CN 第57 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 3-38 : 位反转地址序列 (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
十进制
DS70292A_CN 第 58 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
3.6 程序存储空间与数据存储空间的接口
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 架构采用 24 位宽的程序
空间和 16 位宽的数据空间。该架构也是一种改进型哈
佛结构,这意味着数据也能存放在程序空间内。要成功
使用该数据,在访问数据时必须确保这两种存储空间中
的信息是对齐的。
除了正常执行外,dsPIC33FJ32GP302/304、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
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-39 和图 3-9 显示了如何通过表操作和重映射访问来
从数据 EA 创建程序 EA 。本文中,P<23:0> 指的是程序
空间字,而 D<15:0> 指的是数据空间字。
表 3-39 : 程序空间地址构成
访问类型 访问空间
指令访问
(代码执行)
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. 超前信息 DS70292A_CN 第59 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 : 不要求表操作是字对齐的。允许对配置存储空间执行表读操作。
DS70292A_CN 第 60 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第61 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 时:
程序空间
PSVPAG
02
由 PSVPAG 指定的
页中的数据被映射到
数据存储空间的高半
地址部分……
23 15 0
0x000000
0x010000
0x018000
序存储单元的高 8 位都应被设置为 1111 1111 或 0000
0000,强制为一条 NOP 指令,从而避免了可能出现意外
执行这一区域内代码的情况。
注: 在表读 / 写期间,暂时禁止 PSV 访问。
对于使用 PSV 而又在 REPEAT 循环外执行的操作,MOV
和 MOV.D 指令除了规定的执行时间之外,还需要一个额
外的指令周期。其他所有指令都需要在规定的执行时间
之外额外增加两个指令周期。
对于使用 PSV 而又在 REPEAT 循环内执行的操作,下
列情况,除了规定的指令执行时间之外,还需要两个额
外的指令周期:
• 在第一次迭代中执行的指令
• 在最后一次迭代中执行的指令
• 由于中断而退出循环之前执行的指令
• 中断得到处理后再次进入循环时执行的指令
REPEAT 循环的所有其他各次迭代,都允许使用 PSV 访
问数据的指令在一个周期内执行。
数据空间
0x0000
0x8000
数据 EA<14:0>
PSV 区域
……EA 的低 15 位指
定 PSV 区域内的确切
0xFFFF
0x800000
DS70292A_CN 第 62 页 超前信息 2008 Microchip Technology Inc.
地址。这与实际程序空
间地址的低 15 位是对
应的。
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
4.0 闪存程序存储器
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》的 “第 5 章 闪存编程”
(DS70191A_CN ),该文档也能从
Microchip 网站 (www.microchip.com )下
载。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 器件包含用于存储和执行
应用代码的内部闪存程序存储器。在整个 V
正常操作期间,存储器都是可读写可擦除的。
可采用两种方式对闪存存储器进行编程:
• 在线串行编程 ( In-Circuit Serial
Programming™, ICSP™)功能
• 运行时自编程 ( Run-Time Self-Programming,
RTSP)
ICSP 允许在最终的应用电路中对 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 器件进行串行编程。只需要
使用 5 根线就可以完成编程,它们分别是编程时钟线、
编程数据线(以下备用编程引脚对之一:PGC1/PGD1、
DD 范围内,
PGC2/PGD2 或 PGC3/PGD3)、电源线 (V
DD)、接
地线 (VSS )和主复位线 (MCLR )。这允许用户在生
产电路板时使用未编程器件,仅在产品交付之前才对数
字信号控制器进行编程,从而可以使用最新版本的固件
或者定制固件进行编程。
使用 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. 超前信息 DS70292A_CN 第 63 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
4.2 RTSP 工作原理
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 闪存程序存储器阵列是由
64 条指令或 192 字节的行组成的。RTSP 允许用户应用
程序一次擦除由 8 行数据(512 条指令)组成的程序存
储器页,一次编程一行或一个字。表 29-12 给出了典型
的擦除和编程次数。 8 行擦除页和单行写入行都是边界
对齐的,从程序存储器起始地址开始,分别到 1536 字
节边界和 192 字节边界。
程序存储器实现了保持缓冲器,它能缓冲 64 条指令的
编程数据。在实际编程操作前,必须将待写数据顺序装
入缓冲器。装入的指令字必须始终来自一组 64 个指令
字的边界。
RTSP 编程的基本步骤是先建立一个表指针,然后执行
一系列 TBLWT 指令将数据装入缓冲器。编程是通过将
NVMCON 寄存器中的控制位置 1 执行的。指令的装入
总共需要 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
位会自动清零。
DS70292A_CN 第 64 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 65 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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> :密钥寄存器 (只写)位
DS70292A_CN 第 66 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 67 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
DS70292A_CN 第 68 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
5.0 复位
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》的“第 8 章 复位”(DS70192A_CN ),
该文档也能从 Microchip 网站
(www.microchip.com )下载。
复位模块结合了所有复位源并控制器件的主复位信号
SYSRST。下面列出了器件的复位源:
•POR:上电复位
•BOR:欠压复位
•MCLR
•SWR:RESET 指令
•WDTO:看门狗定时器复位
•CM:配置不匹配复位
• TRAPR:陷阱冲突复位
•IOPUWR:非法条件器件复位
:主复位引脚复位
- 非法操作码复位
- 未初始化的 W 寄存器复位
- 安全性复位
图 5-1 给出了复位模块的简化框图。
任何有效的复位源都会使 SYSRST
信号有效。在系统复
位时,一些与 CPU 和外设相关的寄存器均会被强制为
已知的复位状态,其他则不受影响。
注: 如需了解寄存器复位状态的信息,请参见
本手册中特定的外设章节或第 2.0 节
“CPU ”。
任何类型的器件复位都会将RCON 寄存器中相应的状态
位置 1 ,以表明复位类型 (见寄存器 5-1 )。
POR 将清零除 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. 超前信息 DS70292A_CN 第 69 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
EXTR SWR SWDTEN
(2)
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 未实现:读为 0
bit 9
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 位的设置无关。
DS70292A_CN 第 70 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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. 超前信息 DS70292A_CN 第 71 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
5.1 系统复位
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 系列器件有两种类型的复
位:
• 冷复位
• 热复位
冷复位是上电复位 (POR )或欠压复位 (BOR )引起
的。冷复位时,FOSC 器件配置寄存器中的 FNOSC 配
置位用于选择器件时钟源。
热复位是所有其他复位源引起的,包括 RESET 指令。热
复位时,器件会继续根据振荡器控制
(OSCCON<14:12> )寄存器中的当前振荡器选择
(COSC<2:0> )位指定的当前时钟源运行。
器件将保持复位状态,直到系统电源稳定在适当电平,
并且振荡器时钟就绪。其时序详述如下,如图 5-2 所示。
1. POR 复位:电源打开时, POR 电路将器件保持
在复位状态。 POR 电路只有在 V
门限值,并且经过 TPOR 的延时后才会失效。
DD 超过 V POR
2. BOR 复位:片上稳压器的 BOR 电路会将器件保
持在复位状态,直到 V
BOR 的延时。延时 T BOR 确保了稳压器输
经过 T
DD 超过 V BOR 门限值,并
出稳定。
3. PWRT 定时器:可编程上电延时定时器会在 BOR
之后继续保持处理器复位状态一段特定时间
PWRT)。 TPWRT 的延时确保了系统电源已稳
(T
定在适当电平供全速工作。经过 TPWRT 的延时
后,SYSRST
变为无效,从而使选定振荡器开始
提供时钟。
4. 振荡器延时:表 5-1 给出了选定各种时钟源至
时钟准备就绪之间的总延时。更多信息,请参
见第 8.0 节 “振荡器配置”。
5. 振荡器时钟就绪时,处理器将从地址单元
0x000000 处开始执行。用户应用程序在复位地
址处设定一条 GOTO 指令,该指令会将程序重定
位到相应的启动程序开始执行。
6. 如果故障保护时钟监视器 (FSCM )已使能,将
在系统时钟就绪并且经过T
FSCM的延时后开始监
视系统时钟。
表 5-1 : 振荡器延时
振荡器模式 振荡器起振延时 振荡器起振定时器
OSCD ——TOSCD
FRC、 FRCDIV16
T
和 FRCDIVN
FRCPLL TOSCD —TLOCK TOSCD + TLOCK
XT TOSCD TOST —TOSCD + TOST
HS TOSCD TOST —TOSCD + TOST
E C ————
XTPLL T
OSCD TOST T LOCK TOSCD + TOST + T LOCK
HSPLL TOSCD T OST T LOCK TOSCD + TOST + T LOCK
ECPLL — — TLOCK TLOCK
SOSC TOSCD T OST —TOSCD + TOST
LPRC TOSCD ——TOSCD
注 1 : TOSCD = 振荡器起振延时 (FRC 的最大值为 1.1 µs , LPRC 的最大值为 70 µs )。晶振起振时间随晶体特
性、负载电容等变化。
OST = 振荡器起振定时器延时 (1024 个振荡器时钟周期)。例如, 10 MHz 晶振的 TOST = 102.4 µ s ,
2 : T
32 kHz 晶振的 T
3 : 如果 PLL 使能, T
OST =32ms。
LOCK = PLL 锁定时间 (标称值为 1.5 ms)。
PLL 锁定时间
总延时
DS70292A_CN 第 72 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 5-2 : 系统复位时序
VBOR
Vbor
VPOR
V
DD
TPOR
POR 复位
1
TBOR
BOR 复位
SYSRST
振荡器时钟
FSCM
器件状态
2
3
TPWRT
复位
时间
OSCD TOST
T
4
TLOCK
6
T
FSCM
5
运行
注 1 : POR 复位:电源打开时,POR 电路将器件保持在复位状态。 POR 电路只有在 VDD 超过 VPOR 门限值,并且
经过 T
POR 的延时后才会失效。
2 : BOR 复位: 片上稳压器的 BOR 电路会将器件保持在复位状态,直到 V
DD 超过 V BOR 门限值,并经过 T BOR
的延时。延时 TBOR 确保了稳压器输出稳定。
3 : PWRT 定时器:可编程上电延时定时器会在 BOR 之后继续保持处理器复位状态一段特定时间 ( T
T
PWRT 的延时确保了系统电源已稳定在适当电平供全速工作。经过 TPWRT 的延时后,SYSRST 变为无效,从
PWRT)。
而使选定振荡器开始提供时钟。
4 : 振荡器延时:表 5-1 给出了选定各种时钟源至时钟准备就绪之间的总延时。更多信息,请参见第 8.0 节“振
荡器配置”。
5 : 振荡器时钟就绪时,处理器将从地址单元 0x000000 处开始执行。用户应用程序在复位地址处设定一条 GOTO
指令,该指令会将程序重定位到相应的启动程序开始执行。
6 : 如果故障保护时钟监视器(FSCM)已使能,将在系统时钟就绪并且经过 T
FSCM 的延时后开始监视系统时钟。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 73 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
表 5-2 : 振荡器延时
符号 参数 值
POR
V
TPOR
BOR
V
TBOR
TPWRT
FSCM
T
POR 门限 1.8V 标称值
POR 扩展时间
BOR 门限
BOR 扩展时间
可编程上电延时
故障保护时钟监视器延时
30 µs 最大值
2.5V 标称值
100 µs 最大值
0-128 ms 标称值
900 µs 最大值
注: 当器件退出复位状态 (开始正常操作)
时,器件工作参数 (电压、频率和温度
等)必须在相应的工作范围内;否则器件
将不能正常工作。用户应用程序必须确保
从第一次上电到SYSRST
变为无效之间的
延时足够长,以使所有工作参数都符合规
范。
5.2 上电复位 (POR )
上电复位 (POR )电路确保器件在上电时复位。 POR
电路只有在 VDD 超过 VPOR 门限值,并且经过 TPOR 的
延时后才会失效。 TPOR 的延时确保了内部器件偏置电
路的稳定。
器件供电电压的特性必须符合特定的起始电压和上升速
率要求以产生 POR 。详情请参见第 29.0 节“电气特
性”。
复位控制(RCON<0> )寄存器中的 POR 状态(POR )
位置 1 ,表示发生了上电复位。
5.2.1 欠压复位 (BOR )和上电延时定时器
(PWRT )
片上稳压器有一个欠压复位(BOR )电路,它会在 VDD
太低 (VDD < VBOR )无法保证器件正常工作时将器件
复位。 BOR 电路会保持器件处于复位状态,直到 VDD
超过 VBOR 门限值,并且经过 TBOR 的延时。延时 TBOR
确保了稳压器输出稳定。
复位控制(RCON<1> )寄存器中的 BOR 状态(BOR )
位置 1 ,表示欠压复位。
BOR 之后器件不会全速工作,因为 V
作可接受的电平。PWRT 提供上电延时(T
保释放SYSRST 之前系统电源已稳定在适当电平供全速
工作。
上电延时定时器延时 (T
PWRT)由 POR 配置
(FPOR<2:0> )寄存器中的上电复位定时器值选择
(FPWRT<2:0> )位设定,它提供 8 种设定 (从 0ms
到 128 ms )。更多详细信息,请参见第 26.0 节 “特殊
功能”。
图 5-3 给出了典型的欠压情形。复位延时 (T
TPWRT )会在每次 VDD 上升超过 VBOR 跳变点时启动。
DD 应升至全速工
PWRT), 确
BOR +
DS70292A_CN 第 74 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 5-3 : 欠压情形
VDD
VBOR
T
BOR + T PWRT
SYSRST
DD
V
SYSRST
VDD 会在 PWRT 超时前骤降
V
DD
SYSRST
5.3 外部复位 (EXTR )
外部复位通过将 MCLR 引脚驱动为低电平产生。MCLR
引脚是附带毛刺滤波器的施密特触发器输入。宽度大于
最小脉冲宽度的复位脉冲会产生复位。最小脉冲宽度规
范,请参见第 29.0 节“电气特性”。复位控制(RCON )
寄存器中的外部复位(MCLR )引脚 (EXTR )位置 1 ,
表示 MCLR
5.3.1 外部监视电路
许多系统有外部监视电路,它们产生复位信号,将系统
中的多个器件复位。此外部复位信号可直接连接到
MCLR 引脚,在系统其余部分复位时将器件复位。
复位。
T
BOR + T PWRT
TBOR + TPWRT
VBOR
VBOR
复位控制 (RCON<6> )寄存器中的软件复位 (指令)
标志 (SWR )位置 1 ,表示软件复位。
5.5 看门狗超时复位 (WDTO )
任何时候只要发生看门狗超时,器件都将异步产生
SYSRST 信号。时钟源仍然保持不变。在休眠或空闲模
式期间发生 WDT 超时将唤醒处理器,但不会复位处理
器。
复位控制 (RCON<4> )寄存器中的看门狗定时器超时
标志 (WDTO )位置 1 ,表示看门狗定时器复位。关于
看门狗复位的更多信息,请参见第 26.4 节 “看门狗定
时器 (WDT )”。
5.3.2 内部监视电路
使用内部电源监视电路将器件复位时,外部复位引脚
(MCLR
MCLR
)应直接或通过电阻连接到 VDD。在本例中,
引脚不会用于产生复位。外部复位引脚(MCLR )
无内部上拉电路,不能处于未连接状态。
5.4 软件 RESET 指令 ( SWR)
5.6 陷阱冲突复位
如果在某个优先级较高的陷阱正在进行处理时,发生了
优先级较低的硬陷阱,则将发生硬陷阱冲突复位。硬陷
阱包括优先级为 13 至 15 的异常。地址错误 (优先级
13 )和振荡器错误 (优先级 14 )陷阱归入此类。
复位控制 (RCON<15>)寄存器中的陷阱复位标志
(TRAPR )位置 1 ,表示陷阱冲突复位。关于陷阱冲突
每当执行 RESET 指令时,器件将占用 SYSRST ,将器
复位的更多信息,请参见第 6.0 节 “中断控制器”。
件置于特殊的复位状态。复位状态不会重新初始化时
钟。在 RESET 指令之前生效的时钟源仍将继续使用。
SYSRST 在下个指令周期释放,开始取复位向量。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 75 页
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
5.7 配置不匹配复位
为维护外设引脚选择控制寄存器的完整性,硬件中的影
子寄存器会不断监视它们。如果任何寄存器发生了意外
更改(例如 ESD 或其他外部事件引起的电池干扰),将
会发生配置不匹配复位。
复位控制 (RCON<9> )寄存器中的配置不匹配标志
(CM )位置 1 ,表示配置不匹配复位。关于配置不匹配
复位的更多信息,请参见第 10.0 节“I/O 端口”。
注: 配置不匹配特性与相关的复位标志位并非
在所有器件上都可用。
5.8 非法条件器件复位
以下情况下会发生非法条件器件复位:
• 非法操作码复位
• 未初始化的 W 寄存器复位
• 安全性复位
复位控制(RCON<14> )寄存器中的非法操作码或未初
始化的 W 访问复位标志 (IOPUWR )位置 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 。
关于安全性复位的更多信息,请参见第 26.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>)
WDTO ( RCON<4>) WDT 超时
SLEEP ( RCON<3>)
IDLE ( RCON<2>)
BOR ( RCON<1>) POR 和 BOR
POR ( RCON<0>)
注: 所有复位标志位均可由用户软件置 1 或清零。
配置不匹配 POR 和 BOR
复位
RESET 指令
PWRSAV #SLEEP 指令
PWRSAV #IDLE 指令
POR
置 1 原因:
POR 和 BOR
POR
POR 和 BOR
PWRSAV 指令、 CLRWDT 指令、
POR 和 BOR
POR 和 BOR
POR 和 BOR
清零原因:
DS70292A_CN 第 76 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
6.0 中断控制器
注: 本数据手册总结了 dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 系列器件的功
能。但是不应把本手册当作无所不包的参
考手册来使用。如需了解本数据手册的补
充信息,请参见 《dsPIC33F 系列参考手
册》的“第 6 章 中断”(DS70184A_CN ),
该文档也能从 Microchip 网站
(www.microchip.com )下载。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和dsPIC33FJ128GPX02/X04 中断控制器将诸多外设中
断请求信号缩减到一个到 dsPIC33FJ32GP302/304 、
dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/
X04 CPU 的中断请求。
中断控制器具有以下特性:
• 多达 8 个处理器异常和软件陷阱
•8个可由用户选择的优先级
• 具有多达 118 个向量的中断向量表 ( Interrupt
Vector Table, IVT)
• 每个中断或异常源对应一个唯一的向量
• 在所指定的用户优先级内具有固定的优先级
• 用于支持调试的备用中断向量表 ( Alternate
Interrupt Vector Table, AIVT)
• 固定的中断进入和返回延时
6.1.1 备用中断向量表
备用中断向量表 (AIVT )位于 IVT 之后,如图 6-1 所
示。ALTIVT 控制位(INTCON2<15> )控制对 AIVT 的
访问。如果 ALTIVT 位置 1 ,则所有的中断和异常处理
都将使用备用向量,而非默认向量。备用向量与默认向
量的组织方式相同。
AIVT 通过提供一种不需要重新编程中断向量就可以在
应用程序和支持环境之间切换的方法,来支持调试功
能。此特性也支持运行时在不同应用程序之间切换以便
评估各种软件算法。如果不需要 AIVT ,则应该用 IVT 中
使用的地址设置 AIVT 。
6.2 复位过程
器件复位不是真正的异常,因为复位过程中并不涉及到
中断控制器。作为对复位的响应,dsPIC33FJ32GP302/
304、 dsPIC33FJ64GPX02/X04 和
dsPIC33FJ128GPX02/X04 器件清零其寄存器,同时强
制 PC 为零。然后数字信号控制器从地址 0x000000 处
开始执行程序。用户在复位地址处设定一条GOTO 指令,
该指令会将程序重定位到相应的启动程序。
注: 应该使用包含 RESET 指令的默认中断处理
程序的入口地址编程 IVT 和 AIVT 中所有未
实现或未使用的向量存储单元。
6.1 中断向量表
中断向量表(IVT )(如图 6-1 所示)驻留在程序存储器
中,起始存储单元地址是 000004h 。IVT 包含 126 个向
量,由 8 个不可屏蔽的陷阱向量和多达 118 个中断源组
成。一般来说,每个中断源都有自己的中断向量。每个
中断向量都包含一个 24 位宽的地址。每个中断向量存
储单元中设置的值是其相关的中断服务程序 (ISR )的
起始地址。
中断向量有一个自然优先级;也就是说每个中断向量的
优先级与其在向量表中的位置有关。如果其他方面都相
同,较低地址的中断向量具有较高的自然优先级。例
如,与向量 0 相关的中断比任何其他向量地址的中断具
有更高的自然优先级。
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 器件实现了多达 53 个唯
一中断和 5 个不可屏蔽的陷阱。表 6-1 对此做了总结。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 77 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
图 6-1 : dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 了解所实现的中断向量列表。
DS70292A_CN 第 78 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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——比较器中断
CN——电平变化通知中断
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. 超前信息 DS70292A_CN 第 79 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
保留
保留
保留
保留
保留
保留
保留
保留
保留
保留
保留
保留
DCIE—— DCI 错误
DCI—— DCI 传输完成
DMA5—— DMA 通道 5
RTCC——实时时钟
保留
保留
U1E—— UART1 错误
U2E—— UART2 错误
CRC—— CRC 发生器中断
DMA6—— DMA 通道 6
DMA7—— DMA 通道 7
C1TX—— ECAN1 发送数据请求
保留
保留
保留
保留
保留
保留
保留
DAC1R—— DAC1 右数据请求
DAC1L—— DAC1 左数据请求
保留
DS70292A_CN 第 80 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
6.3 中断控制和状态寄存器
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04
和 dsPIC33FJ128GPX02/X04 器件共有 30 个用于中断
控制器的寄存器:
• INTCON1
• INTCON2
•IFSx
•IECx
•IPCx
•INTTREG
6.3.1 INTCON1 和 INTCON2
INTCON1 和 INTCON2 控制全局中断。INTCON1 中含
有中断嵌套禁止 (NSTDIS )位,以及处理器陷阱源的
控制和状态标志。 INTCON2 寄存器控制外部中断请求
信号行为以及备用中断向量表的使用。
6.3.2 IFS0IFS4
IFS 寄存器包含所有中断请求标志。每个中断源都有一
个状态位,由各自的外设或外部信号置 1 ,而由软件清
零。
6.3.3 IEC0IEC4
IEC 寄存器包含所有中断允许位。这些控制位用于单独
允许外设或外部信号中断。
6.3.4 IPC0— PC19
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-31 说明了所有的
中断寄存器。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 81 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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> 状态位是只读的。
DS70292A_CN 第 82 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-2 : CORCON :内核控制寄存器
(1)
U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0
— — —U SE D T D L < 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 中断优先级。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 83 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 = 未发生数学错误陷阱
DS70292A_CN 第 84 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-3 : INTCON1 :中断控制寄存器 1 (续)
bit 3
bit 2
bit 1
bit 0
ADDRERR : 地址错误陷阱状态位
1 = 发生了地址错误陷阱
0 = 未发生地址错误陷阱
STKERR:堆栈错误陷阱状态位
1 = 发生了堆栈错误陷阱
0 = 未发生堆栈错误陷阱
OSCFAIL:振荡器故障陷阱状态位
1 = 发生了振荡器故障陷阱
0 = 未发生振荡器故障陷阱
未实现:读为 0
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 85 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
—
—
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
— — — — — —
— — — INT2EP INT1EP INT0EP
bit 15
ALTIVT : 备用中断向量表使能位
1 = 使用备用向量表
0 = 使用标准 (默认)向量表
bit 14
DISI : DISI 指令状态位
1 = 执行了 DISI 指令
0 = 没有执行 DISI 指令
bit 13-3 未实现:读为 0
bit 2
INT2EP : 外部中断 2 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
bit 1
INT1EP :外部中断 1 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
bit 0
INT0EP : 外部中断 0 边沿检测极性选择位
1 = 下降沿中断
0 = 上升沿中断
DS70292A_CN 第 86 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 未实现:读为 0
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
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 = 未产生中断请求
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 87 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-5 : IFS0 :中断标志状态寄存器 0 (续)
bit 2
bit 1
bit 0
OC1IF :输出比较通道 1 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
IC1IF:输入捕捉通道 1 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
INT0IF:外部中断 0 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DS70292A_CN 第 88 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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
U2TXIF : UART2 发送器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 14
U2RXIF : UART2 接收器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 13
INT2IF :外部中断 2 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 12
T5IF : Timer5 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 11
T4IF : Timer4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 10
OC4IF :输出比较通道 4 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 9
OC3IF :输出比较通道 3 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 8
DMA2IF : DMA 通道 2 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 7
IC8IF :输入捕捉通道 8 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 6
IC7IF :输入捕捉通道 7 中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 5 未实现:读为 0
bit 4
INT1IF :外部中断 1 标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 3
CNIF:输入电平变化通知中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 89 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-6 : IFS1 :中断标志状态寄存器 1 (续)
bit 2
bit 1
bit 0
CMIF : 比较器中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
MI2C1IF: I2C1 主事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
SI2C1IF: I2C1 从事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DS70292A_CN 第 90 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-7 : IFS2 :中断标志状态寄存器 2
U-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0
—D M A 4 I F P M P I F— — — — —
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
— — —D M A 3 I F C 1 I F
(1)
C1RXIF
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15 未实现:读为 0
bit 14
DMA4IF : DMA 通道 4 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 13
PMPIF:并行主端口中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 12-5 未实现:读为 0
bit 4
DMA3IF : DMA 通道 3 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 3
C1IF: ECAN1 事件中断标志状态位
(1)
1 = 产生了中断请求
0 = 未产生中断请求
bit 2
C1RXIF: ECAN1 接收数据就绪中断标志状态位
(1)
1 = 产生了中断请求
0 = 未产生中断请求
bit 1
SPI2IF : SPI2 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 0
SPI2EIF : SPI2 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
(1)
SPI2IF SPI2EIF
注 1 :在不具有 ECAN™ 模块的器件上被禁止的中断。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 91 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-8 : IFS3 :中断标志状态寄存器 3
U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0
— RTCIF DMA5IF DCIIF DCIEIF — — —
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 未实现:读为 0
bit 14
bit 13
bit 12
bit 11
bit 10-0
RTCIF :实时时钟 / 日历中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DMA5IF: DMA 通道 5 数据传输完成中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DCIIF: DCI 事件中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
DCIEIF: DCI 错误中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
未实现:读为 0
DS70292A_CN 第 92 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-9 : IFS4 :中断标志状态寄存器 4
R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-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)
— — — — — —
DMA7IF DMA6IF CRCIF U2EIF U1EIF —
bit 15
DAC1LIF : DAC 左通道中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 14
DAC1RIF : DAC 右通道中断标志状态位
1 = 产生了中断请求
0 = 未产生中断请求
bit 13-7 未实现:读为 0
bit 6
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
(2)
(2)
(1)
注 1:在不具有 ECAN™ 模块的器件上被禁止的中断。
2: 在不具有音频 DAC 模块的器件上被禁止的中断。
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 93 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/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 未实现:读为 0
bit 14
bit 13
bit 12
bit 11
bit 10
bit 9
bit 8
bit 7
bit 6
bit 5
bit 4
bit 3
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 = 禁止中断请求
DS70292A_CN 第 94 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-10 : IEC0 :中断允许控制寄存器 0 (续)
bit 2
bit 1
bit 0
OC1IE :输出比较通道 1 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
IC1IE:输入捕捉通道 1 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
INT0IE:外部中断 0 标志状态位
1 = 允许中断请求
0 = 禁止中断请求
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 95 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-11 : IEC1 :中断允许控制寄存器 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
U2TXIE U2RXIE INT2IE T5IE T4IE OC4IE OC3IE DMA2IE
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
IC8IE IC7IE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
— INT1IE CNIE CMIE MI2C1IE SI2C1IE
bit 15
U2TXIE : UART2 发送器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 14
U2RXIE : UART2 接收器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 13
INT2IE :外部中断 2 允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 12
T5IE : Timer5 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 11
T4IE : Timer4 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 10
OC4IE :输出比较通道 4 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 9
OC3IE :输出比较通道 3 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 8
DMA2IE : DMA 通道 2 数据传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 7
IC8IE :输入捕捉通道 8 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 6
IC7IE :输入捕捉通道 7 中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 5 未实现:读为 0
bit 4
INT1IE :外部中断 1 允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 3
CNIE:输入电平变化通知中断允许位
1 = 允许中断请求
0 = 禁止中断请求
DS70292A_CN 第 96 页 超前信息 2008 Microchip Technology Inc.
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-11 : IEC1 :中断允许控制寄存器 1 (续)
bit 2
bit 1
bit 0
CMIE : 比较器中断允许位
1 = 允许中断请求
0 = 禁止中断请求
MI2C1IE: I2C1 主事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
SI2C1IE: I2C1 从事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
2008 Microchip Technology Inc. 超前信息 DS70292A_CN 第 97 页
dsPIC33FJ32GP302/304 、 dsPIC33FJ64GPX02/X04 和 dsPIC33FJ128GPX02/X04
寄存器 6-12 : IEC2 :中断允许控制寄存器 2
U-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0
—D M A 4 I E P M P I E— — — — —
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
— — —D M A 3 I E C 1 I E
(1)
C1RXIE
bit 7 bit 0
图注:
R = 可读位 W = 可写位 U = 未实现位,读为 0
-n = POR 时的值 1 = 置 10 = 清零 x = 未知
bit 15 未实现:读为 0
bit 14
DMA4IE : DMA 通道 4 数据传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 13
PMPIE:并行主端口中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 12-5 未实现:读为 0
bit 4
DMA3IE : DMA 通道 3 数据传输完成中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 3
C1IE: ECAN1 事件中断允许位
(1)
1 = 允许中断请求
0 = 禁止中断请求
bit 2
C1RXIE: ECAN1 接收数据就绪中断允许位
(1)
1 = 允许中断请求
0 = 禁止中断请求
bit 1
SPI2IE : SPI2 事件中断允许位
1 = 允许中断请求
0 = 禁止中断请求
bit 0
SPI2EIE : SPI2 错误中断允许位
1 = 允许中断请求
0 = 禁止中断请求
(1)
SPI2IE SPI2EIE
注 1 :在不具有 ECAN™ 模块的器件上被禁止的中断。
DS70292A_CN 第 98 页 超前信息 2008 Microchip Technology Inc.