dsPIC33FJ12GP201/202 数据手册

244
2007 Microchip Technology Inc. 超前信息 DS70264A_CN dsPIC33FJ12GP201/202 数据手册 高性能 16 数字信号控制器 查询DSPIC33FJ12GP201供应商 捷多邦,专业PCB打样工厂,24小时加急出货

Transcript of dsPIC33FJ12GP201/202 数据手册

2007 Microchip Technology Inc. 超前信息 DS70264A_CN

dsPIC33FJ12GP201/202数据手册

高性能 16 位

数字信号控制器

查询DSPIC33FJ12GP201供应商 捷多邦,专业PCB打样工厂,24小时加急出货

DS70264A_CN 第 ii 页 超前信息 2007 Microchip Technology Inc.

提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含

的英文部分,因为其中提供了有关 Microchip 产品性能和使用

情况的有用信息。Microchip Technology Inc. 及其分公司和相

关公司、各级主管与员工及事务代理机构对译文中可能存在的

任何差错不承担任何责任。建议参考 Microchip TechnologyInc. 的英文原版文档。

本出版物中所述的器件应用信息及其他类似内容仅为您提供便

利,它们可能由更新之信息所替代。确保应用符合技术规范,

是您自身应负的责任。Microchip 对这些信息不作任何明示或

暗示、书面或口头、法定或其他形式的声明或担保,包括但不

限于针对其使用情况、质量、性能、适销性或特定用途的适用

性的声明或担保。 Microchip 对因这些信息及使用这些信息而

引起的后果不承担任何责任。如果将 Microchip 器件用于生命

维持和 / 或生命安全应用,一切风险由买方自负。买方同意在

由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障

Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识

产权保护下,不得暗中或以其他方式转让任何许可证。

商标

Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、dsPIC、KEELOQ、KEELOQ 徽标、microID、MPLAB、PIC、

PICmicro、 PICSTART、 PRO MATE、 rfPIC 和 SmartShunt均为 Microchip Technology Inc. 在美国和其他国家或地区的注

册商标。

AmpLab、 FilterLab、 Linear Active Thermistor、 Migratable Memory、 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、FlexROM、 fuzzyLAB、 In-Circuit Serial Programming、ICSP、 ICEPIC、Mindi、MiWi、MPASM、MPLAB Certified徽标、MPLIB、MPLINK、PICkit、PICDEM、PICDEM.net、PICLAB、 PICtail、 PowerCal、 PowerInfo、 PowerMate、PowerTool、 REAL ICE、 rfLAB、 Select Mode、 Smart Serial、SmartTel、Total Endurance、UNI/O、WiperLock 和

ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地

区的商标。

SQTP 是 Microchip Technology Inc. 在美国的服务标记。

在此提及的所有其他商标均为各持有公司所有。

© 2007, Microchip Technology Inc. 版权所有。

请注意以下有关 Microchip 器件代码保护功能的要点:

• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。

• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中 安全的产品之一。

• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的

操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。

• Microchip 愿与那些注重代码完整性的客户合作。

• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。

代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视

为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的

软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。

Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2002 认证。公司在 PIC®

MCU 与 dsPIC® DSC、KEELOQ® 跳码器件、串行 EEPROM、单片机外设、非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS-16949:2002。此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 1 页

dsPIC33FJ12GP201/202

工作范围:

• 高 40 MIPS 的工作速度(3.0-3.6V):

- 工业级温度范围 (-40°C 至 +85°C)

- 扩展级温度范围 (-40°C 至 +125°C)

高性能 DSC CPU:

• 改进型哈佛架构

• C 编译器优化的指令集

• 16 位宽数据总线

• 24 位宽指令

• 可寻址 大 4M 指令字的线性程序存储空间

• 可寻址 大 64 KB 的线性数据存储空间

• 83 条基本指令,多为单字 / 单周期指令

• 16 个 16 位通用寄存器

• 两个 40 位累加器,带舍入和饱和选择

• 灵活和强大的寻址模式:

- 间接寻址

- 模寻址

- 位反转寻址

• 软件堆栈

• 16 x 16 位小数 / 整数乘法运算

• 32/16 位和 16/16 位除法运算

• 单周期乘-累加:

- DSP 运算的累加器回写操作

- 双数据取操作

• 可将 40 位数据左移或右移 多 16 位

中断控制器:

• 中断响应延时为 5 个周期

• 118 个中断向量

• 多 21 个中断源

• 多 3 个外部中断

• 7 个可编程优先级

• 4 个处理器异常

片上闪存和 SRAM:

• 闪存程序存储器 (12 KB)• 数据 SRAM (1024 字节)

• 闪存程序存储器的引导和通用安全性

数字 I/O:

• 外设引脚选择功能

• 多 21 个可编程数字 I/O 引脚

• 多 21 个引脚上具有唤醒 / 电平变化中断功能

• 输出引脚可驱动 3.0V 至 3.6V 的电压

• 带漏极开路配置的输出 高为 5V• 所有数字输入引脚可承受 5V 的电压

• 所有 I/O 引脚的灌电流为 4 mA

系统管理:

• 灵活的时钟选择:

- 外部振荡器、晶振、谐振器和内部 RC 振荡器

- 全集成锁相环 (Phase-Locked Loop, PLL)- 极低抖动 PLL

• 上电延时定时器

• 振荡器起振定时器 / 稳定器

• 自带 RC 振荡器的看门狗定时器

• 故障保护时钟监视器

• 多个复位源

功耗管理:

• 片上 2.5V 稳压器

• 实时时钟源切换

• 可快速唤醒的空闲、休眠和打盹模式

定时器 / 捕捉 / 比较:

• 定时器 / 计数器, 多 3 个 16 位定时器:

- 多可以配对作为 1 个 32 位定时器使用

- 1个定时器可依靠外部32.768 kHz振荡器作为实时时钟使用

- 可编程预分频器

• 输入捕捉 ( 多 4 路通道):

- 上升沿捕捉、下降沿捕捉或上升 / 下降沿捕捉

- 16 位捕捉输入功能

- 每路捕捉通道都带有 4 字深度的 FIFO 缓冲区

• 输出比较 ( 多 2 路通道):

- 1 个或 2 个 16 位比较模式

- 16 位无毛刺 PWM 模式

高性能 16 位数字信号控制器

dsPIC33FJ12GP201/202

DS70264A_CN 第 2 页 超前信息 2007 Microchip Technology Inc.

通信模块:

• 4 线 SPI:- 帧支持简单编解码器的 I/O 接口

- 支持 8 位和 16 位数据

- 支持所有串行时钟格式和采样模式

• I2C™:

- 完全支持多主机从模式

- 7 位和 10 位寻址

- 总线冲突检测和仲裁

- 集成信号调理

- 从地址掩码

• UART:- 检测到地址位时产生中断

- 出现 UART 错误时产生中断

- 检测到启动位时将器件从休眠模式唤醒

- 4 字符深度的发送和接收 FIFO 缓冲区

- LIN 总线支持

- 硬件 IrDA® 编解码

- 高速波特率模式

- 使用 CTS 和 RTS 的硬件流控制

模数转换器 (ADC):

• 10 位 1.1 Msps 或 12 位 500 Ksps 转换:

- 2 路和 4 路同时采样 (10 位 ADC)

- 多 10 路带自动扫描功能的输入通道

- 可手动启动转换或与 4 个触发源中的一个同步

- 休眠模式下仍可进行转换

- 积分非线性误差 大为 ±2 LSb- 微分非线性误差 大为 ±1 LSb

CMOS 闪存技术:

• 低功耗高速闪存技术

• 全静态设计

• 3.3V (±10%)工作电压

• 工业级和扩展级温度

• 低功耗

封装:

• 18 引脚 SDIP/SOIC• 28 引脚 SDIP/SOIC/QFN

注: 关于每个器件的具体外设特性,请参见相应的器件数据表。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 3 页

dsPIC33FJ12GP201/202dsPIC33FJ12GP201/202 产品系列

下表列出了每个系列的器件名称、引脚数、存储容量和可用的外设,表后还附有它们的引脚图。

表 1: dsPIC33FJ12GP201/202 控制器系列

器件

引脚

闪存

程序

存储

(K

B)

RA

M(

KB)

可重映射的外设

10位

/12位

AD

C

I2 C™

大I/O

引脚

封装

可重

映射

引脚

16位定

时器

输入

捕捉

输出

比较

标准

PWM

UA

RT

SPI

dsPIC33FJ12GP201 18 12 1 8 3(1) 4 2 1 1 1 个 ADC,6 路通道

1 13 SDIPSOIC

dsPIC33FJ12GP202 28 12 1 16 3(1) 4 2 1 1 1 个 ADC,10 路通道

1 21 SDIPSOICQFN

注 1: 3 个定时器中只有 2 个是可重映射的。

dsPIC33FJ12GP201/202

DS70264A_CN 第 4 页 超前信息 2007 Microchip Technology Inc.

dsPIC33FJ12GP201 18 引脚 SDIP/SOIC 封装图

dsPIC33FJ12GP202 28 引脚 SDIP/SOIC 封装图

18 引脚 SDIP18 引脚 SOIC

PGD2/EMUD2/AN0/VREF+/CN2/RA0

PGC2/EMUC2/AN1/VREF-/CN3/RA1

INT0/RP7/CN23/RB7

PGD3/EMUD3/SOSCI/RP4/CN1/RB4

PGC3/EMUC3/SOSCO/T1CK/CN0/RA4

OSCO/CLKO/CN29/RA3

OSCI/CLKI/CN30/RA2

PGC1/EMUC1/AN3/RP1/CN5/RB1

PGD1/EMUD1/AN2/RP0/CN4/RB0

AN6/RP15/CN11/RB15

AN7/RP14/CN12/RB14

SCL1/RP9/CN21/RB9

SDA1/RP8/CN22/RB8

1

2

3

4

5

6

7

8

9

18

17

16

15

14

13

12

11

10

VSS

VSS

VDD

VDDCORE

MCLR

dsPIC33FJ12G

P201

28 引脚 SDIP28 引脚 SOIC

INT0/RP7/CN23/RB7

MCLR

AV ss

AN7/RP14/CN12/RB14

VDDCORE

ASCL1/RP6/CN24/RB6

TDO/SDA1/RP9/CN21/RB9

1

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

AN4/RP2/CN6/RB2

PGC3/EMUC3/SOSCO/T1CK/CN0/RA4

OSCI/CLKI/CN29/RA3

AN5/RP3/CN7/RB3

PGD3/EMUD3/SOSC/RP4/CN1/RB4

AVDD

AN8/RP13/CN13/RB13

AN6/RP15/CN11/RB15

AN9/RP12/CN14/RB12

ASDA1/RP5/CN27/RB5

Vss

OSCO/CLK1/CN30/RA2

VDD

TMS/RP11/CN15/RB11

TDI/RP10/CN16/RB10

Vss

TCK/SCL1/RP8/CN22/RB8

PGD2/EMUD2/AN0/VREF+/CN2/RA0

PGC2/EMUC2/AN1/VREF-/CN3/RA1

PGC1/EMUC1/AN3/RP1/CN5/RB1

PGD1/EMUD1/AN2/RP0/CN4/RB0 dsPIC33FJ12G

P202

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 5 页

dsPIC33FJ12GP201/202

dsPIC33FJ12GP202 28 引脚 QFN 封装图

28 引脚 QFN 6*6mm

1

2

3

4

5

6

7

21

20

19

18

17

16

15

28 27 26 25 24 23 22

8 9 10 11 12 13 14

VSS

PGD1/EMUD1/AN2/RP0/CN4/RB0

PGC1/EMUC1/AN3/RP1/CN5/RB1

AN4/RP2/CN6/RB2

AN5/RP3/CN7/RB3

OSCI/CLKI/CN30/RA2

OSCO/CLKO/CN29/RA3

VDDCORE

TDI/RP10/CN16/RB10

TMS/RP11/CN15/RB11

AN9/RP12/CN14/RB12

TDO/SDA1/RP9/CN21/RB9

AN8/RP13/CN13/RB13

PGC

3/E

MU

C3/

SO

SC

O/T

1CK

/CN

0/R

A4

PG

D3/

EM

UD

3/S

OS

CI/R

P4/C

N1/

RB

4

VD

D

AS

DA

1/R

P5/

CN

27/R

B5

AS

CL1

/RP

6/C

N24

/RB

6

INT0

/RP

7/C

N23

/RB

7

TCK

/SC

L1/R

P8/

CN

22/R

B8

PG

D2/

EM

UD

2/A

N0/

VR

EF+

/CN

2/R

A0

PG

C2/

EM

UC

2/A

N1/

VR

EF-

/CN

3/R

A1

MC

LR

AN

6/R

P15/

CN

11/R

B15

AN

7/R

P14/

CN

12/R

B14

VSS

dsPIC33FJ12GP202

AVS

S

AVD

D

dsPIC33FJ12GP201/202

DS70264A_CN 第 6 页 超前信息 2007 Microchip Technology Inc.

目录

1.0 器件概述 ...................................................................................................................................................................................... 72.0 CPU ........................................................................................................................................................................................... 113.0 存储器构成 ............................................................................................................................................................................... 234.0 闪存程序存储器 ........................................................................................................................................................................ 475.0 复位 .......................................................................................................................................................................................... 536.0 中断控制器 ............................................................................................................................................................................... 597.0 振荡器配置 ............................................................................................................................................................................... 878.0 节能特性 ................................................................................................................................................................................... 979.0 I/O 端口 ...................................................................................................................................................................................... 9910.0 Timer1 ..................................................................................................................................................................................... 11911.0 Timer2/3 特性 .......................................................................................................................................................................... 12112.0 输入捕捉 ................................................................................................................................................................................. 12713.0 输出比较 .................................................................................................................................................................................. 12914.0 串行外设接口 (SPI) .............................................................................................................................................................. 13515.0 I2C ........................................................................................................................................................................................... 14316.0 通用异步收发器 (UART) ...................................................................................................................................................... 15317.0 10 位 /12 位模数转换器 (ADC) ............................................................................................................................................ 16118.0 特殊功能 .................................................................................................................................................................................. 17319.0 指令集汇总 .............................................................................................................................................................................. 18120.0 开发支持 .................................................................................................................................................................................. 18921.0 电气特性 .................................................................................................................................................................................. 19322.0 封装信息 ................................................................................................................................................................................. 227附录 A: 版本历史 ........................................................................................................................................................................ 233Microchip 网站 ................................................................................................................................................................................... 239变更通知客户服务 ............................................................................................................................................................................. 239客户支持............................................................................................................................................................................................ 239读者反馈表 ........................................................................................................................................................................................ 240产品标识体系..................................................................................................................................................................................... 241

致客户

我们旨在提供 佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。

出版物的质量将随新文档及更新版本的推出而得到提升。 如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 [email protected],或将本

数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。

新数据手册

欲获得本数据手册的 新版本,请查询我公司的网站:

http://www.microchip.com

查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000的 A 版本。

勘误表

现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。

欲了解某一器件是否存在勘误表,请通过以下方式之一查询:

• Microchip 网站 http://www.microchip.com• 当地 Microchip 销售办事处 (见 后一页)

在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。

客户通知系统

欲及时获知 Microchip 产品的 新信息,请到我公司网站 www.microchip.com 上注册。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 7 页

dsPIC33FJ12GP201/202

1.0 器件概述

本文档包含 dsPIC33FJ12GP201/202 数字信号控制器(Digital Signal Controller, DSC)器件的特定信息。dsPIC33F 器件在其高性能 16 位单片机(MCU)架构中,融合了丰富的数字信号处理器 (Digital SignalProcessor, DSP)功能。

图 1-1 给出了 dsPIC33FJ12GP201/202 系列器件中内核和外设模块的一般框图。表 1-1 列出了引脚图中显示的各引脚的功能。

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

dsPIC33FJ12GP201/202

DS70264A_CN 第 8 页 超前信息 2007 Microchip Technology Inc.

图 1-1: dsPIC33FJ12GP201/202 框图

16

OSC1/CLKIOSC2/CLKO

VDD 和VSS

时序发生

MCLR

上电延时定时器

振荡器起振定时器

上电复位

看门狗定时器

欠压复位

高精度

参考带隙

FRC/LPRC振荡器

稳压器

VDDCORE/VCAP

IC1,2,7,8 I2C1

PORTA

指令译码和控制

PCH PCL

16

程序计数器

16 位 ALU

23

23

24

23

指令寄存器

PCU

16 x 16W 寄存器阵列

ROM 锁存器

16

EA 多路开关

16

16

8

中断控制器

PSV 和表数据访问控制模块

堆栈控制逻辑

循环控制逻辑

数据锁存器

地址锁存器

地址锁存器

程序存储器

数据锁存器

地址总线

即数数据

16 16

16

16

数据锁存器

地址锁存器

16

X RAM Y RAM

16

Y 数据总线

X 数据总线

DSP 引擎

除法支持

16

至各模块的控制信号

ADC1定时器

PORTB

地址发生器单元

1-3

CNx

UART1 输出比较

/ PWM1-2

可重映射的

引脚

注: 并非在所有器件的引脚配置中都实现了全部的引脚或功能。请参见引脚图了解每个器件的特定引脚和功能的信息。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 9 页

dsPIC33FJ12GP201/202表 1-1: 引脚说明

引脚名称 引脚类型 缓冲器类型 说明

AN0-AN9 I Analog 模拟输入通道。 CLKICLKO

IO

ST/CMOS—

外部时钟源输入。总是与 OSC1 引脚功能相关联。

晶振输出。在晶振模式下,连接到晶体或谐振器。也可选择在 RC 和 EC 模式下用

作 CLKO。总是与 OSC2 引脚功能相关联。

OSC1OSC2

II/O

ST/CMOS—

晶振输入。配置为 RC 模式时为 ST 缓冲器输入;否则为 CMOS 输入。晶振输出。在晶振模式下,连接到晶体或谐振器。也可选择在 RC 和 EC 模式下用作 CLKO。

SOSCISOSCO

IO

ST/CMOS—

32.768 kHz 低功耗晶振输入;否则为 CMOS 输入。32.768 kHz 低功耗晶振输出。

CN0-CN7CN11-CN15CN21-CN24CN27CN29-CN30

I ST 电平变化通知输入。可将所有输入软件编程为内部弱上拉。

IC0-IC1IC7-IC8

I ST 捕捉输入 1/2捕捉输入 7/8

OCFAOC1-OC2

IO

ST—

比较故障 A 输入 (对于比较通道 1 和 2)。比较输出 1 至 2。

INT0INT1INT2

III

STSTST

外部中断 0。外部中断 1。外部中断 2。

RA0-RA4 I/O ST PORTA 是双向 I/O 端口。

RB0-RB15 I/O ST PORTB 是双向 I/O 端口。

T1CKT2CKT3CK

III

STSTST

Timer1 外部时钟输入。Timer2 外部时钟输入。

Timer3 外部时钟输入。

U1CTSU1RTSU1RXU1TX

IOIO

ST—ST—

UART1 允许发送。

UART1 请求发送。UART1 接收。

UART1 发送。

SCK1SDI1SDO1SS1

I/OIO

I/O

STST—ST

SPI1 的同步串行时钟输入 / 输出。SPI1 数据输入。SPI1 数据输出。SPI1 从同步或帧脉冲 I/O。

SCL1SDA1ASCL1ASDA1

I/OI/OI/OI/O

STSTSTST

I2C1 的同步串行时钟输入 / 输出。I2C1 的同步串行数据输入 / 输出。

I2C1 的备用同步串行时钟输入 / 输出。I2C1 的备用同步串行数据输入 / 输出。

TMSTCKTDITDO

IIIO

STSTST—

JTAG 测试模式选择引脚。JTAG 测试时钟输入引脚。JTAG 测试数据输入引脚。JTAG 测试数据输出引脚。

PGD1/EMUD1PGC1/EMUC1PGD2/EMUD2PGC2/EMUC2PGD3/EMUD3PGC3/EMUC3

I/OI

I/OI

I/OI

STSTSTSTSTST

编程 / 调试通信通道 1 使用的数据 I/O 引脚。

编程 / 调试通信通道 1 使用的时钟输入引脚。编程 / 调试通信通道 2 使用的数据 I/O 引脚。

编程 / 调试通信通道 2 使用的时钟输入引脚。编程 / 调试通信通道 3 使用的数据 I/O 引脚。

编程 / 调试通信通道 3 使用的时钟输入引脚。

VDDCORE P — CPU 逻辑滤波电容连接。

VSS P — 逻辑和 I/O 引脚的参考地。

VREF+ I Analog 模拟参考电压 (高电压)输入。

VREF- I Analog 模拟参考电压 (低电压)输入。

图注: CMOS = CMOS 兼容输入或输出; Analog = 模拟输入ST = CMOS 电平的施密特触发器输入; O = 输出; I = 输入; P = 电源

dsPIC33FJ12GP201/202

DS70264A_CN 第 10 页 超前信息 2007 Microchip Technology Inc.

AVDD P P 模拟模块的正电源。

MCLR I/P ST 主复位输入。此引脚为低电平有效的器件复位输入端。

AVSS P P 模拟模块的参考地。

VDD P — 外设逻辑和 I/O 引脚的正电源。

表 1-1: 引脚说明 (续)

引脚名称 引脚类型 缓冲器类型 说明

图注: CMOS = CMOS 兼容输入或输出; Analog = 模拟输入ST = CMOS 电平的施密特触发器输入; O = 输出; I = 输入; P = 电源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 11 页

dsPIC33FJ12GP201/202

2.0 CPU

dsPIC33FJ12GP201/202 CPU 模块采用 16 位(数据)的改进型哈佛架构,具有增强指令集,其中包括对 DSP 的强大支持。 CPU 拥有 24 位指令字,指令字带有长度可变的操作码字段。程序计数器(Program Counter,PC)为 23位宽,可以寻址 大 4M x 24 位的用户程序存储空间。实际实现的程序存储容量因器件而异。单周期指令预取机制可帮助维持吞吐量并使指令的执行具有预测性。除了改变程序流的指令、双字传送(MOV.D)指令和表指令以外,所有指令都在单个周期内执行。使用 DO 和 REPEAT 指令支持无开销的程序循环结构,这两条指令在任何时间都可以被中断。

dsPIC33FJ12GP201/202器件在编程模型中有16个16位工作寄存器。每个工作寄存器都可以充当数据、地址或地址偏移量寄存器。第 16 个工作寄存器(W15)作为软件堆栈指针(Stack Pointer, SP),用于中断和调用。

dsPIC33FJ12GP201/202 指令集具有两类指令:MCU类指令和 DSP 类指令。这两类指令无缝地集成到单个CPU 中。指令集包括很多寻址模式,指令的设计可使 C编 译 器 的 效 率 达 到 优。对 于 大 多 数 指 令,dsPIC33FJ12GP201/202 能够在每个指令周期内执行一次数据(或程序数据)存储器读取、一次工作寄存器(数据)读取、一次数据存储器写入以及一次程序 (指令)存储器读取操作。因此,支持 3 操作数指令,允许在单个周期内执行 A + B = C 这样的操作。

图 2-1 给出了 CPU 的框图。图 2-2 给出了dsPIC33FJ12GP201/202 的编程模型。

2.1 数据寻址概述

数据空间可以作为 32K 字或 64 KB 寻址,并被分成两块,称为 X 和 Y 数据存储区。每个存储块有各自独立的地址发生单元(Address Generation Unit, AGU) 。MCU 类指令只通过 X 存储空间 AGU 进行操作,可将整个存储器映射作为一个线性数据空间访问。某些DSP指令通过X和Y的AGU进行操作以支持双操作数读操作,这样会将数据地址空间分成两个部分。X 和 Y 数据空间的边界视具体器件而定。

X 和 Y 地址空间都支持无开销循环缓冲区 (模寻址模式)。模寻址省去了 DSP 算法的软件边界检查开销。此外,X AGU 的循环寻址可以用于任何 MCU 类指令。XAGU 还支持位反转寻址,大幅简化了基 2 FFT 算法对输入或输出数据的重新排序。

可以选择将数据存储空间的高 32 KB 映射到由 8位程序空间可视性页 (Program Space Visibility Page,PSVPAG)寄存器定义的任何 16k 程序字边界内的程序空间内。程序空间到数据空间的映射功能让任何指令都能象访问数据空间一样访问程序空间。

2.2 DSP 引擎概述

DSP 引擎具有一个高速 17 位 x 17 位乘法器、一个 40 位ALU、两个 40 位饱和累加器和一个 40 位双向桶形移位寄存器。该桶形移位寄存器能在单个周期内将一个40位的值右移或左移 多 16 位。 DSP 指令可以无缝地与所有其他指令一起操作,且设计为能获得 佳实时性能。 MAC指令和其他相关指令可以在同一个周期内,同时完成从存储器中取两个数据操作数,将两个 W 寄存器相乘并累加,且可选择使结果饱和。这要求RAM数据空间对于这些指令拆分为两块,但对于所有其他指令保持线性。数据空间分块是通过将某些工作寄存器专用于每个地址空间,以透明和灵活的方式实现的。

2.3 MCU 的特性

dsPIC33FJ12GP201/202具有一个由MCU ALU和DSP引擎共用的 17 位 x 17 位单周期乘法器。此乘法器可以进行有符号、无符号和混合符号的乘法运算。使用 17 位 x 17位乘法器进行 16 位 x 16 位乘法运算不仅允许您执行混合符号的乘法运算,而且对于 (-1.0) x (-1.0) 这样的特殊运算也可以得到准确结果。

dsPIC33FJ12GP201/202 支持小数和整数的 16/16 位和32/16 位除法运算。所有的除法指令都是迭代操作。它们必须在一个REPEAT循环内执行,总执行时间为19个指令周期。在这19个周期的任一周期内可以中断除法运算而不会丢失数据。

一个40位的桶形移位寄存器用于在单个周期内将数据左移或右移 16 位。MCU 和DSP 指令都可以使用该桶形移位寄存器。

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

dsPIC33FJ12GP201/202

DS70264A_CN 第 12 页 超前信息 2007 Microchip Technology Inc.

图 2-1: dsPIC33FJ12GP201/202 CPU 内核框图

指令译码和控制

PCH PCL程序计数器

16 位 ALU

24

23

指令寄存器

PCU

16 x 16W 寄存器阵列

ROM 锁存器

EA 多路开关

中断控制器

堆栈控制逻辑

循环控制逻辑

数据锁存器

地址锁存器

至各模块的控制信号

地址总线

即数数

16 16

16

至外设模块

数据锁存器

地址锁存器

16

X RAM Y RAM

地址发生器单元

16

Y 数据总线

X 数据总线

DSP 引擎

除法支持

16

16

23

23

168

PSV 和表数据访问控制模块

16

16

16

16

程序存储器

数据锁存器

地址锁存器

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 13 页

dsPIC33FJ12GP201/202图 2-2: dsPIC33FJ12GP201/202 编程模型

PC22 PC0

7 0

D0D15

程序计数器

数据表页地址

状态寄存器

工作寄存器

DSP 操作数寄存器

W1

W2

W3

W4

W5

W6

W7

W8

W9

W10

W11

W12/DSP 偏移量

W13/DSP 回写

W14/ 帧指针

W15/ 堆栈指针

DSP 地址寄存器

AD39 AD0AD31

DSP累加器ACCA

ACCB

7 0程序空间可视性页地址

Z

0

OA OB SA SB

RCOUNT15 0

REPEAT循环计数器

DCOUNT15 0

DO循环计数器

DOSTART 22 0

DO循环起始地址

IPL2 IPL1

SPLIM 堆栈指针限制寄存器

AD15

SRL

PUSH.S影子寄存器

DO影子寄存器

OAB SAB

15 0内核配置寄存器

图注

CORCON

DA DC RA N

TBLPAG

PSVPAG

IPL0 OV

W0/WREG

SRH

DO循环结束地址DOEND 22

C

dsPIC33FJ12GP201/202

DS70264A_CN 第 14 页 超前信息 2007 Microchip Technology Inc.

2.4 CPU 控制寄存器

CPU 控制寄存器包括:

• SR:CPU 状态寄存器

• CORCON:内核控制寄存器

寄存器 2-1: SR:CPU 状态寄存器

R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R -0 R/W-0OA OB SA(1) SB(1) OAB SAB DA DC

bit 15 bit 8

R/W-0(2) R/W-0(3) R/W-0(3) R-0 R/W-0 R/W-0 R/W-0 R/W-0IPL<2:0>(2) RA N OV Z C

bit 7 bit 0

图注:

C = 只可清零位 R = 可读位 U = 未实现位,读为 0S = 只可置 1 位 W = 可写位 -n = POR 时的值

1 = 置 1 0 = 清零 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 组合的累加器 “粘住”状态位

1 = 累加器 A 或 B 饱和或在过去某时已经饱和0 = 累加器 A 和 B 都未饱和

注: 此位可被读取或清零(但不能置 1)。清零此位的同时将清零 SA 和 SB。bit 9 DA: DO循环活动位

1 = 正在进行 DO循环0 = 不在进行 DO循环

注 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> 状态位是只读的。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 15 页

dsPIC33FJ12GP201/202

bit 8 DC:MCU ALU 半进位 / 借位标志位

1 = 结果的第 4 个低位(对于字节大小的数据)或第 8 个低位(对于字大小的数据)发生了进位0 = 结果的第 4 个低位(对于字节大小的数据)或第 8 个低位(对于字大小的数据)未发生进位

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)

bit 4 RA: REPEAT循环活动位

1 = 正在进行 REPEAT循环0 = 不在进行 REPEAT循环

bit 3 N:MCU ALU 负标志位

1 = 结果为负0 = 结果为非负 (零或正值)

bit 2 OV: MCU ALU 溢出标志位

此位用于有符号的算术运算(二进制补码)。它表示量值上的溢出,这种溢出将导致符号位改变状态。 1 = 有符号算术运算中发生溢出 (本次运算)0 = 未发生溢出

bit 1 Z:MCU ALU 全零标志位

1 = 影响 Z 位的任何运算在过去某时已将该位置 10 = 影响 Z 位的 近一次运算已将该位清零 (即运算结果非零)

bit 0 C:MCU ALU 进位 / 借位标志位

1 = 结果的 高位发生了进位0 = 结果的 高位未发生进位

寄存器 2-1: SR:CPU 状态寄存器 (续)

注 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> 状态位是只读的。

dsPIC33FJ12GP201/202

DS70264A_CN 第 16 页 超前信息 2007 Microchip Technology Inc.

寄存器 2-2: CORCON:内核控制寄存器

U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0— — — US EDT(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-0SATA SATB SATDW ACCSAT IPL3(2) PSV RND IF

bit 7 bit 0

图注: C = 只可清零位

R = 可读位 W = 可写位 -n = POR 时的值 1 = 置 10 = 清零 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 中断优先级大于 70 = CPU 中断优先级等于或小于 7

bit 2 PSV: 数据空间中程序空间可视性使能位

1 = 程序空间在数据空间中可视0 = 程序空间在数据空间中不可视

bit 1 RND: 舍入模式选择位

1 = 使能有偏 (常规)舍入0 = 使能无偏 (收敛)舍入

bit 0 IF: 整数或小数乘法器模式选择位

1 = 使能 DSP 乘法运算的整数模式0 = 使能 DSP 乘法运算的小数模式

注 1: 此位将总是读为 0。

2: IPL3 位与 IPL<2:0> 位 (SR<7:5>)组合形成 CPU 中断优先级。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 17 页

dsPIC33FJ12GP201/2022.5 算术逻辑单元 (ALU)

dsPIC33FJ12GP201/202 ALU为16位宽,并能进行加法、减法、移位和逻辑运算。除非特别指明,算术运算一般采用二进制补码。根据不同的运算,ALU 可能会影响 SR 寄存器中的进位标志位(C)、全零标志位(Z)、负标志位(N)、溢出标志位(OV)和半进位标志位(DC)的值。在减法运算中,C和DC状态位分别作为借位和半借位位。

根据所使用的指令模式,ALU 可执行 8 位或 16 位运算。根据指令的寻址模式,ALU 运算的数据可以来自W寄存器阵列或数据存储器。同样,ALU 的输出数据可被写入 W 寄存器阵列或数据存储单元。

dsPIC33FJ12GP201/202 CPU 融入了对乘法和除法的硬件支持。它带有专门的硬件乘法器以及支持16位除数除法的硬件。

有关每条指令所影响的 SR 位的信息,请参见《dsPIC30F/33F 程序员参考手册》(DS70157B_CN)。

2.5.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.5.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.6 DSP 引擎

DSP 引擎由一个高速 17 位 x17 位乘法器、一个桶形移位寄存器和一个 40 位加法器 / 减法器(带两个目标累加器以及舍入和饱和逻辑)组成。

dsPIC33FJ12GP201/202 采用单周期指令流架构;因此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 所示。

表 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 有

dsPIC33FJ12GP201/202

DS70264A_CN 第 18 页 超前信息 2007 Microchip Technology Inc.

图 2-3: DSP 引擎框图

补零

符号扩展

桶形

移位

40 位累加器 A40 位累加器 B 舍入

逻辑

X数据总线

至 / 来自 W 阵列

加法器

饱和

取补

32

3233

16

16 16

16

40 40

4040

Y数据总线

40

进位 / 借位输出

进位 / 借位输入

16

40

乘法器 / 定标器

17 位

寄存器

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 19 页

dsPIC33FJ12GP201/2022.6.1 乘法器

17位 x 17位乘法器可以进行有符号或无符号运算,其输出经过定标器进行换算后可支持 1.31 小数(Q31)或 32 位整数结果。无符号操作数经过零扩展后,送入乘法器输入值的第 17 位。有符号操作数经过符号扩展后,送入乘法器输入值的第 17 位。17 位 x 17 位乘法器 / 定标器的输出是33 位值,它将被符号扩展为 40 位。整型数据的固有表示形式为有符号的二进制补码值,其中 高有效位(MSb)定义为符号位。

• N 位二进制补码整数的范围为 -2N-1 到 2N-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 – 21-N)。对于 16 位小数,Q15 数据范围为 -1.0(0x8000)到 0.999969482(0x7FFF),包括 0 在内,其精度为 3.01518x10-5。在小数模式下,16x16 乘法运算将产生 1.31 乘积,其精度为 4.65661 x 10-10。

同一个乘法器还用来支持 MCU 乘法指令,包括整数的 16位有符号、无符号和混合符号乘法。

MUL 指令可以使用字节或字长度的操作数。字节操作数将产生 16 位结果,而字操作数将产生 32 位结果,结果存放在 W 寄存器阵列的指定寄存器中。

2.6.2 数据累加器和加法器 / 减法器

数据累加器包含一个 40 位加法器 / 减法器,它带有自动符号扩展逻辑。它可以选择两个累加器(A 或 B)之一作为其累加前的源累加器和累加后的目标累加器。对于 ADD和LAC 指令,可选择通过桶形移位器在累加之前将要累加或装入的数据进行换算。

2.6.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 节“中断控制器”)。这使得用户应用能够立即采取措施,例如,校正系统增益。

dsPIC33FJ12GP201/202

DS70264A_CN 第 20 页 超前信息 2007 Microchip Technology Inc.

每次数据通过加法器 / 减法器,就会修改SA 和 SB 位,但用户应用程序只能对它们进行清零。置 1 时,它们表明累加器已溢出其 大范围(对于 32 位饱和是 bit 31,而 40位饱和是 bit 39),将发生饱和(如果饱和使能的话)。如果没有使能饱和,SA 和 SB 置 1 默认为 bit 39 溢出,以此指示产生了灾难性溢出。如果 INTCON1 寄存器中的COVTE 位置 1,当饱和被禁止时, SA 和 SB 位将产生算术警告陷阱。

在状态寄存器(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.6.2.2 累加器 “回写”

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.6.2.3 舍入逻辑

舍入逻辑是一个组合模块,在累加器写(存储)过程中执行常规的(有偏)或收敛的(无偏)舍入功能。舍入模式由CORCON 寄存器中RND 位的状态决定。它会产生一个16 位的 1.15 数据值,该值被送到数据空间写饱和逻辑。如果指令不指明舍入,就会存储一个截取的 1.15 数据值,简单地丢弃低位字(lsw)。

常规舍入取累加器的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.6.2.4 节“数据空间写饱和”)。对于 MAC 类指令,累加器回写操作将以同样的方式进行,通过 X 总线寻址组合的 MCU (X 和 Y)数据空间。对于此类指令,数据始终要进行舍入。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 21 页

dsPIC33FJ12GP201/2022.6.2.4 数据空间写饱和

除了加法器 / 减法器饱和,对数据空间进行写操作也会饱和,但不会影响源累加器的内容。数据空间写饱和逻辑块接受来自舍入逻辑块的一个16位的1.15小数值作为输入,还接受来自源(累加器)和 16 位舍入加法器的溢出状态。这些输入经过组合用来选择适当的 1.15 小数值作为输出,写入数据存储空间中。

如果 CORCON 寄存器中的 SATDW 位置 1,将检测(经过舍入或截取后的)数据是否溢出,并进行相应的调整。

• 如果输入数据大于 0x007FFF,则写入存储器中的数据被强制为 大的正 1.15 值, 0x7FFF。

• 如果输入数据小于 0xFF8000,则写入存储器中的数据被强制为 小的负 1.15 值, 0x8000。

源累加器的 高位 (bit 39)用来决定被检测的操作数的符号。

如果 CORCON 寄存器中的 SATDW 位没有置 1,则输入数据都将通过,在任何情况下都不会被修改。

2.6.3 桶形移位寄存器

桶形移位寄存器在单个周期内可将数据算术或逻辑右移或左移 多 16 位。源操作数可以是两个 DSP 累加器中的任何一个或 X 总线(支持寄存器或存储器中数据的多位移位)。

移位寄存器需要一个有符号二进制值,用来确定移位操作的幅度(位数)和方向。正值将操作数右移。负值则将操作数左移。值为 0则不改变操作数。

桶形移位寄存器为 40 位宽,于是,它为 DSP 移位操作提供了 40 位的结果,而为 MCU 移位操作提供 16 位的结果。来自 X 总线的数据在桶形移位寄存器中的存放方式是:右移则数据存放在 bit 16 到 bit 31,左移则存放在 bit 0 到 bit 15。

dsPIC33FJ12GP201/202

DS70264A_CN 第 22 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 23 页

dsPIC33FJ12GP201/202

3.0 存储器构成

dsPIC33FJ12GP201/202 架构具有独立的程序和数据存储空间以及总线。这一架构同时还允许在代码执行过程中从数据空间直接访问程序存储器。

3.1 程序地址空间

dsPIC33FJ12GP201/202 器件的程序地址存储空间可存储 4M 个指令字。可通过由程序执行过程中 23 位 PC、表操作或数据空间重映射得到的 24 位值寻址这一空间,如第 3.6 节“程序存储空间与数据存储空间的接口”中所述。

用户只能访问程序存储空间的低半地址部分(地址范围为 0x000000 至 0x7FFFFF)。使用 TBLRD/TBLWT 指令时,情况有所不同,这两条指令采用 TBLPAG<7> 以允许访问配置存储空间中的配置位和器件 ID。

图 3-1给出了dsPIC33FJ12GP201/202器件的存储器映射情况。

图 3-1: dsPIC33FJ12GP201/202 器件的程序存储器

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

复位地址

0x000000

0x0000FE

0x000002

0x000100

器件配置寄存器

用户闪存程序存储空间

0x0020000x001FFE

(4K 指令字)

0x800000

0xF800000xF800170xF80018

DEVID (2)0xFEFFFE0xFF00000xFFFFFE

0xF7FFFE

未实现

(读为 0)

GOTO指令

0x000004

保留

0x7FFFFE

保留

0x0002000x0001FE0x000104

备用向量表

保留

中断向量表

dsPIC33FJ12GP201/202

配置存储空间

用户

存储

空间

dsPIC33FJ12GP201/202

DS70264A_CN 第 24 页 超前信息 2007 Microchip Technology Inc.

3.1.1 程序存储器构成

程序存储空间由可字寻址的块构成。虽然它被视为24位宽,但将程序存储器的每个地址视作一个低位字和一个高位字的组合更加合理,其中高位字的高字节部分没有实现。低位字的地址始终为偶数,而高位字的地址为奇数 (图 3-2)。

程序存储器地址始终在低位字处按字对齐,并且在代码执行过程中地址将递增或递减 2。这种寻址模式与数据存储空间寻址兼容,且为访问程序存储空间中的数据提供了可能。

3.1.2 中断和陷阱向量

所有 dsPIC33FJ12GP201/202 器件中从 0x00000 到0x000200 之间的地址空间都是保留的,用来存储硬编码的程序执行向量。提供了一个硬件复位向量将代码执行从器件复位时 PC 的默认值重新定位到代码实际起始处。用户可在地址 0x000000 处编写一条 GOTO 指令以将代码的实际起始地址设置为 0x000002。

dsPIC33FJ12GP201/202器件也具有两个中断向量表,地址分别为从 0x000004 到 0x0000FF 和 0x000100 到0x0001FF。这两个向量表允许使用不同的中断服务程序(Interrupt Service Routines,ISR)处理每个器件中断源。有关中断向量表更详细的讨论,请参见第 6.1 节“中断向量表”。

图 3-2: 程序存储器构成

0816

PC 地址

0x0000000x0000020x0000040x000006

2300000000

00000000

00000000

00000000

程序存储器“虚拟”字节(读为 0)

低有效字高有效字

指令宽度

0x0000010x0000030x0000050x000007

msw地址 (lsw 地址)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 25 页

dsPIC33FJ12GP201/202

3.2 数据地址空间

dsPIC33FJ12GP201/202 CPU具有独立的16位宽数据存储空间。使用独立的地址发生单元(AGU)对数据空间执行读写操作。数据存储器映射如图 3-3 所示。

数据存储空间中的所有有效地址(Effective Addresse,EA)均为 16 位宽,并且指向数据空间内的字节。这种构成方式使得数据空间的地址范围为 64 KB 或 32K 字。数据存储空间的低半地址部分(即当 EA<15> = 0 时)用作实现的存储单元,而高半地址部分(EA<15> = 1)则保留为程序空间可视性(Program Space Visibility,PSV)区域(见第 3.6.3 节“使用程序空间可视性读程序存储器中的数据”)。

dsPIC33FJ12GP201/202 器件共实现了 大 30 KB 的数据存储空间。如果EA指向了该区域以外的存储单元,则将返回一个全零的字或字节。

3.2.1 数据空间宽度

数据存储空间组织为可字节寻址的 16 位宽的块。在数据存储器和寄存器中的数据是以16位字为单位对齐的,但所有数据空间 EA 都将解析为字节。每个字的低字节(Least Significant Byte,LSB)部分具有偶地址,而高字节 (Most Significant Byte, MSB)部分则具有奇地址。

3.2.2 数据存储器构成和对齐方式

为维持与PIC® MCU器件的向后兼容性和提高数据存储空间的使用效率,dsPIC33FJ12GP201/202指令集同时支持字和字节操作。字节访问会在内部对按字对齐的存储空间的所有有效地址进行计算调整。例如,对于执行后修改寄存器间接寻址模式 [Ws++] 的结果,字节操作时,内核将其识别为值 Ws + 1,而字操作时,内核将其识别为值 Ws + 2。

使用任何 EA 的 LSB 来确定要选取的字节,数据字节读取将读取包含字节的整个字。选定的字节被放在数据总线的 LSB 处。这就是说,数据存储器和寄存器被组织为两个并行的字节宽的实体,它们共享 (字)地址译码,但写入线独立。数据字节写操作只写入阵列或寄存器中与字节地址匹配的那一侧。

所有字访问必须按偶地址对齐。不支持不对齐的字数据取操作,所以在混合字节和字操作时,或者从 8 位 MCU代码移植时,必须要小心。如果试图进行不对齐的读或写操作,将产生地址错误陷阱。如果在读操作时产生错误,正在执行的指令将完成;而如果在写操作时产生错误,指令仍将执行,但不会进行写入。无论是哪种情况都将执行陷阱,从而允许系统和 / 或用户应用能够检查地址错误发生之前的机器状态。

所有装入 W 寄存器的字节都将装入 W 寄存器的低字节(LSB), W 寄存器的高字节 (MSB)不变。

提供了一条符号扩展 (SE)指令,允许用户把 8 位有符号数据转换为 16 位有符号值。或者,对于 16 位无符号数据,用户可以通过在适当地址处执行一条零扩展(ZE)指令清零任何 W 寄存器的 MSB。

3.2.3 SFR 空间

Near 数据空间的前 2 KB 存储单元 (从 0x0000 到0x07FF)主要被特殊功能寄存器 (Special FunctionRegisters, SFR)占用。 dsPIC33FJ12GP201/202 内核和外设模块使用这些寄存器来控制器件的工作。

SFR 分布在受其控制的模块中,通常一个模块会使用一组 SFR。大部分 SFR 空间包含未用的地址单元,它们读为 0。表 3-1 到表 3-21 给出了所有实现的 SFR 及其地址的完整列表。

3.2.4 NEAR 数据空间

在 0x0000 和 0x1FFF 之间的 8 KB 的区域被称为 near数据空间。可以使用所有存储器直接寻址指令中的13位绝对地址字段直接寻址这一空间中的存储单元。此外,还可以使用 MOV 指令寻址整个数据空间,支持使用 16位地址字段的存储器直接寻址模式或使用工作寄存器作为地址指针的间接寻址模式。

注: 不同器件的实际外设功能集和中断也各不相同。请参见相应器件的数据表和引脚图了解特定器件的信息。

dsPIC33FJ12GP201/202

DS70264A_CN 第 26 页 超前信息 2007 Microchip Technology Inc.

图 3-3: 带有 1 KB RAM 的 dsPIC33FJ12GP201/202 器件的数据存储器映射

0x0000

0x07FE

0x0BFE

0xFFFE

LSB地址16 位

LSbMSb

MSB地址

0x0001

0x07FF

0xFFFF

可选择映射到程序存储器

0x0801 0x0800

0x0C00

2 KBSFR 空间

1 KB

SRAM 空间

0x8001 0x8000

SFR 空间

X 数据 RAM(X)

X 数据

未实现(X)

Y 数据 RAM(Y)

0x09FE0x0A00

0x09FF0x0A01

0x0BFF0x0C01

0x1FFF 0x1FFFF0x2001 0x2000

8 KBNear 数据空间

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 27 页

dsPIC33FJ12GP201/202

3.2.5 X 和 Y 数据空间

内核有两个数据空间 X 和 Y。这些数据空间可以看作是独立的 (对于一些 DSP 指令),或者看作是统一的线性地址范围 (对于 MCU 指令)。使用两个地址发生单元(AGU)和独立的数据总线来访问这两个数据空间。此特性允许某些指令同时从 RAM 中取两个字,因此提高了某些DSP算法的执行效率,如有限冲激响应(FiniteImpulse 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 字,尽管不同器件上实际实现的存储单元有所不同。

dsPIC33FJ12GP201/202

DS70264A_CN 第 28 页 超前信息 2007 Microchip Technology Inc.

表3-

1:C

PU内

核寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

WR

EG0

0000

工作寄存器

00000

WR

EG1

0002

工作寄存器

10000

WR

EG2

0004

工作寄存器

20000

WR

EG3

0006

工作寄存器

30000

WR

EG4

0008

工作寄存器

40000

WR

EG5

000A

工作寄存器

50000

WR

EG6

000C

工作寄存器

60000

WR

EG7

000E

工作寄存器

70000

WR

EG8

0010

工作寄存器

80000

WR

EG9

0012

工作寄存器

90000

WR

EG10

0014

工作寄存器

100000

WR

EG11

0016

工作寄存器

110000

WR

EG12

0018

工作寄存器

120000

WR

EG13

001A

工作寄存器

130000

WR

EG14

001C

工作寄存器

140000

WR

EG15

001E

工作寄存器

150800

SPLI

M00

20堆栈指针限制寄存器

xxxx

PCL

002E

程序计数器低位字寄存器

0000

PCH

0030

——

——

——

——

程序计数器高字节寄存器

0000

TBLP

AG00

32—

——

——

——

—表页地址指针寄存器

0000

PSVP

AG00

34—

——

——

——

—程序存储器可视性页地址指针寄存器

0000

RC

OU

NT

0036

Rep

eat 循

环计数器寄存器

xxxx

DC

OU

NT

0038

DC

OU

NT<

15:0

>xxxx

DO

STA

RTL

003A

DO

STAR

TL<1

5:1>

0xxxx

DO

STA

RTH

003C

——

——

——

——

——

DO

STA

RTH

<5:0

>00xx

DO

EN

DL

003E

DO

EN

DL<

15:1

>0

xxxx

DO

EN

DH

0040

——

——

——

——

——

DO

EN

DH

00xx

SR00

42O

AO

BSA

SBO

ABSA

BD

AD

CIP

L2IP

L1IP

L0R

AN

OV

ZC

0000

CO

RC

ON

0044

——

—U

SED

TD

L<2:

0>SA

TASA

TBSA

TDW

ACC

SAT

IPL3

PSV

RN

DIF

0000

MO

DC

ON

0046

XM

OD

EN

YM

OD

EN

——

BW

M<3

:0>

YW

M<3

:0>

XW

M<3

:0>

0000

XM

OD

SR

T00

48X

S<1

5:1>

0xxxx

XM

OD

EN

D00

4AX

E<1

5:1>

1xxxx

YM

OD

SR

T00

4CY

S<1

5:1>

0xxxx

YM

OD

EN

D00

4EY

E<1

5:1>

1xxxx

XBR

EV00

50B

RE

NX

B<1

4:0>

xxxx

DIS

ICN

T00

52—

—禁止

中断计

数器

寄存器

xxxx

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。复位

值以十

六进制

显示。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 29 页

dsPIC33FJ12GP201/202表

3-2:

dsPI

C33

FJ12

GP2

02的

电平变

化通知

寄存器

映射

SFR

称SF

R地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

CN

EN1

0060

CN

15IE

CN

14IE

CN

13IE

CN

12IE

CN

11IE

—-

——

CN

7IE

CN

6IE

CN

5IE

CN

4IE

CN

3IE

CN

2IE

CN

1IE

CN

0IE

0000

CN

EN2

0062

—C

N30

IEC

N29

IE—

CN

27IE

——

CN

24PU

EC

N23

IEC

N22

IEC

N21

IE—

——

—C

N16

IE0000

CN

PU1

0068

CN

15PU

EC

N14

PUE

CN

13PU

EC

N12

PUE

CN

11PU

E—

——

CN

7PU

EC

N6P

UE

CN

5PU

EC

N4P

UE

CN

3PU

EC

N2P

UE

CN

1PU

EC

N0P

UE

0000

CN

PU2

006A

—C

N30

PUE

CN

29PU

E—

CN

27PU

E—

—C

N24

PUE

CN

23PU

EC

N22

PUE

CN

21PU

E—

——

—C

N16

PUE

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

表3-

3:ds

PIC

33FJ

12G

P201

的电平变

化通知

寄存器

映射

SFR

称SF

R地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

CN

EN

100

60—

——

CN

12IE

CN

11IE

——

——

—C

N5I

EC

N4I

EC

N3I

EC

N2I

EC

N1I

EC

N0I

E0000

CN

EN

200

C2

—C

N30

IEC

N29

IE—

——

——

CN

23IE

CN

22IE

CN

21IE

——

——

—0000

CN

PU

100

68—

——

CN

12PU

EC

N11

PUE

——

——

—C

N5P

UE

CN

4PU

EC

N3P

UE

CN

2PU

EC

N1P

UE

CN

0PU

E0000

CN

PU

200

6A—

CN

30PU

EC

N29

PUE

——

——

—C

N23

PU

EC

N22

PUE

CN

21P

UE

——

——

—0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

dsPIC33FJ12GP201/202

DS70264A_CN 第 30 页 超前信息 2007 Microchip Technology Inc.

表3-

4:中

断控

制器

寄存

器映

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

INTC

ON

100

80N

STD

ISO

VAER

RO

VBER

RC

OVA

ERR

CO

VBER

RO

VATE

OVB

TEC

OVT

ESF

TAC

ERR

DIV

0ER

R—

MAT

HER

RAD

DR

ERR

STKE

RR

OSC

FAIL

—0000

INTC

ON

200

82A

LTIV

TD

ISI

——

——

——

——

——

—IN

T2E

PIN

T1EP

INT0

EP

0000

IFS

000

84—

—A

D1I

FU

1TX

IFU

1RX

IFS

PI1

IFS

PI1

EIF

T3IF

T2IF

OC

2IF

IC2I

F—

T1IF

OC

1IF

IC1I

FIN

T0IF

0000

IFS

100

86—

—IN

T2IF

——

——

—IC

8IF

IC7I

F—

INT1

IFC

NIF

—M

I2C

1IF

SI2

C1I

F0000

IFS

400

8C—

——

——

——

——

——

——

—U

1EIF

—0000

IEC

000

94—

—A

D1I

EU

1TXI

EU

1RX

IES

PI1I

ES

PI1

EIE

T3IE

T2IE

OC

2IE

IC2I

E—

T1IE

OC

1IE

IC1I

EIN

T0IE

0000

IEC

100

96—

—IN

T2IE

——

——

—IC

8IE

IC7I

E—

INT1

IEC

NIE

—M

I2C

1IE

SI2

C1I

E0000

IEC

400

9C—

——

——

——

——

——

——

—U

1EIE

—0000

IPC

000

A4

—T1

IP<2

:0>

—O

C1I

P<2

:0>

—IC

1IP<

2:0>

—IN

T0IP

<2:0

>4444

IPC

100

A6

—T2

IP<2

:0>

—O

C2I

P<2

:0>

—IC

2IP<

2:0>

——

——

4444

IPC

200

A8

—U

1RX

IP<2

:0>

—S

PI1

IP<2

:0>

—SP

I1E

IP<2

:0>

—T3

IP<2

:0>

4444

IPC

300

AA

——

——

——

——

—A

D1I

P<2

:0>

—U

1TX

IP<2

:0>

4444

IPC

400

AC—

CN

IP<2

:0>

——

——

—M

I2C

1IP

<2:0

>—

SI2

C1I

P<2

:0>

4444

IPC

500

AE

—IC

8IP

<2:0

>—

IC7I

P<2

:0>

——

——

—IN

T1IP

<2:0

>4444

IPC

700

B2

——

——

——

——

—IN

T2IP

<2:0

>—

——

—4444

IPC

1600

C4

——

——

——

——

—U

1EIP

<2:0

>—

——

—4444

INTT

RE

G00

E0

——

——

ILR

<3:0

>>—

VEC

NU

M<6

:0>

4444

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 31 页

dsPIC33FJ12GP201/202表

3-5:

定时

器寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

TMR

101

00Ti

mer

1寄存器

xxxx

PR1

0102

周期寄存器

1FFFF

T1C

ON

0104

TON

—TS

IDL

——

——

——

TGAT

ETC

KPS<

1:0>

—TS

YNC

TCS

—0000

TMR

201

06Ti

mer

2寄存器

xxxx

TMR

3HLD

0108

Tim

er3保持寄存器

(仅适用于

32位定时器操作)

xxxx

TMR

301

0ATi

mer

3寄存器

xxxx

PR2

010C

周期寄存器

2FFFF

PR3

010E

周期寄存器

3FFFF

T2C

ON

0110

TON

—TS

IDL

——

——

——

TGAT

ETC

KPS<

1:0>

T32

—TC

S—

0000

T3C

ON

0112

TON

—TS

IDL

——

——

——

TGAT

ETC

KPS<

1:0>

——

TCS

—0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

表3-

6:输

入捕

捉寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

IC1B

UF

0140

输入

1捕捉寄存器

xxxx

IC1C

ON

0142

——

ICSI

DL

——

——

—IC

TMR

ICI<

1:0>

ICO

VIC

BNE

ICM

<2:0

>0000

IC2B

UF

0144

输入

2捕捉寄存器

xxxx

IC2C

ON

0146

——

ICSI

DL

——

——

—IC

TMR

ICI<

1:0>

ICO

VIC

BNE

ICM

<2:0

>0000

IC7B

UF

0158

输入

7捕捉寄存器

xxxx

IC7C

ON

015A

——

ICSI

DL

——

——

—IC

TMR

ICI<

1:0>

ICO

VIC

BNE

ICM

<2:0

>0000

IC8B

UF

015C

输入

8捕捉寄存器

xxxx

IC8C

ON

015E

——

ICSI

DL

——

——

—IC

TMR

ICI<

1:0>

ICO

VIC

BNE

ICM

<2:0

>0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

表3-

7:输

出比

较寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

OC

1RS

0180

输出比较

1辅助寄存器

xxxx

OC

1R01

82输出比较

1寄存器

xxxx

OC

1CO

N01

84—

—O

CSI

DL

——

——

——

——

OC

FLT

OC

TSEL

OC

M<2

:0>

0000

OC

2RS

0186

输出比较

2辅助寄存器

xxxx

OC

2R01

88输出比较

2寄存器

xxxx

OC

2CO

N01

8A—

—O

CSI

DL

——

——

——

——

OC

FLT

OC

TSEL

OC

M<2

:0>

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

dsPIC33FJ12GP201/202

DS70264A_CN 第 32 页 超前信息 2007 Microchip Technology Inc.

表3-

8:I2

C1寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

I2C

1RC

V02

00—

——

——

——

—接收寄存器

0000

I2C

1TR

N02

02—

——

——

——

—发送寄存器

00FF

I2C

1BR

G02

04—

——

——

——

波特率发生器寄存器

0000

I2C

1CO

N02

06I2

CEN

—I2

CSI

DL

SCLR

ELIP

MIE

NA1

0MD

ISSL

WSM

ENG

CEN

STR

ENAC

KDT

ACKE

NR

CEN

PEN

RSE

NSE

N1000

I2C

1STA

T02

08AC

KSTA

TTR

STAT

——

—BC

LG

CST

ATAD

D10

IWC

OL

I2C

OV

D_A

PS

R_W

RBF

TBF

0000

I2C

1AD

D02

0A—

——

——

—地址寄存器

0000

I2C

1MSK

020C

——

——

——

地址掩码寄存器

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

表3-

9:U

AR

T1寄

存器

映射

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

U1M

OD

E02

20U

ARTE

N—

USI

DL

IREN

RTS

MD

—U

EN1

UEN

0W

AKE

LPBA

CK

ABAU

DU

RXI

NV

BRG

HPD

SEL<

1:0>

STSE

L0000

U1S

TA02

22U

TXIS

EL1

UTX

INV

UTX

ISEL

0—

UTX

BRK

UTX

ENU

TXBF

TRM

TU

RXI

SEL<

1:0>

ADD

ENR

IDLE

PER

RFE

RR

OER

RU

RXD

A0110

U1T

XREG

0224

——

——

——

—U

ART发送寄存器

xxxx

U1R

XREG

0226

——

——

——

—U

ART接收寄存器

0000

U1B

RG

0228

波特率发生器预分频器

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

表3-

10:

SPI1

寄存

器映

SFR

名称

SFR

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

SPI1

STAT

0240

SPIE

N—

SPIS

IDL

——

——

——

SPIR

OV

——

——

SPIT

BFSP

IRBF

0000

SPI1

CO

N1

0242

——

—D

ISSC

KD

ISSD

OM

OD

E16

SMP

CKE

SSEN

CKP

MST

ENSP

RE<

2:0>

PPR

E<1:

0>0000

SPI1

CO

N2

0244

FRM

ENSP

IFSD

FRM

POL

——

——

——

——

——

—FR

MD

LY—

0000

SPI1

BUF

0248

SPI1

发送和接收缓冲寄存器

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 33 页

dsPIC33FJ12GP201/202 表

3-13

:ds

PIC

33FJ

12G

P201

的外设引

脚选择

输出寄

存器映

表3-

11:

外设

引脚

选择

输入

寄存

器映

寄存器

名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

RP

INR

006

80—

——

INT1

R<4

:0>

——

——

——

——

1F00

RP

INR

106

82—

——

——

——

——

——

INT2

R<4

:0>

001F

RP

INR

306

86—

——

T3C

KR

<4:0

>—

——

T2C

KR

<4:0

>1F1F

RP

INR

706

8E—

——

IC2R

<4:0

>—

——

IC1R

<4:0

>1F1F

RP

INR

1006

94—

——

IC8R

<4:0

>—

——

IC7R

<4:0

>1F1F

RP

INR

1106

96—

——

——

——

——

——

OC

FAR

<4:0

>001F

RP

INR

1806

A4—

——

U1C

TSR

<4:0

>—

——

U1R

XR

<4:0

>1F1F

RP

INR

2006

A8—

——

SCK

1R<4

:0>

——

—S

DI1

R<4

:0>

1F1F

RP

INR

2106

AA

——

——

——

——

——

—SS

1R<4

:0>

001F

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。复位

值以十

六进制

显示。

表3-

12:

dsPI

C33

FJ12

GP2

02的

外设引

脚选择

输出寄

存器映

寄存器

名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

RP

OR

006

C0

——

—R

P1R

<4:0

>—

——

RP

0R<4

:0>

0000

RP

OR

106

C2

——

—R

P3R

<4:0

>—

——

RP

2R<4

:0>

0000

RP

OR

206

C4

——

—R

P5R

<4:0

>—

——

RP

4R<4

:0>

0000

RP

OR

306

C6

——

—R

P7R

<4:0

>—

——

RP

6R<4

:0>

0000

RP

OR

406

C8

——

—R

P9R

<4:0

>—

——

RP

8R<4

:0>

0000

RP

OR

506

CA

——

—R

P11

R<4

:0>

——

—R

P10R

<4:0

>0000

RP

OR

606

CC

——

—R

P13

R<4

:0>

——

—R

P12R

<4:0

>0000

RP

OR

706

CE

——

—R

P15

R<4

:0>

——

—R

P14R

<4:0

>0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。复位

值以十

六进制

显示。

寄存器

名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

RP

OR

006

C0

——

—R

P1R

<4:0

>—

——

RP

0R<4

:0>

0000

RP

OR

206

C4

——

——

——

——

——

—R

P4R

<4:0

>0000

RP

OR

306

C6

——

—R

P7R

<4:0

>—

——

——

——

—0000

RP

OR

406

C8

——

—R

P9R

<4:0

>—

——

RP

8R<4

:0>

0000

RP

OR

706

CE

——

—R

P15

R<4

:0>

——

—R

P14R

<4:0

>0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

dsPIC33FJ12GP201/202

DS70264A_CN 第 34 页 超前信息 2007 Microchip Technology Inc.

表3-

14:

dsPI

C33

FJ12

GP2

01的

AD

C1寄存

器映射

寄存器名

称地

址B

it 15

Bit

14B

it 13

Bit

12B

it 11

Bit

10B

it 9

Bit

8B

it 7

Bit

6B

it 5

Bit

4B

it 3

Bit

2B

it 1

Bit

0所

有复

位时

的状

AD

C1B

UF0

0300

ADC

数据

缓冲器

0xxxx

AD

C1B

UF1

0302

ADC

数据

缓冲器

1xxxx

AD

C1B

UF2

0304

ADC

数据

缓冲器

2xxxx

AD

C1B

UF3

0306

ADC

数据

缓冲器

3xxxx

AD

C1B

UF4

0308

ADC

数据

缓冲器

4xxxx

AD

C1B

UF5

030A

ADC

数据

缓冲器

5xxxx

AD

C1B

UF6

030C

ADC

数据

缓冲器

6xxxx

AD

C1B

UF7

030E

ADC

数据

缓冲器

7xxxx

AD

C1B

UF8

0310

ADC

数据

缓冲器

8xxxx

AD

C1B

UF9

0312

ADC

数据

缓冲器

9xxxx

AD

C1B

UFA

0314

AD

C数据

缓冲器

10xxxx

AD

C1B

UFB

0316

AD

C数据

缓冲器

11xxxx

AD

C1B

UFC

0318

AD

C数据

缓冲器

12xxxx

AD

C1B

UFD

031A

AD

C数据

缓冲器

13xxxx

AD

C1B

UFE

031C

AD

C数据

缓冲器

14xxxx

AD

C1B

UFE

031E

AD

C数据

缓冲器

15xxxx

AD

1CO

N1

0320

AD

ON

—A

DS

IDL

——

AD12

BFO

RM

<1:0

>S

SR

C<2

:0>

—S

IMS

AM

ASA

MS

AM

PD

ON

E0000

AD

1CO

N2

0322

VCFG

<2:0

>—

—C

SC

NA

CH

PS

<1:0

>B

UFS

—S

MP

I<3:

0>B

UFM

ALT

S0000

AD

1CO

N3

0324

AD

RC

——

SM

PI<

4:0>

——

AD

CS

<5:0

>0000

AD

1CH

S12

303

26—

——

——

CH

123N

B<1

:0>

CH

123S

B—

——

——

CH

123N

A<1

:0>

CH

123S

A0000

AD

1CH

S0

0328

CH

0NB

——

CH

0SB<

4:0>

CH

0NA

——

CH

0SA

<4:0

>0000

AD

1PC

FGL

032C

——

——

——

——

——

PCFG

5P

CFG

4PC

FG3

PC

FG2

PCFG

1P

CFG

00000

AD

1CS

SL

0330

——

——

——

——

——

CSS

5C

SS

4C

SS3

CS

S2

CS

S1C

SS

00000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。复位

值以十

六进制

显示。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 35 页

dsPIC33FJ12GP201/202表

3-15

:ds

PIC

33FJ

12G

P202

的A

DC

1寄存

器映射

寄存器名

称地

址B

it 15

Bit

14B

it 13

Bit

12B

it 11

Bit

10B

it 9

Bit

8B

it 7

Bit

6B

it 5

Bit

4B

it 3

Bit

2B

it 1

Bit

0所

有复

位时

的状

AD

C1B

UF0

0300

AD

C数

据缓冲

器0

xxxx

AD

C1B

UF1

0302

AD

C数

据缓冲

器1

xxxx

AD

C1B

UF2

0304

AD

C数

据缓冲

器2

xxxx

AD

C1B

UF3

0306

AD

C数

据缓冲

器3

xxxx

AD

C1B

UF4

0308

AD

C数

据缓冲

器4

xxxx

AD

C1B

UF5

030A

AD

C数

据缓冲

器5

xxxx

AD

C1B

UF6

030C

AD

C数

据缓冲

器6

xxxx

AD

C1B

UF7

030E

AD

C数

据缓冲

器7

xxxx

AD

C1B

UF8

0310

AD

C数

据缓冲

器8

xxxx

AD

C1B

UF9

0312

AD

C数

据缓冲

器9

xxxx

AD

C1B

UFA

0314

AD

C数

据缓冲

器10

xxxx

AD

C1B

UFB

0316

AD

C数

据缓冲

器11

xxxx

AD

C1B

UFC

0318

AD

C数

据缓冲

器12

xxxx

AD

C1B

UFD

031A

AD

C数

据缓冲

器13

xxxx

AD

C1B

UFE

031C

AD

C数

据缓冲

器14

xxxx

AD

C1B

UFF

031E

AD

C数

据缓冲

器15

xxxx

AD

1CO

N1

0320

ADO

N—

AD

SID

L—

—AD

12B

FOR

M<1

:0>

SS

RC

<2:0

>—

SIM

SAM

AS

AM

SAM

PD

ON

E0000

AD

1CO

N2

0322

VC

FG<2

:0>

——

CS

CN

AC

HPS

<1:0

>B

UFS

—S

MP

I<3:

0>BU

FMA

LTS

0000

AD

1CO

N3

0324

AD

RC

——

SM

PI<

4:0>

——

AD

CS

<5:0

>0000

AD

1CH

S12

303

26—

——

——

CH

123N

B<1

:0>

CH

123S

B—

——

——

CH

123N

A<1

:0>

CH

123S

A0000

AD

1CH

S0

0328

CH

0NB

——

CH

0SB

<4:0

>C

H0N

A—

—C

H0S

A<4:

0>0000

AD

1PC

FGL

032C

——

——

——

PC

FG9

PCFG

8PC

FG7

PC

FG6

PC

FG5

PC

FG4

PC

FG3

PC

FG2

PC

FG1

PC

FG0

0000

AD

1CS

SL

0330

——

——

——

CSS

9C

SS8

CSS

7C

SS6

CS

S5

CS

S4

CS

S3

CS

S2

CS

S1

CS

S0

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。复位

值以十

六进制

显示。

dsPIC33FJ12GP201/202

DS70264A_CN 第 36 页 超前信息 2007 Microchip Technology Inc.

表3-

16:

POR

TA寄

存器

映射

寄存器

名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

TRIS

A02

C0

——

——

——

——

——

—TR

ISA4

TRIS

A3TR

ISA2

TRIS

A1TR

ISA0

D6C0

POR

TA02

C2

——

——

——

——

——

—RA

4RA

3RA

2RA

1RA

0xxxx

LATA

02C

4—

——

——

——

——

——

LATA

4LA

TA3

LATA

2LA

TA1

LATA

0xxxx

OD

CA

02C

6—

——

——

——

——

——

ODC

A4O

DCA3

ODC

A2O

DCA1

ODC

A0xxxx

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

100引脚

器件的

复位值

以十六

进制显

示。

表3-

17:

dsPI

C33

FJ12

GP2

02的

POR

TB寄存

器映射

寄存器名

称地

址B

it 15

Bit

14B

it 13

Bit

12B

it 11

Bit

10B

it 9

Bit

8B

it 7

Bit

6B

it 5

Bit

4B

it 3

Bit

2B

it 1

Bit

0所

有复

位时

的状

TRIS

B02

C8

TRIS

B15

TRIS

B14

TRIS

B13

TRIS

B12

TRIS

B11

TRIS

B10

TRIS

B9TR

ISB8

TRIS

B7TR

ISB6

TRIS

B5TR

ISB4

TRIS

B3TR

ISB2

TRIS

B1TR

ISB0

FFFF

POR

TB02

CA

RB1

5R

B14

RB1

3R

B12

RB1

1R

B10

RB9

RB8

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

xxxx

LATB

02C

CLA

TB15

LATB

14LA

TB13

LATB

12LA

TB11

LATB

10LA

TB9

LATB

8LA

TB7

LATB

6LA

TB5

LATB

4LA

TB3

LATB

2LA

TB1

LATB

0xxxx

OD

CB

02C

EO

DCB1

5O

DCB1

4O

DCB1

3O

DCB1

2O

DCB1

1O

DCB1

0O

DCB9

ODC

B8O

DCB7

ODC

B6O

DCB5

ODC

B4O

DCB3

ODC

B2O

DCB1

ODC

B0xxxx

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

100引脚

器件的

复位值

以十六

进制显

示。

表3-

18:

dsPI

C33

FJ12

GP2

01的

POR

TB寄存

器映射

寄存器名

称地

址B

it 15

Bit

14B

it 13

Bit

12B

it 11

Bit

10B

it 9

Bit

8B

it 7

Bit

6B

it 5

Bit

4B

it 3

Bit

2B

it 1

Bit

0所

有复

位时

的状

TRIS

B02

C8

TRIS

B15

TRIS

B14

——

——

TRIS

B9

TRIS

B8

TRIS

B7

——

TRIS

B4

——

TRIS

B1

TRIS

B0

FFFF

PO

RTB

02C

AR

B15

RB

14—

——

—R

B9R

B8

RB

7—

—R

B4

——

RB

1R

B0

xxxx

LATB

02C

CLA

TB15

LATB

14—

——

—LA

TB9

LATB

8LA

TB7

——

LATB

4—

—LA

TB1

LATB

0xxxx

OD

CB

02C

EO

DC

B15

OD

CB1

4—

——

—O

DC

B9

OD

CB

8O

DC

B7

——

OD

CB

4—

—O

DC

B1

OD

CB

0xxxx

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

100引脚

器件的

复位值

以十六

进制显

示。

表3-

19:

系统

控制

寄存

器映

寄存器名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

RC

ON

0740

TRAP

RIO

PUW

R—

——

—C

MVR

EGS

EXTR

SWR

SWD

TEN

WD

TOSL

EEP

IDLE

BOR

POR

xxxx

(1)

OS

CC

ON

0742

—C

OS

C<2

:0>

—N

OS

C<2

:0>

CLK

LOC

KIO

LOC

KLO

CK

—C

F—

LPO

SC

EN

OS

WE

N0300

(2)

CLK

DIV

0744

RO

ID

OZE

<2:0

>D

OZE

NFR

CD

IV<2

:0>

PLL

PO

ST<

1:0>

—P

LLP

RE

<4:0

>0040

PLL

FBD

0746

——

——

——

—P

LLD

IV<8

:0>

0030

OS

CTU

N07

48—

——

——

——

——

—TU

N<5

:0>

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

注1:

RC

ON寄

存器

复位

值取

决于

复位

类型

2:O

SC

CO

N寄

存器

复位

值取

决于

FOS

C配置位

和复位

类型。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 37 页

dsPIC33FJ12GP201/202表

3-20

:N

VM寄

存器

映射

寄存

器名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

NVM

CO

N07

60W

RW

REN

WR

ERR

——

——

——

ERAS

E—

—N

VMO

P<3:

0>0000

(1)

NVM

KEY

0766

——

——

——

——

NV

MKE

Y<7

:0>

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

注1:

所示

复位

值仅

适用

于P

OR。

其他

复位

状态

下的值

取决于

复位时

存储器

写操作

或擦除

操作的

状态。

表3-

21:

PMD寄

存器

映射

寄存器

名称

地址

Bit

15B

it 14

Bit

13B

it 12

Bit

11B

it 10

Bit

9B

it 8

Bit

7B

it 6

Bit

5B

it 4

Bit

3B

it 2

Bit

1B

it 0

所有

复位

时的

状态

PM

D1

0770

——

T3M

DT2

MD

T1M

D—

——

I2C

1MD

—U

1MD

—S

PI1

MD

——

AD

1MD

0000

PM

D2

0772

IC8M

DIC

7MD

——

——

IC2M

DIC

1MD

——

——

——

OC

2MD

OC

1MD

0000

图注:

x =

复位

时的

未知

值,

— =

未实

现,

读为

0。

复位值

以十六

进制显

示。

dsPIC33FJ12GP201/202

DS70264A_CN 第 38 页 超前信息 2007 Microchip Technology Inc.

3.2.6 软件堆栈

除了用作工作寄存器外,dsPIC33FJ12GP201/202器件中的 W15 寄存器也可用作软件堆栈指针。堆栈指针总是指向第一个可用的空字,并且从低地址向高地址方向增长。它在弹出堆栈之前递减,而在压入堆栈之后递增,如图 3-4 所示。对于任何 CALL指令时的 PC 压栈,在压入堆栈之前,PC 的 MSB 要进行零扩展,从而确保MSB 始终是清零的。

堆栈指针限制寄存器(SPLIM)与堆栈指针相关联,它设置堆栈上边界的值。复位时 SPLIM 不被初始化。与堆栈指针的情况一样, SPLIM<0> 被强制为 0,因为所有的堆栈操作必须是字对齐的。

每当使用 W15 作为源指针或目标指针产生 EA 时,有效地址会与 SPLIM 中的值进行比较。如果堆栈指针(W15)的内容与 SPLIM 寄存器的内容相等,则会执行压栈操作而不产生堆栈错误陷阱,但在随后的压栈操作时将会产生堆栈错误陷阱。例如,当堆栈增长超过 RAM中地址 0x2000 时,如果要想产生堆栈错误陷阱,则需要用值 0x1FFE 来初始化 SPLIM。

类似地,当堆栈指针地址小于 0x0800 时,就会产生堆栈指针下溢(堆栈错误)陷阱。这可防止堆栈进入特殊功能寄存器 (SFR)空间。

在对 SPLIM 寄存器进行写操作之后,不应紧跟着使用W15 进行间接读操作的指令。

图 3-4: CALL堆栈帧

3.2.7 数据 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-22 给出了基本的寻址模式,这些寻址模式经过优化可以支持各指令的具体功能。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 位立即数寻址

注: 在异常处理期间,在将 PC 压入堆栈之前,要先将 PC 的 MSB 与 SRL 寄存器组合在一起。

< 空字 >

PC<15:0>000000000

015

W15(CALL前)

W15(CALL后)

堆栈

向高

地址

增长

0x0000

PC<22:16>

POP : [--W15]PUSH : [W15++]

注: 并非所有指令都支持上述所有的寻址模式。各条指令可能支持这些寻址模式中的某些模式。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 39 页

dsPIC33FJ12GP201/202

表 3-22: 支持的基本寻址模式

3.3.3 传送指令和累加器指令

与其他指令相比,传送指令和 DSP 累加器类指令提供了更为灵活的寻址模式。除了大多数 MCU 指令支持的寻址模式以外,传送和累加器指令还支持带寄存器偏移量的寄存器间接寻址模式,这也叫做寄存器变址寻址模式。

概括地说,传送和累加器指令支持以下寻址模式:

• 寄存器直接寻址

• 寄存器间接寻址

• 执行后修改的寄存器间接寻址

• 执行前修改的寄存器间接寻址

• 带寄存器偏移量的寄存器间接寻址 (变址寻址)

• 带立即数偏移量的寄存器间接寻址

• 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 数据空间中的有效地址。

概括地说, MAC类指令支持以下寻址模式:

• 寄存器间接寻址

• 执行后修改 (修改量为 2)的寄存器间接寻址

• 执行后修改 (修改量为 4)的寄存器间接寻址

• 执行后修改 (修改量为 6)的寄存器间接寻址

• 带寄存器偏移量的寄存器间接寻址 (变址寻址)

3.3.5 其他指令

除了上述的各种寻址模式之外,一些指令使用各种大小的立即数常量。例如, BRA(转移)指令使用 16 位有符号立即数常量来直接指定转移的目标,而 DISI 指令则使用一个 14 位无符号立即数字段。在一些指令中,例如 ADD Acc,操作数的来源和运算结果已经暗含在操作码中。某些操作,例如 NOP,没有任何操作数。

寻址模式 说明

文件寄存器直接寻址 明确指定文件寄存器的地址。

寄存器直接寻址 直接访问寄存器的内容。

寄存器间接寻址 Wn 的内容形成有效地址(EA)。

执行后修改的寄存器间接寻址 Wn 的内容形成 EA。然后用一个常量值来修改 Wn (递增或递减)。

执行前修改的寄存器间接寻址 先用一个有符号常量值修改 Wn (递增或递减),再由此时的 Wn 内容形成 EA。带寄存器偏移量的寄存器间接寻址(寄存器变址寻址)

Wn 和 Wb 的和形成 EA。

带立即数偏移量的寄存器间接寻址 Wn 和立即数的和形成 EA。

注: 对于 MOV 指令,指令中指定的寻址模式对于源寄存器和目标寄存器 EA,可以是不同的。然而,4 位 Wb(寄存器偏移量)字段为源寄存器和目标寄存器所共用 (但通常只由其中之一使用)。

注: 并非所有指令都支持上述所有的寻址模式。各条指令可能支持这些寻址模式中的某些模式。

注: 带寄存器偏移量的寄存器间接寻址模式仅可用于 W9 (在 X 空间中)和 W11 (在 Y空间中)。

dsPIC33FJ12GP201/202

DS70264A_CN 第 40 页 超前信息 2007 Microchip Technology Inc.

3.4 模寻址

模寻址模式是一种使用硬件来自动支持循环数据缓冲区的方法。目的是在执行紧密循环代码时 (这在许多DSP 算法中很典型),不需要用软件来执行数据地址边界检查。

可以在数据空间或程序空间中进行模寻址(因为这两种空间的数据指针机制本质上是相同的)。每个 X (也提供指向程序空间的指针)和 Y 数据空间中都可支持一个循环缓冲区。模寻址可以对任何 W 寄存器指针进行操作。然而, 好不要将 W14 或 W15 用于模寻址,因为这两个寄存器分别用作堆栈帧指针和堆栈指针。

总的来说,任何特定的循环缓冲区只能配置为单向工作,因为根据缓冲区的方向,对缓冲区起始地址 (对于递增缓冲区)或结束地址 (对于递减缓冲区)有某些限制。

使用限制的唯一例外是那些长度为 2 的幂的缓冲区。这些缓冲区满足起始和结束地址判据,它们可以双向工作(即,在低地址边界和高地址边界上都将进行地址边界检查)。

3.4.1 起始地址和结束地址

模寻址机制要求指定起始和结束地址,并将它们装入 16位模缓冲区地址寄存器中:XMODSRT、 XMODEND、YMODSRT 和 YMODEND (见表 3-1)。

循环缓冲区的长度没有直接指定。它由相应的起始和结束地址之差决定。循环缓冲区的 大长度为 32K 字(64 KB)。

3.4.2 W 地址寄存器选择

模寻址和位反转寻址控制寄存器 MODCON<15:0> 包含使能标志以及指定W地址寄存器的W寄存器字段。XWM和 YWM 字段选择对哪些寄存器进行模寻址:

• 如果XWM = 15,则禁止X RAGU和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-5: 模寻址操作示例

注: Y空间模寻址的EA计算使用字长度的数据(每个 EA 的 LSB 始终清零)。

0x1100

0x1163

起始地址 = 0x1100结束地址 = 0x1163长度 = 0x0032 字

字节地址 MOV #0x1100, W0

MOV W0, XMODSRT ;set modulo start addressMOV #0x1163, W0MOV W0, MODEND ;set modulo end addressMOV #0x8001, W0MOV 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 locationsMOV W0, [W1++] ;fill the next locationAGAIN: INC W0, W0 ;increment the fill value

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 41 页

dsPIC33FJ12GP201/202

3.4.3 模寻址的应用

模寻址可以应用于任何与 W 寄存器相关的 EA 计算中。

地址边界检查功能等于:

• 递增缓冲器的上边界地址

• 递减缓冲器的下边界地址

重要的是要意识到,地址边界还会检查地址是否小于或大于这些地址。因此,地址变化可能会越过边界,但仍然可以正确调整。

3.5 位反转寻址

位反转寻址模式用来简化基 2 FFT 算法的数据重新排序。它为 X AGU 所支持,仅限于数据写入。

地址修改量可以是常数或寄存器的内容,可视为将其位顺序反转。源地址和目标地址仍然是正常的顺序。于是,唯一需要反转的操作数就是地址修改量。

3.5.1 位反转寻址的实现

当满足下列条件时使能位反转寻址模式:

• MODCON 寄存器中 BWM (W 寄存器选择)的值是除 15 以外的任何值(不能使用位反转寻址访问堆栈)

• XBREV 寄存器中的 BREN 位置 1• 使用的寻址模式是预递增或后递增的寄存器间接寻址模式

如果位反转缓冲区的长度为 M = 2N 字节,则数据缓冲区起始地址的 后 “N”位必须为零。

XB<14:0> 是位反转地址修改量或 “中心点”(pivotpoint),通常是一个常数。对于 FFT 计算,其值等于FFT 数据缓冲区长度的一半。

使能位反转寻址时,仅对预递增或后递增的寄存器间接寻址、且仅对字长度数据写入,才会进行位反转寻址。对于任何其他寻址模式或对于字节长度数据,不会进行位反转寻址,而是生成正常的地址。在进行位反转寻址时,W 地址指针的增量将始终加上地址修改量(XB),与寄存器间接寻址模式相关的偏移量将被忽略。此外,由于要求是字数据,EA 的 LSb 被忽略(且始终清零)。

如果通过将 BREN 位(XBREV<15>)置 1 使能了位反转寻址,那么,在写 XBREV 寄存器之后,不应立即进行要使用被指定为位反转指针的 W 寄存器的间接读操作。

注: 只有在使用执行前修改或执行后修改寻址模式来计算有效地址时,模修正有效地址才被写回寄存器。如果使用了地址偏移量(例如, [W7+W2]),会进行模地址修正,但寄存器的内容保持不变。

注: 所有位反转 EA 的计算都使用字数据 (每个 EA 的 LSB 始终清零)。为了产生兼容(字节)地址,要相应地调整 XB 的值。

注: 不应同时使能模寻址和位反转寻址。如果应用试图这么做的话,对于 X WAGU,位反转寻址将优先, X WAGU 模寻址将被禁止。然而,在 X RAGU 中,模寻址继续起作用。

dsPIC33FJ12GP201/202

DS70264A_CN 第 42 页 超前信息 2007 Microchip Technology Inc.

图 3-6: 位反转地址示例

表 3-23: 位反转地址序列 (16 项)

b3 b2 b1 0

b2 b3 b4 0

围绕二进制值的中心左右交换位位置

位反转地址

对于 16 字位反转缓冲区,XB = 0x0008

b7 b6 b5 b1

b7 b6 b5 b4b11 b10 b9 b8

b11 b10 b9 b8

b15 b14 b13 b12

b15 b14 b13 b12

正常顺序的地址

中心点

正常地址 位反转地址

A3 A2 A1 A0 十进制 A3 A2 A1 A0 十进制

0 0 0 0 0 0 0 0 0 00 0 0 1 1 1 0 0 0 80 0 1 0 2 0 1 0 0 40 0 1 1 3 1 1 0 0 120 1 0 0 4 0 0 1 0 20 1 0 1 5 1 0 1 0 100 1 1 0 6 0 1 1 0 60 1 1 1 7 1 1 1 0 141 0 0 0 8 0 0 0 1 11 0 0 1 9 1 0 0 1 91 0 1 0 10 0 1 0 1 51 0 1 1 11 1 1 0 1 131 1 0 0 12 0 0 1 1 31 1 0 1 13 1 0 1 1 111 1 1 0 14 0 1 1 1 71 1 1 1 15 1 1 1 1 15

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 43 页

dsPIC33FJ12GP201/202

3.6 程序存储空间与数据存储空间的接口

dsPIC33FJ12GP201/202 架构采用 24 位宽的程序空间和 16 位宽的数据空间。该架构也是一种改进型哈佛结构,这意味着数据也能存放在程序空间内。要成功使用该数据,在访问数据时必须确保这两种存储空间中的信息是对齐的。

除了正常执行外,dsPIC33FJ12GP201/202架构还提供了两种可在操作过程中访问程序空间的方法:

• 使用表指令访问程序空间中任意位置的各个字节或字

• 将程序空间的一部分重新映射到数据空间 (程序空间可视性)

表指令允许应用程序读写程序存储器的一小块区域。这一功能对于访问需要随时更新的数据表来说非常理想。也可通过表操作访问一个程序字的所有字节。重映射方法允许应用程序访问一大块数据,但只限于读操作,它非常适合于在一个大的静态数据表中进行查找。这一方法只能访问程序字的低位字。

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-24和图 3-7显示了如何通过表操作和重映射访问来从数据 EA 创建程序 EA。本文中,P<23:0> 指的是程序空间字,而 D<15:0> 指的是数据空间字。

表 3-24: 程序空间地址构成

访问类型 访问空间程序空间地址

<23> <22:16> <15> <14:1> <0>

指令访问(代码执行)

用户 0 PC<22:1> 0

0xx xxxx xxxx xxxx xxxx xxx0

TBLRD/TBLWT

(读 / 写字节或字)用户 TBLPAG<7:0> 数据 EA<15:0>

0xxx xxxx xxxx xxxx xxxx xxxx

配置 TBLPAG<7:0> 数据 EA<15:0> 1xxx xxxx xxxx xxxx xxxx xxxx

程序空间可视性(块重映射 / 读)

用户 0 PSVPAG<7:0> 数据 EA<14:0>(1)

0 xxxx xxxx xxx xxxx xxxx xxxx

注 1: 在这种情况下,数据 EA<15> 始终为 1,但并不用它来计算程序空间地址。地址的 bit 15 为PSVPAG<0>。

dsPIC33FJ12GP201/202

DS70264A_CN 第 44 页 超前信息 2007 Microchip Technology Inc.

图 3-7: 访问程序空间内数据的地址生成方式

0程序计数器

23 位

1

PSVPAG

8 位

EA

15 位

程序计数器 (1)

选择

TBLPAG

8 位

EA

16 位

字节选择

0

0

1/0

用户 / 配置

表操作 (2)

程序空间可视性 (1)

空间选择

24 位

23 位

(重映射)

1/0

0

注 1:程序空间地址的 低位(LSb)始终为 0,从而确保程序和数据空间中的数据是字对齐的。

2:不要求表操作是字对齐的。允许对配置存储空间执行表读操作。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 45 页

dsPIC33FJ12GP201/202

3.6.2 使用表指令访问程序存储器中的数据

TBLRDL 和 TBLWTL指令提供了读或写程序空间内任何地址的低位字的直接方法,无需通过数据空间。TBLRDH 和 TBLWTH指令是可以把一个程序空间字的高8 位作为数据读写的唯一方法。

对于每个连续的 24 位程序字,PC 的递增量为 2。这使得程序存储器地址能够直接映射到数据空间地址。于是,程序存储器可以看作是两个 16 位字宽的地址空间,它们并排放置,具有相同的地址范围。 TBLRDL 和TBLWTL访问存有低位字的空间,而TBLRDH和TBLWTH则访问存有 高数据字节的空间。

提供了两条表指令来对程序空间执行字节或字(16 位)大小的数据读写。读和写都可以采用字节或字操作的形式。

• TBLRDL(表读低位字):在字模式下,该指令将程序空间地址的低位字 (P<15:0>)映射到数据地址 (D<15:0>)中。

在字节模式下,低位程序字的高字节或低字节被映射到数据地址的低字节中。当字节选择位为 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时,表页位于配置存储空间中。

图 3-8: 使用表指令访问程序存储器

08162300000000

00000000

00000000

00000000

“虚拟”字节

TBLRDH.B(Wn<0> = 0)

TBLRDL.W

TBLRDL.B(Wn<0> = 1)TBLRDL.B(Wn<0> = 0)

23 15 0

TBLPAG02

0x000000

0x800000

0x020000

0x030000

程序空间

表操作的地址是由 TBLPAG 寄存器定义的页中的数据 EA 决定的。

只给出了读操作的过程;也可以对用户存储区执行写操作。

dsPIC33FJ12GP201/202

DS70264A_CN 第 46 页 超前信息 2007 Microchip Technology Inc.

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-9),但只使用 24 位程序字的低 16 位来存放数据。所有用来存放数据的程序

存储单元的高 8 位都应被设置为 1111 1111 或 00000000,强制为一条NOP指令,从而避免了可能出现意外执行这一区域内代码的情况。

对于使用 PSV 而又在 REPEAT循环外执行的操作,MOV和MOV.D指令除了规定的执行时间之外,还需要一个额外的指令周期。其他所有指令都需要在规定的执行时间之外额外增加两个指令周期。

对于使用 PSV 而又在 REPEAT 循环内执行的操作,下列情况,除了规定的指令执行时间之外,还需要两个额外的指令周期:

• 在第一次迭代中执行的指令

• 在 后一次迭代中执行的指令

• 由于中断而退出循环之前执行的指令

• 中断得到处理后再次进入循环时执行的指令

REPEAT循环的所有其他各次迭代,都允许使用 PSV 访问数据的指令在一个周期内执行。

图 3-9: 程序空间可视性操作

注: 在表读 / 写期间,暂时禁止 PSV 访问。

23 15 0PSVPAG数据空间程序空间

0x0000

0x8000

0xFFFF

020x000000

0x800000

0x010000

0x018000

当 CORCON<2> = 1且 EA<15> = 1时 :

由 PSVPAG 指定的

页中的数据被映射到

数据存储空间的高半

地址部分 ...

数据 EA<14:0>

...EA 的低 15 位指定

PSV 区域内的确切地

址。这与实际程序空间

的低 15 位地址是对应

的。

PSV 区域

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 47 页

dsPIC33FJ12GP201/202

4.0 闪存程序存储器

dsPIC33FJ12GP201/202 器件包含用于存储和执行应用代码的内部闪存程序存储器。在整个 VDD 范围内,正常操作期间,存储器都是可读写可擦除的。

可采用两种方式对闪存存储器进行编程:

• 在线串行编程 (In-Circuit Serial Programming™, ICSP™)功能

• 运行时自编程 (Run-Time Self-Programming,RTSP)

ICSP允许在 终的应用电路中对dsPIC33FJ12GP201/202 器件进行串行编程。只需要使用 5 根线就可以完成编程,它们分别是编程时钟线、编程数据线(以下备用编程引脚对之一:PGC1/PGD1、PGC2/PGD2或PGC3/PGD3)、电源线(VDD)、接地线(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: 表寄存器的寻址

注: 本数据手册总结了 dsPIC33FJ12GP201/202 器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

0程序计数器

24 位

使用程序计数器

TBLPAG 寄存器

8 位

工作寄存器 EA

16 位

24 位 EA

0

1/0

字节选择

使用表指令

用户 / 配置空间选择

dsPIC33FJ12GP201/202

DS70264A_CN 第 48 页 超前信息 2007 Microchip Technology Inc.

4.2 RTSP 工作原理

dsPIC33FJ12GP201/202 闪存程序存储器阵列是由 64条指令或 192 字节的行组成的。RTSP 允许用户一次擦除由 8 行数据(512 条指令)组成的程序存储器页,一次编程一行或一个字。 8 行擦除页和单行写入行都是边界对齐的,从程序存储器起始地址开始,分别到 1536字节边界和 192 字节边界。

程序存储器实现了保持缓冲器,它能缓冲 64 条指令的编程数据。在实际编程操作前,必须将待写数据顺序装入缓冲器。装入的指令字必须始终来自一组 64 个指令字的边界。

RTSP 编程的基本步骤是先建立一个表指针,然后执行一系列 TBLWT 指令将数据装入缓冲器。编程是通过将NVMCON 寄存器中的控制位置 1 执行的。指令的装入总共需要 64 条 TBLWTL和 TBLWTH指令。

所有的表写操作都是单字写操作 (2 个指令周期),因为只写缓冲器。编程每一行需要一个编程周期。

4.3 控制寄存器

有两个 SFR 用于读写闪存程序存储器:

• NVMCON:闪存存储器控制寄存器

• NVMKEY:非易失性存储器密钥寄存器

NVMCON 寄存器(寄存器 4-1)控制要擦除的块、要编程的存储器类型,以及编程周期的开始。

NVMKEY (寄存器 4-2)是一个只写寄存器,用于写保护。要启动编程或擦除序列,用户必须连续地将 55h和 AAh 写入 NVMKEY 寄存器。更多详细信息,请参见第 4.4 节 “编程操作”。

4.4 编程操作

在 RTSP 模式下,对内部闪存进行编程或擦除需要执行完整的编程过程。编程操作的持续时间通常为 4 ms,在此期间处理器暂停等待操作完成。将 WR 位(NVMCON<15>)置 1 启动操作,当操作完成时 WR位会自动清零。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 49 页

dsPIC33FJ12GP201/202 寄存器 4-1: NVMCON:闪存存储器控制寄存器

R/SO-0(1) R/W-0(1) R/W-0(1) U-0 U-0 U-0 U-0 U-0WR WREN WRERR — — — — —

bit 15 bit 8

U-0 R/W-0(1) U-0 U-0 R/W-0(1) R/W-0(1) R/W-0(1) R/W-0(1)

— ERASE — — NVMOP<3:0>(2)

bit 7 bit 0

图注: SO = 只可置 1 位

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 WR:写控制位

1 = 启动闪存存储器编程或擦除操作。该操作是自定时的,一旦操作完成该位即由硬件清零0 = 编程或擦除操作完成,并处于停止状态

bit 14 WREN:写使能位

1 = 使能闪存编程 / 擦除操作0 = 禁止闪存编程 / 擦除操作

bit 13 WRERR:写序列错误标志位

1 = 不合法的编程或擦除序列尝试,或者发生终止(试图将 WR 位置 1 时自动置 1 该位)0 = 编程或擦除操作正常完成

bit 12-7 未实现:读为 0

bit 6 ERASE:擦除 / 编程使能位

1 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的擦除操作0 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的编程操作

bit 5-4 未实现:读为 0

bit 3-0 NVMOP<3:0>:NVM 操作选择位 (2) 如果 ERASE = 1:1111 = 存储器批量擦除操作1101 = 擦除通用段1100 = 擦除安全段0011 = 无操作0010 = 存储器页擦除操作0001 = 无操作0000 = 擦除单个配置寄存器字节

如果 ERASE = 0:1111 = 无操作1101 = 无操作1100 = 无操作0011 = 存储器字编程操作0010 = 无操作0001 = 存储器行编程操作0000 = 编程单个配置寄存器字节

注 1: 这些位只能在 POR 时复位。

2: NVMOP<3:0> 的所有其他组合均未实现。

dsPIC33FJ12GP201/202

DS70264A_CN 第 50 页 超前信息 2007 Microchip Technology Inc.

寄存器 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-0NVMKEY<7:0>

bit 7 bit 0

图注: SO = 只可置 1 位

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-8 未实现:读为 0

bit 7-0 NVMKEY<7:0>:密钥寄存器(只写)位

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 51 页

dsPIC33FJ12GP201/202

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) 将 55h写入 NVMKEY。d) 将 AAh写入 NVMKEY。e) 将 WR 位 (NVMCON<15>)置 1。擦除周

期开始,在擦除周期中 CPU 会暂停。当擦除完成时, WR 位会自动清零。

4. 将数据RAM中的前64条指令写入程序存储器缓冲器 (见例 4-2)。

5. 将程序块写入闪存存储器:

a) 将 NVMOP 位设置为 0001,配置为行编程操作。将 ERASE 位清零,将 WREN 位置 1。

b) 将 55h写入 NVMKEY。c) 将 AAh写入 NVMKEY。d) 将 WR 位置 1。编程周期开始,在写周期中

CPU 会暂停。当闪存存储器写操作完成时,WR 位会自动清零。

6. 将 TBLPAG 中的值递增 1,使用数据RAM中下一个 64 条指令块重复步骤 4 和 5,直到所有 512 条指令被写回闪存存储器。

为防止意外操作,必须向 NVMKEY 写入启动序列从而允许执行擦除或编程操作。在执行编程命令后,用户必须等待一段编程时间,直至编程完成。紧跟编程启动序列后面的两条指令应为 NOP,如例 4-3 所示。

例 4-1: 擦除程序存储器页 ; Set up NVMCON for block erase operation

MOV #0x4042, W0 ;MOV W0, NVMCON ; Initialize NVMCON

; Init pointer to row to be ERASEDMOV #tblpage(PROG_ADDR), W0 ; MOV W0, TBLPAG ; Initialize PM Page Boundary SFRMOV #tbloffset(PROG_ADDR), W0 ; Initialize in-page EA[15:0] pointerTBLWTL W0, [W0] ; Set base address of erase blockDISI #5 ; Block all interrupts with priority <7

; for next 5 instructionsMOV #0x55, W0 MOV W0, NVMKEY ; Write the 55 key MOV #0xAA, W1 ;MOV W1, NVMKEY ; Write the AA keyBSET NVMCON, #WR ; Start the erase sequence NOP ; Insert two NOPs after the eraseNOP ; command is asserted

dsPIC33FJ12GP201/202

DS70264A_CN 第 52 页 超前信息 2007 Microchip Technology Inc.

例 4-2: 装载写缓冲器

例 4-3: 启动编程序列

; Set up NVMCON for row programming operationsMOV #0x4001, W0 ;MOV W0, NVMCON ; Initialize NVMCON

; Set up a pointer to the first program memory location to be written; program memory selected, and writes enabled

MOV #0x0000, W0 ; MOV W0, TBLPAG ; Initialize PM Page Boundary SFRMOV #0x6000, W0 ; An example program memory address

; Perform the TBLWT instructions to write the latches; 0th_program_word

MOV #LOW_WORD_0, W2 ; MOV #HIGH_BYTE_0, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latchTBLWTH W3, [W0++] ; Write PM high byte into program latch

; 1st_program_wordMOV #LOW_WORD_1, W2 ; MOV #HIGH_BYTE_1, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latchTBLWTH W3, [W0++] ; Write PM high byte into program latch

; 2nd_program_wordMOV #LOW_WORD_2, W2 ; MOV #HIGH_BYTE_2, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latchTBLWTH W3, [W0++] ; Write PM high byte into program latch•••

; 63rd_program_wordMOV #LOW_WORD_31, W2 ; MOV #HIGH_BYTE_31, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latchTBLWTH W3, [W0++] ; Write PM high byte into program latch

DISI #5 ; Block all interrupts with priority <7; for next 5 instructions

MOV #0x55, W0MOV W0, NVMKEY ; Write the 55 key MOV #0xAA, W1 ;MOV W1, NVMKEY ; Write the AA keyBSET NVMCON, #WR ; Start the erase sequence NOP ; Insert two NOPs after theNOP ; erase command is asserted

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 53 页

dsPIC33FJ12GP201/202

5.0 复位

复位模块结合了所有复位源并控制器件的主复位信号SYSRST。下面列出了器件的复位源:

• POR:上电复位

• BOR:欠压复位

• MCLR:主复位引脚复位

• SWR:RESET指令

• WDTO:看门狗定时器复位

• TRAPR:陷阱冲突复位

• IOPUWR:非法操作码和未初始化的 W 寄存器复位以及安全性复位

• CM:配置不匹配复位

图 5-1 给出了复位模块的简化框图。

任何有效的复位源都会使 SYSRST 信号有效。很多与CPU 和外设相关的寄存器均会被强制为已知的复位状态。大多数寄存器都不受复位影响;它们的状态在POR时未知,而在所有其他复位时不变。

任何类型的器件复位都会将RCON寄存器中相应的状态位置 1,以表明复位类型(见寄存器 5-1)。POR 将清零除 POR 位 (RCON<0>)之外的所有位, POR 位POR 时置 1。用户可在代码执行过程中的任何时间置 1或清零任何位。RCON 位仅用作状态位。在软件中将特定的复位状态位置 1 不会导致器件发生复位。

RCON寄存器还有与看门狗定时器和器件节能状态相关的其他位。本手册的其他章节中将讨论这些位的功能。

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

注: 如需了解寄存器复位状态的信息,请参见本手册中特定的外设或 CPU 章节。

注: RCON 寄存器中的状态位应该在被读取后清零,这样在器件复位后的下一个 RCON寄存器值才有意义。

dsPIC33FJ12GP201/202

DS70264A_CN 第 54 页 超前信息 2007 Microchip Technology Inc.

图 5-1: 复位系统框图

MCLR

VDD

VDD 上升检测

POR

休眠或空闲

RESET指令

WDT模块

毛刺滤波器

陷阱冲突

非法操作码

未初始化的 W 寄存器

SYSRST

内部稳压器

BOR

配置不匹配

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 55 页

dsPIC33FJ12GP201/202

寄存器 5-1: RCON:复位控制寄存器 (1)

R/W-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0TRAPR IOPUWR — — — — CM VREGS

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-1EXTR SWR SWDTEN(2) WDTO SLEEP IDLE BOR POR

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 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 = 使能 WDT0 = 禁止 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 位的设置无关。

dsPIC33FJ12GP201/202

DS70264A_CN 第 56 页 超前信息 2007 Microchip Technology Inc.

表 5-1: 复位标志位操作 (1)

bit 1 BOR:欠压复位标志位1 = 发生了欠压复位0 = 未发生欠压复位

bit 0 POR:上电复位标志位1 = 发生了上电复位0 = 未发生上电复位

标志位 置 1 所表示的事件 清零所表示的事件

TRAPR (RCON<15>) 陷阱冲突事件 POR

IOPUWR (RCON<14>) 非法操作码或访问了未初始化的 W 寄

存器

POR

EXTR (RCON<7>) MCLR 复位 POR

SWR (RCON<6>) RESET指令 POR

WDTO (RCON<4>) WDT 超时 PWRSAV指令和 POR

SLEEP (RCON<3>) PWRSAV #SLEEP指令 POR

IDLE (RCON<2>) PWRSAV #IDLE指令 POR

BOR (RCON<1>) BOR —

POR (RCON<0>) POR —

注 1: 所有复位标志位均可由用户软件置 1 或清零。

寄存器 5-1: RCON:复位控制寄存器 (1)

注 1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的一位置 1 不会导致器件复位。

2: 如果 FWDTEN 配置位为 1(未编程),则 WDT 始终使能,而与 SWDTEN 位的设置无关。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 57 页

dsPIC33FJ12GP201/202

5.1 复位时的时钟源选择

如果使能了时钟切换,器件复位时的系统时钟源选择如表 5-2 中所示。如果禁止了时钟切换功能,则总是根据振荡器配置位选择系统时钟源。更多详细信息,请参见第 7.0 节“振荡器配置”。

表 5-2: 不同复位类型的振荡器选择(使能时钟切换功能)

5.2 器件复位时间

表 5-3 总结了各种类型器件复位的复位时间。系统复位信号 SYSRST 在 POR 和 PWRT 延时结束后发出。

器件实际开始执行代码的时间还取决于系统振荡器延时,它包括振荡器起振定时器 (OST)延时和 PLL 锁定时间。OST 和 PLL 锁定时间与相应的 SYSRST 延时同时发生。

FSCM 延时决定在 SYSRST 信号发出到 FSCM 开始监视系统时钟源的时间。

表 5-3: 各种器件复位的复位延时

复位类型 确定时钟源的方式

POR 振荡器配置位(FNOSC<2:0>)BOR

MCLR COSC 控制位(OSCCON<14:12>)WDTR

SWR

复位类型 时钟源 SYSRST 延时系统时钟延时

FSCM延时

POR EC, FRC, LPRC Tpor + TSTARTUP + TRST — — 1, 2, 3ECPLL, FRCPLL Tpor + TSTARTUP + TRST TLOCK TFSCM 1, 2, 3, 5, 6XT, HS, SOSC Tpor + TSTARTUP + TRST TOST TFSCM 1, 2, 3, 4, 6XTPLL, HSPLL Tpor + TSTARTUP + TRST TOST + TLOCK TFSCM 1, 2, 3, 4, 5, 6

BOR EC, FRC, LPRC TSTARTUP + TRST — — 3ECPLL, FRCPLL TSTARTUP + TRST TLOCK TFSCM 3, 5, 6XT, HS, SOSC TSTARTUP + TRST TOST TFSCM 3, 4, 6XTPLL, HSPLL TSTARTUP + TRST TOST + TLOCK TFSCM 3, 4, 5, 6

MCLR 任何时钟 TRST — — 3WDT 任何时钟 TRST — — 3软件 任何时钟 TRST — — 3非法操作码 任何时钟 TRST — — 3未初始化的 W 寄存器

任何时钟 TRST — — 3

陷阱冲突 任何时钟 TRST — — 3注 1: Tpor = 上电复位延时 (标称值为 10 µs)。

2: TSTARTUP = 标称值为 20 µs 的条件 POR 延时 (如果使能片上稳压器)或标称值为 64 ms 的上电延时定时器延时 (如果禁止稳压器)。只有在使能稳压器时,所有从掉电状态返回的情况(包括从休眠模式唤醒),都要应用 TSTARTUP 延时。

3: Trst = 内部状态复位时间 (标称值为 20 µs)。

4: Tost = 振荡器起振定时器延时。 10 位计数器计数 1024 个振荡器周期后,才将振荡器时钟释放给系统使用。

5: Tlock = PLL 锁定时间 (标称值为 20 µs)。6: Tfscm = 故障保护时钟监视器延时 (标称值为 100 µs)。

dsPIC33FJ12GP201/202

DS70264A_CN 第 58 页 超前信息 2007 Microchip Technology Inc.

5.2.1 POR 和长振荡器起振时间

振荡器起振电路及其相关的延时定时器与上电时发生的器件复位延时无关。某些晶振电路 (尤其是低频晶振)的起振时间会相对较长。因此,在 SYSRST 信号发出后,可能会发生以下一种或多种情况:

• 振荡电路尚未起振。

• 振荡器起振定时器尚未超时 (如果使用了晶振)。

• PLL 未实现锁定 (如果使用了 PLL)。

在有效时钟源供系统使用前,器件不会开始执行代码。因此,如果必须确定复位延时,必须考虑到振荡器和PLL 起振延时。

5.2.2 故障保护时钟监视器 (FSCM)和器件复位

如果使能了 FSCM,它将在发出 SYSRST 信号时开始监视系统时钟源。如果有效时钟源在此时不可用,器件会自动切换至 FRC 振荡器,用户可以切换至陷阱服务程序 (Trap Service Routine, TSR)中要求的晶振。

5.2.2.1 晶振和 PLL 时钟源的 FSCM 延时

当系统时钟源由晶振和 / 或 PLL 提供时,在 POR 和PWRT 延时后会自动插入一小段延时 TFSCM。在此延时结束前,FSCM 不会开始监视系统时钟源。FSCM 延时的标称值为 500 µs,为振荡器和 / 或 PLL 稳定下来提供了更多的时间。在大多数情况下,如果禁止了 PWRT,FSCM 延时会防止在器件复位时产生振荡器故障陷阱。

5.3 特殊功能寄存器的复位状态

大多数与 CPU 和外设相关的特殊功能寄存器(SFR)会在器件复位时复位为某个特定值。 SFR 是按其外设或CPU 功能分组的,其复位值在本手册的相应章节中说明。除了两个寄存器外,所有其他 SFR 的复位值都与复位类型无关:

• 复位控制寄存器RCON的复位值取决于器件复位的类型。

• 振荡器控制寄存器 OSCCON 的复位值取决于复位类型和 FOSC 配置寄存器中对振荡器配置位设置的值。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 59 页

dsPIC33FJ12GP201/202

6.0 中断控制器

dsPIC33FJ12GP201/202 中断控制器将诸多外设中断请求信号缩减到一个到 dsPIC33FJ12GP201/202 CPU的中断请求。该控制器具有以下特性:

• 多达 8 个处理器异常和软件陷阱

• 7 个可由用户选择的优先级

• 具有多达 118 个向量的中断向量表(Interrupt Vector Table, IVT)

• 每个中断或异常源对应一个唯一的向量

• 在所指定的用户优先级内具有固定的优先级

• 用于支持调试的备用中断向量表 (Alternate Interrupt Vector Table, AIVT)

• 固定的中断进入和返回延时

6.1 中断向量表

中断向量表如图 6-1 所示。 IVT 位于程序存储器中,起始存储单元地址是 000004h。IVT 包含 126 个向量,由8 个不可屏蔽的陷阱向量和多达 118 个中断源组成。一般来说,每个中断源都有自己的中断向量。每个中断向量都包含一个 24 位宽的地址。每个中断向量存储单元中设置的值是其相关的中断服务程序 (InterruptService Routine, ISR)的起始地址。

中断向量有一个自然优先级;也就是说每个中断向量的优先级与其在向量表中的位置有关。如果其他方面都相同,较低地址的中断向量具有较高的自然优先级。例如,与向量 0 相关的中断比任何其他向量地址的中断具有更高的自然优先级。

dsPIC33FJ12GP201/202器件实现了多达21个唯一中断和 4 个不可屏蔽的陷阱。表 6-1 和表 6-2 对此做了总结。

6.1.1 备用中断向量表

备用中断向量表 (AIVT)位于 IVT 之后,如图 6-1 所示。ALTIVT 控制位(INTCON2<15>)控制对 AIVT 的访问。如果 ALTIVT 位置 1,则所有的中断和异常处理都将使用备用向量,而不是默认向量。备用向量与默认向量的组织方式相同。

AIVT支持调试功能,它提供了一种不需要将中断向量再编程就可以在应用程序和支持环境之间切换的方法。此特性也支持运行时在不同应用程序之间切换以便评估各种软件算法。如果不需要 AIVT,则应该用 IVT 中使用的地址设置 AIVT。

6.2 复位过程

器件复位不是真正的异常,因为复位过程中并不涉及到中断控制器。作为对复位的响应,dsPIC33FJ12GP201/202 器件清零其寄存器,同时强制 PC 为零。然后数字信号控制器从地址 0x000000 处开始执行程序。用户应用在复位地址中写入 GOTO 指令,会使程序执行重新定位到相应的启动程序。

注: 本数据手册总结了 dsPIC33FJ12GP201/202 器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F系列参考手册》。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

注: 应该使用包含 RESET指令的默认中断处理程序的入口地址编程 IVT和AIVT中所有未实现或未使用的向量存储单元。

dsPIC33FJ12GP201/202

DS70264A_CN 第 60 页 超前信息 2007 Microchip Technology Inc.

图 6-1: dsPIC33FJ12GP201/202 中断向量表

复位——GOTO指令 0x000000复位——GOTO地址 0x000002

保留 0x000004振荡器故障陷阱向量

地址错误陷阱向量

堆栈错误陷阱向量

数学错误陷阱向量

保留

保留

保留

中断向量 0 0x000014中断向量 1

~~~

中断向量 52 0x00007C中断向量 53 0x00007E中断向量 54 0x000080

~~~

中断向量 116 0x0000FC中断向量 117 0x0000FE

保留 0x000100保留 0x000102保留

振荡器故障陷阱向量

地址错误陷阱向量

堆栈错误陷阱向量

数学错误陷阱向量

保留

保留

保留

中断向量 0 0x000114中断向量 1

~~~

中断向量 52 0x00017C中断向量 53 0x00017E中断向量 54 0x000180

~~~

中断向量 116中断向量 117 0x0001FE代码起始单元 0x000200

自然优

先级降

序排

中断向量表(IVT)(1)

备用中断向量表(AIVT)(1)

注 1: 请参见表 6-1 了解所实现的中断向量列表。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 61 页

dsPIC33FJ12GP201/202

表 6-1: 中断向量

向量编号中断请求

(IRQ)编号IVT 地址 AIVT 地址 中断源

8 0 0x000014 0x000114 INT0——外部中断 09 1 0x000016 0x000116 IC1——输入捕捉 1

10 2 0x000018 0x000118 OC1——输出比较 111 3 0x00001A 0x00011A T1——Timer112 4 0x00001C 0x00011C 保留

13 5 0x00001E 0x00011E IC2——输入捕捉 214 6 0x000020 0x000120 OC2——输出比较 215 7 0x000022 0x000122 T2——Timer216 8 0x000024 0x000124 T3——Timer317 9 0x000026 0x000126 SPI1E——SPI1 错误

18 10 0x000028 0x000128 SPI1——SPI1 传输完成

19 11 0x00002A 0x00012A U1RX——UART1 接收器

20 12 0x00002C 0x00012C U1TX——UART1 发送器

21 13 0x00002E 0x00012E ADC1——ADC 122 14 0x000030 0x000130 保留

23 15 0x000032 0x000132 保留

24 16 0x000034 0x000134 SI2C1——I2C1 从事件

25 17 0x000036 0x000136 MI2C1——I2C1 主事件

26 18 0x000038 0x000138 保留

27 19 0x00003A 0x00013A 电平变化通知中断

28 20 0x00003C 0x00013C INT1——外部中断 129 21 0x00003E 0x00013E 保留

30 22 0x000040 0x000140 IC7——输入捕捉 731 23 0x000042 0x000142 IC8——输入捕捉 832 24 0x000044 0x000144 保留

33 25 0x000046 0x000146 保留

34 26 0x000048 0x000148 保留

35 27 0x00004A 0x00014A 保留

36 28 0x00004C 0x00014C 保留

37 29 0x00004E 0x00014E INT2——外部中断 238 30 0x000050 0x000150 保留

39 31 0x000052 0x000152 保留

40 32 0x000054 0x000154 保留

41 33 0x000056 0x000156 保留

42 34 0x000058 0x000158 保留

43 35 0x00005A 0x00015A 保留

44 36 0x00005C 0x00015C 保留

45 37 0x00005E 0x00015E 保留

46 38 0x000060 0x000160 保留

47 39 0x000062 0x000162 保留

48 40 0x000064 0x000164 保留

49 41 0x000066 0x000166 保留

50 42 0x000068 0x000168 保留

51 43 0x00006A 0x00016A 保留

52 44 0x00006C 0x00016C 保留

53 45 0x00006E 0x00016E 保留

dsPIC33FJ12GP201/202

DS70264A_CN 第 62 页 超前信息 2007 Microchip Technology Inc.

表 6-2: 陷阱向量

54 46 0x000070 0x000170 保留

55 47 0x000072 0x000172 保留

56 48 0x000074 0x000174 保留

57 49 0x000076 0x000176 保留

58 50 0x000078 0x000178 保留

59 51 0x00007A 0x00017A 保留

60 52 0x00007C 0x00017C 保留

61 53 0x00007E 0x00017E 保留

62 54 0x000080 0x000180 保留

63 55 0x000082 0x000182 保留

64 56 0x000084 0x000184 保留

65 57 0x000086 0x000186 保留

66 58 0x000088 0x000188 保留

67 59 0x00008A 0x00018A 保留

68 60 0x00008C 0x00018C 保留

69 61 0x00008E 0x00018E 保留

70 62 0x000090 0x000190 保留

71 63 0x000092 0x000192 保留

72 64 0x000094 0x000194 保留

73 65 0x000096 0x000196 U1E——UART1 错误

74 66 0x000098 0x000198 保留

75 67 0x00009A 0x00019A 保留

76 68 0x00009C 0x00019C 保留

77 69 0x00009E 0x00019E 保留

78 70 0x0000A0 0x0001A0 保留

79 71 0x0000A2 0x0001A2 保留

80-125 72-117 0x0000A4-0x0000FE

0x0001A4-0x0001FE

保留

向量编号 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 保留

表 6-1: 中断向量 (续)

向量编号中断请求

(IRQ)编号IVT 地址 AIVT 地址 中断源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 63 页

dsPIC33FJ12GP201/202

6.3 中断控制和状态寄存器

dsPIC33FJ12GP201/202 器件共有 17 个用于中断控制器的寄存器:

• 中断控制寄存器 1 (INTCON1)• 中断控制寄存器 2 (INTCON2)• 中断标志状态寄存器 (IFSx)• 中断允许控制寄存器 (IECx)• 中断优先级控制寄存器 (IPCx)• 中断控制和状态寄存器 (INTTREG)

6.3.1 INTCON1 和 INTCON2INTCON1 和 INTCON2 控制全局中断。INTCON1 包含中断嵌套禁止 (NSTDIS)位以及处理器陷阱源的控制和状态标志。 INTCON2 寄存器控制外部中断请求信号行为以及备用中断向量表的使用。

6.3.2 IFSxIFS 寄存器包含所有中断请求标志。每个中断源都有一个状态位,由各自的外设或外部信号置 1,而由软件清零。

6.3.3 IECxIEC 寄存器包含所有中断允许位。这些控制位用于单独允许外设或外部信号中断。

6.3.4 IPCxIPC 寄存器用于设置每个中断源的中断优先级。可以给每个用户中断源分配 8 个优先级之一。

6.3.5 INTTREGINTTREG 寄存器包含相关的中断向量编号和新的 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-19说明了所有的中断寄存器。

dsPIC33FJ12GP201/202

DS70264A_CN 第 64 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-1: SR:CPU 状态寄存器 (1)

R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R -0 R/W-0OA OB SA SB OAB SAB DA DC

bit 15 bit 8

R/W-0(3) R/W-0(3) R/W-0(3) R-0 R/W-0 R/W-0 R/W-0 R/W-0IPL2(2) IPL1(2) IPL0(2) RA N OV Z C

bit 7 bit 0

图注:

C = 只可清零位 R = 可读位 U = 未实现位,读为 0S = 只可置 1 位 W = 可写位 -n = POR 时的值

1 = 置 1 0 = 清零 x = 未知

bit 7-5 IPL<2:0>:CPU 中断优先级状态位 (1)

111 = CPU 中断优先级为 7 (15),禁止用户中断110 = CPU 中断优先级为 6 (14)101 = CPU 中断优先级为 5 (13)100 = CPU 中断优先级为 4 (12)011 = CPU 中断优先级为 3 (11)010 = CPU 中断优先级为 2 (10)001 = CPU 中断优先级为 1 (9)000 = CPU 中断优先级为 0 (8)

注 1: 如需了解整个寄存器的详细信息,请参见寄存器 2-1:“SR:CPU 状态寄存器”。

2: IPL<2:0> 位与 IPL<3> 位(CORCON<3>)组合形成 CPU 的中断优先级。如果 IPL<3> = 1,那么括号中的值表示 IPL。当 IPL<3> = 1时,禁止用户中断。

3: 当 NSTDIS (INTCON1<15>) = 1时, IPL<2:0> 状态位是只读的。

寄存器 6-2: CORCON:内核控制寄存器 (1)

U-0 U-0 U-0 R/W-0 R/W-0 R-0 R-0 R-0— — — US EDT DL<2:0>

bit 15 bit 8

R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R/W-0 R/W-0 R/W-0SATA SATB SATDW ACCSAT IPL3(2) PSV RND IF

bit 7 bit 0

图注: C = 只可清零位

R = 可读位 W = 可写位 -n = POR 时的值 1 = 置 10 = 清零 x = 未知 U = 未实现位,读为 0

bit 3 IPL3:CPU 中断优先级状态位 3(2)

1 = CPU 中断优先级大于 70 = CPU 中断优先级等于或小于 7

注 1: 如需了解整个寄存器的详细信息,请参见寄存器 2-2:“CORCON:内核控制寄存器”。

2: IPL3 位与 IPL<2:0> 位 (SR<7:5>)组合形成 CPU 的中断优先级。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 65 页

dsPIC33FJ12GP201/202

寄存器 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-0NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE

bit 15 bit 8

R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0SFTACERR DIV0ERR — MATHERR ADDRERR STKERR OSCFAIL —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 NSTDIS: 中断嵌套禁止位

1 = 禁止中断嵌套0 = 使能中断嵌套

bit 14 OVAERR: 累加器 A 溢出陷阱标志位

1 = 陷阱由累加器 A 溢出引起0 = 陷阱不是由累加器 A 溢出引起

bit 13 OVBERR: 累加器 B 溢出陷阱标志位

1 = 陷阱由累加器 B 溢出引起0 = 陷阱不是由累加器 B 溢出引起

bit 12 COVAERR: 累加器 A 灾难性溢出陷阱标志位

1 = 陷阱由累加器 A 灾难性溢出引起 0 = 陷阱不是由累加器 A 灾难性溢出引起

bit 11 COVBERR: 累加器 B 灾难性溢出陷阱标志位

1 = 陷阱由累加器 B 灾难性溢出引起 0 = 陷阱不是由累加器 B 灾难性溢出引起

bit 10 OVATE: 累加器 A 溢出陷阱允许位

1 = 允许累加器 A 溢出陷阱0 = 禁止陷阱

bit 9 OVBTE: 累加器 B 溢出陷阱允许位

1 = 允许累加器 B 溢出陷阱0 = 禁止陷阱

bit 8 COVTE: 灾难性溢出陷阱允许位

1 = 允许累加器 A 或 B 的灾难性溢出陷阱0 = 禁止陷阱

bit 7 SFTACERR: 累加器移位错误状态位

1 = 数学错误陷阱由非法累加器移位引起0 = 数学错误陷阱不是由非法累加器移位引起

bit 6 DIV0ERR: 算术错误状态位

1 = 数学错误陷阱由被零除引起0 = 数学错误陷阱不是由被零除引起

bit 5 未实现:读为 0

bit 4 MATHERR: 算术错误状态位

1 = 发生了数学错误陷阱0 = 未发生数学错误陷阱

bit 3 ADDRERR: 地址错误陷阱状态位

1 = 发生了地址错误陷阱0 = 未发生地址错误陷阱

dsPIC33FJ12GP201/202

DS70264A_CN 第 66 页 超前信息 2007 Microchip Technology Inc.

bit 2 STKERR:堆栈错误陷阱状态位

1 = 发生了堆栈错误陷阱0 = 未发生堆栈错误陷阱

bit 1 OSCFAIL:振荡器故障陷阱状态位

1 = 发生了振荡器故障陷阱0 = 未发生振荡器故障陷阱

bit 0 未实现:读为 0

寄存器 6-3: INTCON1:中断控制寄存器 1 (续)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 67 页

dsPIC33FJ12GP201/202

寄存器 6-4: INTCON2:中断控制寄存器 2

R/W-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0ALTIVT DISI — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0— — — — — INT2EP INT1EP INT0EP

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

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 = 上升沿中断

dsPIC33FJ12GP201/202

DS70264A_CN 第 68 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-5: IFS0:中断标志状态寄存器 0

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF

bit 15 bit 8

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0T2IF OC2IF IC2IF — T1IF OC1IF IC1IF INT0IF

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 AD1IF:ADC1 转换完成中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 12 U1TXIF:UART1 发送器中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 11 U1RXIF:UART1 接收器中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 10 SPI1IF:SPI1 事件中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 9 SPI1EIF:SPI1 故障中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 8 T3IF:Timer3 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 7 T2IF:Timer2 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 6 OC2IF:输出比较通道 2 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 5 IC2IF:输入捕捉通道 2 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 4 未实现:读为 0

bit 3 T1IF:Timer1 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 2 OC1IF:输出比较通道 1 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 69 页

dsPIC33FJ12GP201/202

bit 1 IC1IF:输入捕捉通道 1 中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 0 INT0IF:外部中断 0 标志状态位

1 = 产生了中断请求0 = 未产生中断请求

寄存器 6-5: IFS0:中断标志状态寄存器 0 (续)

dsPIC33FJ12GP201/202

DS70264A_CN 第 70 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-6: IFS1:中断标志状态寄存器 1

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0— — INT2IF — — — — —

bit 15 bit 8

R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0IC8IF IC7IF — INT1IF CNIF — MI2C1IF SI2C1IF

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 INT2IF:外部中断 2 标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 12-8 未实现:读为 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 = 未产生中断请求

bit 2 未实现:读为 0

bit 1 MI2C1IF:I2C1 主事件中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 0 SI2C1IF:I2C1 从事件中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 71 页

dsPIC33FJ12GP201/202

寄存器 6-7: IFS4:中断标志状态寄存器 4

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — U1EIF —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-2 未实现:读为 0

bit 1 U1EIF:UART1 错误中断标志状态位

1 = 产生了中断请求0 = 未产生中断请求

bit 0 未实现:读为 0

dsPIC33FJ12GP201/202

DS70264A_CN 第 72 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-8: IEC0:中断允许控制寄存器 0

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE

bit 15 bit 8

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0T2IE OC2IE IC2IE — T1IE OC1IE IC1IE INT0IE

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 AD1IE:ADC1 转换完成中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 12 U1TXIE: UART1 发送器中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 11 U1RXIE:UART1 接收器中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 10 SPI1IE:SPI1 事件中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 9 SPI1EIE:SPI1 错误中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 8 T3IE:Timer3 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 7 T2IE:Timer2 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 6 OC2IE:输出比较通道 2 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 5 IC2IE:输入捕捉通道 2 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 4 未实现:读为 0

bit 3 T1IE:Timer1 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 2 OC1IE:输出比较通道 1 中断允许位

1 = 允许中断请求0 = 禁止中断请求

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 73 页

dsPIC33FJ12GP201/202

bit 1 IC1IE:输入捕捉通道 1 中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 0 INT0IE:外部中断 0 允许位

1 = 允许中断请求0 = 禁止中断请求

寄存器 6-8: IEC0:中断允许控制寄存器 0 (续)

dsPIC33FJ12GP201/202

DS70264A_CN 第 74 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-9: IEC1:中断允许控制寄存器 1

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0— — INT2IE — — — — —

bit 15 bit 8

R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0IC8IE IC7IE — INT1IE CNIE — MI2C1IE SI2C1IE

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 INT2IE:外部中断 2 允许位

1 = 允许中断请求0 = 禁止中断请求

bit 12-8 未实现:读为 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 = 禁止中断请求

bit 2 未实现:读为 0

bit 1 MI2C1IE:I2C1 主事件中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 0 SI2C1IE:I2C1 从事件中断允许位

1 = 允许中断请求0 = 禁止中断请求

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 75 页

dsPIC33FJ12GP201/202

寄存器 6-10: IEC4:中断允许控制寄存器 4

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 U-0— — — — — — U1EIE —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-2 未实现:读为 0

bit 1 U1EIE:UART1 错误中断允许位

1 = 允许中断请求0 = 禁止中断请求

bit 0 未实现:读为 0

dsPIC33FJ12GP201/202

DS70264A_CN 第 76 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-11: IPC0:中断优先级控制寄存器 0

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— T1IP<2:0> — OC1IP<2:0>

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— IC1IP<2:0> — INT0IP<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 T1IP<2:0>:Timer1 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 11 未实现:读为 0

bit 10-8 OC1IP<2:0>:输出比较通道 1 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 7 未实现:读为 0

bit 6-4 IC1IP<2:0>:输入捕捉通道 1 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3 未实现:读为 0

bit 2-0 INT0IP<2:0>:外部中断 0 优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 77 页

dsPIC33FJ12GP201/202

寄存器 6-12: IPC1:中断优先级控制寄存器 1

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— T2IP<2:0> — OC2IP<2:0>

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0— IC2IP<2:0> — — — —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 T2IP<2:0>:Timer2 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 11 未实现:读为 0

bit 10-8 OC2IP<2:0>:输出比较通道 2 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 7 未实现:读为 0

bit 6-4 IC2IP<2:0>:输入捕捉通道 2 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3-0 未实现:读为 0

dsPIC33FJ12GP201/202

DS70264A_CN 第 78 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-13: IPC2:中断优先级控制寄存器 2

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— U1RXIP<2:0> — SPI1IP<2:0>

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— SPI1EIP<2:0> — T3IP<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 U1RXIP<2:0>:UART1 接收器中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 11 未实现:读为 0

bit 10-8 SPI1IP<2:0>:SPI1 事件中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 7 未实现:读为 0

bit 6-4 SPI1EIP<2:0>:SPI1 错误中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3 未实现:读为 0

bit 2-0 T3IP<2:0>:Timer3 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 79 页

dsPIC33FJ12GP201/202

寄存器 6-14: IPC3:中断优先级控制寄存器 3

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— AD1IP<2:0> — U1TXIP<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-7 未实现:读为 0

bit 6-4 AD1IP<2:0>:ADC1 转换完成中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3 未实现:读为 0

bit 2-0 U1TXIP<2:0>:UART1 发送器中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

dsPIC33FJ12GP201/202

DS70264A_CN 第 80 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-15: IPC4:中断优先级控制寄存器 4

U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0— CNIP<2:0> — — — —

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— MI2C1IP<2:0> — SI2C1IP<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 CNIP<2:0>:电平变化通知中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 11-7 未实现:读为 0

bit 6-4 MI2C1IP<2:0>:I2C1 主事件中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3 未实现:读为 0

bit 2-0 SI2C1IP<2:0>:I2C1 从事件中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 81 页

dsPIC33FJ12GP201/202

寄存器 6-16: IPC5:中断优先级控制寄存器 5

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0— IC8IP<2:0> — IC7IP<2:0>

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0— — — — — INT1IP<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 IC8IP<2:0>:输入捕捉通道 8 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 11 未实现:读为 0

bit 10-8 IC7IP<2:0>:输入捕捉通道 7 中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 7-3 未实现:读为 0

bit 2-0 INT1IP<2:0>:外部中断 1 优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

dsPIC33FJ12GP201/202

DS70264A_CN 第 82 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-17: IPC7:中断优先级控制寄存器 7

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0— INT2IP<2:0> — — — —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-7 未实现:读为 0

bit 6-4 INT2IP<2:0>:外部中断 2 优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3-0 未实现:读为 0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 83 页

dsPIC33FJ12GP201/202

寄存器 6-18: IPC16:中断优先级控制寄存器 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0— U1EIP<2:0> — — — —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-7 未实现:读为 0

bit 6-4 U1EIP<2:0>:UART1 错误中断优先级位

111 = 中断优先级为 7 ( 高优先级中断)•••001 = 中断优先级为 1000 = 禁止中断源

bit 3-0 未实现:读为 0

dsPIC33FJ12GP201/202

DS70264A_CN 第 84 页 超前信息 2007 Microchip Technology Inc.

寄存器 6-19: INTTREG:中断控制和状态寄存器

U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0— — — — ILR<3:0>

bit 15 bit 8

U-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0— VECNUM<6:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-12 未实现:读为 0

bit 11-8 ILR:新的 CPU 中断优先级位

1111 = CPU 中断优先级为 15•••0001 = CPU 中断优先级为 10000 = CPU 中断优先级为 0

bit 7 未实现:读为 0

bit 6-0 VECNUM:待处理中断向量编号位

0111111 = 待处理中断向量的编号为 135•••0000001 = 待处理中断向量的编号为 90000000 = 待处理中断向量的编号为 8

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 85 页

dsPIC33FJ12GP201/202

6.4 中断设置过程

6.4.1 初始化

要在初始化时配置中断源:

1. 如果不需要嵌套中断,则将 NSTDIS 位(INTCON1<15>)置 1。

2. 通过写相应 IPCx 寄存器中的控制位为中断源选择由用户分配的优先级。优先级将取决于具体的应用和中断源类型。如果不需要多个优先级,则可以将所有允许中断源的 IPCx 寄存器控制位编程为相同的非零值。

3. 将相应 IFSx 寄存器中与外设相关的中断标志状态位清零。

4. 通过将相应 IECx 寄存器中与中断源相关的中断允许控制位置 1 来允许中断源。

6.4.2 中断服务程序

如何声明ISR以及怎样使用正确的向量地址初始化IVT,将取决于编程语言(C 语言或汇编语言)和用于开发应用程序的语言开发工具包。

一般情况下,用户应用必须将相应 IFSx寄存器中与 ISR处理的中断源相对应的中断标志清零。否则,在退出程序后将立即再次进入 ISR。如果 ISR 用汇编语言编码,则必须使用 RETFIE 指令结束 ISR,以便将保存的 PC值、 SRL 值和原先的 CPU 优先级弹出堆栈。

6.4.3 陷阱服务程序

陷阱服务程序(TSR)的编码方式类似于 ISR,只是必须将 INTCON1 寄存器中相应的陷阱状态标志清零,以避免重新进入 TSR。

6.4.4 中断禁止

可以使用以下步骤禁止所有用户中断:

1. 使用 PUSH指令将当前的 SR 值压入软件堆栈。

2. 通过将值 OEh 与 SRL 进行逻辑或运算来强制将CPU 的优先级设置为 7。

要允许用户中断,则可以使用POP指令恢复先前的SR值。

使用 DISI 指令可以方便地将优先级为 1-6 的中断禁止一段固定的时间。 DISI指令不能禁止优先级为 7 的中断源。

注: 在器件复位时,IPCx 寄存器被初始化,为所有用户中断源分配优先级 4。 注: 只能禁止优先级小于或等于7的用户中断。

不能禁止陷阱源 (优先级为 8-15)。

dsPIC33FJ12GP201/202

DS70264A_CN 第 86 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 87 页

dsPIC33FJ12GP201/202

7.0 振荡器配置

dsPIC33FJ12GP201/202 振荡器系统提供:

• 可选择多种外部和内部振荡器作为时钟源

• 片上PLL可将内部工作频率调整为所要求系统时钟频率

• 内部FRC振荡器也可使用PLL,因此允许在没有任何外部时钟产生硬件的情况下全速工作

• 不同时钟源之间的时钟切换

• 可节省系统功耗的可编程时钟后分频器

• 故障保护时钟监视器 (FSCM),可检测时钟故障并采取故障保护措施

• 一个时钟控制寄存器 (OSCCON)

• 用于主振荡器选择的非易失性配置位

图 7-1 给出了振荡器系统的简化框图。

图 7-1: dsPIC33FJ12GP201/202 振荡器系统框图

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

dsPIC33F

PLL

辅助振荡器

SOSCEN使能振荡器

SOSCO

SOSCI

时钟源选择

(供其他模块使用)

OSC1

OSC2

主振荡器

XTPLL, HSPLL,

XT, HS, EC

CPU

外设

/FR

CD

IIV

FRCDIV<2:0>

WDT, PWRT

FRC, FRCDIVNFRC振荡器

LPRC振荡器

SOSC

LPRC

/DO

ZE

时钟控制逻辑

故障保护

时钟监视器

DOZE<2:0>

ECPLL, FRCPLL

16 分频FRCDIV16

dsPIC33FJ12GP201/202

DS70264A_CN 第 88 页 超前信息 2007 Microchip Technology Inc.

7.1 CPU 时钟系统

dsPIC33FJ12GP201/202器件提供7种系统时钟选择 :

• 快速 RC (FRC)振荡器

• 带 PLL 的 FRC 振荡器

• 主 (XT、 HS 或 EC)振荡器

• 带 PLL 的主振荡器

• 辅助 (LP)振荡器

• 低功耗 RC (LPRC)振荡器

• 带后分频器的 FRC 振荡器

7.1.1 系统时钟源

7.1.1.1 快速 RC快速 RC (FRC)内部振荡器工作频率的标称值为7.37 MHz。用户软件能够通过有选择地指定 FRC 时钟的分频比 (从 1:2 至 1:256)调节 FRC 频率。使用 FRCDIV<2:0> (CLKDIV<10:8>)位来选择该分频比。

7.1.1.2 主振荡器

主振荡器能以下列任一时钟作为其时钟源:

• XT(晶振):3 MHz 至 10 MHz 范围内的晶振和陶瓷谐振器。晶振连接在 OSC1 和 OSC2 引脚之间。

• HS (高速晶振):10 MHz 至 40 MHz 范围内的晶振。晶振连接在 OSC1 和 OSC2 引脚之间。

• EC(外部时钟):0.8 MHz 至 64 MHz 范围内的外部时钟信号。外部时钟信号直接施加到 OSC1 引脚。

7.1.1.3 辅助振荡器

辅助 (LP)振荡器是为低功耗运行而设计的,它使用32.768 kHz 晶振或陶瓷谐振器。LP 振荡器使用 SOSCI和 SOSCO 引脚。

7.1.1.4 低功耗 RC低功耗 RC (LPRC)内部振荡器工作频率的标称值为32.768 kHz。它也可以用作看门狗定时器(WDT)和故障保护时钟监视器 (FSCM)的参考时钟。

7.1.1.5 FRC可选择将 FRC 和主振荡器产生的时钟信号加到片上锁相环(PLL),为器件工作提供宽范围的输出频率。PLL 配置如第 7.1.3 节“PLL 配置”中所述。

7.1.2 系统时钟选择

通过设置配置位可选择器件发生上电复位事件时使用的振荡器源。振荡器配置位设置位于程序存储器的配置寄存器中。(更多详细信息,请参见第 18.1 节“配置位”。)初始振荡器选择配置位 FNOSC<2:0>(FOSCSEL<2:0>)和主振荡器模式选择配置位POSCMD<1:0>(FOSC<1:0>)选择在上电复位时使用的振荡器源。 FRC 主振荡器是默认的(未编程的)选择。

配置位允许用户在12种不同的时钟模式之间进行选择,如表 7-1 所示。

振荡器的输出 (或当选择了 PLL 模式时 PLL 的输出)FOSC 被 2 分频以产生器件指令时钟(FCY)。FCY 定义器件的工作速度,dsPIC33FJ12GP201/202架构可支持高 40 MHz 的工作速度。

指令执行速度或器件工作频率 FCY 如下:

公式 7-1: 器件工作频率

7.1.3 PLL 配置

主振荡器和内部 FRC 振荡器能有选择地使用片上 PLL来获取更高的工作速度。PLL 在选择器件工作速度方面提供很大的灵活性。图 7-2 给出了 PLL 的框图。

以 FIN 表示的主振荡器或 FRC 的输出在提供给 PLL 的压控振荡器(Voltage Controlled Oscillator,VCO)之前被预分频因子(N1)2、3、 ... 或 33 分频。VCO 的输入必须在 0.8 MHz 到 8 MHz 的范围内进行选择。由于 小的预分频因子为 2,这意味着必须在 1.6 MHz 到16 MHz 的范围内选择 FIN 。使用PLLPRE<4:0> 位(CLKDIV<4:0>)来选择预分频因子“N1”。

可由 PLLDIV<8:0> 位(PLLFBD<8:0>)选择 PLL 反馈倍频比,这些位提供可使VCO的输入倍频的因子“M”。必须选择该因子以使产生的 VCO 输出频率在 100 MHz到 200 MHz 范围内。

VCO 输出进一步被后分频因子 “N2”分频。使用PLLPOST<1:0> 位 (CLKDIV<7:6>)来选择该因子。“N2”可以是 2、 4 或 8,必须选择该因子,以使 PLL输出频率(FOSC)在 12.5 MHz 到 80 MHz 范围内,以产生 6.25-40 MIPS 的器件工作速度。

FCY = FOSC/2

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 89 页

dsPIC33FJ12GP201/202对于主振荡器或 FRC 振荡器,输出为 FIN,则 PLL 的输出 FOSC 为 (由以下公式计算):

公式 7-2: FOSC 计算

例如,假设正在使用 10 MHz 晶振,“带 PLL 的 XT”为所选的振荡器模式。

• 如果 PLLPRE<4:0> = 0,那么 N1 = 2。这将产生频率为 10/2 = 5 MHz 的 VCO 输入,这一频率在0.8-8 MHz 的可接受范围内。

• 如果 PLLDIV<8:0> = 0x1E,那么 M = 32。这将产生频率为 5 x 32 = 160 MHz 的 VCO 输出,这一频率在所需的 100-200 MHz 范围内。

• 如果 PLLPOST<1:0> = 0,那么 N2 = 2。这提供160/2 = 80 MHz 的 Fosc。产生的器件工作速度是80/2 = 40 MIPS。

公式 7-3: 带 PLL 的 XT 模式示例

图 7-2: dsPIC33FJ12GP201/202 PLL 框图

表 7-1: 时钟选择的配置位值

( ) M N1*N2FOSC = FIN*

FCY =

FOSC = 1 (10000000*32) = 40 MIPS

2 2 2*2

振荡器模式 振荡器源 POSCMD<1:0> FNOSC<2:0> 注

带 N 分频的快速 RC 振荡器(FRCDIVN)

内部 11 111 1, 2

带 16 分频的快速 RC 振荡器(FRCDIV16)

内部 11 110 1

低功耗 RC 振荡器 (LPRC) 内部 11 101 1辅助 (Timer1)振荡器 (SOSC) 辅助 11 100 1带 PLL 的主振荡器(HS)(HSPLL) 主 10 011

带 PLL 的主振荡器(XT)(XTPLL) 主 01 011

带 PLL 的主振荡器(EC)(ECPLL) 主 00 011 1主振荡器 (HS) 主 10 010

主振荡器 (XT) 主 01 010

主振荡器 (EC) 主 00 010 1带 PLL 的快速 RC 振荡器 (FRCPLL) 内部 11 001 1快速 RC 振荡器 (FRC) 内部 11 000 1注 1: OSC2 引脚功能由 OSCIOFNC 配置位决定。

2: 对于未编程 (已擦除)器件,这是默认的振荡器模式。

0.8-8.0 MHz的信号

100-200 MHz的信号

2, 4, 8

2-513

2-331.6-16.0 MHz

时钟源(晶振、外部时钟 PLLPRE X VCO

PLLDIV

PLLPOST或内部 RC)

的信号

12.5-80 MHz的信号

FOSC

分频

倍频

分频

dsPIC33FJ12GP201/202

DS70264A_CN 第 90 页 超前信息 2007 Microchip Technology Inc.

寄存器 7-1: OSCCON:振荡器控制寄存器

U-0 R-0 R-0 R-0 U-0 R/W-y R/W-y R/W-y— COSC<2:0> — NOSC<2:0>

bit 15 bit 8

R/W-0 R/W-0 R-0 U-0 R/C-0 U-0 R/W-0 R/W-0CLKLOCK IOLOCK LOCK — CF — LPOSCEN OSWEN

bit 7 bit 0

图注: y = 在 POR 时由配置位设置的值

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 未实现:读为 0

bit 14-12 COSC<2:0>:当前振荡器选择位(只读)

000 = 快速 RC 振荡器 (FRC)001 = 带 PLL 的快速 RC 振荡器 (FRC) 010 = 主振荡器(XT、 HS 和 EC)011 = 带 PLL 的主振荡器 (XT、 HS 和 EC)100 = 辅助振荡器(SOSC)101 = 低功耗 RC 振荡器 (LPRC)110 = 带 16 分频的快速 RC 振荡器 (FRC)111 = 带 n 分频的快速 RC 振荡器 (FRC)

bit 11 未实现:读为 0

bit 10-8 NOSC<2:0>:新振荡器选择位

000 = 快速 RC 振荡器 (FRC)001 = 带 PLL 的快速 RC 振荡器 (FRC) 010 = 主振荡器(XT、 HS 和 EC)011 = 带 PLL 的主振荡器 (XT、 HS 和 EC)100 = 辅助振荡器(SOSC)101 = 低功耗 RC 振荡器 (LPRC)110 = 带 16 分频的快速 RC 振荡器 (FRC)111 = 带 n 分频的快速 RC 振荡器 (FRC)

bit 7 CLKLOCK:时钟锁定使能位 如果时钟切换被使能且 FSCM 被禁止 (FOSC<FCKSM> = 0b01)1 = 时钟切换被禁止,系统时钟源被锁定0 = 时钟切换被使能,系统时钟源可被时钟切换更改

bit 6 IOLOCK: 外设引脚选择锁定位1 = 外设引脚选择被锁定,不允许写入外设引脚选择寄存器0 = 外设引脚选择未锁定,允许写入外设引脚选择寄存器

bit 5 LOCK: PLL 锁定状态位(只读) 1 = 表示 PLL 处于锁定状态,或 PLL 起振定时器延时结束0 = 表示 PLL 处于失锁状态,起振定时器在运行或 PLL 被禁止

bit 4 未实现:读为 0

bit 3 CF:时钟故障检测位 (由应用程序读 / 清零) 1 = FSCM 检测到时钟故障0 = FSCM 未检测到时钟故障

bit 2 未实现:读为 0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 91 页

dsPIC33FJ12GP201/202

bit 1 LPOSCEN: 辅助(LP)振荡器使能位

1 = 使能辅助振荡器0 = 禁止辅助振荡器

bit 0 OSWEN: 振荡器切换使能位

1 = 请求切换到由 NOSC<2:0> 位指定的振荡器0 = 振荡器切换完成

寄存器 7-1: OSCCON:振荡器控制寄存器 (续)

dsPIC33FJ12GP201/202

DS70264A_CN 第 92 页 超前信息 2007 Microchip Technology Inc.

寄存器 7-2: CLKDIV:时钟分频比寄存器

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0ROI DOZE<2:0> DOZEN(1) FRCDIV<2:0>

bit 15 bit 8

R/W-0 R/W-1 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0PLLPOST<1:0> — PLLPRE<4:0>

bit 7 bit 0

图注: y = 在 POR 时由配置位设置的值

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ROI:中断恢复位

1 = 中断将清零 DOZEN 位,并且处理器时钟 / 外设时钟比被设置为 1:10 = 中断对 DOZEN 位无影响

bit 14-12 DOZE<2:0>:处理器时钟分频比选择位

000 = Fcy/1 (默认)001 = FCY/2010 = FCY/4011 = FCY/8100 = FCY/16101 = FCY/32110 = FCY/64111 = FCY/128

bit 11 DOZEN:DOZE 模式使能位 (1)

1 = DOZE<2:0> 位域指定外设时钟和处理器时钟之间的比率0 = 处理器时钟 / 外设时钟比率强制为 1:1

bit 10-8 FRCDIV<2:0>:内部快速 RC 振荡器后分频比位

000 = FRC 1 分频001 = FRC 2 分频010 = FRC 4 分频011 = FRC 8 分频 (默认)100 = FRC 16 分频101 = FRC 32 分频110 = FRC 64 分频111 = FRC 256 分频

bit 7-6 PLLPOST<1:0>:PLL VCO 输出分频比选择位 (也表示为“N2”, PLL 后分频比)

00 = 输出 /2 01 = 输出 /4 10 = 保留(默认为输出 /4)11 = 输出 /8

bit 5 未实现:读为 0

bit 4-0 PLLPRE<4:0>:PLL 相位检测器输入分频比位(也表示为 “N1”, PLL 预分频比)

00000 = 输入 /200001 = 输入 /3 • • • 11111 = 输入 /33

注 1: 该位在 ROI 位置 1 和发生中断时清零。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 93 页

dsPIC33FJ12GP201/202

寄存器 7-3: PLLFBD:PLL 反馈倍频比寄存器

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0(1)

— — — — — — — PLLDIV<8>bit 15 bit 8

R/W-0 R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0PLLDIV<7:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-9 未实现:读为 0

bit 8-0 PLLDIV<8:0>:PLL 反馈倍频比位(也表示为 “M”, PLL 倍频比)

000000000 = 2000000001 = 3000000010 = 4 • • •111111111 = 513

dsPIC33FJ12GP201/202

DS70264A_CN 第 94 页 超前信息 2007 Microchip Technology Inc.

寄存器 7-4: OSCTUN:FRC 振荡器调节寄存器

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

bit 15 bit 8

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — TUN<5:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-6 未实现:读为 0

bit 5-0 TUN<5:0>:FRC 振荡器调节位

011111 = 中心频率 + 11.625%011110 = 中心频率 + 11.25% (8.23 MHz) • • •000001 = 中心频率 + 0.375% (7.40 MHz) 000000 = 中心频率 (标称值 7.37 MHz)111111 = 中心频率 - 0.375% (7.345 MHz) • • •100001 = 中心频率 - 11.625% (6.52 MHz) 100000 = 中心频率 - 12% (6.49 MHz)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 95 页

dsPIC33FJ12GP201/202

7.2 时钟切换工作原理

在软件控制下,应用可以在任何时候在四个时钟源(主振荡器、LP、FRC 和 LPRC)之间自由切换。为限制这种灵活性可能产生的影响,dsPIC33FJ12GP201/202器件的时钟切换过程带有安全锁定。

7.2.1 使能时钟切换

要使能时钟切换,配置寄存器中的 FCKSM1 配置位必须编程为 0。(更多详细信息,请参见第 18.1 节“配置位”。)如果 FCKSM1 配置位未被编程(为 1),则时钟切换功能和故障保护监视器功能被禁止。这是默认设置。

当时钟切换被禁止时, NOSC 控制位(OSCCON<10:8>)不控制时钟选择。但是,COSC 位(OSCCON<14:12>)反映由 FNOSC 配置位选择的时钟源。

在时钟切换被禁止时,OSWEN 控制位(OSCCON<0>)无效。它总是保持为 0。

7.2.2 振荡器切换过程

执行时钟切换至少需要以下基本过程:

1. 根据需要读 COSC 位 (OSCCON<14:12>)以确定当前的振荡器源。

2. 执行解锁序列以允许写入 OSCCON 寄存器的高字节。

3. 将适当的值写入新振荡器源的 NOSC 控制位(OSCCON<10:8>)。

4. 执行解锁序列以允许写入 OSCCON 寄存器的低字节。

5. 将 OSWEN 位置 1 以启动振荡器切换。

一旦基本序列完成,系统时钟硬件将自动进行如下响应:

1. 时钟切换硬件将 NOSC 控制位的新值与 COSC状态位进行比较。如果它们相同,则时钟切换是多余的操作。在这种情况下,OSWEN 位自动清零,时钟切换中止。

2. 如果启动了有效的时钟切换,则 LOCK(OSCCON<5>)和 CF(OSCCON<3>)状态位被清零。

3. 如果新振荡器现在不在运行,则硬件会将它开启。如果开启的是晶振,则硬件将等待直到振荡器起振定时器(OST)超时。如果新的振荡器源使用 PLL,则硬件将等待直到检测到 PLL 锁定(LOCK = 1)。

4. 硬件会等待新时钟源的 10 个时钟周期,然后执行时钟切换。

5. 硬件清零 OSWEN 位表示时钟转换成功。此外,NOSC 位的值被传送到 COSC 状态位。

6. 此时旧时钟源被关闭, LPRC (如果 WDT 或FSCM 被使能)或 LP (如果 LPOSCEN 保持置1)除外。

7.3 故障保护时钟监视器 (FSCM)

故障保护时钟监视器(FSCM)允许器件在即使振荡器发生故障的情况下仍能继续运行。通过编程使能 FSCM 功能。如果使能了 FSCM 功能,LPRC 内部振荡器将总是运行(休眠模式除外),并且不受看门狗定时器的控制。

在发生振荡器故障时, FSCM 会产生时钟故障陷阱事件,并将系统时钟切换到 FRC 振荡器。然后应用程序可尝试重新启动振荡器或执行受控关闭。通过简单地将复位地址装入振荡器故障陷阱向量,可将陷阱作为一个热复位来处理。

如果使用 PLL 倍频器来对系统时钟倍频,则时钟发生故障时内部 FRC 也会被以相同的倍频比倍频。时钟发生故障时器件会切换到带 PLL 的 FRC。

注: 主振荡器模式有三种不同的子模式(XT、HS 和 EC),它们由 POSCMD<1:0> 配置位决定。在应用中可以用软件实现从主振荡器模式切换到其他模式,或从其他模式切换到主振荡器模式,但不能在不对器件进行再编程的情况下在主振荡器模式的不同子模式之间进行切换。

注 1:在整个时钟切换过程中,处理器将继续执行代码。对时序敏感的代码不应在此时执行。

2:不允许直接在使能 PLL 的任何主振荡器模式和 FRCPLL 之间进行时钟切换。这适用于任何方向下的时钟切换。在这些情况下,应用必须首先切换到 FRC 模式将其作为两个 PLL 模式之间的过渡时钟源。

dsPIC33FJ12GP201/202

DS70264A_CN 第 96 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 97 页

dsPIC33FJ12GP201/202

8.0 节能特性

dsPIC33FJ12GP201/202器件提供了管理功耗的功能,该功能是通过有选择地管理 CPU 和外设的时钟源来实现的。一般而言,较低的时钟频率和减少时钟源驱动电路的数目会使功耗降低。dsPIC33FJ12GP201/202器件用以下四种方法管理功耗:

• 时钟频率

• 基于指令的休眠模式和空闲模式

• 软件控制的打盹模式

• 用软件有选择地进行外设控制

可以组合使用这些方法从而在保证关键应用特性(如对于时序敏感的通信)的情况下有选择地调节应用的功耗。

8.1 时钟频率和时钟切换

dsPIC33FJ12GP201/202 器件提供的时钟频率范围较大,用户可根据应用需要进行选择。如果未锁定系统时钟配置,用户只需更改 NOSC 位 (OSCCON<10:8>)即可选择低功耗或高精度振荡器。在工作期间更改系统时钟的过程以及相应的限制,将在第 7.0 节“振荡器配置”中进行更详细的讨论。

8.2 基于指令的节能模式

dsPIC33FJ12GP201/202器件有两种特殊的节能模式,通过执行特殊的 PWRSAV指令可以进入这两种模式。休眠模式下时钟停止运行并停止所有代码执行;空闲模式下 CPU 停止工作并停止代码执行,但是允许外设模块继续工作。例 8-1 中所示为 PWRSAV指令的汇编语法。

在被允许的中断产生、WDT 超时或器件复位时,器件会退出休眠模式和空闲模式。器件退出这两种模式的过程称为“唤醒”。

8.2.1 休眠模式

休眠模式具有下列特征:

• 系统时钟源关闭。如果使用了片上振荡器,也要关闭它。

• 如果 I/O 引脚上不消耗电流,则器件电流消耗将降至 低。

• 由于系统时钟源被禁止,所以故障保护时钟监视器在休眠模式下不工作。

• 如果WDT被使能,则LPRC时钟在休眠模式下将继续运行。

• 如果 WDT 被使能,则在进入休眠模式之前自动清零。

• 有些器件功能或外设可能在休眠模式下继续工作,包括 I/O 端口上的输入电平变化通知功能或使用外部时钟输入的外设等。

• 任何需要使用系统时钟源来工作的外设在休眠模式下将被禁止。

当发生以下任何事件时,器件将从休眠模式唤醒:

• 产生任何被单独允许的中断

• 任何形式的器件复位

• WDT 超时

从休眠模式唤醒时,处理器将使用在进入休眠模式时处于工作状态的时钟源重新开始工作。

例 8-1: PWRSAV指令语法

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

注: SLEEP_MODE 和 IDLE_MODE 是在所选器件的汇编器包含(include)文件中定义的常数。

PWRSAV #SLEEP_MODE ; Put the device into SLEEP modePWRSAV #IDLE_MODE ; Put the device into IDLE mode

dsPIC33FJ12GP201/202

DS70264A_CN 第 98 页 超前信息 2007 Microchip Technology Inc.

8.2.2 空闲模式

空闲模式具有下列特征:

• CPU 将停止执行指令。

• WDT 被自动清零。

• 系统时钟源保持工作状态。默认情况下,所有外设模块将继续使用系统时钟源正常工作,也可以有选择地禁止它们 (见第 8.4 节 “外设模块禁止”)。

• 如果WDT或FSCM被使能,则LPRC也将保持工作状态。

当发生以下任何事件时,器件将从空闲模式唤醒:

• 产生任何被单独允许的中断

• 任何器件复位

• WDT 超时

从空闲模式唤醒时,重新为 CPU 提供时钟,且立即从PWRSAV指令之后的下一条指令或 ISR 中的第一条指令开始执行指令。

8.2.3 在节能指令执行期间的中断

在 PWRSAV指令执行期间发生的中断都将延迟到进入休眠或空闲模式后才产生,并导致器件从休眠或空闲模式中唤醒。

8.3 打盹模式

通常,更改时钟速度和进入某种节能模式是降低功耗的首选策略。然而,有些情况下不可行。例如,某些应用可能必须保持不间断的同步通信,即便在它不执行任何其他操作时也不例外。降低系统时钟速度可能会带来通信错误,而使用节能模式可能会完全终止通信。

打盹模式是另一种简单有效的节能方法,它可以在器件仍然执行代码的情况下降低功耗。在此模式下,系统时钟以相同的时钟源和相同的速度继续工作。外设模块时钟速度保持不变,但 CPU 时钟的速度降低了。保持这两个时钟域同步,可以保持外设访问 SFR 的能力,同时CPU 以较慢的速度执行代码。

通过将 DOZEN 位(CLKDIV<11>)置 1 使能打盹模式。外设与内核的时钟速度之比是由 DOZE<2:0> 位(CLKDIV<14:12>)决定的。有八种可能的配置,从1:1 到 1:128,其中 1:1 是默认值。

在事件驱动的应用中,使用打盹模式有选择地降低功耗是可行的。这样就可以实现不间断地运行对时序要求高的功能(如同步通信),而 CPU 保持空闲等待事件调用中断服务程序。通过将 ROI 位(CLKDIV<15>)置 1,可以使器件在产生中断时自动返回到全速 CPU 工作模式。默认情况下,中断事件对打盹模式工作没有影响。

例如,假设器件的工作速度为 20 MIPS,并根据这一速度将 CAN 模块的速度配置为 500 kbps。如果现在将器件置于时钟频率比为 1:4 的打盹模式下,那么 CAN模块将继续按要求的 500 kbps 位速率通信,而 CPU则以 5 MIPS 的速度开始执行指令。

8.4 外设模块禁止

外设模块禁止(Peripheral Module Disable,PMD)寄存器通过停止所有提供给模块的时钟源提供一种禁止外设模块的方法。当通过相应的PMD控制位禁止外设时,外设就进入了功耗 低的状态。与外设相关的控制寄存器和状态寄存器也被禁止,因此写入那些寄存器不会有影响,且读取值无效。

只有在 PMD 寄存器中的相应位被清零且特定的 dsPIC®

DSC 器件支持某个外设时,才会使能相应的外设模块。如果外设包含在器件中,则默认情况下,它在 PMD 寄存器中是使能的。

注: 如果 PMD 位置 1,则相应的模块将在一个指令周期的延时后被禁止。类似地,如果PMD 位清零,则相应的模块将在一个指令周期的延时后被使能(假设已将模块控制寄存器配置为使能模块的工作)。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 99 页

dsPIC33FJ12GP201/202

9.0 I/O 端口

所有器件引脚(VDD、 VSS、 MCLR 和 OSC1/CLKI 除外)均由外设和并行 I/O 端口共用。所有 I/O 输入端口都为施密特触发器输入,提高了抗噪声能力。

9.1 并行 I/O (PIO)端口

通常,与某个外设共用一个引脚的并行 I/O 端口总是服从于该外设。外设的输出缓冲器数据和控制信号提供给一对多路开关。这对多路开关用于选择 I/O 引脚的输出数据和控制信号是用于外设还是相应的端口。该逻辑电路同时会阻止 “环回进入(loop through)”,即一个端口的数字输出可以驱动共用同一个引脚的外设输入。图 9-1 显示了端口是如何与其他外设复用的以及相关的I/O 引脚。

如果外设使能,并且外设正在使用相关引脚时,该引脚将不再作为通用 I/O 引脚使用。可以读该 I/O 引脚,但并行端口位的输出驱动器将被禁止。如果使能某外设但没有驱动引脚时,则该引脚可由一个端口驱动。

所有端口引脚都由 3 个寄存器,这些寄存器与端口引脚作为数字 I/O 时的工作直接相关。数据方向寄存器(TRISx)决定引脚是输入还是输出。如果数据方向位为1,则引脚是输入。复位后,所有端口引脚均定义为输入。读锁存器(LATx)时,读到的是锁存器中的值;写锁存器时,写入的是锁存器。读端口(PORTx)时,读到的是端口引脚的值;而写端口引脚时,写入的是锁存器。

对于特定器件无效的任何位及其相关的数据和控制寄存器都将被禁止。这意味着对应的 LATx 和 TRISx 寄存器以及端口引脚都将读为零。

当端口引脚与另一个外设共用或与定义为仅输入的功能共用时,它将被视为专用端口,因为没有任何其他竞争的输出源。

图 9-1: 典型共用端口结构框图

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

QD

CK

写 LAT +

TRIS 锁存器

I/O 引脚

写端口

数据总线

QD

CK

数据锁存器

读端口

读 TRIS

1

0

1

0

写 TRIS

外设输出数据输出使能

外设输入数据

I/O

外设模块

外设输出使能

PIO 模块

输出多路开关

输出数据

输入数据

外设模块使能

读 LAT

dsPIC33FJ12GP201/202

DS70264A_CN 第 100 页 超前信息 2007 Microchip Technology Inc.

9.1.1 漏极开路配置

除 PORT、 LAT 和 TRIS 寄存器用于数据控制外,每个端口引脚也可被单独地配置为数字输出或漏极开路输出。这是由与每个端口相关的漏极开路控制寄存器ODCx 控制的,将其中的任何位置 1 即可将相应的引脚配置为漏极开路输出。

这种漏极开路特性允许通过使用外部上拉电阻,在所需的任意仅用作数字功能的引脚上产生高于 VDD(如 5V)的输出电平。允许的 大开漏电压与 大VIH规范相同。

9.2 配置模拟端口引脚

AD1PCFG 和 TRIS 寄存器用于控制模数(Analog-to-Digital,A/D)端口引脚的操作。如果要将端口引脚用作模拟输入,则对应的 TRIS 位必须置 1(输入)。如果将 TRIS 位清零 (输出),则数字输出电平 (VOH 或 VOL)将被转换。

当读取端口寄存器时,所有配置为模拟输入通道的引脚均读为零 (低电平)。

配置为数字输入的引脚将不会对模拟输入进行转换。对于任何定义为数字输入的引脚(包括 ANx 引脚),加在引脚上的模拟电压可能导致输入缓冲器消耗的电流超出器件规范。

9.2.1 I/O 端口写 / 读时序

端口方向改变或端口写操作与同一端口的读操作之间需要一个指令周期。通常该指令是 NOP。例 9-1 给出了一个示例。

9.3 输入状态变化通知

I/O 端口的输入状态变化通知功能允许dsPIC33FJ12GP201/202 器件在选定输入引脚的状态变化时,向处理器发出中断请求。当禁止时钟时,该特性还可在休眠模式下检测到输入状态改变。根据器件的引脚数, 多可以选择(允许) 21 个外部信号(CNx引脚)在输入状态发生变化时产生中断请求。

有 4 个与 CN 模块相关的控制寄存器。 CNEN1 和CNEN2 寄存器包含每个 CN 输入引脚的中断允许控制位。将其中任一位置 1 将允许相应引脚的 CN 中断。

每个 CN 引脚都有一个与之相连的弱上拉电路。弱上拉电路充当连接到该引脚的电流源,当连接了按钮或键盘设备时,不再需要使用外部电阻。使用包含每个 CN 引脚控制位的 CNPU1 和 CNPU2 寄存器可分别使能各个上拉电路。将任一控制位置 1 均可使能相应引脚的弱上拉功能。

例 9-1: 端口写 / 读示例

注: 当端口引脚被配置为数字输出时,状态变化通知引脚的上拉电路将始终被禁止。

MOV 0xFF00, W0 ; Configure PORTB<15:8> as inputsMOV W0, TRISB ; and PORTB<7:0> as outputsNOP ; Delay 1 cyclebtss PORTB, #13 ; Next Instruction

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 101 页

dsPIC33FJ12GP201/202

9.4 外设引脚选择

通用器件的主要挑战是提供尽可能多的外设功能部件,同时将其与 I/O 引脚功能的冲突降到 小。在低引脚数器件上,这一挑战更为严峻。在必须将多个外设分配给一个引脚的应用中,应用代码中对这种不便进行变通或完全地重新设计可能是唯一的选择。

外设引脚选择配置使得可以在较宽的 I/O 引脚范围内选择和配置外设功能部件。 通过增加特定器件上可用的引脚排列选项,程序员可以让单片机更好地适合他们的整个应用,而不是通过修改应用来适应器件。

外设引脚选择配置功能在数字 I/O 引脚的固定子集下工作。程序员可以将大多数数字外设的输入和 / 或输出独立地映射到这些 I/O 引脚中的任何一个。外设引脚选择通过软件来执行,通常不需要对器件进行再编程。一旦建立外设引脚选择,就同时包含了硬件保护,以防止对外设映射的意外或错误更改。

9.4.1 可用的引脚

外设引脚选择功能可在 多16个引脚的范围内使用。可用引脚的数目取决于特定器件及其引脚数。支持外设引脚选择功能的引脚在它们的引脚全称中包含名称“RPn”,其中“RP”表示可重映射的外设,“n”是可重映射的引脚编号。

9.4.2 可用的外设

可由外设引脚选择功能管理的外设都是仅用作数字功能的外设。这些外设包括:

• 一般串行通信 (UART 和 SPI)• 通用定时器时钟输入• 与定时器相关的外设 (输入捕捉和输出比较)• 电平变化中断输入

相比较而言,一些仅用作数字功能的外设模块不能使用外设引脚选择功能。这是因为外设功能需要特定端口上的特殊 I/O 电路,且不能很容易地连接到多个引脚。这些模块包括 I2C。类似的要求排除了所有带模拟输入的模块,例如模数转换器 (ADC)。

可重映射的外设与默认的 I/O 引脚无关。必须在使用外设前始终将其分配给特定的 I/O 引脚。相反,非可重映射的外设始终在默认引脚上可用,假设该外设工作且与其他外设没有冲突。

9.4.2.1 外设引脚选择功能优先级

当可重映射的外设对于指定 I/O 引脚有效时,它的优先级高于所有其他数字 I/O 和与该引脚相关的数字通信外设。优先级与被映射外设的类型无关。可重映射外设的优先级永远不会高于与该引脚相关的任何模拟功能。

9.4.3 控制外设引脚选择

外设引脚选择功能由两组特殊功能寄存器控制:一组映射外设输入,另一组映射外设输出。因为它们是分别控制的,所以可以不受限制地将特定外设的输入和输出(如果外设具有输入和输出)放在任何可选择的功能引脚上。

外设与外设可选择引脚之间的关系用两种不同的方式进行处理,这取决于被映射的是输入还是输出。

9.4.3.1 输入映射

外设引脚选择选项的输入在外设基础上进行映射。与外设相关的控制寄存器指示要被映射的引脚。RPINRx寄存器用来配置外设输入映射(见寄存器 9-1到寄存器 9-9)。每个寄存器包含 5 位字段的组合,每组都与可重映射外设之一相关。用适当的 5 位值编程给定外设的位域,会将具有该值的 RPn 引脚映射到该外设。对于任何给定的器件,任何位域的值的有效范围与器件所支持的外设引脚选择的 大数目相对应。

图 9-2 说明了 U1RX 输入的可重映射引脚选择。

dsPIC33FJ12GP201/202

DS70264A_CN 第 102 页 超前信息 2007 Microchip Technology Inc.

图 9-2: U1RX 的可重映射多路开关 (MUX)输入

表 9-1: 可重映射的外设输入 (1)

RP0

RP1

RP2

RP15

0

15

1

2

U1RXR<4:0>

U1RX 输入至外设

输入名称 功能名称 寄存器 配置位

外部中断 1 INT1 RPINR0 INT1R<4:0>

外部中断 2 INT2 RPINR1 INT2R<4:0>

Timer2 外部时钟 T2CK RPINR3 T2CKR<4:0>

Timer3 外部时钟 T3CK RPINR3 T3CKR<4:0>

输入捕捉 1 IC1 RPINR7 IC1R<4:0>

输入捕捉 2 IC2 RPINR7 IC2R<4:0>

输入捕捉 7 IC7 RPINR10 IC7R<4:0>

输入捕捉 8 IC8 RPINR10 IC8R<4:0>

输出比较故障 A OCFA RPINR11 OCFAR<4:0>

UART1 接收 U1RX RPINR18 U1RXR<4:0>

UART1 允许发送 U1CTS RPINR18 U1CTSR<4:0>

SPI1 数据输入 SDI1 RPINR20 SDI1R<4:0>

SPI1 时钟输入 SCK1IN RPINR20 SCK1R<4:0>

SPI1 从选择输入 SS1IN RPINR21 SS1R<4:0>

注 1: 除非另外声明,否则所有输入都使用施密特输入缓冲器。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 103 页

dsPIC33FJ12GP201/202

9.4.3.2 输出映射

与输入相比,外设引脚选择选项的输出在引脚基础上进行映射。在这种情况下,与特定引脚相关的控制寄存器指示要被映射的外设输出。RPORx 寄存器用来控制输出映射。象 RPINRx 寄存器一样,每个寄存器包含 5 位字

段的组合,每组都与一个 RPn 引脚相关(见寄存器 9-10到寄存器 9-17)。位域的值与外设之一相对应,并且该外设的输出被映射到引脚(见表 9-2 和图 9-3)。

输出映射的外设列表也包含00000的空值,这是由于映射技术造成的。这允许任何给定的引脚保持与任何引脚可选择外设的输出之间的未连接状态。

图 9-3: RPn 的可重映射输出的复用功能

表 9-2: 可重映射引脚 (RPn)的输出选择

0

19

3

RPnR<4:0>

默认

U1TX 输出使能

U1RTS 输出使能 4

18OC1 输出使能

0

19

3

默认

U1TX 输出

U1RTS 输出 4

OC2 输出

18OC1 输出

输出使能

输出数据RPn

OC2 输出使能

功能 RPnR<4:0> 输出名称

NULL 00000 RPn 连接到默认端口引脚

U1TX 00011 RPn 连接到 UART1 发送

U1RTS 00100 RPn 连接到 UART1 请求发送

SDO1 00111 RPn 连接到 SPI1 数据输出

SCK1OUT 01000 RPn 连接到 SPI1 时钟输出

SS1OUT 01001 RPn 连接到 SPI1 从选择输出

OC1 10010 RPn 连接到输出比较 1OC2 10011 RPn 连接到输出比较 2

dsPIC33FJ12GP201/202

DS70264A_CN 第 104 页 超前信息 2007 Microchip Technology Inc.

9.4.3.3 映射

外设选择引脚的控制机制不局限于固定外设配置的小范围内。在任何外设映射的SFR之间没有共有的或硬件强制的锁定。任何或所有RPn引脚上的外设映射的任何组合都是可能的。这包括外设输入和输出到引脚的多对一或一对多映射。

从配置观点来看,这类映射在技术上是可能的,但在电气方面可能不受支持。

9.4.4 控制配置改变

由于可以在运行时更改外设的重映射,因此必须对外设重映射设置一些限制条件以防意外更改配置。dsPIC33F 器件具有 3 个功能以防对外设映射的更改:

• 控制寄存器锁定序列

• 连续状态监视

• 配置位引脚选择锁定

9.4.4.1 控制寄存器锁定

在正常操作下,不允许写入RPINRx和RPORx寄存器。尝试写入操作看似正常执行,但实际上寄存器的内容保持不变。要更改这些寄存器,必须用硬件进行解锁。寄存器锁定由 IOLOCK 位(OSCCON<6>)控制。将IOLOCK 置 1 可防止对控制寄存器的写操作;将IOLOCK 清零则允许写操作。

要置 1 或清零 IOLOCK,必须执行特定的命令序列:

1. 将 45h写入 OSCCON<7:0>。2. 将 67h写入 OSCCON<7:0>。3. 通过一次操作清零 (或置 1) IOLOCK。

与振荡器的 LOCK 位的序列不同,IOLOCK 会保持一种状态直到被更改。这允许所有的外设引脚选择均可被配置为:在对所有控制寄存器的更新后紧跟一个解锁序列,然后用第二个锁定序列锁定。

9.4.4.2 连续状态监视

除了防止直接写操作, RPINRx 和 RPORx 寄存器的内容一直由影子寄存器通过硬件进行监视。如果任何寄存器发生了意外更改 (例如 ESD 或其他外部事件引起的干扰),将会触发配置不匹配复位。

9.4.4.3 配置位引脚选择锁定

为了进一步确保安全,可以将器件配置为防止对RPINRx 和 RPORx 寄存器进行多于一个写会话。IOL1WAY(FOSC<IOL1WAY>)配置位会阻止 IOLOCK位在置 1 后被清零。

在默认 (未编程)状态下, IOL1WAY 被置 1,将用户限制为一个写会话。对 IOL1WAY 编程可允许用户应用对外设引脚选择寄存器不受限制的访问(对解锁序列的正确使用)。

9.4.5 外设引脚选择的注意事项

在应用设计中使用控制外设引脚选择功能有一些值得注意的事项,包括几个只能作为可重映射外设的常见外设。

9.4.5.1 配置

在器件的默认(复位)状态下,外设引脚选择在默认引脚上不可用。更特别的是,由于所有RPINRx和RPORx寄存器复位为 0000h,这意味着所有的外设引脚选择输入连接到 RP0,而所有的外设引脚选择输出处于未连接状态。这意味着在执行任何其他应用代码前,用户应用必须用适当的外设配置初始化器件。

由于 IOLOCK 位在解锁状态下复位,因此在器件复位结束后不必执行解锁序列。然而,基于应用安全考虑,在写入控制寄存器后将 IOLOCK置 1并锁定配置是一个好的建议。

由于解锁序列是时序敏感的,它必须作为汇编语言程序以与更改振荡器配置相同的方式执行。如果应用程序是用 C 语言或其他高级语言编写的,则解锁序列应通过写行内汇编代码来执行。

9.4.5.2 改变配置

选择配置需要查看所有外设引脚选择及其引脚分配,尤其是那些不会在应用中使用的外设。在所有情况下,必须完全禁止未用的引脚可选择外设。未用的外设应将它们的输入分配给未用的 RPn 引脚功能。带有未用 RPn功能的 I/O 引脚应被配置为空外设输出。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 105 页

dsPIC33FJ12GP201/202外设到特定引脚的分配不会自动执行引脚的 I/O 电路的任何其他配置。这意味着将引脚可选择输出加到引脚,当驱动输出时,引脚可能会意外驱动现有的外设输入。程序员必须熟悉共用同一个可重映射引脚的其他固定外设的行为,了解何时使能或禁止它们。为安全起见,共用同一个引脚的固定数字外设在不使用时应被禁止。

9.4.5.3 引脚操作

配置特定器件的可重映射引脚不会自动开启该功能。必须将外设特别配置为工作并使能,好像是连接到固定引脚一样。这部分在应用代码中的位置(紧跟器件复位和外设配置,或在主应用程序内)取决于外设及其在应用中的使用。

9.4.5.4 模拟功能

后的注意事项是外设引脚选择功能既不会改写模拟输入,也不会将带模拟功能的引脚重新配置为数字 I/O。如果器件复位时引脚被配置为模拟输入,则使用外设引脚选择时,必须明确将其重新配置为数字 I/O。

9.4.5.5 配置示例

例 9-2 给出了使用 UART1 为具有流控制的双向通信所作的配置。使用了以下输入和输出功能:

• 输入功能:U1RX 和 U1CTS• 输出功能:U1TX 和 U1RTS

9.5 外设引脚选择寄存器

dsPIC33FJ12GP201/202 器件实现了 17 个寄存器用于可重映射的外设配置:

• 输入可重映射的外设寄存器 (9 个)

• 输出可重映射的外设寄存器 (8 个)

例 9-2: 配置 UART1 输入和输出功能

注: 仅在OSCCON<IOLOCK> = 0时可以改变输入和输出寄存器的值。请参见第 9.4.4.1 节“控制寄存器锁定”了解特定命令序列。

//*************************************// Unlock Registers//*************************************asm volatile ( "mov #OSCCONL, w1 \n" "mov #0x45, w2 \n" "mov #0x67, w3 \n" "mov.b w2, [w1] \n"

"mov.b w3, [w1] \n" "bclr OSCCON, 6");

//***************************// Configure Input Functions// (See Table 9-1)//***************************

//***************************// Assign U1Rx To Pin RP0//***************************RPINR18bits.U1RXR = 0;

//***************************// Assign U1CTS To Pin RP1//***************************RPINR18bits.U1CTSR = 1;

//***************************// Configure Output Functions// (See Table 9-2)//***************************

//***************************// Assign U1Tx To Pin RP2//***************************RPOR1bits.RP2R = 3;

//***************************// Assign U1RTS To Pin RP3//***************************RPOR1bits.RP3R = 4;

//*************************************// Lock Registers//*************************************asm volatile ( "mov #OSCCONL, w1 \n" "mov #0x45, w2 \n" "mov #0x67, w3 \n" "mov.b w2, [w1] \n"

"mov.b w3, [w1] \n" "bset OSCCON, 6");

dsPIC33FJ12GP201/202

DS70264A_CN 第 106 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-1: RPINR0:外设引脚选择输入寄存器 0

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — INT1R<4:0>

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 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 INT1R<4:0>:将外部中断 1 (INTR1)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-0 未实现:读为 0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 107 页

dsPIC33FJ12GP201/202

寄存器 9-2: RPINR1:外设引脚选择输入寄存器 1

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

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— — — INT2R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-5 未实现:读为 0 bit 4-0 INT2R<4:0>:将外部中断 2 (INTR2)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

dsPIC33FJ12GP201/202

DS70264A_CN 第 108 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-3: RPINR3:外设引脚选择输入寄存器 3

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — T3CKR<4:0>

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— — — T2CKR<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 T3CKR<4:0>:将 Timer3 外部时钟(T3CK)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-5 未实现:读为 0 bit 4-0 T2CKR<4:0>:将 Timer2 外部时钟(T2CK)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 109 页

dsPIC33FJ12GP201/202

寄存器 9-4: RPINR7:外设引脚选择输入寄存器 7

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — IC2R<4:0>

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— — — IC1R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 IC2R<4:0>:将输入捕捉 2 (IC2)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-5 未实现:读为 0 bit 4-0 IC1R<4:0>:将输入捕捉 1 (IC1)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

dsPIC33FJ12GP201/202

DS70264A_CN 第 110 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-5: RPOR10:外设引脚选择输入寄存器 10

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — IC8R<4:0>

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— — — IC7R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 IC8R<4:0>:将输入捕捉 8 (IC8)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-5 未实现:读为 0 bit 4-0 IC7R<4:0>: 将输入捕捉 7 (IC7)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 111 页

dsPIC33FJ12GP201/202

寄存器 9-6: RPINR11:外设引脚选择输入寄存器 11

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — — — — — —

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— — — OCFAR<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-5 未实现:读为 0 bit 4-0 OCFAR<4:0>:将输出比较 A (OCFA)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

dsPIC33FJ12GP201/202

DS70264A_CN 第 112 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-7: RPINR18:外设引脚选择输入寄存器 18

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — U1CTSR<4:0>

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— — — U1RXR<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 U1CTSR<4:0>:将 UART 1 允许发送 (U1CTS)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-5 未实现:读为 0 bit 4-0 U1RXR<4:0>:将 UART1 接收(U1RX)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 113 页

dsPIC33FJ12GP201/202

寄存器 9-8: RPINR20:外设引脚选择输入寄存器 20

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — SCK1R<4:0>

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— — — SDI1R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 SCK1R<4:0>:将 SPI1 时钟输入 (SCK1IN)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

bit 7-5 未实现:读为 0 bit 4-0 SDI1R<4:0>:将 SPI1 数据输入(SDI1)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

dsPIC33FJ12GP201/202

DS70264A_CN 第 114 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-9: RPINR21:外设引脚选择输入寄存器 21

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0— — — — — — — —

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— — — SS1R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-5 未实现:读为 0 bit 4-0 SS1R<4:0>:将 SPI1 从选择输入(SS1IN)分配给对应 RPn 引脚的位

11111 = 输入连接到 VSS01111 = 输入连接到 RP15•••00001 = 输入连接到 RP100000 = 输入连接到 RP0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 115 页

dsPIC33FJ12GP201/202

寄存器 9-10: RPOR0:外设引脚选择输出寄存器 0

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP1R<4:0>

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— — — RP0R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP1R<4:0>:将外设输出功能分配给 RP1 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP0R<4:0>:将外设输出功能分配给 RP0 输出引脚的位 (请参见表 9-2 了解外设功能编号)

寄存器 9-11: RPOR1:外设引脚选择输出寄存器 1

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP3R<4:0>

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— — — RP2R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP3R<4:0>:将外设输出功能分配给 RP3 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP2R<4:0>:将外设输出功能分配给 RP2 输出引脚的位 (请参见表 9-2 了解外设功能编号)

dsPIC33FJ12GP201/202

DS70264A_CN 第 116 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-12: RPOR2:外设引脚选择输出寄存器 2

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP5R<4:0>

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— — — RP4R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP5R<4:0>:将外设输出功能分配给 RP5 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP4R<4:0>:将外设输出功能分配给 RP4 输出引脚的位 (请参见表 9-2 了解外设功能编号)

寄存器 9-13: RPOR3:外设引脚选择输出寄存器 3

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP7R<4:0>

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— — — RP6R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP7R<4:0>:将外设输出功能分配给 RP7 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP6R<4:0>:将外设输出功能分配给 RP6 输出引脚的位 (请参见表 9-2 了解外设功能编号)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 117 页

dsPIC33FJ12GP201/202

寄存器 9-14: RPOR4:外设引脚选择输出寄存器 4

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP9R<4:0>

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— — — RP8R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP9R<4:0>:将外设输出功能分配给 RP9 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP8R<4:0>:将外设输出功能分配给 RP8 输出引脚的位 (请参见表 9-2 了解外设功能编号)

寄存器 9-15: RPOR5:外设引脚选择输出寄存器 5

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP11R<4:0>

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— — — RP10R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP11R<4:0>:将外设输出功能分配给 RP11 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP10R<4:0>:将外设输出功能分配给 RP10 输出引脚的位 (请参见表 9-2 了解外设功能编号)

dsPIC33FJ12GP201/202

DS70264A_CN 第 118 页 超前信息 2007 Microchip Technology Inc.

寄存器 9-16: RPOR6:外设引脚选择输出寄存器 6

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP13R<4:0>

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— — — RP12R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP13R<4:0>:将外设输出功能分配给 RP13 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP12R<4:0>:将外设输出功能分配给 RP12 输出引脚的位 (请参见表 9-2 了解外设功能编号)

寄存器 9-17: RPOR7:外设引脚选择输出寄存器 7

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — RP15R<4:0>

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— — — RP14R<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0 bit 12-8 RP15R<4:0>:将外设输出功能分配给 RP15 输出引脚的位 (请参见表 9-2 了解外设功能编号)

bit 7-5 未实现:读为 0 bit 4-0 RP14R<4:0>:将外设输出功能分配给 RP14 输出引脚的位 (请参见表 9-2 了解外设功能编号)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 119 页

dsPIC33FJ12GP201/202

10.0 TIMER1

Timer1 模块是一个 16 位定时器,可作为实时时钟的时间计数器,或作为自由运行的间隔定时器 / 计数器。Timer1 可在以下三种模式下工作:

• 16 位定时器

• 16 位同步计数器

• 16 位异步计数器

Timer1 还支持以下功能:

• 定时器门控操作

• 可选择的预分频比设置

• 在 CPU 空闲和休眠模式期间的定时器操作

• 在 16 位周期寄存器匹配时或外部门控信号的下降沿产生中断

图 10-1 给出了 16 位定时器模块的框图。

配置 Timer1 的操作:

1. 将 T1CON 寄存器中的 TON 位置 1 (= 1)。2. 使用 T1CON寄存器中的 TCKPS<1:0>位选择定

时器预分频比。

3. 使用T1CON寄存器中的TCS和TGATE位设置时钟和门控模式。

4. 将T1CON中的TSYNC位置1或清零来选择同步或异步操作。

5. 将定时器的周期值装入 PR1 寄存器。

6. 如果需要中断,将中断允许位 T1IE 置 1。使用优先级位 T1IP<2:0> 来设置中断优先级。

图 10-1: 16 位 TIMER1 模块框图

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

TON

SOSCI

SOSCO/

PR1

将 T1IF 置 1

相等比较器

TMR1复位

SOSCEN

1

0

TSYNC

Q

Q D

CK

TCKPS<1:0>

预分频器1, 8, 64, 256

2

TGATE

TCY

1

0

T1CK

TCS

1x

01

TGATE

00

同步

门控同步

dsPIC33FJ12GP201/202

DS70264A_CN 第 120 页 超前信息 2007 Microchip Technology Inc.

寄存器 10-1: T1CON:TIMER1 控制寄存器

R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0TON — TSIDL — — — — —

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0— TGATE TCKPS<1:0> — TSYNC TCS —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 TON:Timer1 使能位

1 = 启动 16 位 Timer10 = 停止 16 位 Timer1

bit 14 未实现:读为 0

bit 13 TSIDL:空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12-7 未实现:读为 0

bit 6 TGATE: Timer1 门控时间累加使能位

当 T1CS = 1时: 该位为无关位。

当 T1CS = 0时: 1 = 使能门控时间累加0 = 禁止门控时间累加

bit 5-4 TCKPS<1:0>:Timer1 输入时钟预分频比选择位

11 = 1:256 10 = 1:6401 = 1:8 00 = 1:1

bit 3 未实现:读为 0

bit 2 TSYNC:Timer1 外部时钟输入同步选择位

当 TCS = 1时: 1 = 同步外部时钟输入0 = 不同步外部时钟输入

当 TCS = 0时:该位为无关位。

bit 1 TCS:Timer1 时钟源选择位

1 = 来自 T1CK 引脚的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY)

bit 0 未实现:读为 0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 121 页

dsPIC33FJ12GP201/202

11.0 TIMER2/3 特性

Timer2/3 为 32 位定时器,也可被配置为两个具有可选工作模式的独立 16 位定时器。

作为 32 位定时器, Timer2/3 具有三种工作模式:

• 具有所有 16 位工作模式(异步计数器模式除外)的两个独立 16 位定时器(Timer2 和 Timer3)

• 单个 32 位定时器(Timer2/3)• 单个 32 位同步计数器(Timer2/3)

Timer2/3 还支持以下功能:

• 定时器门控操作

• 可选择的预分频比设置

• 空闲和休眠模式下的定时器工作

• 在 32 位周期寄存器匹配时产生中断

• 输入捕捉和输出比较模块的时基 (仅限 Timer2 和Timer3)

• ADC1 事件触发器 (仅限 Timer2/3)

所有 8 个 16 位定时器都能作为同步定时器或计数器。它们也提供上面所列的功能,但事件触发功能除外。通过在 T2CON 和 T3CON 寄存器中设置相应的位来确定工作模式和使能特性。T2CON 寄存器在寄存器 11-1 中作了一般介绍。 T3CON 寄存器如寄存器 11-2 所示。

对于 32 位定时器 / 计数器工作,Timer2 是 32 位定时器的低位字,而 Timer3 是高位字。

11.1 32 位工作

要为 32 位工作配置 Timer2/3 特性:

1. 将相应的 T32 控制位置 1。2. 使用 TCKPS<1:0> 位为 Timer2 选择预分频比。

3. 使用相应的 TCS 和 TGATE 位设置时钟和门控模式。

4. 装入定时器的周期值。PR3 包含值的高位字,而PR2 包含低位字。

5. 如果需要中断,将中断允许位 T3IE 置 1。使用优先级位T3IP<2:0>来设置中断优先级。Timer2控制定时器,而中断由 Timer3 产生。

6. 将相应的 TON 位置 1。

任意时刻定时器的值被存储在寄存器对 TMR3:TMR2中。TMR3 总是包含计数值的高位字,而 TMR2 包含低位字。

要将任一定时器配置为独立的 16 位工作:

1. 清零与该定时器对应的 T32 位。

2. 使用 TCKPS<1:0> 位选择定时器预分频比。

3. 使用 TCS 和 TGATE 位设置时钟和门控模式。

4. 将定时器的周期值装入 PRx 寄存器。

5. 如果需要中断,将中断允许位 TxIE 置 1。使用优先级位 TxIP<2:0> 来设置中断优先级。

6. 将 TON 位置 1。

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

注: 对于32位工作,T3CON控制位将被忽略。设置和控制只使用 T2CON 控制位。 32 位定时器模块采用 Timer2 时钟和门控输入,但中断由 Timer3 中断标志位产生。

dsPIC33FJ12GP201/202

DS70264A_CN 第 122 页 超前信息 2007 Microchip Technology Inc.

图 11-1: TIMER2/3 (32 位)框图 (1)

将 T3IF 置 1

相等比较器

PR3 PR2

复位

LSbMSb

注 1: 必须将 32 位定时器控制位 T32 置 1,以使定时器工作在 32 位定时器 / 计数器模式。所有控制位都与 T2CON寄存器相对应。

2: ADC 事件触发功能仅可在 Timer2/3 上使用。

数据总线 <15:0>

TMR3HLD

读 TMR2

写 TMR2 16

16

16

Q

Q D

CK

TGATE

0

1

TON

TCKPS<1:0>2

TCY

TCS

1x

01

TGATE

00

T2CK

ADC 事件触发信号 (2)

门控同步

预分频器1, 8, 64, 256

同步TMR3 TMR2

16

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 123 页

dsPIC33FJ12GP201/202

图 11-2: TIMER2 (16 位)框图

TON

TCKPS<1:0>

预分频器1, 8, 64, 256

2

TCY TCSTGATE

T2CK

PR2

将 T2IF 置 1

相等比较器

TMR2复位

Q

Q D

CK

TGATE

1

0

门控同步

1x

01

00

同步

dsPIC33FJ12GP201/202

DS70264A_CN 第 124 页 超前信息 2007 Microchip Technology Inc.

寄存器 11-1: T2CON 控制寄存器

R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0TON — TSIDL — — — — —

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 U-0— TGATE TCKPS<1:0> T32(1) — TCS —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 TON:Timer2 使能位

当 T32 = 1时:1 = 启动 32 位 Timer2/30 = 停止 32 位 Timer2/3当 T32 = 0时:1 = 启动 16 位 Timer20 = 停止 16 位 Timer2

bit 14 未实现:读为 0

bit 13 TSIDL:空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12-7 未实现:读为 0

bit 6 TGATE: Timer2 门控时间累加使能位

当 TCS = 1时: 该位为无关位。

当 TCS = 0时:1 = 使能门控时间累加0 = 禁止门控时间累加

bit 5-4 TCKPS<1:0>:Timer2 输入时钟预分频比选择位

11 = 1:256 10 = 1:6401 = 1:8 00 = 1:1

bit 3 T32: 32 位定时器模式选择位 (1)

1 = Timer2 和 Timer3 形成一个 32 位定时器0 = Timer2 和 Timer3 作为两个 16 位定时器

bit 2 未实现:读为 0

bit 1 TCS:Timer2 时钟源选择位

1 = 来自 T2CK 引脚的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY)

bit 0 未实现:读为 0

注 1: 在 32 位模式下, T3CON 控制位不影响 32 位定时器的工作。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 125 页

dsPIC33FJ12GP201/202

寄存器 11-2: T3CON 控制寄存器

R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0TON(1) — TSIDL(1) — — — — —

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 U-0 U-0 R/W-0 U-0— TGATE(1) TCKPS<1:0>(1) — — TCS(1) —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 TON:Timer3 使能位 (1)

1 = 启动 16 位 Timer30 = 停止 16 位 Timer3

bit 14 未实现:读为 0

bit 13 TSIDL:空闲模式停止位 (1)

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12-7 未实现:读为 0

bit 6 TGATE:Timer3 门控时间累加使能位 (1)

当 TCS = 1时: 该位为无关位。

当 TCS = 0时: 1 = 使能门控时间累加0 = 禁止门控时间累加

bit 5-4 TCKPS<1:0>:Timer3 输入时钟预分频比选择位 (1)

11 = 1:256 10 = 1:6401 = 1:8 00 = 1:1

bit 3-2 未实现:读为 0

bit 1 TCS:Timer3 时钟源选择位 (1)

1 = 来自 T3CK 引脚的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY)

bit 0 未实现:读为 0

注 1: 当使能 32 位工作(T2CON<3> = 1)时,这些位对 Timer3 的工作没有影响;所有定时器功能都通过T2CON 进行设置。

dsPIC33FJ12GP201/202

DS70264A_CN 第 126 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 127 页

dsPIC33FJ12GP201/202

12.0 输入捕捉

输入捕捉模块在需要频率(周期)和脉冲测量的应用中很有用。dsPIC33FJ12GP201/202 器件支持 多 8路输入捕捉通道。

当 ICx引脚上有事件发生时,输入捕捉模块捕捉选定时基寄存器的 16 位值。导致发生捕捉的事件分为以下三类:

• 简单捕捉事件模式:

- 每当 ICx 引脚上的输入信号出现下降沿时捕捉定时器值

- 每当 ICx 引脚上的输入信号出现上升沿时捕捉定时器值

• 在每个边沿 (上升沿和下降沿)都捕捉定时器值

• 预分频捕捉事件模式:

- ICx 引脚上的输入信号每出现 4 个上升沿捕捉一次定时器值

- ICx 引脚上的输入信号每出现 16 个上升沿捕捉一次定时器值

每路输入捕捉通道都可以选择两个16位定时器(Timer2或 Timer3)之一作为时基。选定定时器可以使用内部或外部时钟。

其他工作特性包括:

• 当 CPU 在休眠和空闲模式时通过捕捉引脚上的信号将器件唤醒

• 输入捕捉事件中断

• 用于存储捕捉值的 4 字 FIFO 缓冲器

- 可选择在填充完 1、2、3 或 4 个缓冲单元后产生中断

• 输入捕捉也可用来提供额外的外部中断源

图 12-1: 输入捕捉框图

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

ICxBUF

ICx 引脚ICM<2:0>(ICxCON<2:0>)

模式选择3

1 0

将标志位 ICxIF 置 1(在 IFSn 寄存器中)

TMR2 TMR3

边沿检测逻辑

16 16

FIFO读 / 写逻辑

ICxI<1:0>

ICOV, ICBNE(ICxCON<4:3>)

ICxCON中断逻辑

系统总线

来自 16 位定时器

ICTMR(ICxCON<7>)

FIFO

预分频器计数器

(1, 4, 16) 和时钟同步器

注 :在信号、寄存器或位名称中的“x”表示捕捉通道的编号。

dsPIC33FJ12GP201/202

DS70264A_CN 第 128 页 超前信息 2007 Microchip Technology Inc.

12.1 输入捕捉寄存器 寄存器 12-1: ICxCON:输入捕捉 x 控制寄存器

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0— — ICSIDL — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R-0, HC R-0, HC R/W-0 R/W-0 R/W-0ICTMR ICI<1:0> ICOV ICBNE ICM<2:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 ICSIDL: 输入捕捉模块在空闲模式下停止的控制位 1 = 在 CPU 空闲模式下输入捕捉模块将停止工作0 = 在 CPU 空闲模式下输入捕捉模块将继续工作

bit 12-8 未实现:读为 0

bit 7 ICTMR:输入捕捉定时器选择位

1 = 发生捕捉事件时捕捉 TMR2 的内容0 = 发生捕捉事件时捕捉 TMR3 的内容

bit 6-5 ICI<1:0>:选择发生每次中断捕捉的次数的位

11 = 每 4 次捕捉事件中断一次10 = 每 3 次捕捉事件中断一次01 = 每 2 次捕捉事件中断一次00 = 每次捕捉事件中断一次

bit 4 ICOV: 输入捕捉溢出状态标志位(只读)

1 = 发生了输入捕捉溢出0 = 未发生输入捕捉溢出

bit 3 ICBNE: 输入捕捉缓冲器空状态位(只读)

1 = 输入捕捉缓冲器非空,至少可以再读一次捕捉值0 = 输入捕捉缓冲器为空

bit 2-0 ICM<2:0>:输入捕捉模式选择位

111 =当器件处于休眠或空闲模式时,输入捕捉通道仅用作中断引脚(只检测上升沿,所有其他控制位都不适用。)

110 =未使用 (模块被禁止)101 =捕捉模式,每 16 个上升沿捕捉一次100 =捕捉模式,每 4 个上升沿捕捉一次011 =捕捉模式,每个上升沿捕捉一次010 =捕捉模式,每个下降沿捕捉一次001 =捕捉模式,每个边沿(上升沿和下降沿)捕捉一次(ICI<1:0> 位不控制该模式下的中断产生。)000 =输入捕捉模块关闭

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 129 页

dsPIC33FJ12GP201/202

13.0 输出比较

13.1 设置产生单个输出脉冲

当 OCM 控制位 (OCxCON<2:0>)被设置为 100 时,所选的输出比较通道将OCx引脚初始化为低电平状态并产生单输出脉冲。

若要产生单输出脉冲,需要遵循以下步骤。这些步骤假设定时器源在开始时是关闭的,但这并不是对模块工作的要求。

1. 确定指令时钟周期时间。考虑定时器源的外部时钟频率 (如果使用)和定时器预分频比的设置。

2. 计算从 TMRy 起始值(0000h)到输出脉冲的上升沿所需的时间。

3. 根据所需的脉冲宽度和到脉冲上升沿的时间计算出现脉冲下降沿的时间。

4. 将以上步骤 2 和步骤 3 中计算出的值分别写入输出比较寄存器OCxR和输出比较辅助寄存器OCxRS。

5. 将定时器周期寄存器 PRy 的值设置为等于或大于输出比较辅助寄存器 OCxRS 中的值。

6. 将 OCM 位设置为 100,并将 OCTSEL(OCxCON<3>)位设置为要求的定时器源。此时OCx 引脚状态被驱动为低电平。

7. 将 TON(TyCON<15>)位设置为 1以使比较时基计数。在 TMRy 和 OCxR 第一次匹配时, OCx 引脚将被驱动为高电平。

当递增定时器 TMRy 和输出比较辅助寄存器OCxRS 发生匹配时,在 OCx 引脚上驱动脉冲的第二个边沿(即下降沿)。OCx 引脚上不会驱动输出额外的脉冲,OCx 引脚将保持为低电平。第二次比较匹配事件会导致 OCxIF 中断标志位置 1。如果已通过将 OCxIE 位置 1 允许中断,将产生中断。有关外设中断的更多信息,请参见第 6.0 节“中断控制器”。

8. 要发出另一个单脉冲输出,在需要的情况下要更改定时器和比较寄存器的设置,然后执行写操作,将OCM 位设置为 100。不需要禁止和重新使能定时器以及将 TMRy 寄存器清零,但这样做可能对确定一个已知事件时间边界发出的脉冲有好处。

在输出脉冲下降沿后不一定要禁止输出比较模块。重写OCxCON 寄存器的值可以发出另一个脉冲。

13.2 设置产生连续输出脉冲

当 OCM 控制位 (OCxCON<2:0>)被设置为 101 时,所选的输出比较通道在每次比较匹配事件发生时将OCx引脚初始化为低电平状态并输出脉冲。

若要将模块配置为产生连续的输出脉冲流,需要遵循以下步骤。这些步骤假设定时器源在开始时是关闭的,但这并不是对模块工作的要求。

1. 确定指令时钟周期时间。考虑定时器源的外部时钟频率 (如果使用)和定时器预分频比的设置。

2. 计算从 TMRy 起始值(0000h)到输出脉冲的上升沿所需的时间。

3. 根据所需的脉冲宽度和到脉冲上升沿的时间计算出现脉冲下降沿的时间。

4. 将以上步骤 2 和步骤 3 中计算出的值分别写入输出比较寄存器OCxR和输出比较辅助寄存器OCxRS。

5. 将定时器周期寄存器 PRy 的值设置为等于或大于输出比较辅助寄存器 OCxRS 中的值。

6. 将 OCM 位设置为 101,并将 OCTSEL 位设置为要求的定时器源。此时 OCx 引脚状态被驱动为低电平。

7. 通过将 TON(TyCON<15>)位设置为 1使能比较时基。在 TMRy 和 OCxR 第一次匹配时, OCx 引脚将被驱动为高电平。

当比较时基 TMRy 和输出比较辅助寄存器 OCxRS发生匹配时,OCx 引脚驱动脉冲的第二个边沿(即下降沿)。

8. 第二次比较匹配事件会导致OCxIF中断标志位置1。

当比较时基和相应的定时器周期寄存器中的值匹配时,TMRy 寄存器复位为 0x0000 并重新开始计数。

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

dsPIC33FJ12GP201/202

DS70264A_CN 第 130 页 超前信息 2007 Microchip Technology Inc.

9. 重复步骤 8 到步骤 11,可无限制地产生连续脉冲流。OCxIF 标志位在每次 OCxRS 与 TMRy 的比较匹配事件发生时置 1。

13.3 脉宽调制模式

当将输出比较模块配置为 PWM 操作时,需要遵循以下步骤:

1. 通过写所选的定时器周期寄存器 (PRy)设置PWM 周期。

2. 通过写 OCxRS 寄存器设置 PWM 占空比。

3. 向 OxCR 寄存器中写入初始占空比。

4. 如果需要的话,允许定时器和输出比较模块的中断。如果要使用 PWM 故障引脚,则必须设置输出比较中断。

5. 通过写输出比较模式位 OCM<2:0>(OCxCON2:0>),将输出比较模块配置为两种PWM 工作模式中的一种。

通过设置 TON = 1(TxCON<15>)设置 TMRy 预分频值并使能时基。

13.3.1 PWM 周期

PWM 周期可通过写入 PRy (TMRy 周期寄存器)来指定。 PWM 周期可由公式 13-1 计算:

公式 13-1: 计算 PWM 周期

13.3.2 PWM 占空比

PWM 占空比是通过写 OCxRS 寄存器指定的。可以在任何时候写 OCxRS 寄存器,但是在 PRy 和 TMRy 发生匹配(即周期结束)前占空比值不会被锁存到 OCxR 中。这可以为 PWM占空比提供双重缓冲,对于 PWM 的无故障操作是极其重要的。在 PWM 模式下,OCxR 是只读寄存器。

PWM 占空比有一些重要的边界参数,包括:

• 如果输出比较寄存器OCxR中装入 0000h,则OCx引脚将保持低电平 (占空比为 0%)。

• 如果 OCxR 大于 PRy (定时器周期寄存器),则引脚将保持高电平(占空比为 100%)。

• 如果OCxR等于PRy,则OCx引脚在一个时基计数周期内为低电平,而在其余所有的计数周期内均为高电平。

请参见例 13-1了解PWM模式时序的详细信息。表 13-1显示器件工作速度为10 MIPS时的PWM频率和分辨率示例。

公式 13-2: 计算 大 PWM 分辨率

注: 在第一次使能输出比较模块之前,必须先初始化OCxR寄存器。当模块工作于PWM模式时, OCxR 寄存器变为只读的占空比寄存器。 OCxR 中保存的值成为第一个PWM 周期的 PWM 占空比。直到时基周期匹配发生,输出比较辅助寄存器OCxRS的内容才会被传输到 OCxR。

注: 如果 PRy 的值为 N,则会使 PWM 周期为N + 1 个时基计数周期。例如,如果写入PRy 寄存器的值为 7,则将产生由 8 个时基周期组成的 PWM 周期。

PWM 周期 = [(PRy) + 1] TCY • ( 定时器预分频值 )

PWM 频率 = 1/[PWM 周期 ]其中 :

( )大 PWM 分辨率(位)=

FCY FPWM

log10

log10(2)位

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 131 页

dsPIC33FJ12GP201/202

例 13-1: PWM 周期和占空比计算

表 13-1: 器件工作在 4 MIPS (FCY = 4 MHz)时的 PWM 频率和分辨率示例

表 13-2: 器件工作在 16 MIPS (FCY = 16 MHz)时的 PWM 频率和分辨率示例

表 13-3: 器件工作在 40 MIPS (FCY = 40 MHz)时的 PWM 频率和分辨率示例

PWM 频率 7.6 Hz 61 Hz 122 Hz 977 Hz 3.9 kHz 31.3 kHz 125 kHz

定时器预分频比 8 1 1 1 1 1 1

周期寄存器的值 FFFFh FFFFh 7FFFh 0FFFh 03FFh 007Fh 001Fh

分辨率 (位) 16 16 15 12 10 7 5

PWM 频率 30.5 Hz 244 Hz 488 Hz 3.9 kHz 15.6 kHz 125 kHz 500 kHz

定时器预分频比 8 1 1 1 1 1 1

周期寄存器的值 FFFFh FFFFh 7FFFh 0FFFh 03FFh 007Fh 001Fh

分辨率 (位) 16 16 15 12 10 7 5

PWM 频率 76 Hz 610 Hz 1.22 Hz 9.77 kHz 39 kHz 313 kHz 1.25 MHz

定时器预分频比 8 1 1 1 1 1 1

周期寄存器的值 FFFFh FFFFh 7FFFh 0FFFh 03FFh 007Fh 001Fh

分辨率 (位) 16 16 15 12 10 7 5

1. 在期望 PWM 频率为 52.08 kHz, FCY = 16 MHz 且 Timer2 预分频比为 1:1 时,计算定时器周期寄存器的值。 TCY = 62.5 nsPWM 周期 = 1/PWM 频率 = 1/52.08 kHz = 19.2 msPWM 周期 = (PR2 + 1) • TCY • (Timer2 预分频值 )19.2 ms = (PR2 + 1) • 62.5 ns • 1 PR2 = 306

2. 在 PWM 频率为 52.08 kHz 且器件的时钟速率为 32 MHz 时,计算占空比的 大分辨率。 PWM 分辨率 = log10(FCY/FPWM)/log102) 位

= (log10(16 MHz/52.08 kHz)/log102) 位= 8.3 位

dsPIC33FJ12GP201/202

DS70264A_CN 第 132 页 超前信息 2007 Microchip Technology Inc.

图 13-1: 输出比较模块框图

OCxR(1)

比较器

输出逻辑

OCM2:OCM0

输出使能

OCx(1)

置 1 标志位

OCxIF(1)

OCxRS(1)

模式选择

3

注 1: 显示 “x”之处与各自输出比较通道 1 到 8 相关的寄存器对应。

2: OCFA 引脚控制 OC1-OC2 通道。

3: TMR2/TMR3 可通过 OCTSEL (OCxOCN<3>)位进行选择。

OCTSEL 0 1

16 16

OCFA(2)

来自时基 (3) 的TMR 寄存器输入

来自时基 (3) 的周期匹配信号

0 1

QSR

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 133 页

dsPIC33FJ12GP201/202

13.4 输出比较寄存器 寄存器 13-1: OCxCON:输出比较 x 控制寄存器

U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0— — OCSIDL — — — — —

bit 15 bit 8

U-0 U-0 U-0 R-0 HC R/W-0 R/W-0 R/W-0 R/W-0— — — OCFLT OCTSEL OCM<2:0>

bit 7 bit 0

图注: HC = 用硬件清零 HS = 用硬件置 1R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为 0

bit 13 OCSIDL: 在空闲模式下停止输出比较控制位 1 = 输出比较 x 将在 CPU 空闲模式下停止0 = 输出比较 x 将在 CPU 空闲模式下继续工作

bit 12-5 未实现:读为 0

bit 4 OCFLT:PWM 故障条件状态位

1 = 产生了 PWM 故障条件 (仅可用硬件清零)0 = 未产生 PWM 故障条件(仅当 OCM<2:0> = 111时,才使用该位。)

bit 3 OCTSEL:输出比较定时器选择位

1 = Timer3 是比较 x 的时钟源0 = Timer2 是比较 x 的时钟源

bit 2-0 OCM<2:0>:输出比较模式选择位

111 = OCx 处于 PWM 模式,使能故障引脚110 = OCx 处于 PWM 模式,禁止故障引脚101 = 初始化 OCx 引脚为低电平,在 OCx 引脚上产生连续输出脉冲100 = 初始化 OCx 引脚为低电平,在 OCx 引脚上产生单个输出脉冲011 = 比较事件使 OCx 引脚的电平翻转010 = 初始化 OCx 引脚为高电平,比较事件强制 OCx 引脚为低电平001 = 初始化 OCx 引脚为低电平,比较事件强制 OCx 引脚为高电平 000 = 禁止输出比较通道

dsPIC33FJ12GP201/202

DS70264A_CN 第 134 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 135 页

dsPIC33FJ12GP201/202

14.0 串行外设接口(SPI)

串行外设接口(Serial Peripheral Interface, SPI)模块是用于同其他外设或单片机器件进行通信的同步串行接口。这些外设可以是串行 EEPROM、移位寄存器、显示驱动器和模数(A/D)转换器等。SPI 模块与 Motorola ®的 SPI 和 SIOP 兼容。

每个SPI模块由一个用于将数据移入和移出的16位移位寄存器 SPIxSR (其中 x = 1 或 2)和一个缓冲寄存器SPIxBUF 组成。控制寄存器 SPIxCON 用来配置模块。另外,还有一个状态寄存器 SPIxSTAT 用来表明各种状态条件。

串行接口由 4 个引脚组成:

• SDIx (串行数据输入)• SDOx (串行数据输出)• SCKx (移位时钟输入或输出)• SSx (低电平有效从选择)

在主模式下工作时, SCK 是时钟输出。在从模式下时,SCK 是时钟输入。

14.1 中断

一组8或16个时钟脉冲将数据位从SPIxSR移出到SDOx引脚,同时将 SDIx 引脚的数据位移入 SPIxSR。当传输完成时产生一个中断,相应的中断标志位(SPI1IF)置1。通过中断允许位(SPI1IE)可以禁止该中断。

14.2 接收操作

接收操作是双重缓冲的。当接收完字节时,将字节从SPIxSR 送到 SPIxBUF。

当从 SPIxSR 传输新数据到 SPIxBUF 时,如果接收缓冲器已满,模块会将 SPIROV 位置 1,表明产生了溢出条件。数据从 SPIxSR 向 SPIxBUF 的传输不会完成,新数据将丢失。当 SPIROV 为 1时,模块将不会对 SCKx 电平的跳变进行响应;实际上会禁止模块,直到用户软件读 SPIxBUF 为止。

14.3 发送操作

发送写操作同样也是双重缓冲的。用户写入 SPIxBUF。当主或从传输完成后,移位寄存器(SPIxSR)的内容将被移入接收缓冲器。如果已经向缓冲寄存器写了任何发送数据,发送缓冲器的内容将被移入 SPIxSR。于是,接收到的数据存放在 SPIxBUF 中,而 SPIxSR 中的发送数据已经准备就绪,可进行下一次传输。

14.4 SPI 设置

要将 SPI 模块设置为工作在主模式下:

1. 如果使用中断:

a) 将相应 IFSn 寄存器中的 SPIxIF 位清零。

b) 将相应 IECn 寄存器中的 SPIxIE 位置 1。c) 通过写相应 IPCn寄存器中的SPIxIP位来设

置中断优先级。

2. 将要求的设置写入SPIxCON寄存器,且MSTEN(SPIxCON1<5>) = 1。

3. 将 SPIROV 位 (SPIxSTAT<6>)清零。

4. 通过将 SPIEN 位 (SPIxSTAT<15>)置 1 使能SPI 工作。

5. 将待发送数据写入 SPIxBUF 寄存器。发送(和接收)在数据写入 SPIxBUF 寄存器时立即开始。

要将 SPI 模块设置为工作在从模式下:

1. 将 SPIxBUF 寄存器清零。

2. 如果使用中断:

a) 将相应 IFSn 寄存器中的 SPIxIF 位清零。

b) 将相应 IECn 寄存器中的 SPIxIE 位置 1。c) 通过写相应 IPCn寄存器中的SPIxIP位来设

置中断优先级。

3. 将要求的设置写入 SPIxCON1 和 SPIxCON2 寄存器,且 MSTEN (SPIxCON1<5>) = 0。

4. 将 SMP 位清零。

5. 如果 CKE 位置 1,则必须将 SSEN 位(SPIxCON1<7>)置 1 来使能 SSx 引脚。

6. 将 SPIROV 位 (SPIxSTAT<6>)清零。

7. 通过将 SPIEN 位 (SPIxSTAT<15>)置 1 使能SPI 工作。

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。 注: 发送缓冲器(SPIxTXB)和接收缓冲器

(SPIxRXB)都映射到相同的寄存器地址SPIxBUF。请勿对 SPIxBUF 寄存器执行读- 修改 - 写操作 (例如针对位的指令)。

dsPIC33FJ12GP201/202

DS70264A_CN 第 136 页 超前信息 2007 Microchip Technology Inc.

SPI模块会产生一个中断表明字节或字传输完成,还会为所有的 SPI 错误条件产生单独的中断。

图 14-1: SPI 模块框图

内部数据总线

SDIx

SDOx

SSx

SCKx

SPIxSRbit 0

移位控制

边沿选择

FCY主预分频器1:1/4/16/64

同步

SPIxBUF

控制

传输传输

写 SPIxBUF读 SPIxBUF

16

SPIxCON1<1:0>

SPIxCON1<4:2>

使能主时钟

时钟控制

辅助预分频器1:1 至 1:8

SPIxRXB SPIxTXB

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 137 页

dsPIC33FJ12GP201/202

图 14-2: SPI 主 / 从连接

图 14-3: SPI 主 - 帧主模式连接图

图 14-4: SPI 主 - 帧从模式连接图

串行接收缓冲器(SPIxRXB)

LSbMSb

SDIx

SDOx

处理器 2(SPI 从器件)

SCKx

SSx(1)

串行发送缓冲器(SPIxTXB)

串行接收缓冲器(SPIxRXB)

移位寄存器(SPIxSR)

MSb LSb

SDOx

SDIx

处理器 1(SPI 主器件)

串行时钟

(SSEN(SPIxCON1<7>)= 1且 MSTEN(SPIxCON1<5>)= 0)

注 1: 可选择在从模式使用 SSx 引脚。2: 用户必须向 SPIxBUF 写入发送数据,或从 SPIxBUF 读取接收数据。 SPIxTXB 和 SPIxRXB 寄存器被存储器映射到

SPIxBUF。

SCKx

串行发送缓冲器(SPIxTXB)

(MSTEN(SPIxCON1<5>)= 1)

SPI 缓冲器(SPIxBUF)(2)

SPI 缓冲器(SPIxBUF)(2)

移位寄存器(SPIxSR)

SDOx

SDIx

dsPIC33F

串行时钟

SSx

SCKx

帧同步脉冲

SDIx

SDOx

处理器 2

SSx

SCKx

SDOx

SDIx

dsPIC33F

串行时钟

SSx

SCKx

帧同步脉冲

SDIx

SDOx

处理器 2

SSx

SCKx

dsPIC33FJ12GP201/202

DS70264A_CN 第 138 页 超前信息 2007 Microchip Technology Inc.

图 14-5: SPI 从 - 帧主模式连接图

图 14-6: SPI 从 - 帧从模式连接图

公式 14-1: 器件工作频率和 SPI 时钟速度之间的关系

表 14-1: SCKx 频率示例

FCY = 40 MHz辅助预分频比设置

1:1 2:1 4:1 6:1 8:1

主预分频比设置 1:1 无效 无效 10000 6666.67 50004:1 10000 5000 2500 1666.67 1250

16:1 2500 1250 625 416.67 312.5064:1 625 312.5 156.25 104.17 78.125

FCY = 5 MHz

主预分频比设置 1:1 5000 2500 1250 833 6254:1 1250 625 313 208 156

16:1 313 156 78 52 3964:1 78 39 20 13 10

注: 表中 SCKx 频率的单位为 kHz。

SDOx

SDIx

dsPIC33F

串行时钟

SSx

SCKx

帧同步脉冲

SDIx

SDOx

处理器 2

SSx

SCKx

SDOx

SDIx

dsPIC33F

串行时钟

SSx

SCKx

帧同步脉冲

SDIx

SDOx

处理器 2

SSx

SCKx

主预分频比 * 辅助预分频比

FCYFSCK =

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 139 页

dsPIC33FJ12GP201/202

寄存器 14-1: SPIxSTAT:SPIx 状态和控制寄存器

R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0SPIEN — SPISIDL — — — — —

bit 15 bit 8

U-0 R/C-0 U-0 U-0 U-0 U-0 R-0 R-0— SPIROV — — — — SPITBF SPIRBF

bit 7 bit 0

图注: C = 可清零位

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 SPIEN:SPIx 使能位

1 = 使能模块并将 SCKx、 SDOx、 SDIx 和 SSx 配置为串口引脚0 = 禁止模块

bit 14 未实现:读为 0

bit 13 SPISIDL:空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12-7 未实现:读为 0

bit 6 SPIROV:接收溢出标志位1 = 一个新字节 / 字已完全接收并丢弃。用户软件没有读先前保存在 SPIxBUF 寄存器中的数据。0 = 未发生溢出。

bit 5-2 未实现:读为 0

bit 1 SPITBF:SPIx 发送缓冲器满状态位

1 = 发送尚未开始, SPIxTXB 为满0 = 发送已开始, SPIxTXB 为空当 CPU 写 SPIxBUF 存储单元并装入 SPIxTXB 时,该位由硬件自动置 1当 SPIx 模块将数据从 SPIxTXB 传输到 SPIxSR 时,该位由硬件自动清零

bit 0 SPIRBF:SPIx 接收缓冲器满状态位

1 = 接收完成, SPIxRXB 为满0 = 接收未完成, SPIxRXB 为空当 SPIx 将数据从 SPIxSR 传输到 SPIxRXB 时,该位由硬件自动置 1当内核通过读 SPIxBUF 存储单元读 SPIxRXB 时,该位由硬件自动清零

dsPIC33FJ12GP201/202

DS70264A_CN 第 140 页 超前信息 2007 Microchip Technology Inc.

寄存器 14-2: SPIXCON1:SPIx 控制寄存器 1

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — DISSCK DISSDO MODE16 SMP CKE(1)

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-0SSEN CKP MSTEN SPRE<2:0> PPRE<1:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 未实现:读为 0

bit 12 DISSCK:禁止 SCKx 引脚位 (仅限 SPI 主模式)

1 = 禁止内部 SPI 时钟,引脚用作 I/O0 = 使能内部 SPI 时钟

bit 11 DISSDO:禁止 SDOx 引脚位

1 = 模块不使用 SDOx 引脚;引脚用作 I/O0 = SDOx 引脚由模块控制

bit 10 MODE16:字 / 字节通信选择位

1 = 采用字宽 (16 位)通信0 = 采用字节宽 (8 位)通信

bit 9 SMP:SPIx 数据输入采样相位位

主模式:1 = 在数据输出时间的末尾采样输入数据0 = 在数据输出时间的中间采样输入数据

从模式:当在从模式下使用 SPIx 时,必须将 SMP 清零。

bit 8 CKE:SPIx 时钟边沿选择位 (1)

1 = 串行输出数据在时钟从工作状态转变为空闲状态时变化 (见 bit 6)0 = 串行输出数据在时钟从空闲状态转变为工作状态时变化 (见 bit 6)

bit 7 SSEN:从选择使能位 (从模式)

1 = SSx 引脚用于从模式0 = SSx 引脚不被模块使用。引脚由端口功能控制。

bit 6 CKP:时钟极性选择位

1 = 空闲状态时钟信号为高电平;工作状态为低电平0 = 空闲状态时钟信号为低电平;工作状态为高电平

bit 5 MSTEN: 主模式使能位

1 = 主模式0 = 从模式

注 1: 在帧 SPI 模式下不使用 CKE 位。在帧 SPI 模式 (FRMEN = 1)下,用户应将该位编程为 0。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 141 页

dsPIC33FJ12GP201/202

bit 4-2 SPRE<2:0>:辅助预分频比位 (主模式)

111 = 辅助预分频比 1:1110 = 辅助预分频比 2:1•••000 = 辅助预分频比 8:1

bit 1-0 PPRE<1:0>:主预分频比位 (主模式)

11 = 主预分频比 1:110 = 主预分频比 4:101 = 主预分频比 16:100 = 主预分频比 64:1

寄存器 14-2: SPIXCON1:SPIx 控制寄存器 1 (续)

注 1: 在帧 SPI 模式下不使用 CKE 位。在帧 SPI 模式 (FRMEN = 1)下,用户应将该位编程为 0。

dsPIC33FJ12GP201/202

DS70264A_CN 第 142 页 超前信息 2007 Microchip Technology Inc.

寄存器 14-3: SPIxCON2:SPIx 控制寄存器 2

R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0FRMEN SPIFSD FRMPOL — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 U-0— — — — — — FRMDLY —

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 FRMEN:帧 SPIx 支持位

1 = 使能帧 SPIx 支持 (SSx 引脚用作帧同步脉冲输入 / 输出)0 = 禁止帧 SPIx 支持

bit 14 SPIFSD:帧同步脉冲方向控制位

1 = 帧同步脉冲输入 (从器件)0 = 帧同步脉冲输出 (主器件)

bit 13 FRMPOL:帧同步脉冲极性位

1 = 帧同步脉冲为高电平有效0 = 帧同步脉冲为低电平有效

bit 12-2 未实现:读为 0

bit 1 FRMDLY:帧同步脉冲边沿选择位

1 = 帧同步脉冲与第一个位时钟一致0 = 帧同步脉冲比第一个位时钟提前

bit 0 未实现:禁止使用用户应用程序将该位设置为 1。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 143 页

dsPIC33FJ12GP201/202

15.0 I2C

I2C 模块(16 位接口)为 I2C 串行通信标准的从模式和多主器件模式提供完全的硬件支持。

I2C 模块有一个双引脚接口:

• SCLx 引脚是时钟线• SDAx 引脚是数据线

I2C 模块提供以下主要特性:

• I2C 接口支持主 / 从模式工作

• I2C 从模式支持 7 位和 10 位地址

• I2C 主模式支持 7 位和 10 位地址

• I2C 端口允许主器件和从器件之间的双向传输

• I2C 端口的串行时钟同步可以用作握手机制来暂停和继续串行传输 (SCLREL 控制)

• I2C 支持多主器件工作;检测总线冲突并相应地进行仲裁

15.1 工作模式

硬件完全实现了 I2C 标准和快速模式规范的所有主从功能,以及 7 位和 10 位寻址。

在 I2C 总线上, I2C 模块既可作为主器件工作,也可作为从器件工作。

支持 I2C 模块工作在以下模式:

• 带 7 位地址的 I2C 从模式

• 带 10 位地址的 I2C 从模式

• 带 7 位或 10 位地址的 I2C 主模式

如需了解每种模式通信序列的详细信息,请参见《dsPIC33F 系列参考手册》。请参见 Microchip 网站(www.microchip.com)了解 新的《dsPIC33F 系列参考手册》章节。

15.2 I2C 寄存器

I2CxCON 和 I2CxSTAT 分别是控制寄存器和状态寄存器。I2CxCON 寄存器是可读写的。I2CxSTAT 的低 6 位是只读的,它的其余位是可读写的。

• I2CxRSR 是移位寄存器,用来对数据进行移位

• I2CxRCV 是接收缓冲寄存器,可写入、读出数据字节

• I2CxTRN 是发送寄存器,发送操作期间,字节将会写入 I2CxTRN

• I2CxADD 寄存器存放从地址

• 状态位 ADD10 表明是否为 10 位地址模式

• I2CxBRG 用来保存波特率发生器 (BRG)的重载值

在进行接收时,I2CxRSR 和 I2CxRCV 一起形成双重缓冲接收器。当 I2CxRSR 接收到一个完整的字节后,字节被送至 I2CxRCV 并产生中断脉冲。

15.3 I2C 中断

I2C 模块产生两个中断标志:

• MI2CxIF (I2C 主事件中断标志)• SI2CxIF (I2C 从事件中断标志)

在所有 I2C 错误条件下都会产生一个单独的中断。

15.4 波特率发生器

在 I2C 主模式下,波特率发生器(BRG)的重载值位于I2CxBRG 寄存器中。BRG 装入该值后,BRG 将递减计数至0并停止,直到发生再次装入。如果发生时钟仲裁,例如 SCLx 引脚采样为高电平时,将重载 BRG。

根据 I2C 标准, FSCL 可以是 100 kHz 或 400 kHz。然而,用户可以指定任何波特率, 高到 1 MHz。I2CxBRG 的值不能是 0或 1。

公式 15-1: 串行时钟速率

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

I2CxBRG = FCY FCYFSCL 1,111,111 – 1–( )

dsPIC33FJ12GP201/202

DS70264A_CN 第 144 页 超前信息 2007 Microchip Technology Inc.

图 15-1: I2C™ 框图 (X = 1)

内部数据总线

SCLx

SDAx

移位

匹配检测

I2CxADD

启动和停止位检测

时钟

地址匹配

时钟延长

I2CxTRNLSb

移位时钟

BRG 递减计数器

重载控制

TCY/2

启动和停止位产生

应答产生

冲突检测

I2CxCON

I2CxSTAT

控制

逻辑

LSb

I2CxBRG

I2CxRSR

I2CxMSK

I2CxRCV

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 145 页

dsPIC33FJ12GP201/202

15.5 I2C 模块地址

10 位 I2CxADD 寄存器包含从模式地址。

如果 A10M 位 (I2CxCON<10>)为 0,则模块把地址解释为 7 位地址。当接收到地址时,将收到的地址与I2CxADD 寄存器中的低 7 位进行比较。

如果 A10M 位为 1,则将地址视为 10 位地址。当接收地址时,将收到的地址与二进制值 “11110 A9 A8”(其中 A9和 A8是 I2CxADD 的高 2 位)进行比较。如果值匹配,下一个地址将与 I2CxADD 的低 8 位进行比较,这是 10 位寻址协议规定的。

表 15-1: dsPIC33FJ12GP201/202 支持的 7 位 I2C™ 从地址

15.6 从地址掩码

I2CxMSK 寄存器(寄存器 15-3)将 7 位和 10 位地址模式下地址中的某些位指定为“无关位”。将 I2CxMSK寄存器中某个特定位置 1(= 1),不论相应的地址位的值是 0 还是 1,工作在从模式下的模块都会作出响应。例如,当将 I2CxMSK 设置为 00100000时,工作在从模式下的模块将检测两个地址0000000和00100000。

要使能地址掩码,必须通过将IPMIEN位(I2CxCON<11>)清零来禁止智能外设管理接口 (Intelligent PeripheralManagement Interface, IPMI)。

15.7 IPMI 支持

控制位 IPMIEN 允许模块支持智能外设管理接口(IPMI)。当此位置 1 时,模块将接受并对所有地址执行操作。

15.8 广播呼叫地址支持

广播呼叫地址能寻址所有器件。当使用此地址时,理论上所有器件都应该以应答信号作出响应。

广播呼叫地址是 I2C 协议为特定目的保留的 8 个地址之一。它由全 0地址位组成,且 R_W = 0。

当广播呼叫使能(GCEN)位置 1(I2CxCON<7> = 1)时,将识别广播呼叫地址。在响应中断时,通过读I2CxRCV 的内容可以检测到中断的来源,从而确定地址是特定于器件的还是广播呼叫地址。

15.9 自动时钟延长

在从模式下,模块可以通过时钟延长同步读缓冲器和写主器件。

15.9.1 发送时钟延长

在 10 位和 7 位发送模式下,如果 TBF 位清零(表明缓冲器为空),则在第 9 个时钟的下降沿后将 SCLREL 位清零,就实现了时钟延长。

在从发送模式下,始终进行时钟延长,与 STREN 位无关。在允许继续发送之前,用户 ISR 必须将 SCLREL 位置 1。通过使 SCLx 线保持为低电平,在主器件启动另一个发送序列之前,用户就有时间执行 ISR 并装入I2CxTRN 的内容。

15.9.2 接收时钟延长

在从接收模式下,I2CxCON 寄存器中的STREN 位可用来使能时钟延长。当 STREN 位置 1 时, SCLx 引脚将在每个数据接收序列结束时保持为低电平。

在允许继续接收之前,用户 ISR 必须将 SCLREL 位置1。通过使 SCLx 线保持为低电平,在主器件启动另一个接收序列之前,用户就有时间执行 ISR并读出 I2CxRCV的内容。这可以防止缓冲器溢出。

15.10 软件控制的时钟延长 (STREN = 1)当 STREN 位为 1时,可以用软件清零 SCLREL 位,从而实现对时钟延长的软件控制。 如果 STREN 位为 0,软件对 SCLREL 位的写操作将被忽略,不会对 SCLREL 位产生影响。

0x00 广播呼叫地址或启动字节

0x01-0x03 保留

0x04-0x07 Hs 模式主机码

0x08-0x77 有效 7 位地址

0x78-0x7b 有效 10 位地址(低 7 位)

0x7c-0x7f 保留

dsPIC33FJ12GP201/202

DS70264A_CN 第 146 页 超前信息 2007 Microchip Technology Inc.

15.11 斜率控制

对于快速模式 (400 kHz), I2C 标准要求对 SDAx 和SCLx 信号进行斜率控制。如果需要的话,用户可通过控制位 DISSLW 来禁止斜率控制。对于 1 MHz 模式,必须禁止斜率控制。

15.12 时钟仲裁

在任何接收、发送或重复启动 / 停止条件期间,当主器件释放了 SCLx 引脚 (允许 SCLx 悬空为高电平)时,就会发生时钟仲裁。当允许SCLx引脚悬空为高电平时,BRG 暂停计数,直到 SCLx 引脚被实际采样到高电平为止。当 SCLx 引脚被采样到高电平时, BRG 重新装入I2CxBRG的内容并开始计数。当外部器件使时钟保持为低电平时,这可以始终保证 SCLx 高电平时间至少为一个 BRG 计满返回计数周期。

15.13 多主器件通信、总线冲突和总线仲裁

通过总线仲裁实现了对多主器件模式的支持。当主器件在 SDAx 引脚上输出地址 / 数据位时,如果一个主器件使 SDAx 悬空为高电平从而输出一个 1,而另一个主器件要输出 0,就会发生仲裁。当 SCLx 引脚悬空为高电平时,数据应该是稳定的。如果 SDAx上预期数据是 1,但从 SDAx 引脚采样到的数据是 0,那么就发生了总线冲突。主器件将 I2C 主事件中断标志位置 1,并且将 I2C端口的主器件部分复位到空闲状态。

15.14 外设引脚选择限制

I2C 模块具有有限的外设引脚选择功能。当将 FPOR 配置寄存器中的 ACTI2C 位设置为 1时,模块使用 SDAx/SCLx 引脚。如果将 ALTI2C 位设置为 0, 模块使用ASDAx/ASCLx 引脚。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 147 页

dsPIC33FJ12GP201/202

寄存器 15-1: I2CxCON:I2Cx 控制寄存器

R/W-0 U-0 R/W-0 R/W-1 HC R/W-0 R/W-0 R/W-0 R/W-0I2CEN — I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 HC R/W-0 HC R/W-0 HC R/W-0 HC R/W-0 HCGCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN

bit 7 bit 0

图注: U = 未实现位,读为 0R = 可读位 W = 可写位 HS = 用硬件置 1 HC = 用硬件清零

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 I2CEN:I2Cx 使能位

1 = 使能 I2Cx 模块,并将 SDAx 和 SCLx 引脚配置为串口引脚0 = 禁止 I2Cx 模块。所有 I2C 引脚由端口功能控制

bit 14 未实现:读为 0

bit 13 I2CSIDL:空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12 SCLREL:SCLx 释放控制位 (作为 I2C 从器件工作时)

1 = 释放 SCLx 时钟0 = 保持 SCLx 时钟为低电平 (时钟延长)

如果 STREN = 1: 该位可读可写 (即软件可以写入 0 来启动时钟延长或写入 1 来释放时钟)。在从器件发送开始或接收结束时由硬件清零

如果 STREN = 0: 该位可读且可被置 1 (即软件只能写入 1来释放时钟)。在从器件发送开始时由硬件清零

bit 11 IPMIEN:智能外设管理接口(IPMI)使能位

1 = 使能 IPMI 模式;应答所有地址0 = 禁止 IPMI 模式

bit 10 A10M:10 位从器件地址位

1 = I2CxADD 为 10 位从器件地址0 = I2CxADD 为 7 位从器件地址

bit 9 DISSLW:禁止斜率控制位

1 = 禁止斜率控制0 = 使能斜率控制

bit 8 SMEN:SMbus 输入电平位

1 = 使能符合 SMbus 规范的 I/O 引脚门限值0 = 禁止 SMbus 输入门限值

bit 7 GCEN:广播呼叫使能位 (作为 I2C 从器件工作时)

1 = 允许在 I2CxRSR 接收到广播呼叫地址时产生中断 (已使能模块接收)0 = 禁止广播呼叫地址

bit 6 STREN:SCLx 时钟延长使能位 (作为 I2C 从器件工作时)

与 SCLREL 位配合使用。1 = 使能软件或接收时钟延长0 = 禁止软件或接收时钟延长

dsPIC33FJ12GP201/202

DS70264A_CN 第 148 页 超前信息 2007 Microchip Technology Inc.

bit 5 ACKDT:应答数据位(作为 I2C 主器件工作时,适用于主器件接收过程)

当软件启动应答序列时将发送的值。1 = 在应答时发送 NACK0 = 在应答时发送 ACK

bit 4 ACKEN:应答序列使能位 (作为 I2C 主器件工作时,适用于主器件接收过程)

1 = 在SDAx和SCLx引脚上发出应答序列,并发送ACKDT数据位。 在主器件应答序列结束时由硬件清零0 = 应答序列不在进行中

bit 3 RCEN:接收使能位(作为 I2C 主器件工作时)

1 = 使能 I2C 接收模式。在主器件接收完数据字节的 8 位时由硬件清零0 = 接收序列不在进行中

bit 2 PEN:停止条件使能位 (作为 I2C 主器件工作时)

1 = 在 SDAx 和 SCLx 引脚上发出停止条件。在主器件停止序列结束时由硬件清零0 = 停止条件不在进行中

bit 1 RSEN:重复启动条件使能位(作为 I2C 主器件工作时)

1 = 在 SDAx 和 SCLx 引脚上发出重复启动条件。在主器件重复启动序列结束时由硬件清零0 = 重复启动条件不在进行中

bit 0 SEN:启动条件使能位 (作为 I2C 主器件工作时)

1 = 在 SDAx 和 SCLx 引脚上发出启动条件。在主器件启动序列结束时由硬件清零0 = 启动条件不在进行中

寄存器 15-1: I2CxCON:I2Cx 控制寄存器 (续)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 149 页

dsPIC33FJ12GP201/202

寄存器 15-2: I2CxSTAT:I2Cx 状态寄存器

R-0 HSC R-0 HSC U-0 U-0 U-0 R/C-0 HS R-0 HSC R-0 HSCACKSTAT TRSTAT — — — BCL GCSTAT ADD10

bit 15 bit 8

R/C-0 HS R/C-0 HS R-0 HSC R/C-0 HSC R/C-0 HSC R-0 HSC R-0 HSC R-0 HSCIWCOL I2COV D_A P S R_W RBF TBF

bit 7 bit 0

图注: U = 未实现位,读为 0R = 可读位 W = 可写位 HS = 用硬件置 1 HSC = 用硬件置 1/ 清零

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ACKSTAT:应答状态位 (作为 I2C 主器件工作时,适用于主器件发送操作)

1 = 接收到来自从器件的 NACK0 = 接收到来自从器件的 ACK在从器件应答结束时由硬件置 1 或清零。

bit 14 TRSTAT:发送状态位 (作为 I2C 主器件工作时,适用于主器件发送操作)

1 = 主器件正在进行发送 (8 位 + ACK)0 = 主器件不在进行发送在主器件发送开始时由硬件置 1。在从器件应答结束时由硬件清零。

bit 13-11 未实现:读为 0

bit 10 BCL:主器件总线冲突检测位

1 = 主器件工作期间检测到了总线冲突0 = 未发生冲突检测到总线冲突时由硬件置 1。

bit 9 GCSTAT:广播呼叫状态位

1 = 接收到广播呼叫地址0 = 未接收到广播呼叫地址当地址与广播呼叫地址匹配时由硬件置 1。当检测到停止条件时由硬件清零。

bit 8 ADD10:10 位地址状态位

1 = 10 位地址匹配0 = 10 位地址不匹配当与匹配的 10 位地址的第 2 个字节匹配时由硬件置 1。当检测到停止条件时由硬件清零。

bit 7 IWCOL:写冲突检测位

1 = 因为 I2C 模块忙,尝试写 I2CxTRN 寄存器失败0 = 未发生冲突当总线忙时写 I2CxTRN 会使硬件将该位置 1 (由软件清零)。

bit 6 I2COV:接收溢出标志位

1 = 当 I2CxRCV 寄存器仍然保存原先的字节时接收到了新字节0 = 未溢出尝试将数据从 I2CxRSR 传输到 I2CxRCV 时由硬件置 1 (由软件清零)。

bit 5 D_A:数据 / 地址位(作为 I2C 从器件工作时)

1 = 表示上次接收的字节为数据0 = 表示上次接收的字节为器件地址器件地址匹配时由硬件清零。在作为从器件接收到数据字节时由硬件置 1。

bit 4 P:停止位

1 = 表示上次检测到停止位0 = 表示上次未检测到停止位当检测到启动、重复启动或停止条件时由硬件置 1 或清零。

dsPIC33FJ12GP201/202

DS70264A_CN 第 150 页 超前信息 2007 Microchip Technology Inc.

bit 3 S:启动位

1 = 表示上次检测到启动 (或重复启动)位0 = 表示上次未检测到启动位当检测到启动、重复启动或停止条件时由硬件置 1 或清零。

bit 2 R_W:读 / 写信息位 (作为 I2C 从器件工作时)

1 = 读——表示数据传输自从器件输出0 = 写——表示数据传输输入到从器件接收到 I2C 器件地址字节后由硬件置 1 或清零。

bit 1 RBF:接收缓冲器满状态位

1 = 接收完成, I2CxRCV 为满0 = 接收未完成, I2CxRCV 为空用接收到的字节写 I2CxRCV 时由硬件置 1。用软件读 I2CxRCV 时由硬件清零。

bit 0 TBF:发送缓冲器满状态位

1 = 发送正在进行中, I2CxTRN 为满0 = 发送完成, I2CxTRN 为空用软件写 I2CxTRN 时由硬件置 1。数据发送完成时由硬件清零。

寄存器 15-2: I2CxSTAT:I2Cx 状态寄存器 (续)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 151 页

dsPIC33FJ12GP201/202

寄存器 15-3: I2CxMSK:I2Cx 从模式地址掩码寄存器

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — AMSK9 AMSK8

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-0AMSK7 AMSK6 AMSK5 AMSK4 AMSK3 AMSK2 AMSK1 AMSK0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-10 未实现:读为 0

bit 9-0 AMSKx:地址位 x 的掩码选择位

1 = 使能输入报文的地址中位 x 的掩码;在此位置上不需要位匹配0 = 禁止位 x 的掩码;在此位置上需要位匹配

dsPIC33FJ12GP201/202

DS70264A_CN 第 152 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 153 页

dsPIC33FJ12GP201/202

16.0 通用异步收发器(UART)

通用异步收发器 (Universal Asynchronous ReceiverTransmitter,UART)模块是 dsPIC33FJ12GP201/202器件系列提供的串行 I/O 模块之一。 UART 是可以与外设(例如个人电脑、LIN、RS-232 和 RS-485 接口)通信的全双工异步系统。模块还通过 UxCTS 和 UxRTS 引脚支持硬件流控制选项,其中还包括 IrDA® 编码器和解码器。

UART 模块的主要特性有:

• 通过UxTX和UxRX引脚进行全双工8位或9位数据传输

• 偶校验、奇校验或无奇偶校验选项(对于 8 位数据)

• 一个或两个停止位

• 通过 UxCTS 和 UxRTS 引脚支持硬件流控制选项

• 完全集成的波特率发生器,具有 16 位预分频器

• 当器件工作在 16 MIPS 时,波特率范围从 1 Mbps 到15 Mbps

• 4 级深度先进先出 (First-In-First-Out, FIFO)发送数据缓冲器

• 4 级深度 FIFO 接收数据缓冲器

• 奇偶校验、帧和缓冲器溢出错误检测

• 支持带地址检测的 9 位模式 (第 9 位 = 1)• 发送和接收中断

• 所有 UART 错误条件下可分别产生中断

• 用于诊断支持的环回模式

• 支持同步和间隔字符

• 支持自动波特率检测

• IrDA 编码器和解码器逻辑

• 用于 IrDA 支持的 16 倍频波特率时钟输出

图 16-1 给出了 UART 模块的简化框图。 UART 模块由以下至关重要的硬件组件组成:

• 波特率发生器

• 异步发送器

• 异步接收器

图 16-1: UART 简化框图

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

UxRX

硬件流控制

UART 接收器

UART 发送器 UxTX

BCLK

波特率发生器

UxRTS

IrDA®

UxCTS

dsPIC33FJ12GP201/202

DS70264A_CN 第 154 页 超前信息 2007 Microchip Technology Inc.

16.1 UART 波特率发生器

UART 模块包含一个专用的 16 位 BRG。BRGx 寄存器控制一个自由运行的 16 位定时器的周期。公式 16-1 给出了 BRGH = 0时计算波特率的公式。

公式 16-1: UART 波特率 (BRGH = 0)

例 16-1 给出了如下条件下的波特率误差计算:

• FCY = 4 MHz • 目标波特率 = 9600

大可能波特率(BRGH = 0)是 FCY/16(当 BRGx = 0时), 小可能波特率是 FCY/(16 * 65536)。

公式 16-2 给出了 BRGH = 1时计算波特率的公式。

公式 16-2: UART 波特率(BRGH = 1)

大可能波特率(BRGH = 1)是 FCY/4(当 BRGx = 0时), 小可能波特率是 FCY/(4 * 65536)。

向 BRGx 寄存器写入新值会使 BRG 定时器复位 (清零)。这可以确保BRG无需等待定时器溢出就可以产生新的波特率。

例 16-1: 波特率误差计算 (BRGH = 0)

注: FCY 表示指令周期时钟频率 (FOSC/2)。

波特率 = FCY

16 • (BRGx + 1)

FCY 16 • 波特率

BRGx = – 1注: FCY 表示指令周期时钟频率(FOSC/2)。

波特率 = FCY

4 • (BRGx + 1)

FCY4 • 波特率

BRGx = – 1

目标波特率 = FCY/(16 (BRGx + 1)) 求解 BRGx 值:

BRGx = ((FCY/ 目标波特率 )/16) – 1BRGx = ((4000000/9600)/16) – 1 BRGx = 25

计算波特率 = 4000000/(16 (25 + 1)) = 9615

误差 = ( 计算波特率 – 目标波特率 )/目标波特率= (9615 – 9600)/9600 = 0.16%

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 155 页

dsPIC33FJ12GP201/202

16.2 8 位数据模式下的发送

1. 设置 UART:a) 将适当的值写入数据位、奇偶校验位和停止

位。

b) 将适当的波特率值写入 BRGx 寄存器。

c) 设置发送和接收中断允许位和优先级位。

2. 使能 UART。3. 将 UTXEN 位置 1 (产生发送中断)。

4. 将数据字节写入 UxTXREG 字的低字节。该数据字节将被立即传输给发送移位寄存器 (TSR),且在波特率时钟的下一个上升沿开始移出串行比特流。

或者,当 UTXEN = 0 时,数据字节也可被发送,且随后用户可将 UTXEN 置 1。由于波特率时钟将从清零状态启动,这将立即开始发送串行比特流。

5. 中断控制位UTXISEL<1:0>决定何时产生发送中断。

16.3 9 位数据模式下的发送

1. 设置 UART (如第 16.2 节“8 位数据模式下的发送”所述)。

2. 使能 UART。3. 将 UTXEN 位置 1 (产生发送中断)。

4. 仅向 UxTXREG 写入一个 16 位的值。

5. 向UxTXREG写入一个字可触发9位数据向TSR的传输。串行比特流将会在波特率时钟的第一个上升沿开始移出。

中断控制位UTXISEL<1:0>的设置决定何时产生发送中断。

16.4 间隔和同步发送序列

下述序列会发送一个报文帧头,包括一个间隔字符和其后的一个自动波特率同步字节。

1. 将 UART 配置为所需的模式。

2. 将 UTXEN 和 UTXBRK 置 1——设置间隔字符。

3. 将一个“虚拟”字符装入 UxTXREG 寄存器中以启动发送 (值被忽略)。

4. 向 UxTXREG 写入 0x55——将同步字符装入发送 FIFO 中。当间隔字符发送完成后,由硬件将UTXBRK 位复位。然后开始发送同步字符。

16.5 8 位或 9 位数据模式下的接收

1. 设置 UART (如第 16.2 节“8 位数据模式下的发送”所述)。

2. 使能 UART。当接收到一个或多个数据字符时,将会根据中断控制位URXISEL<1:0>的设置产生接收中断。

3. 读 OERR 位以确定是否发生了溢出错误。OERR位必须用软件复位。

4. 读 UxRXREG。

读取UxRXREG字符的行为会将下一个字符传送到接收FIFO 的顶部,其中包含一组新的 PERR 和 FERR 值。

16.6 使用 UxCTS 和 UxRTS 引脚的流控制

UARTx 允许发送 (UxCTS)和 UARTx 请求发送(UxRTS)是两个与 UART 模块相关、由硬件控制的低电平有效引脚。 UxMODE 寄存器中的 UEN<1:0> 位用来配置这两个引脚。

这两个引脚允许 UART 运行在单工模式和流控制模式下。它们用于控制数据终端设备 (Data TerminalEquipment, DTE)之间的发送和接收。

16.7 红外支持

UART 模块提供两种类型的红外 UART 支持:

• IrDA 时钟输出支持外部 IrDA 编码器和解码器 (传统模块支持)

• 完全实现了 IrDA 编码器和解码器

dsPIC33FJ12GP201/202

DS70264A_CN 第 156 页 超前信息 2007 Microchip Technology Inc.

16.7.1 外部 IrDA 支持——IrDA 时钟输出

为了支持外部 IrDA 编码器和解码器,可将 BCLK 引脚配置为产生 16 倍频的波特率时钟。当使能了 UART 模块且 UEN<1:0> = 11时,BCLK 引脚将输出 16 倍频的波特率时钟,用于支持 IrDA 解码器芯片。

16.7.2 内置 IrDA 编码器和解码器

UART模块在其内部完全实现了 IrDA编码器和解码器。内置 IrDA 编码器和解码器的功能可通过 IREN 位(UxMODE<12>)来使能。当使能(IREN = 1)时,接收引脚 (UxRX)可作为红外接收器的输入引脚。发送引脚 (UxTX)可作为红外发送器的输出引脚。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 157 页

dsPIC33FJ12GP201/202

寄存器 16-1: UxMODE:UARTx 模式寄存器

R/W-0 U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0UARTEN — USIDL IREN(1) RTSMD — UEN<1:0>

bit 15 bit 8

R/W-0 HC R/W-0 R/W-0 HC R/W-0 R/W-0 R/W-0 R/W-0 R/W-0WAKE LPBACK ABAUD URXINV BRGH PDSEL<1:0> STSEL

bit 7 bit 0

图注: HC = 用硬件清零

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 UARTEN:UARTx 使能位

1 = 使能 UARTx ; UARTx 根据 UEN<1:0> 的定义控制所有 UARTx 引脚0 = 禁止 UARTx ;由端口锁存器控制所有 UARTx 引脚; UARTx 的功耗 小

bit 14 未实现:读为 0

bit 13 USIDL:空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12 IREN:IrDA 编码器和解码器使能位 (1)

1 = 使能 IrDA 编码器和解码器0 = 禁止 IrDA 编码器和解码器

bit 11 RTSMD:UxRTS 引脚模式选择位

1 = UxRTS 处于单工模式0 = UxRTS 处于流控制模式

bit 10 未实现:读为 0

bit 9-8 UEN<1:0>:UARTx 使能位

11 = 使能并使用 UxTX、 UxRX 和 BCLK 引脚; UxCTS 引脚由端口锁存器控制10 = 使能并使用 UxTX、 UxRX、 UxCTS 和 UxRTS 引脚01 = 使能并使用 UxTX、 UxRX 和 UxRTS 引脚; UxCTS 引脚由端口锁存器控制00 = 使能并使用 UxTX 和 UxRX 引脚; UxCTS 和 UxRTS/BCLK 引脚由端口锁存器控制

bit 7 WAKE:在休眠模式下检测到启动位唤醒使能位

1 = UARTx 将继续采样 UxRX 引脚;在出现下降沿时产生中断;在出现上升沿时由硬件清零该位0 = 禁止唤醒

bit 6 LPBACK:UARTx 环回模式选择位

1 = 使能环回模式0 = 禁止环回模式

bit 5 ABAUD:自动波特率使能位

1 = 使能对下一个字符的波特率测量——需要在接收其他数据前接收同步字段 (55h);完成时由硬件清零

0 = 禁止或已完成波特率测量

bit 4 URXINV:接收极性翻转位

1 = UxRX 的空闲状态为 00 = UxRX 的空闲状态为 1

注 1: 此功能只能在 16 倍频 BRG 模式 (BRGH = 0)下使用。

dsPIC33FJ12GP201/202

DS70264A_CN 第 158 页 超前信息 2007 Microchip Technology Inc.

bit 3 BRGH:高波特率使能位

1 = BRG 在每个位周期内产生 4 个时钟信号(4 倍频波特率时钟,高速模式)0 = BRG 在每个位周期内产生 16 个时钟信号 (16 倍频波特率时钟,标准模式)

bit 2-1 PDSEL<1:0>:奇偶校验和数据选择位

11 = 9 位数据,无奇偶校验10 = 8 位数据,奇校验01 = 8 位数据,偶校验00 = 8 位数据,无奇偶校验

bit 0 STSEL:停止位选择位

1 = 2 个停止位0 = 1 个停止位

寄存器 16-1: UxMODE:UARTx 模式寄存器 (续)

注 1: 此功能只能在 16 倍频 BRG 模式 (BRGH = 0)下使用。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 159 页

dsPIC33FJ12GP201/202

寄存器 16-2: UxSTA:UARTx 状态和控制寄存器

R/W-0 R/W-0 R/W-0 U-0 R/W-0 HC R/W-0 R-0 R-1UTXISEL1 UTXINV(1) UTXISEL0 — UTXBRK UTXEN UTXBF TRMT

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R-1 R-0 R-0 R/C-0 R-0URXISEL<1:0> ADDEN RIDLE PERR FERR OERR URXDA

bit 7 bit 0

图注: HC = 用硬件清零

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15,13 UTXISEL<1:0>:发送中断模式选择位

11 = 保留;不要使用10 = 当一个字符被传输到发送移位寄存器导致发送缓冲器为空时,产生中断01 = 当 后一个字符被移出发送移位寄存器;所有发送操作执行完毕时产生中断00 = 当一个字符被传输到发送移位寄存器 (这意味着发送缓冲器中至少还有一个字符)时产生中断

bit 14 UTXINV:IrDA 编码器发送极性翻转位 (1)

1 = IrDA 编码的 UxTX 空闲状态为 10 = IrDA 编码的 UxTX 空闲状态为 0

bit 12 未实现:读为 0

bit 11 UTXBRK:发送间隔位

1 = 在下次发送时发出同步间隔字符——启动位,后跟 12 个 0位,然后是停止位;完成时由硬件清零0 = 禁止或已完成同步间隔字符的发送

bit 10 UTXEN:发送使能位

1 = 使能发送, UARTx 控制 UxTX 引脚0 = 禁止发送,中止所有等待的发送,缓冲器复位。由端口控制 UxTX 引脚

bit 9 UTXBF:发送缓冲器满状态位 (只读)

1 = 发送缓冲器满0 = 发送缓冲器未满,至少还可写入一个或多个字符

bit 8 TRMT:发送移位寄存器空位 (只读)

1 = 发送移位寄存器为空,同时发送缓冲器为空(上一次发送已完成)0 = 发送移位寄存器非空,发送在进行中或在发送缓冲器中排队

bit 7-6 URXISEL<1:0>:接收中断模式选择位

11 = 当 UxRSR 传输使接收缓冲器为满时 (即,有 4 个数据字符),中断标志位置 110 = 当 UxRSR 传输使接收缓冲器 3/4 满时(即,有 3 个数据字符),中断标志位置 10x = 当接收到一个字符时,中断标志位置 1;且 UxRSR 的内容被传输给接收缓冲器。接收缓冲器有一

个或多个字符

bit 5 ADDEN:地址字符检测位 (接收数据的第 8 位 = 1)

1 = 使能地址检测模式。如果没有选择 9 位模式,这个控制位将无效0 = 禁止地址检测模式

注 1: 仅当使能了 IrDA 编码器 (IREN = 1)时,该位的值才影响模块的发送属性。

dsPIC33FJ12GP201/202

DS70264A_CN 第 160 页 超前信息 2007 Microchip Technology Inc.

bit 4 RIDLE:接收器空闲位 (只读)

1 = 接收器空闲0 = 接收器工作

bit 3 PERR:奇偶校验错误状态位(只读)

1 = 检测到当前字符 (在接收 FIFO 顶部的字符)的奇偶校验错误0 = 未检测到奇偶校验错误

bit 2 FERR:帧错误状态位 (只读)

1 = 检测到当前字符 (在接收 FIFO 顶部的字符)的帧错误0 = 未检测到帧错误

bit 1 OERR:接收缓冲器溢出错误状态位 (只读 / 清零)

1 = 接收缓冲器已溢出0 = 接收缓冲器未溢出。清除原来置1的OERR位(1 → 0的跳变)将使接收缓冲器复位并使UxRSR为空

bit 0 URXDA:接收缓冲器中是否有数据位 (只读)

1 = 接收缓冲器中有数据,有至少一个或多个字符可被读取0 = 接收缓冲器为空

寄存器 16-2: UxSTA:UARTx 状态和控制寄存器 (续)

注 1: 仅当使能了 IrDA 编码器 (IREN = 1)时,该位的值才影响模块的发送属性。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 161 页

dsPIC33FJ12GP201/202

17.0 10 位 /12 位模数转换器(ADC)

dsPIC33FJ12GP201/202 器件具有 多 10 路 ADC 模块输入通道。

AD12B 位(ADxCON1<10>)允许用户对每个 ADC 模块进行配置,可以配置为 10 位,4 采样 / 保持 ADC(默认配置)或是 12 位, 1 采样 / 保持 ADC。

17.1 主要特性

10 位 ADC 配置具有以下主要特性:

• 逐次逼近(Successive Approximation, SAR)转换

• 转换速度 高为 1.1 Msps• 多 10 个模拟输入引脚

• 外部参考电压输入引脚

• 可同时采样 多 4 个模拟输入引脚

• 自动通道扫描模式

• 可选的转换触发源

• 可选的缓冲器填充模式

• 4 种结果对齐选项(有符号 / 无符号,小数 / 整数)

• 可在 CPU 休眠和空闲模式下工作

12 位 ADC 配置支持所有上述特性,但以下情况除外:

• 在 12 位配置中,支持 大 500 ksps 的转换速度

• 在12位配置中只有1个采样/保持放大器,因此不支持多通道同时采样。

根据特定器件的引脚配置,ADC 多有 10 个模拟输入引脚,指定为 AN0 到 AN9。此外,有两个可用于外部参考电压连接的模拟输入引脚。这两个参考电压输入可以与其他模拟输入引脚共用。

实际的模拟输入引脚数和外部参考电压输入配置取决于具体的器件。请参见器件数据手册了解更多详细信息。

图 17-1 给出了 ADC 的框图。

17.2 ADC 初始化

配置 ADC 模块:

1. 选 择 端 口 引 脚 作 为 模 拟 输 入 引 脚(ADxPCFGH<15:0> 或 ADxPCFGL<15:0>)。

2. 选择参考电压源以匹配模拟输入的预期范围(ADxCON2<15:13>)。

3. 选择模拟转换时钟以使期望的数据速率与处理器时钟匹配 (ADxCON3<5:0>)。

4. 确定使用多少路采样 /保持通道(ADxCON2<9:8>和 ADxPCFGH<15:0> 或 ADxPCFGL<15:0>)。

5. 选择适当的采样 / 转换序列(ADxCON1<7:5> 和ADxCON3<12:8>)。

6. 选 择 转 换 结 果 在 缓 冲 器 中 的 存 储 方 式(ADxCON1<9:8>)。

a) 开启 ADC 模块 (ADxCON1<15>)。7. 配置 ADC 中断 (如需要):

a) 清零 ADxIF 位。 b) 选择 ADC 中断优先级。

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

注: 在修改 AD12B 位前需要禁止 ADC 模块。

dsPIC33FJ12GP201/202

DS70264A_CN 第 162 页 超前信息 2007 Microchip Technology Inc.

图 17-1: ADC1 模块框图

S/H+

-

转换逻辑

VREF+(1)

AVSS

AVDD

ADC1

数据

格式

16 位 ADC输出缓冲器

总线

接口

00000

00101

00111

01001

000010001000011

00100

00110

01000AN8

AN9

AN2

AN4

AN7

AN0

AN3

AN1

AN5

CH1(2)

CH2(2)

CH3(2)

CH0

AN5AN2

AN8

VREF-

AN4AN1

AN7VREF-

AN3AN0

AN9AN6

VREF-

AN1VREF-

VREF-(1)

采样 / 序列控制采样

CH1,CH2,CH3,CH0

输入 MUX 控制输入开关

S/H+

-

S/H+

-

S/H+

-

AN6

注 1: VREF+ 和 VREF- 输入可以与其他模拟输入复用。请参见器件数据手册了解详细信息。

2: 通道 1、 2 和 3 不适用于 12 位工作模式。

转换结果

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 163 页

dsPIC33FJ12GP201/202

公式 17-1: ADC 转换时钟周期

图 17-2: ADC 传递函数 (以 10 位 ADC 为例)

TAD = TCY(ADCS + 1)

ADCS = TADTCY

– 1

10 0000 0010 (= 514)

10 0000 0011 (= 515)

01 1111 1101 (= 509)

01 1111 1110 (= 510)

01 1111 1111 (= 511)

11 1111 1110 (= 1022)

11 1111 1111 (= 1023)

00 0000 0000 (= 0)

00 0000 0001 (= 1)

输出编码

10 0000 0000 (= 512)

(VINH – VINL)

VREFL VREFH – VREFL

1024

VREFHVREFL +

10 0000 0001 (= 513)

512 * (VREFH – VREFL)1024

VREFL + 1023 * (VREFH – VREFL)1024

VREFL +

dsPIC33FJ12GP201/202

DS70264A_CN 第 164 页 超前信息 2007 Microchip Technology Inc.

图 17-3: ADC 转换时钟周期框图

0

1

ADC 内部RC 时钟

TOSC(1) X2 1, 2, 3, 4, 5,..., 64

ADxCON3<15>

TCY

TAD

6

ADxCON3<5:0>

1. 当使能 PLL 时,请参见图 8-2 获取 FOSC。如果没有使用 PLL,FOSC 与时钟源频率相等。

Tosc = 1/Fosc。

时钟倍频器ADC 转换

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 165 页

dsPIC33FJ12GP201/202

寄存器 17-1: ADxCON1:ADCx 控制寄存器 1(其中 x = 1 或 2)

R/W-0 U-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0ADON — ADSIDL — — AD12B FORM<1:0>

bit 15 bit 8

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0HC,HS

R/C-0HC, HS

SSRC<2:0> — SIMSAM ASAM SAMP DONEbit 7 bit 0

图注: HC = 用硬件清零 HS = 用硬件置 1R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ADON: ADC 工作模式位

1 = ADC 模块正在工作0 = ADC 模块关闭

bit 14 未实现:读为 0

bit 13 ADSIDL: 空闲模式停止位

1 = 当器件进入空闲模式时,模块停止工作0 = 在空闲模式下模块继续工作

bit 12-11 未实现:读为 0

bit 10 AD12B: 10 位或 12 位工作模式位

1 = 12 位 1 通道 ADC 工作0 = 10 位 4 通道 ADC 工作

bit 9-8 FORM<1:0>:数据输出格式位

对于 10 位工作:11 = 有符号的小数 (Dout = sddd dddd dd00 0000,其中 s = d<9> 取反)10 = 小数(Dout = dddd dddd dd00 0000)01 = 有符号的整数 (Dout = ssss sssd dddd dddd,其中 s = d<9> 取反)00 = 整数(Dout = 0000 00dd dddd dddd)对于 12 位工作:11 = 有符号的小数 (Dout = sddd dddd dddd 0000,其中 s = d<11> 取反)10 = 小数(Dout = dddd dddd dddd 0000)01 = 有符号的整数 (DouT = ssss sddd dddd dddd,其中 s = d<11> 取反)00 = 整数(Dout = 0000 dddd dddd dddd)

bit 7-5 SSRC<2:0>:采样时钟源选择位

111 = 由内部计数器结束采样并启动转换(自动转换)110 = 保留101 = 由电机控制 PWM2 间隔结束采样并启动转换100 = 保留011 = 由电机控制 PWM1 间隔结束采样并启动转换010 = 由 GP Timer3 比较结束采样并启动转换001 = 由 INT0 引脚的有效跳变结束采样并启动转换000 = 由清零采样位结束采样并启动转换

bit 4 未实现:读为 0

bit 3 SIMSAM:同步采样选择位 (仅当 CHPS<1:0> = 01或 1x 时适用)

当 AD12B = 1时, SIMSAM 为 U-0,未实现,读为 01 = 同时采样 CH0、 CH1、 CH2 和 CH3 (当 CHPS<1:0> = 1x);或

同时采样 CH0 和 CH1 (当 CHPS<1:0> = 01时)0 = 按顺序依次采样多路通道

dsPIC33FJ12GP201/202

DS70264A_CN 第 166 页 超前信息 2007 Microchip Technology Inc.

bit 2 ASAM: ADC 采样自动启动位

1 = 后一次转换结束后立即开始采样。 SAMP 位自动置 10 = SAMP 位置 1 时开始采样

bit 1 SAMP: ADC 采样使能位

1 = ADC 采样 / 保持放大器正在采样0 = ADC 采样 / 保持放大器保持采样结果如果 ASAM = 0,由软件写入 1 开始采样。如果 ASAM = 1,该位由硬件自动置 1。如果 SSRC = 000,由软件写入 0 结束采样并启动转换。如果 SSRC ≠ 000,由硬件自动清零来结束采样并启动转换。

bit 0 DONE:ADC 转换状态位

1 = ADC 转换完成0 = ADC 转换尚未开始或在进行中

当 ADC 转换完成时,由硬件自动置 1。可由软件写入 0 来清零 DONE 状态位(不允许由软件写入 1)。清零该位不会影响进行中的任何操作。在新的转换开始时由硬件自动清零。

寄存器 17-1: ADxCON1:ADCx 控制寄存器 1 (续)(其中 x = 1 或 2)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 167 页

dsPIC33FJ12GP201/202

寄存器 17-2: ADxCON2:ADCx 控制寄存器 2(其中 x = 1 或 2)

R/W-0 R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0VCFG<2:0> — — CSCNA CHPS<1:0>

bit 15 bit 8

R-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0BUFS — SMPI<3:0> BUFM ALTS

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-13 VCFG<2:0>:转换器参考电压配置位

bit 12-11 未实现:读为 0

bit 10 CSCNA: 选择是否在使用采样多路开关 A 时扫描 CH0+ 输入的位

1 = 扫描输入0 = 不扫描输入

bit 9-8 CHPS<1:0>:选择通道使用的位

当 AD12B = 1时, CHPS<1:0>U-0,未实现,读为 0 1x = 转换 CH0、 CH1、 CH2 和 CH301 = 转换 CH0 和 CH100 = 转换 CH0

bit 7 BUFS:缓冲器填充状态位 (仅当 BUFM = 1时有效)

1 = ADC 当前在填充缓冲器的后半部分,用户应用程序应访问前半部分中的数据0 = ADC 当前在填充缓冲器的前半部分,用户应用程序应访问后半部分中的数据

bit 6 未实现:读为 0

bit 5-2 SMPI<3:0>:选择每次中断的采样 / 转换序列数的位

1111 = 每完成 16 个采样 / 转换序列时产生中断1110 = 每完成 15 个采样 / 转换序列时产生中断•• •0001 = 每完成 2 个采样 / 转换序列时产生中断0000 = 每完成 1 个采样 / 转换序列时产生中断

bit 1 BUFM: 缓冲器填充模式选择位

1 = 在第一次中断发生时从缓冲器的前半部分开始填充,而在下一次中断发生时从后半部分开始填充0 = 总是从前半部分开始填充缓冲器

bit 0 ALTS: 备用输入采样模式选择位

1 = 在第一次采样时使用采样多路开关A选择的输入通道,而在下一次采样时使用采样多路开关B选择的输入通道

0 = 总是使用采样多路开关 A 选择的输入通道

ADREF+ ADREF-

000 AVDD AVSS

001 外部 VREF+ AVSS

010 AVDD 外部 VREF-011 外部 VREF+ 外部 VREF-1xx AVDD Avss

dsPIC33FJ12GP201/202

DS70264A_CN 第 168 页 超前信息 2007 Microchip Technology Inc.

寄存器 17-3: ADxCON3:ADCx 控制寄存器 3

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0ADRC — — SAMC<4:0>

bit 15 bit 8

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — ADCS<5:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 ADRC: ADC 转换时钟源位

1 = ADC 内部 RC 时钟0 = 时钟由系统时钟产生

bit 14-13 未实现:读为 0

bit 12-8 SAMC<4:0>:自动采样时间位

11111 = 31 TAD•• •00001 = 1 TAD00000 = 0 TAD

bit 7-6 未实现:读为 0

bit 5-0 ADCS<5:0>:ADC 转换时钟选择位

111111 = TCY · (ADCS<7:0> + 1) = 64 · TCY = TAD•••000010 = TCY · (ADCS<7:0> + 1) = 3 · TCY = TAD 000001 = TCY · (ADCS<7:0> + 1) = 2 · TCY = TAD000000 = TCY · (ADCS<7:0> + 1) = 1 · TCY = TAD

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 169 页

dsPIC33FJ12GP201/202

寄存器 17-4: ADxCHS123:ADCx 输入通道 1、 2 和 3 选择寄存器

U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0— — — — — CH123NB<1:0> CH123SB

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0— — — — — CH123NA<1:0> CH123SA

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-11 未实现:读为 0

bit 10-9 CH123NB<1:0>:采样多路开关 B 的通道 1、 2 和 3 的反相输入选择位

当 AD12B = 1时, CHxNB 为 U-0,未实现,读为 011 = CH1 的反相输入为 AN9, CH2 的反相输入为 VREF-, CH3 的反相输入为 VREF-10 = CH1 的反相输入为 AN6, CH2 的反相输入为 AN7, CH3 的反相输入为 AN80x = CH1、 CH2 和 CH3 的反相输入都为 VREF-

bit 8 CH123SB: 采样多路开关 B 的通道 1、 2 和 3 的同相输入选择位

当 AD12B = 1时, CHxSB 为 U-0,未实现,读为 01 = CH1 的同相输入为 AN3, CH2 的同相输入为 AN4, CH3 的同相输入为 AN50 = CH1 的同相输入为 AN0, CH2 的同相输入为 AN1, CH3 的同相输入为 AN2

bit 7-3 未实现:读为 0

bit 2-1 CH123NA<1:0>:采样多路开关 A 的通道 1、 2 和 3 的反相输入选择位

当 AD12B = 1时, CHxNA 为 U-0,未实现,读为 011 = CH1 的反相输入为 AN9, CH2 的反相输入为 VREF-, CH3 的反相输入为 VREF-10 = CH1 的反相输入为 AN6, CH2 的反相输入为 AN7, CH3 的反相输入为 AN80x = CH1、 CH2 和 CH3 的反相输入都为 VREF-

bit 0 CH123SA: 采样多路开关 A 的通道 1、 2 和 3 的同相输入选择位

当 AD12B = 1时, CHxSA 为 U-0,未实现,读为 01 = CH1 的同相输入为 AN3, CH2 的同相输入为 AN4, CH3 的同相输入为 AN50 = CH1 的同相输入为 AN0, CH2 的同相输入为 AN1, CH3 的同相输入为 AN2

dsPIC33FJ12GP201/202

DS70264A_CN 第 170 页 超前信息 2007 Microchip Technology Inc.

寄存器 17-5: ADxCHS0:ADCx 输入通道 0 选择寄存器

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0CH0NB — — CH0SB<4:0>

bit 15 bit 8

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0CH0NA — — CH0SA<4:0>

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15 CH0NB: 采样多路开关 B 的通道 0 的反相输入选择位

1 = 通道 0 的反相输入为 AN10 = 通道 0 的反相输入为 VREF-

bit 14-13 未实现:读为 0

bit 12-8 CH0SB<4:0>:采样多路开关 B 的通道 0 的同相输入选择位

11111 = 通道 0 的同相输入为 AN3111110 = 通道 0 的同相输入为 AN30•• •00010 = 通道 0 的同相输入为 AN200001 = 通道 0 的同相输入为 AN100000 = 通道 0 的同相输入为 AN0

bit 7 CH0NA: 采样多路开关 A 的通道 0 的反相输入选择位

1 = 通道 0 的反相输入为 AN10 = 通道 0 的反相输入为 VREF-

bit 6-5 未实现:读为 0

bit 4-0 CH0SA<4:0>:采样多路开关 A 的通道 0 的同相输入选择位

11111 = 通道 0 的同相输入为 AN3111110 = 通道 0 的同相输入为 AN30• • •00010 = 通道 0 的同相输入为 AN200001 = 通道 0 的同相输入为 AN100000 = 通道 0 的同相输入为 AN0

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 171 页

dsPIC33FJ12GP201/202

寄存器 17-6: ADxCSSL:ADCx 输入扫描选择寄存器的低位字 (1,2)

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — CSS9 CSS8

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-0CSS7 CSS6 CSS5 CSS4 CSS3 CSS2 CSS1 CSS0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-10 未实现:读为 0

bit 9-0 CSS<9:0>:ADC 输入扫描选择位

1 = 选择对 ANx 进行输入扫描0 = 输入扫描时跳过 ANx

注 1: 对于没有 10 路模拟输入的器件,用户可以选择所有的 ADxCSSL 位。但是,如果器件上没有选择为进行扫描的相应输入,则将转换 ADREF-。

2: dsPIC33FJ12GP201 器件仅支持 6 路通道(CSS0-CSS5)。

寄存器 17-7: ADxPCFGL:ADCx 端口配置寄存器的低位字 (1,2)

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — PCFG9 PCFG8

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-0PCFG7 PCFG6 PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0

bit 7 bit 0

图注:

R = 可读位 W = 可写位 U = 未实现位,读为 0-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-10 未实现:读为 0

bit 9-0 CSS<9:0>:ADC 输入扫描选择位

1 = 选择对 ANx 进行输入扫描0 = 输入扫描时跳过 ANx

注 1: 对于没有 10 路模拟输入的器件,所有 PCFG 位都是可读 / 写的。但是,如果器件上不含相应的输入,则PCFG 位被忽略。

2: dsPIC33FJ12GP201 器件仅支持 6 路通道(CSS0-CSS5)。

dsPIC33FJ12GP201/202

DS70264A_CN 第 172 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 173 页

dsPIC33FJ12GP201/202

18.0 特殊功能

dsPIC33FJ12GP201/202 器件具有几项特殊的功能旨在大限度地提高系统的灵活性和可靠性,并通过减少外

部元件的使用将成本降至 低。提供的特殊功能包括:

• 灵活的配置

• 看门狗定时器 (WDT)• 代码保护和 CodeGuard™ 安全性

• JTAG 边界扫描接口

• 在线串行编程 (ICSP™)

• 在线仿真

18.1 配置位

可以通过对配置位编程 (读为 0)或不编程 (读为 1)来选择不同的器件配置。这些配置位被映射到程序存储器以 0xF80000 开始的单元中。 器件配置寄存器的映射如表 18-1 所示。

表 18-2给出了FBS、FGS、FOSCSEL、FOSC、FWDT、FPOR 和 FICD 配置寄存器中各个配置位的说明。

注意,地址 0xF80000 超出了用户程序存储空间。它属于 只 能 使 用 表 读 和 表 写 访 问 的 配 置 存 储 空 间(0x800000-0xFFFFFF)。所有器件配置寄存器的高字节应该总为 1111 1111。这使得当极少事件意外执行这些存储单元时将其作为 NOP指令来执行。由于没有在相应的存储单元中实现这些配置位,因此向这些存储单元写入 1不会影响器件工作。 为了避免在代码执行期间配置被意外改变,所有的可编程配置位只可被写入一次。在上电周期内对位进行初始化编程之后就不能再次写入该位了。改变器件的配置需要对器件重复上电。

表 18-1: 器件配置寄存器的映射

注: 本 数 据 手 册 总 结 了dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》。请参见Microchip 网站(www.microchip.com)了解新的《dsPIC33F 系列参考手册》章节。

地址 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

0xF80000 FBS — — — — BSS<2:0> BWRP

0xF80002 保留 保留 (1)

0xF80004 FGS — — — — — GSS<1:0> GWRP0xF80006 FOSCSEL IESO — — — FNOSC<2:0>0xF80008 FOSC FCKSM<1:0> IOL1WAY — — OSCIOFNC POSCMD<1:0>0xF8000A FWDT FWDTEN WINDIS — WDTPRE WDTPOST<3:0>0xF8000C FPOR — — — ALTI2C — FPWRT<2:0>0xF8000E 保留 保留 (1)

0xF80010 FUID0 用户部件 ID 字节 00xF80012 FUID1 用户部件 ID 字节 10xF80014 FUID2 用户部件 ID 字节 20xF80016 FUID3 用户部件 ID 字节 3注 1: 这些保留的位读为 1并且必须被编程为 1。

dsPIC33FJ12GP201/202

DS70264A_CN 第 174 页 超前信息 2007 Microchip Technology Inc.

表 18-2: dsPIC33FJ12GP201/202 配置位的说明

位域 寄存器 说明

BWRP FBS 引导段程序闪存写保护1 = 引导段可写0 = 引导段被写保护

BSS<2:0> FBS 引导段程序闪存代码保护大小X11 = 无引导程序闪存段

引导空间为 256 指令字 (中断向量除外)110 = 标准安全性;引导程序闪存段结束于 0x0003FE010 = 高安全性;引导程序闪存段结束于 0x0003FE

引导空间为 768 指令字 (中断向量除外)101 = 标准安全性;引导程序闪存段结束于 0x0007FE001 = 高安全性;引导程序闪存段结束于 0x0007FE

引导空间为 1792 指令字(中断向量除外)100 = 标准安全性;引导程序闪存段结束于 0x000FFE000 = 高安全性;引导程序闪存段结束于 0x000FFE

GSS<1:0> FGS 通用段代码保护位11 = 用户程序存储器不被代码保护10 = 标准安全性0x = 高安全性

GWRP FGS 通用段写保护位1 = 用户程序存储器不被写保护0 = 用户程序存储器被写保护

IESO FOSCSEL 双速振荡器启动使能位1 = 使用 FRC 启动器件,然后自动切换到就绪的用户选择的振荡器源0 = 使用用户选择的振荡器源启动器件

FNOSC<2:0> FOSCSEL 初始振荡器源选择位111 = 带后分频器的内部快速 RC (FRC)振荡器110 = 带 16 分频的内部快速 RC (FRC)振荡器101 = LPRC 振荡器100 = 辅助(LP)振荡器011 = 带 PLL 的主 (XT、 HS 或 EC)振荡器010 = 主(XT、 HS 或 EC)振荡器001 = 带 PLL 的内部快速 RC (FRC)振荡器000 = FRC 振荡器

FCKSM<1:0> FOSC 时钟切换模式位1x = 禁止时钟切换,禁止故障保护时钟监视器01 = 使能时钟切换,禁止故障保护时钟监视器00 = 使能时钟切换,使能故障保护时钟监视器

IOL1WAY FOSC 外设引脚选择配置1 = 只允许一次重新配置0 = 允许多次重新配置

OSCIOFNC FOSC OSC2 引脚功能位 (XT 和 HS 模式除外)1 = OSC2 为时钟输出0 = OSC2 为通用数字 I/O 引脚

POSCMD<1:0> FOSC 主振荡器模式选择位11 = 禁止主振荡器10 = HS 晶振模式01 = XT 晶振模式00 = EC (外部时钟)模式

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 175 页

dsPIC33FJ12GP201/202

FWDTEN FWDT 看门狗定时器使能位1 = 始终使能看门狗定时器(不能禁止 LPRC 振荡器。将 RCON 寄存器中

的 SWDTEN 位清零不会产生任何影响。)0 = 通过用户软件使能/禁止看门狗定时器(可通过清零RCON寄存器中的

SWDTEN 位来禁止 LPRC)

WINDIS FWDT 看门狗定时器窗口使能位1 = 非窗口模式下的看门狗定时器0 = 窗口模式下的看门狗定时器

WDTPRE FWDT 看门狗定时器预分频比位1 = 1:1280 = 1:32

WDTPOST<3:0> FWDT 看门狗定时器后分频比位1111 = 1:32,7681110 = 1:16,384 . . .0001 = 1:20000 = 1:1

ALTI2C FPOR 备用 I2C™ 引脚1 = I2C 被映射到 SDA1/SCL1 引脚0 = I2C 被映射到 ASDA1/ASCL1 引脚

FPWRT<2:0> FPOR 上电复位定时器值选择位111 = PWRT = 128 ms110 = PWRT = 64 ms101 = PWRT = 32 ms100 = PWRT = 16 ms011 = PWRT = 8 ms010 = PWRT = 4 ms001 = PWRT = 2 ms000 = PWRT = 禁止

表 18-2: dsPIC33FJ12GP201/202 配置位的说明 (续)

位域 寄存器 说明

dsPIC33FJ12GP201/202

DS70264A_CN 第 176 页 超前信息 2007 Microchip Technology Inc.

18.2 片上稳压器

所有的 dsPIC33FJ12GP201/202 器件使用标称值为2.5V 的电压为其内核数字逻辑供电。对于需要工作在一个更高的典型电压值如 3.3V 的设计中,这可能会引起问题。为简化系统设计,dsPIC33FJ12GP201/202 系列中的所有器件均包含一个片上稳压器,可使器件内核逻辑在 VDD 下工作。

稳压器通过其他 VDD 引脚向内核供电。当使能了稳压器时,必须将一个低 ESR (小于 5 欧姆)电容 (如钽电容或陶瓷电容)连接到VDDCORE/VCAP引脚(图 18-1)。这可帮助维持稳压器的稳定性。滤波电容的推荐值在第 21.1 节 “直流特性”的表 21-13 中提供。

在 POR 时,片上稳压器需要约 20 µs 的时间产生输出电压。这段时间被称为 TSTARTUP,在这期间禁止代码执行。在每次掉电后器件恢复工作的过程中都将有一段TSTARTUP 时间。

图 18-1: 片上稳压器的连接 (1)

18.3 BOR:欠压复位

欠压复位(BOR)模块是基于内部参考电压电路的,该电路监视经过稳压的电压 VDDCORE。 BOR 模块的主要用途是在发生欠压条件时产生器件复位。欠压条件通常由交流电源线上的干扰信号(例如,由于电源传输线路不良造成的交流周期波形部分丢失,或者由于接入大感性负载时电流消耗过大造成电压下降)产生的。

BOR 将产生复位器件的复位脉冲。BOR 会根据器件配置位 (FNOSC<2:0> 和 POSCMD<1:0>)的值选择时钟源。

如果选择了振荡器模式,BOR 将激活振荡器起振定时器(OST)。系统时钟将保持到 OST 超时。如果使用了PLL,则时钟将被保持到LOCK位(OSCCON<5>)置1。同时,将在内部复位释放前应用PWRT超时(TPWRT)。如果TPWRT = 0且使用了晶振,那么会应用TFSCM = 100的标称延时。这种情况下总的延时为 TFSCM。

BOR状态位(RCON<1>)将置1, 以表明发生了BOR。BOR 电路使能时,将在休眠或空闲模式下继续工作,当Vdd 下降到 BOR 门限电压以下时将复位器件。

注 1: 这些为典型的工作电压。有关 VDD 和

VDDCORE 的全部工作电压范围,请参见

第 21.1 节 “直流特性”的表 21-13。

VDD

VDDCORE/VCAP

VSS

dsPIC33F

CF

3.3V

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 177 页

dsPIC33FJ12GP201/202

18.4 看门狗定时器 (WDT)对于 dsPIC33FJ12GP201/202 器件,WDT 由 LPRC 振荡器驱动。当使能 WDT 时,时钟源也将使能。

18.5 预分频器 / 后分频器

由 LPRC 提供的 WDT 时钟源的频率标称值为 32 kHz。这一频率的信号可以输入给可配置为 5 位 (32 分频)或 7 位 (128 分频)操作的预分频器。预分频比由WDTPRE 配置位设置。使用 32 kHz 输入,预分频器在5 位模式下将产生一个 1 ms 的标称 WDT 超时周期(TWDT),或在 7 位模式下超时周期为 4 ms。分频比可变的后分频器对 WDT 预分频器的输出进行分频,并 扩 展 超 时 周 期 范 围。后 分 频 比 由WDTPOST<3:0> 配置位(FWDT<3:0>)控制,该配置位共允许选择 16 种设置,从 1:1 到 1:32,768。使用预分频器和后分频器,可以使超时周期的范围扩展到1 ms至 131 秒。

WDT、预分频器和后分频器在以下条件下复位:

• 任何器件复位时

• 在完成时钟切换后,无论时钟切换是由软件 (即,在更改 NOSC 位后将 OSWEN 位置 1)引起还是由硬件引起的 (即,故障保护时钟监视器)

• 当执行 PWRSAV指令时 (即,进入休眠或空闲模式)

• 当器件退出休眠或空闲模式恢复正常工作时

• 当在正常执行过程中使用 CLRWDT指令时

18.6 休眠和空闲模式

如果使能 WDT,它将在休眠或空闲模式下继续运行。当发生 WDT 超时时,将唤醒器件并且代码将继续从PWRSAV 指令处开始执行。当器件唤醒后,需要用软件将相应的 SLEEP 或 IDLE 位 (RCON<3,2>)清零。

18.7 使能 WDTWDT的使能或禁止由FWDT配置寄存器中的FWDTEN配置位控制。当 FWDTEN 配置位置 1 时,WDT 始终是使能的。 WDT 标志位 WDTO (RCON<4>)不会在 WDT 超时后自动清零。要检测后面的 WDT 事件,必须用软件将该标志位清零。 当 FWDTEN 配置位被编程为 0时,可以选择用软件控制WDT。通过将 SWDTEN 控制位(RCON<5>)置 1 用软件使能 WDT。SWDTEN控制位在任何器件复位时清零。软件 WDT 选项允许用户在关键代码段使能 WDT 并在非关键代码段禁止 WDT,从而 大限度地降低功耗。

注: 执行 CLRWDT 和 PWRSAV 指令会将预分频器和后分频器的计数值清零。

注: 如果 WINDIS 位(FWDT<6>)清零,CLRWDT指令应仅在WDT周期的 后1/4中被应用软件执行。该 CLRWDT窗口可通过使用定时器确定。如果在该窗口之前执行CLRWDT指令,将会使 WDT 复位。

dsPIC33FJ12GP201/202

DS70264A_CN 第 178 页 超前信息 2007 Microchip Technology Inc.

图 18-2: WDT 框图

LPRC 输入 WDT 溢出复位

从休眠中唤醒

32.768 kHz

预分频器 后分频器

WDTPRE

SWDTENFWDTEN

所有器件复位

休眠或空闲模式

LPRC 控制

CLRWDT指令PWRSAV指令

WDTPOST<3:0>

1 ms/4 ms

退出休眠或空闲模式

WDT计数器

转换到新的时钟源

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 179 页

dsPIC33FJ12GP201/202

18.8 JTAG 接口

dsPIC33FJ12GP201/202 器件实现了一个 JTAG 接口,该接口支持边界扫描器件测试以及在线编程。关于该接口的详细信息将会在以后的文档版本中提供。

18.9 代码保护和 CodeGuard™ 安全性

dsPIC33F系列产品提供了CodeGuard安全性的高级实现。CodeGuard安全性允许多方安全地共用单个芯片上的资源 (存储器、中断和外设)。这一功能有助于在协同系统设计中保护各方的知识产权 (IntellectualProperty, IP)。

CodeGuard安全性与软件加密函数库配合使用时,即使在单个芯片上存在多个知识产权(IP) ,也可以使用CodeGuard安全性来安全地更新闪存。代码保护功能随所实现的实际 dsPIC33F 的不同而有所不同。后续章节将对这些功能进行概述。

代码保护功能由配置寄存器 FBS 和 FGS 控制。安全段和 RAM 未实现。

表 18-3: 12KB 器件的代码闪存安全段大小

配置位

BSS<2:0> = x11

0K

BSS<2:0> = x10

256

BSS<2:0> = x01

768

BSS<2:0> = x00

1792

注: 请参见 《CodeGuard™ 安全》参考章节(DS70180A_CN)获得有关 CodeGuard安全性使用、配置和操作方面的更多信息。

001FFEh

0001FEh000200h

000000hVS = 256 IW

0003FEh000400h0007FEh000800h

GS = 3840 IW 000FFEh001000h

001FFEh

0001FEh000200h

000000hVS = 256 IW

0003FEh000400h0007FEh000800h000FFEh001000h

GS = 3584 IW

BS = 256 IW

001FFEh

0001FEh000200h

000000hVS = 256 IW

0003FEh000400h0007FEh000800h000FFEh001000h

GS = 3072 IW

BS = 768 IW

001FFEh

0001FEh000200h

000000hVS = 256 IW

0003FEh000400h0007FEh000800h

GS = 2048 IW

000FFEh001000h

BS = 1792 IW

dsPIC33FJ12GP201/202

DS70264A_CN 第 180 页 超前信息 2007 Microchip Technology Inc.

18.10 在线串行编程

可以在 终的应用电路中对 dsPIC33FJ12GP201/202系列数字信号控制器进行串行编程。只需要 5 根线即可实现这一操作,其中时钟线、数据线各一根,其余 3 根分别是电源线、接地线和编程电压线。串行编程允许用户在生产电路板时使用未编程器件,仅在产品交付之前才对数字信号控制器进行编程,从而可以使用 新版本的固件或者定制固件进行编程。请参见 《dsPIC33F 闪存编程规范》(DS70152C_CN)文档了解有关在线串行编程 (ICSP)的详细信息。

可使用 3 对编程时钟 / 数据引脚中的任意一对: • PGC1/EMUC1 和 PGD1/EMUD1• PGC2/EMUC2 和 PGD2/EMUD2 • PGC3/EMUC3 和 PGD3/EMUD3

18.11 在线调试器

当选择 MPLAB® ICD 2 作为调试器时,使能在线调试功能。该功能允许与 MPLAB IDE 配合使用进行简单的调试。通过 EMUCx (仿真 / 调试时钟)和 EMUDx (仿真 / 调试数据)引脚功能控制调试功能。 可使用 3 对调试时钟 / 数据引脚中的任意一对: • PGC1/EMUC1 和 PGD1/EMUD1• PGC2/EMUC2 和 PGD2/EMUD2 • PGC3/EMUC3 和 PGD3/EMUD3

要使用器件的在线调试功能,就必须在设计中正确对MCLR、VDD、VSS、PGC、PGD 和 EMUDx/EMUCx 引脚对进行 ICSP 连接。此外,当使能该功能时,某些资源就不能用于一般用途了。这些资源包括数据 RAM 的前 80 字节和两个 I/O 引脚。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 181 页

dsPIC33FJ12GP201/202

19.0 指令集汇总

dsPIC33F 系列器件的指令集与 dsPIC30F 系列器件的指令集相同。

大部分指令的长度为一个程序存储字(24 位)。只有三条指令需要两个程序存储单元。

每一条单字指令长 24 位,分为一个指定指令类型的 8位操作码和进一步指定指令操作的一个或多个操作数。

指令集是高度正交的,分为 5 个基本类别:

• 针对字或字节的操作

• 针对位的操作

• 立即数操作

• DSP 操作

• 控制操作

表 19-1 给出了在说明指令时使用的通用符号。

表 19-2 是 dsPIC33F指令集汇总,还给出了每条指令影响的状态标志位。 大多数针对字或字节的 W 寄存器指令 (包括桶形移位指令)有三个操作数:

• 第一个源操作数通常是寄存器 Wb,不带任何地址修改量

• 第二个源操作数通常是寄存器 Ws,带或不带地址修改量

• 运算结果的目标寄存器,通常是寄存器 Wd,带或不带地址修改量

不过,针对字或字节的文件寄存器指令只有两个操作数:

• 文件寄存器由 f 值指定

• 目标寄存器可以是文件寄存器 f 或 W0 寄存器(用WREG 表示)

大多数位操作类指令(包括简单的循环 / 移位指令)有两个操作数:

• W 寄存器 (带或不带地址修改量)或文件寄存器(由 Ws 或 f 的值指定)

• W 寄存器或文件寄存器中的位 (由一个立即数指定,或者由寄存器 Wb 的内容间接指定)

涉及数据传送的立即数指令,可以使用下列操作数:

• 要被装入到 W 寄存器或文件寄存器中的立即数(由 k 指定)

• 要装入立即数的W寄存器或文件寄存器(由Wb或 f指定)

然而,涉及算术或逻辑操作的立即数指令,使用如下的操作数:

• 第一个源操作数是寄存器 Wb,不带任何地址修改量

• 第二个源操作数是立即数

• 操作结果的目标寄存器(仅在与第一个源操作数不同时)通常是寄存器 Wd (带或不带地址修改量)

MAC类 DSP 指令可使用下列操作数:

• 要使用的累加器 (A 或 B)(必需的操作数)

• 要用作两个操作数的 W 寄存器

• X 和 Y 地址空间预取操作

• X 和 Y 地址空间预取目标寄存器

• 累加器回写目标寄存器

与乘法无关的其他 DSP 指令使用的操作数可能包括:

• 要使用的累加器 (必需)

• 源操作数或目标操作数 (分别由 Wso 或 Wdo 指定),带或不带地址修改量

• 移位位数,由 W 寄存器 Wn 或立即数指定

控制指令可以使用下列操作数:

• 程序存储地址

• 表读和表写指令的模式

注: 本数据手册总结了 dsPIC33FJ12GP201/202器件的功能。但是不应把本手册当作无所不包的参考手册来使用。如需了解本数据手册的补充信息,请参见《dsPIC33F 系列参考手册》 。请参见 Microchip 网站(www.microchip.com)了 解 新 的《dsPIC33F 系列参考手册》章节。

dsPIC33FJ12GP201/202

DS70264A_CN 第 182 页 超前信息 2007 Microchip Technology Inc.

大多数指令都是单字指令。双字指令之所以是双字长的(48 位),是因为要用 48 位来提供所需信息。在第二个字中,8 个 MSb 全为 0。如果指令自身把第二个字当作一条指令来执行的话,它将作为一条 NOP指令来执行。双字指令执行需要两个指令周期。

大多数单字长指令都在一个指令周期内执行,除非条件测试为真或者指令执行结果改变了程序计数器。对于上述两种特殊情况,指令执行需要两个指令周期,在第二个指令周期中执行一条 NOP 指令。值得注意的例外是

BRA(无条件 / 计算转移)、间接 CALL/GOTO、所有的表读和表写以及 RETURN/RETFIE指令,它们是单字长指令,但执行需要两个或三个周期。某些与跳过后续指令有关的指令,如果要执行跳过的话,可能需要两个或三个周期,这取决于被跳过的指令是单字还是双字指令。此外,双字传送需要两个周期。

注: 有关指令集的更多详细信息,请参见《dsPIC30F/33F 程序员参考手册》(DS70157B_CN)。

表 19-1: 操作码说明中使用的符号

字段 说明

#text 表示由 text定义的立即数

(text) 表示 text的内容

[text] 表示由 text寻址的存储单元

可选字段或操作

<n:m> 寄存器位域

.b 字节模式选择

.d 双字模式选择

.S 影子寄存器选择

.w 字模式选择 (默认)

Acc 两个累加器 A, B 之一

AWB 累加器回写目标地址寄存器 ∈ W13, [W13]+=2bit4 4 位位选择字段 (用于字寻址指令) ∈ 0...15C, DC, N, OV, Z MCU 状态位:进位、半进位、负、溢出和全零标志位

Expr 绝对地址、标号或表达式 (由链接器解析)

f 文件寄存器地址 ∈ 0x0000...0x1FFFlit1 1 位无符号立即数 ∈ 0,1lit4 4 位无符号立即数 ∈ 0...15lit5 5 位无符号立即数 ∈ 0...31lit8 8 位无符号立即数 ∈ 0...255lit10 10 位无符号立即数,对于字节模式, ∈ 0...255 ;对于字模式, ∈ 0:1023lit14 14 位无符号立即数 ∈ 0...16384lit16 16 位无符号立即数 ∈ 0...65535lit23 23 位无符号立即数 ∈ 0...8388608 ; LSb 必须为 0

无 字段无需内容,可为空

OA, OB, SA, SB DSP 状态位:ACCA 溢出、 ACCB 溢出、 ACCA 饱和和 ACCB 饱和

PC 程序计数器

Slit10 10 位有符号立即数 ∈ -512...511Slit16 16 位有符号立即数 ∈ -32768...32767Slit6 6 位有符号立即数 ∈ -16...16Wb 基本 W 寄存器 ∈ W0..W15Wd 目标 W 寄存器 ∈ Wd, [Wd], [Wd++], [Wd--], [++Wd], [--Wd] Wdo 目标 W 寄存器 ∈

Wnd, [Wnd], [Wnd++], [Wnd--], [++Wnd], [--Wnd], [Wnd+Wb] Wm,Wn 被除数和除数工作寄存器对 (直接寻址)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 183 页

dsPIC33FJ12GP201/202

Wm*Wm 用于平方指令的被乘数和乘数工作寄存器对 ∈ W4 * W4,W5 * W5,W6 * W6,W7 * W7

Wm*Wn 用于 DSP 指令的被乘数和乘数工作寄存器对 ∈W4 * W5,W4 * W6,W4 * W7,W5 * W6,W5 * W7,W6 * W7

Wn 16 个工作寄存器中之一 ∈ W0..W15Wnd 16 个目标工作寄存器之一 ∈ W0..W15Wns 16 个源工作寄存器之一 ∈ W0..W15WREG W0 (文件寄存器指令中使用的工作寄存器)

Ws 源 W 寄存器 ∈ Ws, [Ws], [Ws++], [Ws--], [++Ws], [--Ws] Wso 源 W 寄存器 ∈

Wns, [Wns], [Wns++], [Wns--], [++Wns], [--Wns], [Wns+Wb] Wx 用于 DSP 指令的 X 数据空间预取地址寄存器

∈ [W8]+=6, [W8]+=4, [W8]+=2, [W8], [W8]-=6, [W8]-=4, [W8]-=2, [W9]+=6, [W9]+=4, [W9]+=2, [W9], [W9]-=6, [W9]-=4, [W9]-=2, [W9 + W12], 无

Wxd 用于 DSP 指令的 X 数据空间预取目标寄存器 ∈ W4..W7Wy 用于 DSP 指令的 Y 数据空间预取地址寄存器

∈ [W10]+=6, [W10]+=4, [W10]+=2, [W10], [W10]-=6, [W10]-=4, [W10]-=2, [W11]+=6, [W11]+=4, [W11]+=2, [W11], [W11]-=6, [W11]-=4, [W11]-=2, [W11 + W12], 无

Wyd 用于 DSP 指令的 Y 数据空间预取目标寄存器 ∈ W4..W7

表 19-1: 操作码说明中使用的符号 (续)

字段 说明

dsPIC33FJ12GP201/202

DS70264A_CN 第 184 页 超前信息 2007 Microchip Technology Inc.

表 19-2: 指令集概述 基本指令编号

汇编助记符

汇编语法 说明 字数 周期数影响的

状态标志

1 ADD ADD Acc 累加器相加 1 1 OA,OB,SA,SB

ADD f f = f + WREG 1 1 C,DC,N,OV,Z

ADD f,WREG WREG = f + WREG 1 1 C,DC,N,OV,Z

ADD #lit10,Wn Wd = lit10 + Wd 1 1 C,DC,N,OV,Z

ADD Wb,Ws,Wd Wd = Wb + Ws 1 1 C,DC,N,OV,Z

ADD Wb,#lit5,Wd Wd = Wb + lit5 1 1 C,DC,N,OV,Z

ADD Wso,#Slit4,Acc 将 16 位有符号立即数加到累加器 1 1 OA,OB,SA,SB

2 ADDC ADDC f f = f + WREG + (C) 1 1 C,DC,N,OV,Z

ADDC f,WREG WREG = f + WREG + (C) 1 1 C,DC,N,OV,Z

ADDC #lit10,Wn Wd = lit10 + Wd + (C) 1 1 C,DC,N,OV,Z

ADDC Wb,Ws,Wd Wd = Wb + Ws + (C) 1 1 C,DC,N,OV,Z

ADDC Wb,#lit5,Wd Wd = Wb + lit5 + (C) 1 1 C,DC,N,OV,Z

3 AND AND f f = f .AND.WREG 1 1 N,Z

AND f,WREG WREG = f .AND.WREG 1 1 N,Z

AND #lit10,Wn Wd = lit10 .AND.Wd 1 1 N,Z

AND Wb,Ws,Wd Wd = Wb .AND.Ws 1 1 N,Z

AND Wb,#lit5,Wd Wd = Wb .AND. lit5 1 1 N,Z

4 ASR ASR f f = 算术右移 f 1 1 C,N,OV,Z

ASR f,WREG WREG = 算术右移 f 1 1 C,N,OV,Z

ASR Ws,Wd Wd = 算术右移 Ws 1 1 C,N,OV,Z

ASR Wb,Wns,Wnd Wnd = 将 Wb 算术右移 Wns 位 1 1 N,Z

ASR Wb,#lit5,Wnd Wnd = 将 Wb 算术右移 lit5 位 1 1 N,Z

5 BCLR BCLR f,#bit4 将 f 中的指定位清零 1 1 无

BCLR Ws,#bit4 将 Ws 中的指定位清零 1 1 无

6 BRA BRA C,Expr 如果有进位则转移 1 1 (2) 无

BRA GE,Expr 如果大于或等于则转移 1 1 (2) 无

BRA GEU,Expr 如果无符号大于或等于则转移 1 1 (2) 无

BRA GT,Expr 如果大于则转移 1 1 (2) 无

BRA GTU,Expr 如果无符号大于则转移 1 1 (2) 无

BRA LE,Expr 如果小于或等于则转移 1 1 (2) 无

BRA LEU,Expr 如果无符号小于或等于则转移 1 1 (2) 无

BRA LT,Expr 如果小于则转移 1 1 (2) 无

BRA LTU,Expr 如果无符号小于则转移 1 1 (2) 无

BRA N,Expr 如果为负则转移 1 1 (2) 无

BRA NC,Expr 如果没有进位则转移 1 1 (2) 无

BRA NN,Expr 如果不为负则转移 1 1 (2) 无

BRA NOV,Expr 如果未溢出则转移 1 1 (2) 无

BRA NZ,Expr 如果不为零则转移 1 1 (2) 无

BRA OA,Expr 如果累加器 A 溢出则转移 1 1 (2) 无

BRA OB,Expr 如果累加器 B 溢出则转移 1 1 (2) 无

BRA OV,Expr 如果溢出则转移 1 1 (2) 无

BRA SA,Expr 如果累加器 A 饱和则转移 1 1 (2) 无

BRA SB,Expr 如果累加器 B 饱和则转移 1 1 (2) 无

BRA Expr 无条件转移 1 2 无

BRA Z,Expr 如果为零则转移 1 1 (2) 无

BRA Wn 计算转移 1 2 无

7 BSET BSET f,#bit4 将 f 中的指定位置 1 1 1 无

BSET Ws,#bit4 将 Ws 中的指定位置 1 1 1 无

8 BSW BSW.C Ws,Wb 将 C 位内容写入 Ws<Wb> 1 1 无

BSW.Z Ws,Wb 将 Z 位内容写入 Ws<Wb> 1 1 无

9 BTG BTG f,#bit4 将 f 中的指定位翻转 1 1 无

BTG Ws,#bit4 将 Ws 中的指定位翻转 1 1 无

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 185 页

dsPIC33FJ12GP201/202

10 BTSC BTSC f,#bit4 对 f 中的指定位进行测试,如果为零则跳过 1 1 (2 或 3)

BTSC Ws,#bit4 对 Ws 中的指定位进行测试,如果为零则跳过 1 1 (2 或 3)

11 BTSS BTSS f,#bit4 对 f 中的指定位进行测试,如果为 1 则跳过 1 1 (2 或 3)

BTSS Ws,#bit4 对 Ws 中的指定位进行测试,如果为 1 则跳过 1 1 (2 或 3)

12 BTST BTST f,#bit4 对 f 中的指定位进行测试 1 1 Z

BTST.C Ws,#bit4 对 Ws 中的指定位进行测试,并将其值存储到 C

1 1 C

BTST.Z Ws,#bit4 对 Ws 中的指定位进行测试,并将其反码存储到 Z

1 1 Z

BTST.C Ws,Wb 对 Ws<Wb> 位进行测试,并将其值存储到 C 1 1 C

BTST.Z Ws,Wb 对 Ws<Wb>位进行测试,并将其反码存储到 Z 1 1 Z

13 BTSTS BTSTS f,#bit4 对 f 中的指定位进行测试,并将 f 中的该位置 1 1 1 Z

BTSTS.C Ws,#bit4 对 Ws 中的指定位进行测试,并将其值存储到 C,然后将 Ws 中的该位置 1

1 1 C

BTSTS.Z Ws,#bit4 对 Ws 中的指定位进行测试,并将其反码存储到 Z,然后将 Ws 中的该位置 1

1 1 Z

14 CALL CALL lit23 调用子程序 2 2 无

CALL Wn 间接调用子程序 1 2 无

15 CLR CLR f f = 0x0000 1 1 无

CLR WREG WREG = 0x0000 1 1 无

CLR Ws Ws = 0x0000 1 1 无

CLR Acc,Wx,Wxd,Wy,Wyd,AWB 将累加器清零 1 1 OA,OB,SA,SB

16 CLRWDT CLRWDT 将看门狗定时器清零 1 1 WDTO,Sleep

17 COM COM f f = f 1 1 N,Z

COM f,WREG WREG = f 1 1 N,Z

COM Ws,Wd Wd = Ws 1 1 N,Z

18 CP CP f 比较 f 和 WREG 1 1 C,DC,N,OV,Z

CP Wb,#lit5 比较 Wb 和 lit5 1 1 C,DC,N,OV,Z

CP Wb,Ws 比较 Wb 和 Ws (Wb – Ws) 1 1 C,DC,N,OV,Z

19 CP0 CP0 f 比较 f 和 0x0000 1 1 C,DC,N,OV,Z

CP0 Ws 比较 Ws 和 0x0000 1 1 C,DC,N,OV,Z

20 CPB CPB f 带借位比较 f 和 WREG 1 1 C,DC,N,OV,Z

CPB Wb,#lit5 带借位比较 Wb 和 lit5 1 1 C,DC,N,OV,Z

CPB Wb,Ws 带借位比较 Wb 和 Ws (Wb – Ws – C) 1 1 C,DC,N,OV,Z

21 CPSEQ CPSEQ Wb, Wn 比较 Wb 和 Wn,如果相等则跳过 1 1 (2 或 3)

22 CPSGT CPSGT Wb, Wn 比较 Wb 和 Wn,如果大于则跳过 1 1 (2 或 3)

23 CPSLT CPSLT Wb, Wn 比较 Wb 和 Wn,如果小于则跳过 1 1 (2 或 3)

24 CPSNE CPSNE Wb, Wn 比较 Wb 和 Wn,如果不相等则跳过 1 1 (2 或 3)

25 DAW DAW Wn Wn = 十进制调整 Wn 1 1 C

26 DEC DEC f f = f – 1 1 1 C,DC,N,OV,Z

DEC f,WREG WREG = f – 1 1 1 C,DC,N,OV,Z

DEC Ws,Wd Wd = Ws – 1 1 1 C,DC,N,OV,Z

27 DEC2 DEC2 f f = f – 2 1 1 C,DC,N,OV,Z

DEC2 f,WREG WREG = f – 2 1 1 C,DC,N,OV,Z

DEC2 Ws,Wd Wd = Ws – 2 1 1 C,DC,N,OV,Z

28 DISI DISI #lit14 在 k 个指令周期内禁止中断 1 1 无

表 19-2: 指令集概述 (续) 基本指令编号

汇编助记符

汇编语法 说明 字数 周期数影响的

状态标志

dsPIC33FJ12GP201/202

DS70264A_CN 第 186 页 超前信息 2007 Microchip Technology Inc.

29 DIV DIV.S Wm,Wn 有符号 16/16 位整数除法 1 18 N,Z,C,OV

DIV.SD Wm,Wn 有符号 32/16 位整数除法 1 18 N,Z,C,OV

DIV.U Wm,Wn 无符号 16/16 位整数除法 1 18 N,Z,C,OV

DIV.UD Wm,Wn 无符号 32/16 位整数除法 1 18 N,Z,C,OV

30 DIVF DIVF Wm,Wn 有符号 16/16 位小数除法 1 18 N,Z,C,OV

31 DO DO #lit14,Expr 执行 DO 循环代码到 PC + Expr,执行次数为 lit14 + 1 次

2 2 无

DO Wn,Expr 执行 DO 循环代码到 PC + Expr,执行次数为 (Wn) + 1 次

2 2 无

32 ED ED Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离(无累加) 1 1 OA,OB,OAB,SA,SB,SAB

33 EDAC EDAC Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离 1 1 OA,OB,OAB,SA,SB,SAB

34 EXCH EXCH Wns,Wnd 交换 Wns 和 Wnd 的内容 1 1 无

35 FBCL FBCL Ws,Wnd 从左边(MSb)查找第一个位变化 1 1 C

36 FF1L FF1L Ws,Wnd 从左边(MSb)查找第一个 1 1 1 C

37 FF1R FF1R Ws,Wnd 从右边(LSb)查找第一个 1 1 1 C

38 GOTO GOTO Expr 转移到地址 2 2 无

GOTO Wn 间接转移到地址 1 2 无

39 INC INC f f = f + 1 1 1 C,DC,N,OV,Z

INC f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z

INC Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z

40 INC2 INC2 f f = f + 2 1 1 C,DC,N,OV,Z

INC2 f,WREG WREG = f + 2 1 1 C,DC,N,OV,Z

INC2 Ws,Wd Wd = Ws + 2 1 1 C,DC,N,OV,Z

41 IOR IOR f f = f .IOR.WREG 1 1 N,Z

IOR f,WREG WREG = f .IOR.WREG 1 1 N,Z

IOR #lit10,Wn Wd = lit10 .IOR.Wd 1 1 N,Z

IOR Wb,Ws,Wd Wd = Wb .IOR.Ws 1 1 N,Z

IOR Wb,#lit5,Wd Wd = Wb .IOR. lit5 1 1 N,Z

42 LAC LAC Wso,#Slit4,Acc 装载累加器 1 1 OA,OB,OAB,SA,SB,SAB

43 LNK LNK #lit14 分配堆栈帧 1 1 无

44 LSR LSR f f = 逻辑右移 f 1 1 C,N,OV,Z

LSR f,WREG WREG = 逻辑右移 f 1 1 C,N,OV,Z

LSR Ws,Wd Wd = 逻辑右移 Ws 1 1 C,N,OV,Z

LSR Wb,Wns,Wnd Wnd = 将 Wb 逻辑右移 Wns 位 1 1 N,Z

LSR Wb,#lit5,Wnd Wnd = 将 Wb 逻辑右移 lit5 位 1 1 N,Z

45 MAC MAC Wm*Wn,Acc,Wx,Wxd,Wy,Wyd,AWB

相乘并累加 1 1 OA,OB,OAB,SA,SB,SAB

MAC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd 平方并累加 1 1 OA,OB,OAB,SA,SB,SAB

46 MOV MOV f,Wn 将 f 中的内容送入 Wn 1 1 无

MOV f 将 f 中的内容送入目标寄存器 1 1 N,Z

MOV f,WREG 将 f 中的内容送入 WREG 1 1 N,Z

MOV #lit16,Wn 将 16 位立即数送入 Wn 1 1 无

MOV.b #lit8,Wn 将 8 位立即数送入 Wn 1 1 无

MOV Wn,f 将 Wn 中的内容送入 f 1 1 无

MOV Wso,Wdo 将 Ws 中的内容送入 Wd 1 1 无

MOV WREG,f 将 WREG 中的内容送入 f 1 1 N,Z

MOV.D Wns,Wd 将 W(ns):W(ns + 1) 中的双字内容送入 Wd 1 2 无

MOV.D Ws,Wnd 将 Ws 中的双字内容送入 W(nd + 1):W(nd) 1 2 无

47 MOVSAC MOVSAC Acc,Wx,Wxd,Wy,Wyd,AWB 预取操作数并保存累加器 1 1 无

表 19-2: 指令集概述 (续) 基本指令编号

汇编助记符

汇编语法 说明 字数 周期数影响的

状态标志

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 187 页

dsPIC33FJ12GP201/202

48 MPY MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd

Wm 与 Wn 相乘,结果存入累加器 1 1 OA,OB,OAB,SA,SB,SAB

MPY Wm*Wm,Acc,Wx,Wxd,Wy,Wyd

Wm 平方,结果存入累加器 1 1 OA,OB,OAB,SA,SB,SAB

49 MPY.N MPY.N Wm*Wn,Acc,Wx,Wxd,Wy,Wyd

Wm 与 Wn 相乘并取反,结果存入累加器 1 1 无

50 MSC MSC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd,AWB

相乘再从累加器中减去 1 1 OA,OB,OAB,SA,SB,SAB

51 MUL MUL.SS Wb,Ws,Wnd Wnd + 1, Wnd = signed(Wb) * signed(Ws) 1 1 无

MUL.SU Wb,Ws,Wnd Wnd + 1, Wnd = signed(Wb) * unsigned(Ws) 1 1 无

MUL.US Wb,Ws,Wnd Wnd + 1, Wnd = unsigned(Wb) * signed(Ws) 1 1 无

MUL.UU Wb,Ws,Wnd Wnd + 1, Wnd = unsigned(Wb) * unsigned(Ws)

1 1 无

MUL.SU Wb,#lit5,Wnd Wnd + 1, Wnd = signed(Wb) * unsigned(lit5) 1 1 无

MUL.UU Wb,#lit5,Wnd Wnd + 1, Wnd = unsigned(Wb) * unsigned(lit5)

1 1 无

MUL f W3:W2 = f * WREG 1 1 无

52 NEG NEG Acc 将累加器内容求补 1 1 OA,OB,OAB,SA,SB,SAB

NEG f f = f + 1 1 1 C,DC,N,OV,Z

NEG f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z

NEG Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z

53 NOP NOP 空操作 1 1 无

NOPR 空操作 1 1 无

54 POP POP f 将栈顶(TOS)的内容弹出到 f 1 1 无

POP Wdo 将栈顶(TOS)的内容弹出到 Wdo 1 1 无

POP.D Wnd 将栈顶(TOS)的内容弹出到W(nd):W(nd +1)

1 2 无

POP.S 将影子寄存器的内容弹出到主寄存器 1 1 全部

55 PUSH PUSH f 将 f 的内容压入栈顶(TOS) 1 1 无

PUSH Wso 将 Wso 的内容压入栈顶 (TOS) 1 1 无

PUSH.D Wns 将 W(ns):W(ns + 1) 的双字内容压入栈顶(TOS)

1 2 无

PUSH.S 将主寄存器中的双字内容压入影子寄存器 1 1 无

56 PWRSAV PWRSAV #lit1 进入休眠或空闲模式 1 1 WDTO,Sleep

57 RCALL RCALL Expr 相对调用 1 2 无

RCALL Wn 计算调用 1 2 无

58 REPEAT REPEAT #lit14 将下一条指令重复执行 lit14 + 1 次 1 1 无

REPEAT Wn 将下一条指令重复执行 (Wn)+1 次 1 1 无

59 RESET RESET 软件器件复位 1 1 无

60 RETFIE RETFIE 从中断返回 1 3 (2) 无

61 RETLW RETLW #lit10,Wn 返回并将立即数存入 Wn 1 3 (2) 无

62 RETURN RETURN 从子程序返回 1 3 (2) 无

63 RLC RLC f f = 对 f 执行带进位的循环左移 1 1 C,N,Z

RLC f,WREG WREG = 对 f 执行带进位的循环左移 1 1 C,N,Z

RLC Ws,Wd Wd = 对 Ws 执行带进位的循环左移 1 1 C,N,Z

64 RLNC RLNC f f = 循环左移 f (不带进位) 1 1 N,Z

RLNC f,WREG WREG = 循环左移 f (不带进位) 1 1 N,Z

RLNC Ws,Wd Wd = 循环左移 Ws (不带进位) 1 1 N,Z

65 RRC RRC f f = 对 f 执行带进位的循环右移 1 1 C,N,Z

RRC f,WREG WREG = 对 f 执行带进位的循环右移 1 1 C,N,Z

RRC Ws,Wd Wd = 对 Ws 执行带进位的循环右移 1 1 C,N,Z

表 19-2: 指令集概述 (续) 基本指令编号

汇编助记符

汇编语法 说明 字数 周期数影响的

状态标志

dsPIC33FJ12GP201/202

DS70264A_CN 第 188 页 超前信息 2007 Microchip Technology Inc.

66 RRNC RRNC f f = 循环右移 f (不带进位) 1 1 N,Z

RRNC f,WREG WREG = 循环右移 f (不带进位) 1 1 N,Z

RRNC Ws,Wd Wd = 循环右移 Ws (不带进位) 1 1 N,Z

67 SAC SAC Acc,#Slit4,Wdo 保存累加器内容 1 1 无

SAC.R Acc,#Slit4,Wdo 保存舍入后的累加器内容 1 1 无

68 SE SE Ws,Wnd Wnd = 符号扩展后的 Ws 1 1 C,N,Z

69 SETM SETM f f = 0xFFFF 1 1 无

SETM WREG WREG = 0xFFFF 1 1 无

SETM Ws Ws = 0xFFFF 1 1 无

70 SFTAC SFTAC Acc,Wn 对累加器算术移位 (Wn) 次 1 1 OA,OB,OAB,SA,SB,SAB

SFTAC Acc,#Slit6 对累加器算术移位 Slit6 次 1 1 OA,OB,OAB,SA,SB,SAB

71 SL SL f f = 左移 f 1 1 C,N,OV,Z

SL f,WREG WREG = 左移 f 1 1 C,N,OV,Z

SL Ws,Wd Wd = 左移 Ws 1 1 C,N,OV,Z

SL Wb,Wns,Wnd Wnd = 将 Wb 左移 Wns 位 1 1 N,Z

SL Wb,#lit5,Wnd Wnd = 将 Wb 左移 lit5 位 1 1 N,Z

72 SUB SUB Acc 从累加器减去 1 1 OA,OB,OAB,SA,SB,SAB

SUB f f = f – WREG 1 1 C,DC,N,OV,Z

SUB f,WREG WREG = f – WREG 1 1 C,DC,N,OV,Z

SUB #lit10,Wn Wn = Wn – lit10 1 1 C,DC,N,OV,Z

SUB Wb,Ws,Wd Wd = Wb – Ws 1 1 C,DC,N,OV,Z

SUB Wb,#lit5,Wd Wd = Wb – lit5 1 1 C,DC,N,OV,Z

73 SUBB SUBB f f = f – WREG – (C) 1 1 C,DC,N,OV,Z

SUBB f,WREG WREG = f – WREG – (C) 1 1 C,DC,N,OV,Z

SUBB #lit10,Wn Wn = Wn – lit10 – (C) 1 1 C,DC,N,OV,Z

SUBB Wb,Ws,Wd Wd = Wb – Ws – (C) 1 1 C,DC,N,OV,Z

SUBB Wb,#lit5,Wd Wd = Wb – lit5 – (C) 1 1 C,DC,N,OV,Z

74 SUBR SUBR f f = WREG – f 1 1 C,DC,N,OV,Z

SUBR f,WREG WREG = WREG – f 1 1 C,DC,N,OV,Z

SUBR Wb,Ws,Wd Wd = Ws – Wb 1 1 C,DC,N,OV,Z

SUBR Wb,#lit5,Wd Wd = lit5 – Wb 1 1 C,DC,N,OV,Z

75 SUBBR SUBBR f f = WREG – f – (C) 1 1 C,DC,N,OV,Z

SUBBR f,WREG WREG = WREG – f – (C) 1 1 C,DC,N,OV,Z

SUBBR Wb,Ws,Wd Wd = Ws – Wb – (C) 1 1 C,DC,N,OV,Z

SUBBR Wb,#lit5,Wd Wd = lit5 – Wb – (C) 1 1 C,DC,N,OV,Z

76 SWAP SWAP.b Wn Wn = 半字节交换 Wn 内容 1 1 无

SWAP Wn Wn = 将 Wn 的两个字节相交换 1 1 无

77 TBLRDH TBLRDH Ws,Wd 将程序存储单元的 <23:16> 读入 Wd<7:0> 1 2 无

78 TBLRDL TBLRDL Ws,Wd 将程序存储单元的 <15:0> 读入 Wd 1 2 无

79 TBLWTH TBLWTH Ws,Wd 将 Ws<7:0> 写入程序存储单元的 <23:16> 1 2 无

80 TBLWTL TBLWTL Ws,Wd 将 Ws 写入程序存储单元的 <15:0> 1 2 无

81 ULNK ULNK 释放堆栈帧 1 1 无

82 XOR XOR f f = f .XOR.WREG 1 1 N,Z

XOR f,WREG WREG = f .XOR.WREG 1 1 N,Z

XOR #lit10,Wn Wd = lit10 .XOR.Wd 1 1 N,Z

XOR Wb,Ws,Wd Wd = Wb .XOR.Ws 1 1 N,Z

XOR Wb,#lit5,Wd Wd = Wb .XOR. lit5 1 1 N,Z

83 ZE ZE Ws,Wnd Wnd = 零扩展后的 Ws 1 1 C,Z,N

表 19-2: 指令集概述 (续) 基本指令编号

汇编助记符

汇编语法 说明 字数 周期数影响的

状态标志

2007 Microchip Technology Inc. 高级信息 DS70264A 第 189 页

dsPIC33FJ12GP201/202

20.0 开发支持

一系列硬件及软件开发工具对 PIC® 单片机提供支持:

• 集成开发环境

- MPLAB® IDE 软件

• 汇编器 / 编译器 / 链接器

- MPASMTM 汇编器

- MPLAB C18 和 MPLAB C30 C 编译器

- MPLINKTM 目标链接器 /MPLIBTM 目标库管理器

- MPLAB ASM30 汇编器 / 链接器 / 库• 模拟器

- MPLAB SIM 软件模拟器

• 仿真器

- MPLAB ICE 2000 在线仿真器

- MPLAB REAL ICE™ 在线仿真器

• 在线调试器

- MPLAB ICD 2• 器件编程器

- PICSTART® Plus 开发编程器

- MPLAB PM3 器件编程器

- PICkit™ 2 开发编程器

• 低成本演示和开发板及评估工具包

20.1 MPLAB 集成开发环境软件

MPLAB IDE 软件为 8/16 位单片机市场提供了前所未有的易于使用的软件开发平台。 MPLAB IDE 是基于Windows® 操作系统的应用软件,包括:

• 一个包含所有调试工具的图形界面

- 模拟器

- 编程器 (单独销售)

- 仿真器 (单独销售)

- 在线调试器 (单独销售)

• 具有彩色上下文代码显示的全功能编辑器

• 多项目管理器

• 内容可直接编辑的可定制式数据窗口

• 高级源代码调试

• 可视化器件初始化程序,便于进行寄存器的初始化

• 鼠标停留在变量上进行查看的功能

• 通过拖放把变量从源代码窗口拉到观察窗口

• 丰富的在线帮助

• 集成了可选的第三方工具,如 HI-TECH 软件 C 编译器和 IAR C 编译器

MPLAB IDE 可以让您:

• 编辑源文件 (汇编语言或 C 语言)

• 点击一次即可完成汇编 (或编译)并将代码下载到 PIC MCU 仿真器和模拟器工具中(自动更新所有项目信息)

• 可使用如下各项进行调试:

- 源文件 (汇编语言或 C 语言)

- 混合汇编语言和 C 语言

- 机器码

MPLAB IDE 在单个开发范例中支持使用多种调试工具,包括从成本效益高的模拟器到低成本的在线调试器,再到全功能的仿真器。这样缩短了用户升级到更加灵活而功能更强大的工具时的学习时间。

dsPIC33FJ12GP201/202

DS70264A 第 190 页 高级信息 2007 Microchip Technology Inc.

20.2 MPASM 汇编器

MPASM 汇编器是全功能通用宏汇编器,适用于所有的PIC MCU。

MPASM 汇编器可生成用于 MPLINK 目标链接器的可重定位目标文件、Intel® 标准 HEX 文件、详细描述存储器使用状况和符号参考的 MAP 文件、包含源代码行及生成机器码的绝对 LST文件以及用于调试的COFF文件。

MPASM 汇编器具有如下特征:

• 集成在 MPLAB IDE 项目中

• 用户定义的宏可简化汇编代码

• 对多用途源文件进行条件汇编

• 允许完全控制汇编过程的指令

20.3 MPLAB C18 和 MPLAB C30 C 编译器

MPLAB C18 和 MPLAB C30 代码开发系统是完全的ANSI C 编译器,分别适用于 Microchip 的 PIC18 和PIC24系列单片机及 dsPIC30F和 dsPIC33系列数字信号控制器。这些编译器可提供其他编译器并不具备的强大的集成功能和出众的代码优化能力,且使用方便。

为便于源代码调试,编译器提供了针对 MPLAB IDE 调试器的优化符号信息。

20.4 MPLINK 目标链接器 /MPLIB 目标库管理器

MPLINK目标链接器包含了由MPASM汇编器、MPLABC18 C 编译器产生的可重定位目标。通过使用链接器脚本中的指令,它还可链接预编译库中的可重定位目标。

MPLIB目标库管理器管理预编译代码库文件的创建和修改。当从源文件调用库中的一段子程序时,只有包含此子程序的模块被链接到应用中。这样可使大型库在许多不同应用中被高效地利用。

目标链接器 / 库管理器具有如下特征:

• 高效地连接单个的库而不是许多小文件

• 通过将相关的模块组合在一起来增强代码的可维护性

• 只要列出、替换、删除和抽取模块,便可灵活地创建库

20.5 MPLAB ASM30 汇编器、链接器和库管理器

MPLAB ASM30 汇编器为 dsPIC30F 器件提供转换自符号汇编语言的可重定位机器码。 MPLAB C30 C 编译器使用该汇编器生成目标文件。汇编器产生可重定位目标文件之后,可将这些目标文件存档,或与其他可重定位目标文件和存档链接以生成可执行文件。该汇编器有如下显著特征:

• 支持整个 dsPIC30F 指令集

• 支持定点数据和浮点数据

• 命令行界面

• 丰富的指令集

• 灵活的宏语言

• MPLAB IDE 兼容性

20.6 MPLAB SIM 软件模拟器

MPLAB SIM软件模拟器在指令级对PIC MCU和dsPIC®

DSC 进行模拟,使得用户可以在 PC 主机的环境下进行代码开发。对于任何给定的指令,用户均可对数据区进行检查或修改,并通过各种触发机制来产生激励。可以将各寄存器的情况记录在文件中,以便进行进一步地运行时分析。跟踪缓冲器和逻辑分析器的显示使模拟器还能记录和跟踪程序的执行、 I/O 的动作、大部分的外设及内部寄存器的状况。

MPLAB SIM 软件模拟器完全支持使用 MPLAB C18 和MPLAB C30 C 编译器以及MPASM和MAPLAB ASM30汇编器的符号调试。该软件模拟器可用于在硬件实验室环境外灵活地开发和调试代码,是一款完美且经济的软件开发工具。

2007 Microchip Technology Inc. 高级信息 DS70264A 第 191 页

dsPIC33FJ12GP201/202

20.7 MPLAB ICE 2000 高性能在线仿真器

MPLAB ICE 2000 在线仿真器旨在为产品开发工程师提供一整套用于 PIC 单片机的设计工具。 MPLAB ICE2000在线仿真器的软件控制由MPLAB集成开发环境平台提供,它允许在单一环境下进行编辑、编译、下载以及源代码调试。

MPLAB ICE 2000 是全功能仿真器系统,它具有增强的跟踪、触发和数据监控功能。处理器模块可插拔,使系统可轻松进行重新配置以适应各种不同处理器的仿真需要。MPLAB ICE 2000 在线仿真器的架构允许对其进行扩展以支持新的 PIC 单片机。

MPLAB ICE 2000 在线仿真器系统设计为一款实时仿真系统,该仿真系统具备通常只有昂贵的开发工具中才有的高级功能。选择 PC 平台和 Microsoft® Windows® 32位操作系统可使这些功能在一个简单而统一的应用中得到很好的利用。

20.8 MPLAB REAL ICE 在线仿真器系统

MPLAB REAL ICE在线仿真器系统是Microchip针对其闪存 DSC 和 MCU 器件而推出的新一代高速仿真器。结合MPLAB 集成开发环境(IDE)所具有的易于使用且功能强大的图形用户界面,该仿真器可对 PIC® 闪存 MCU 和dsPIC® DSC进行调试和编程。IDE是随每个工具包一起提供的。

MPLAB REAL ICE探针通过高速USB 2.0接口与设计工程师的 PC 相连,并利用与常用 MPLAB ICD 2 系统兼容的连接器(RJ11)或新型抗噪声、高速低压差分信号(LVDS)互连电缆(CAT5)与目标板相连。

可通过 MPLAB IDE 下载将来版本的固件,对 MPLABREAL ICE 进行现场升级。在即将推出的 MPLAB IDE 版本中,会支持许多新器件,还将增加一些新特性,如软件断点和汇编代码跟踪等。在同类仿真器中, MPLABREAL ICE 的优势十分明显:低成本、高速仿真、实时变量监视、跟踪分析、复杂断点、耐用的探针接口及较长(长达 3 米)的互连电缆。

20.9 MPLAB ICD 2 在线调试器

Microchip 的在线调试器 MPLAB ICD 2 是一款功能强大而成本低廉的运行时开发工具,通过 RS-232 或高速USB 接口与 PC 主机相连。该工具基于闪存 PIC MCU,可用于开发本系列及其他 PIC MCU 和 dsPIC DSC。MPLAB ICD 2使用了闪存器件中内建的在线调试功能。该功能结合Microchip的在线串行编程(In-Circuit SerialProgrammingTM, ICSPTM)协议,可在 MPLAB 集成开发环境的图形用户界面上提供成本效益很高的在线闪存调试。这使设计人员可通过设置断点、单步运行以及对变量、CPU状态以及外设寄存器进行监视的方法实现源代码的开发和调试。其全速运行特性可对硬件和应用进行实时测试。 MPLAB ICD 2 还可用作某些 PIC 器件的开发编程器。

20.10 MPLAB PM3 器件编程器

MPLAB PM3 器件编程器是一款通用的、符合 CE 规范的器件编程器,其可编程电压设置在VDDMIN和VDDMAX之间时可靠性 高。它有一个用来显示菜单和错误信息的大 LCD 显示器(128 x 64),以及一个支持各种封装类型的可拆卸模块化插槽装置。编程器标准配置中带有一根 ICSPTM 电缆。在单机模式下, MPLAB PM3 器件编程器不必与 PC 相连即可对 PIC 器件进行读取、验证和编程。在该模式下它还可设置代码保护。 MPLABPM3 通过 RS-232 或 USB 电缆连接到 PC 主机上。MPLAB PM3 具备高速通信能力以及优化算法,可对存储器很大的器件进行快速编程,它还采用 SD/MMC 卡用作文件存储及数据安全应用。

dsPIC33FJ12GP201/202

DS70264A 第 192 页 高级信息 2007 Microchip Technology Inc.

20.11 PICSTART Plus 开发编程器 PICSTART Plus开发编程器是一款易于使用而成本低廉的原型编程器。它通过 COM(RS-232)端口与 PC 相连。 MPLAB 集成开发环境软件使得该编程器的使用简便、高效。PICSTART Plus 开发编程器支持采用 DIP 封装的大部分 PIC 器件,其引脚数 多可达 40 个。引脚数更多的器件,如 PIC16C92X 和 PIC17C76X,可通过连接一个转接插槽来获得支持。PICSTART Plus 开发编程器符合 CE 规范。

20.12 PICkit 2 开发编程器

PICkit™ 2 开发编程器是一个低成本编程器;对于某些选定闪存器件,它也是一个调试器,通过其易于使用的接口可对众多 Microchip 的低档、中档和 PIC18F 系列闪存单片机进行编程。 PICkit 2 入门工具包中包含一个有实验布线区的开发板、十二堂系列课程、软件和 HI-TECH 的 PICC™ Lite C 编译器,有助于用户快速掌握PIC® 单片机的使用。这一工具包为使用 Microchip 功能强大的中档闪存系列单片机进行编程、评估和应用开发,提供了所需的一切。

20.13 演示、开发和评估板

有许多演示、开发和评估板可用于各种 PIC MCU 和dsPIC DSC,实现对全功能系统的快速应用开发。大多数的演示、开发和评估板都有实验布线区,供用户添加定制电路;还有应用固件和源代码,用于测试和修改。

这些板支持多种功能部件,包括 LED、温度传感器、开关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附加 EEPROM 存储器。

演示和开发板可用于教学环境,在实验布线区设计定制电路,从而掌握各种单片机应用。

除了PICDEM™和 dsPICDEM™演示 /开发板系列电路外, Microchip 还有一系列评估工具包和演示软件, 适用于模拟滤波器设计、 KEELOQ® 数据安全产品 IC、CAN、IrDA®、PowerSmart 电池管理、SEEVAL® 评估系统、 Σ−∆ ADC、流速传感器,等等。

有关演示、开发和评估工具包的完整列表,请查阅Microchip 公司网页 (www.microchip.com)。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 193 页

dsPIC33FJ12GP201/202

超 前

信 息

21.0 电气特性

本章将对 dsPIC33FJ12GP201/202 电气特性进行概括介绍。其余信息将在该文档的后续版本中给出。

下面列出了 dsPIC33FJ12GP201/202 系列器件的绝对 大额定值。器件长时间工作在 大额定值条件下可能会影响其可靠性。我们不建议使器件在或超过本规范指定的 大额定值条件下运行。

绝对 大额定值 (1) 环境温度................................................................................................................................................. -40°C 至 +125°C储存温度................................................................................................................................................. -65°C 至 +150°CVDD 引脚相对于 VSS 的电压.......................................................................................................................-0.3V 至 +4.0V任一模拟 / 数字引脚和 MCLR 引脚相对于 VSS 的电压 ................................................................ -0.3V 至 (VDD + 0.3V)任一只能用作数字的引脚相对于 VSS 的电压 ............................................................................................. -0.3V 至 +5.6VVDDCORE 引脚相对于 VSS 的电压 ............................................................................................................. 2.25V 至 2.75V流出 VSS 引脚的 大电流......................................................................................................................................300 mA流入 VDD 引脚的 大电流 (2) .................................................................................................................................250 mA任一 I/O 引脚的 大输出灌电流 (3) ............................................................................................................................4 mA任一 I/O 引脚的 大输出拉电流 (3) ............................................................................................................................4 mA所有端口的 大灌电流 ..........................................................................................................................................200 mA所有端口的 大拉电流 (2) ......................................................................................................................................200 mA

注 1:如果器件工作条件超过上述 “绝对 大额定值”,可能引起器件永久性损坏。这仅是极限参数,我们不建议器件工作在极限值甚至超过上述极限值。器件长时间工作在极限条件下可能会影响其可靠性。

2:允许的 大电流由器件 大功耗决定 (见表 21-2)。

3:CLKOUT 引脚例外,其灌 / 拉电流为 25 mA,另外 VREF+、VREF-、SCLx、SDAx、PGCx 和 PGDx 引脚的灌 / 拉电流为 12 mA。

dsPIC33FJ12GP201/202

DS70264A_CN 第 194 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

21.1 直流特性

表 21-1: 工作 MIPS 与电压

特性VDD 范围

(单位:V)温度范围

(单位:°C)

大 MIPS

dsPIC33FJ12GP201/202

3.0-3.6V -40°C 至 +85°C 40

3.0-3.6V -40°C 至 +125°C 40

表 21-2: 热工作条件

参数 符号 小值 典型值 大值 单位

工业级温度器件

工作结温范围 TJ -40 — +125 °C

工作环境温度范围 TA -40 — +85 °C

扩展级温度器件

工作结温范围 TJ -40 — +140 °C

工作环境温度范围 TA -40 — +125 °C

功耗:芯片内部功耗:

PINT = VDD x (IDD – Σ IOH) PD PINT + PI/O WI/O 引脚功耗:

I/O = Σ (VDD – VOH x IOH) + Σ (VOL x IOL)

大允许功耗 PDMAX (TJ – TA)/θJA W

表 21-3: 热封装特性

特性 符号 典型值 大值 单位 注

封装热阻, 18 引脚 PDIP θJA 66 — °C/W 1封装热阻, 28 引脚 SPDIP θJA 60 — °C/W 1封装热阻, 18 引脚 SOIC θJA 63.6 — °C/W 1封装热阻, 28 引脚 SOIC θJA 80.2 — °C/W 1封装热阻, 28 引脚 QFN θJA 32 — °C/W 1注 1: 通过封装模拟获得结点与环境的热阻值 θJA。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 195 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-4: 直流温度和电压规范

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

工作电压

DC10 供电电压

VDD 3.0 — 3.6 V 工业级和扩展级

DC12 VDR RAM 数据保持电压 (2) 1.1 1.3 1.8 VDC16 VPOR VDD 启动电压

(确保内部上电复位信号)

VSS — — V

DC17 SVDD VDD 上升速率(确保内部上电复位信号)

0.03 — — V/ms 0-3.0V/0.1s

DC18 VCORE VDD 内核 (3)

内部稳压器

2.25 — 2.75 V 电压取决于负载、温度和VDD

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: 这是在不丢失 RAM 数据的前提下, VDD 的下限值。

3: 这些参数为特性值,但生产时未经测试。

dsPIC33FJ12GP201/202

DS70264A_CN 第 196 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-5: 直流特性:工作电流 (IDD)

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号 典型值 (1) 大值 单位 条件

工作电流 (IDD) (2)

DC20a 27 30 mA +25°C3.3V 10 MIPSDC20b 27 31 mA +85°C

DC20c 27 35 mA +125°CDC21a 37 42 mA +25°C

3.3V 16 MIPSDC21b 38 43 mA +85°CDC21c 39 45 mA +125°CDC22a 46 51 mA +25°C

3.3V 20 MIPSDC22b 46 52 mA +85°CDC22c 47 53 mA +125°CDC23a 65 70 mA +25°C

3.3V 30 MIPSDC23b 65 71 mA +85°CDC23c 65 72 mA +125°CDC24a 84 88 mA +25°C

3.3V 40 MIPSDC24b 84 89 mA +85°CDC24c 84 91 mA +125°C

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: 供电电流主要受工作电压和频率的影响。其他因素如 I/O 引脚负载和开关速率、振荡器类型、内部代码执行模式以及温度也对电流消耗有影响。所有 IDD 测量的测试条件为:OSC1 使用满幅的外部方波进行驱动。所有 I/O 引脚配置为输入且被拉到 VSS。MCLR = VDD,WDT 和 FSCM 被禁止。CPU、SRAM、程序存储器和数据存储器处于工作状态。外设模块不工作;但是,仍然为每个外设提供时钟 (PMD 的所有位均为零)。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 197 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-6: 直流特性:空闲电流 (IIDLE)

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号 典型值 (1) 大值 单位 条件

空闲电流 (IIDLE):内核不工作、时钟工作时的基本电流 (2)

DC40a 3 7 mA +25°C

3.3V 10 MIPSDC40b 3 8 mA +85°CDC40c 3 9 mA +125°CDC41a 5 10 mA +25°C

3.3V 16 MIPSDC41b 6 11 mA +85°CDC41c 6 12 mA +125°CDC42a 9 15 mA +25°C

3.3V 20 MIPSDC42b 10 16 mA +85°CDC42c 10 16 mA +125°CDC43a 15 21 mA +25°C

3.3V 30 MIPSDC43b 15 22 mA +85°CDC43c 15 23 mA +125°CDC44a 16 23 mA +25°C

3.3V 40 MIPSDC44b 16 24 mA +85°CDC44c 16 24 mA +125°C

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: 基本 IIDLE 电流的测量是在内核不工作、时钟工作而所有外设模块关闭的条件下进行的。外设模块禁止SFR 寄存器为全零。所有 I/O 引脚配置为输入且被拉到 VSS。

表 21-7: 直流特性:掉电电流 (IPD)

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号 典型值 (1) 大值 单位 条件

掉电电流 (IPD) (2)

DC60a 211 988 µA +25°C3.3V 基本掉电电流 (3,4)DC60b 244 990 µA +85°C

DC60c 245 998 µA +125°CDC61a 10 15 µA +25°C

3.3V 看门狗定时器电流:∆IWDT(3)DC61b 12 20 µA +85°CDC61c 13 25 µA +125°C

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: 基本 IPD 是在所有外设和时钟都关闭的条件下进行测量的。所有 I/O 引脚配置为输入且被拉到 VSS。 WDT等外设也都被关闭。

3: ∆ 电流为当模块使能时额外消耗的电流。此电流应被加到基本 IPD 电流。

4: 这些电流是针对该系列中存储容量 大的器件测得的。

dsPIC33FJ12GP201/202

DS70264A_CN 第 198 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-8: 直流特性:打盹电流 (IDOZE)

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号 典型值 (1) 大值打盹模式时钟分频比

单位 条件

DC70a 42 47 1:2mA

(+25°C)

3.3V40 MIPS

DC70f 26 27 1:64DC70g 25 27 1:128DC71a 41 48 1:2

mA(+85°C)

DC71f 25 28 1:64DC71g 24 28 1:128DC72a 42 49 1:2

mA(+125°C)

DC72f 26 29 1:64DC72g 25 28 1:128

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 199 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-9: 直流特性:I/O 引脚输入规范

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

VIL 输入低电压

DI10 I/O 引脚 VSS — 0.2 VDD V

DI15 MCLR VSS — 0.2 VDD VDI16 OSC1 (XT 模式) VSS — 0.2 VDD VDI17 OSC1 (HS 模式) VSS — 0.2 VDD VDI18 SDAx 和 SCLx VSS — 0.3 VDD V 禁止 SMbusDI19 SDAx 和 SCLx VSS — 0.2 VDD V 使能 SMbus

VIH 输入高电压

DI20 I/O 引脚:带模拟功能仅数字功能

0.8 VDD0.8 VDD

——

VDD5.5

VV

DI25 MCLR 0.8 VDD — VDD VDI26 OSC1 (XT 模式) 0.7 VDD — VDD VDI27 OSC1 (HS 模式) 0.7 VDD — VDD VDI28 SDAx 和 SCLx 0.7 VDD — VDD V 禁止 SMbusDI29 SDAx 和 SCLx 0.8 VDD — VDD V 使能 SMbus

ICNPU CNx 上拉电流

DI30 50 250 400 µA VDD = 3.3V,VPIN = VSS

IIL 输入泄漏电流 (2)(3)

DI50 I/O 端口 — — ±2 µA VSS ≤ VPIN ≤ VDD,引脚处于高阻态

DI51 模拟输入引脚 — — ±2 µA VSS ≤ VPIN ≤ VDD,引脚处于高阻态

DI55 MCLR — — ±2 µA VSS ≤ VPIN ≤ VDD

DI56 OSC1 — — ±2 µA VSS ≤ VPIN ≤ VDD,XT 和 HS 模式

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: MCLR 引脚上的泄漏电流主要取决于所施加电压。规定电压为正常工作条件下的电压。在不同的输入电压下可能测得更高的泄漏电流。

3: 负电流定义为引脚的拉电流。

dsPIC33FJ12GP201/202

DS70264A_CN 第 200 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-10: 直流特性:I/O 引脚输出规范

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

VOL 输出低电压

DO10 I/O 端口 — — 0.4 V IOL = 2mA, VDD = 3.3VDO16 OSC2/CLKO — — 0.4 V IOL = 2mA, VDD = 3.3V

VOH 输出高电压

DO20 I/O 端口 2.40 — — V IOH = -2.3 mA, VDD = 3.3VDO26 OSC2/CLKO 2.41 — — V IOH = 1.3 mA, VDD = 3.3V

表 21-11: 电气特性:BOR

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

BO10 VBOR 当 VDD 从高电压翻转至低电压时的BOR 事件BOR 事件与 VDD 内核电压下降关联

2.40 — 2.55 V

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 201 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-13: 内部稳压器规范

表 21-12: 直流特性:程序存储器

直流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

闪存程序存储器

D130 EP 单元耐擦写能力 10,000 — — E/W -40°C 至 +125°CD131 VPR 读操作时的 VDD VMIN — 3.6 V Vmin = 小工作电压

D132B VPEW 自定时写的 VDD VMIN — 3.6 V Vmin = 小工作电压

D133A TIW 自定时写周期时间 — 1.5 — msD134 TRETD 特性保持时间 20 — — 年 假设没有违反其他规范(-40°C

至 +125°C)

D135 IDDP 编程时的供电电流 — 10 — mAD136 TRW 行写入时间 — 1.6 — msD137 TPE 页擦除时间 — 20 — msD138 TWW 字写周期 20 — 40 µs

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

工作条件:-40°C < TA < +85°C (除非另外声明)

参数编号

符号 特性 小值 典型值 大值 单位 备注

CEFC 外部滤波器电容值 1 10 — µF 电容必须与一个低阻值的电阻 (< 5 欧姆)串联

dsPIC33FJ12GP201/202

DS70264A_CN 第 202 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

21.2 交流特性和时序参数 本节包含的信息说明了 dsPIC33FJ12GP201/202 系列器件的交流特性和时序参数。

表 21-14: 温度和电压规范——交流

图 21-1: 器件时序规范的负载条件

表 21-15: 输出引脚上的容性负载要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

工作电压 VDD 范围如第 21.0 节 “电气特性”中所介绍。

参数编号

符号 特性 小值 典型值 大值 单位 条件

DO50 COSC2 OSC2/SOSC2 引脚 — — 15 pF 当外部时钟用于驱动 OSC1时处于 XT 和 HS 模式下

DO56 CIO 所有 I/O 引脚和 OSC2 — — 50 pF EC 模式

DO58 CB SCLx 和 SDAx — — 400 pF 在 I2C™ 模式下

VDD/2

CL

RL

引脚

引脚

VSS

VSS

CL

RL = 464ΩCL = 50 pF (对于除 OSC2 外的所有引脚)

15 pF (对于 OSC2 输出)

负载条件 1——对于除 OSC2 外的所有引脚 负载条件 2——对于 OSC2

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 203 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-2: 外部时钟时序

表 21-16: 外部时钟时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

OS10 FIN 外部 CLKI 频率(外部时钟仅允许运行于 EC 和ECPLL 模式)

0.84

——

408

MHzMHz

ECECPLL

晶振频率 33

1010

—————

1010404033

MHzMHzMHzMHzkHz

XTXTPLLHSHSPLLSOSC

OS20 TOSC TOSC = 1/FOSC 12.5 — DC nsOS25 TCY 指令周期 (2) 25 — DC nsOS30 TosL,

TosH外部时钟输入 (OSC1)高电平或低电平时间

0.625 x TOSC — — ns EC

OS31 TosR,TosF

外部时钟输入 (OSC1)上升或下降时间

— — 20 ns EC

OS40 TckR CLKO 上升时间 (3) — 5.2 — nsOS41 TckF CLKO 下降时间 (3) — 5.2 — ns

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

2: 指令周期 (TCY)等于输入振荡器时基周期的两倍。所有规定值均为基于针对特定振荡器类型,器件在标准工作条件下执行代码时的特性数据。超出这些规定的限定值,可能导致振荡器运行不稳定和 / 或导致电流消耗超出预期值。所有器件在测试 “ 小”值时,都在 OSC1/CLKI 引脚连接了外部时钟。当使用了外部时钟输入时,所有器件的 “ 大”周期时间限制为“DC”(无时钟)。

3: 测量在 EC 模式下进行。在 OSC2 引脚上测量 CLKO 信号。

Q1 Q2 Q3 Q4

OSC1

CLKO

Q1 Q2 Q3 Q4

OS20

OS25OS30 OS30

OS40OS41

OS31 OS31

dsPIC33FJ12GP201/202

DS70264A_CN 第 204 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-17: PLL 时钟时序规范 (VDD = 3.0V 至 3.6V)

交流特性

标准工作条件:3.0V 至 3.6V (除非另外声明)

工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

OS50 FPLLI PLL 压控振荡器(VCO)的输入频率范围

0.8 — 8 MHz ECPLL、 HSPLL 和XTPLL 模式

OS51 FSYS 片上 VCO 系统频率 100 — 200 MHzOS52 TLOC PLL 起振时间(锁定时间) 0.9 1.5 3.1 msOS53 DCLK CLKO 稳定性 (抗抖动性) -3 0.5 3 % 在 100 ms 时间段内测量

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

表 21-18: 交流特性:内部 RC 精度

交流特性标准工作条件:3.0V 至 3.6V (除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

特性 小值 典型值 大值 单位 条件

频率为 7.3728 MHz 时的内部 FRC 精度 (1)

F20 FRC -1 — +1 % -40C ≤ TA ≤ +85°C VDD = 3.0-3.6VFRC -3 — +3 % -40C ≤ TA ≤ +125°C VDD = 3.0-3.6V

注 1: 频率在 25°C 和 3.3V 条件下校准。 TUN 位可用来补偿温度漂移。

表 21-19: 内部 RC 精度

交流特性

标准工作条件:3.0V 至 3.6V (除非另外声明)

工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

特性 小值 典型值 大值 单位 条件

频率为 32.768 kHz 时的 LPRC(1)

F21 LPRC -1 — +1 % -40C ≤ TA ≤ +85°C VDD = 3.0-3.6VLPRC -3 — +3 % -40C ≤ TA ≤ +125°C VDD = 3.0-3.6V

注 1: LPRC 频率将随 VDD 的变化而变化。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 205 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-3: CLKO 和 I/O 时序特性

表 21-20: CLKO 和 I/O 时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

DO31 TIOR 端口输出上升时间 — 10 25 ns —DO32 TIOF 端口输出下降时间 — 10 25 ns —DI35 TINP INTx 引脚高电平或低电平时间 (输出) 20 — — ns —DI40 TRBP CNx 高电平或低电平时间 (输入) 2 — — TCY —

注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

注:负载条件请参见图 21-1。

I/O 引脚(输入)

I/O 引脚(输出)

DI35

旧值 新值

DI40

DO31DO32

dsPIC33FJ12GP201/202

DS70264A_CN 第 206 页 超前信息 2007 Microchip Technology Inc.

图 21-4: 复位、看门狗定时器、振荡器起振定时器和上电延时定时器时序特性

超 前

信 息

VDD

MCLR

内部POR

PWRT延时

OSC延时

内部复位

看门狗定时器

复位

SY11

SY10

SY20SY13

I/O 引脚

SY13

注:负载条件请参见图 21-1。

FSCM 延时

SY35

SY30

SY12

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 207 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-21: 复位、看门狗定时器、振荡器起振定时器和上电延时定时器时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 (2) 大值 单位 条件

SY10 TMCL MCLR 脉冲宽度 (低电平) 2 — — µs -40°C 至 +85°CSY11 TPWRT 上电延时定时器周期 — 2

48

163264

128

— ms -40°C 至 +85°C用户可编程

SY12 TPOR 上电复位延时 3 10 30 µs -40°C 至 +85°CSY13 TIOZ 自 MCLR 低电平或看门狗定时器

复位起 I/O 处于高阻态的时间

0.68 0.72 1.2 µs

SY20 TWDT1 看门狗定时器超时周期(无预分频器)

1.9 2.1 2.3 ms VDD = 3V, -40°C 至+85°C

SY30 TOST 振荡器起振定时器周期 — 1024 TOSC — — TOSC = OSC1 周期

SY35 TFSCM 故障保护时钟监视器延时 — 500 900 µs -40°C 至 +85°C注 1: 这些参数为特性值,但生产时未经测试。

2: 除非另外声明,否则 “典型值”栏中的数据均为 5V 和 25°C 条件下的值。

dsPIC33FJ12GP201/202

DS70264A_CN 第 208 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

图 21-5: TIMER1、 TIMER2 和 TIMER3 外部时钟时序特性

表 21-22: TIMER1 外部时钟时序要求 (1)

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

TA10 TTXH TxCK 高电平时间 同步,无预分频器

0.5 TCY + 20 — — ns 也必须满足参数 TA15

同步,带预分频器

10 — — ns

异步 10 — — nsTA11 TTXL TxCK 低电平时间 同步,

无预分频器

0.5 TCY + 20 — — ns 也必须满足参数 TA15

同步,带预分频器

10 — — ns

异步 10 — — nsTA15 TTXP TxCK 输入周期 同步,

无预分频器

TCY + 10 — — ns

同步,带预分频器

取如下二者中较大值:20 ns 或

(TCY + 40)/N

— — — N = 预分频值(1, 8, 64, 256)

异步 20 — — nsOS60 Ft1 SOSC1/T1CK 振荡器输入频率范围

(通过置 1 TCS (T1CON<1>)使能振荡器)

DC — 50 kHz

TA20 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递增之间的延时

0.5 TCY 1.5 TCY —

注 1: Timer1 属于 A 类定时器。

注:负载条件请参见图 21-1。

Tx11

Tx15

Tx10

Tx20

TMRxOS60

TxCK

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 209 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-23: TIMER2 外部时钟时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

TB10 TtxH TxCK 高电平时间 同步,无预分频器

0.5 TCY + 20 — — ns 也必须满足参数TB15

同步,带预分频器

10 — — ns

TB11 TtxL TxCK 低电平时间 同步,无预分频器

0.5 TCY + 20 — — ns 也必须满足参数TB15

同步,带预分频器

10 — — ns

TB15 TtxP TxCK 输入周期 同步,无预分频器

TCY + 10 — — ns N = 预分频值(1, 8, 64, 256)

同步,带预分频器

取如下二者中较大值:20 ns 或

(TCY + 40)/NTB20 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递

增之间的延时

0.5 TCY — 1.5 TCY —

表 21-24: TIMER3 外部时钟时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

TC10 TtxH TxCK 高电平时间 同步 0.5 TCY + 20 — — ns 也必须满足参数TC15

TC11 TtxL TxCK 低电平时间 同步 0.5 TCY + 20 — — ns 也必须满足参数TC15

TC15 TtxP TxCK 输入周期 同步,无预分频器

TCY + 10 — — ns N = 预分频值(1, 8, 64, 256)

同步,带预分频器

取如下二者中较大值:20 ns 或

(TCY + 40)/NTC20 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递

增之间的延时

0.5 TCY — 1.5 TCY

dsPIC33FJ12GP201/202

DS70264A_CN 第 210 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

图 21-6: 输入捕捉 (CAPx)时序特性

图 21-7: 输出比较模块 (OCx)时序特性

表 21-25: 输入捕捉时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 大值 单位 条件

IC10 TccL ICx 输入低电平时间 无预分频器 0.5 TCY + 20 — ns

带预分频器 10 — nsIC11 TccH ICx 输入高电平时间 无预分频器 0.5 TCY + 20 — ns

带预分频器 10 — nsIC15 TccP ICx 输入周期 (2 TCY + 40)/N — ns N = 预分频值

(1、 4 或 16)注 1: 这些参数为特性值,但生产时未经测试。

表 21-26: 输出比较模块时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 大值 单位 条件

OC10 TccF OCx 输出下降时间 — — — ns 见参数 D032OC11 TccR OCx 输出上升时间 — — — ns 见参数 D031

注 1: 这些参数为特性值,但生产时未经测试。

ICx

IC10 IC11

IC15

注:负载条件请参见图 21-1。

OCx

OC11 OC10(输出比较

注:负载条件请参见图 21-1。

或 PWM 模式)

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 211 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-8: 输出比较 /PWM 模块时序特性

表 21-27: 简单输出比较 /PWM 模式时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 大值 单位 条件

OC15 TFD 故障输入到 PWM I/O 发生变化的时间

— — 50 ns —

OC20 TFLT 故障输入脉冲宽度 50 — — ns —

注 1: 这些参数为特性值,但生产时未经测试。

OCFA/OCFB

OCx

OC20

OC15

dsPIC33FJ12GP201/202

DS70264A_CN 第 212 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

图 21-9: SPIx 模块主模式 (CKE = 0)时序特性

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDIx

SP11 SP10

SP40 SP41

SP21SP20SP35

SP20SP21

MSb LSbBit 14 - - - - - -1

MSb 输入 LSb 输入Bit 14 - - - -1

SP30SP31

注:负载条件请参见图 21-1。

表 21-28: SPIx 主模式 (CKE = 0)时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 (2) 大值 单位 条件

SP10 TscL SCKx 输出低电平时间 (3) TCY/2 — — ns —SP11 TscH SCKx 输出高电平时间 (3) TCY/2 — — ns —SP20 TscF SCKx 输出下降时间 (4) — — — ns 见参数 D032SP21 TscR SCKx 输出上升时间 (4) — — — ns 见参数 D031SP30 TdoF SDOx 数据输出下降时间 (4) — — — ns 见参数 D032SP31 TdoR SDOx 数据输出上升时间 (4) — — — ns 见参数 D031SP35 TscH2doV,

TscL2doV在 SCKx 边沿之后 SDOx 数据输出有效的时间

— 6 20 ns —

SP40 TdiV2scH,TdiV2scL

SDIx 数据输入到 SCKx 边沿的建立时间

23 — — ns —

SP41 TscH2diL,TscL2diL

SDIx 数据输入到 SCKx 边沿的保持时间

30 — — ns —

注 1: 这些参数为特性值,但生产时未经测试。

2: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

3: SCKx 的 小时钟周期为 100 ns。因此,主模式下产生的时钟不应违反此规范。

4: 假定所有 SPIx 引脚上的负载均为 50 pF。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 213 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-10: SPIx 模块主模式 (CKE = 1)时序特性

表 21-29: SPIx 模块主模式 (CKE = 1)时序要求

SCKX(CKP = 0)

SCKX(CKP = 1)

SDOX

SDIX

SP36

SP30,SP31

SP35

MSb

MSb 输入

Bit 14 - - - - - -1

LSb 输入Bit 14 - - - -1

LSb

注:负载条件请参见图 21-1。

SP11 SP10 SP20SP21

SP21SP20

SP40

SP41

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 (2) 大值 单位 条件

SP10 TscL SCKx 输出低电平时间 (3) TCY/2 — — ns —SP11 TscH SCKx 输出高电平时间 (3) TCY/2 — — ns —SP20 TscF SCKx 输出下降时间 (4) — — — ns 见参数 D032SP21 TscR SCKx 输出上升时间 (4) — — — ns 见参数 D031SP30 TdoF SDOx 数据输出下降时间 (4) — — — ns 见参数 D032SP31 TdoR SDOx 数据输出上升时间 (4) — — — ns 见参数 D031SP35 TscH2doV,

TscL2doV在 SCKx 边沿之后 SDOx 数据输出有效的时间

— 6 20 ns —

SP36 TdoV2sc,TdoV2scL

SDOx 数据输出建立到出现第一个 SCKx 边沿的时间

30 — — ns —

SP40 TdiV2scH,TdiV2scL

SDIx 数据输入到 SCKx 边沿的建立时间

23 — — ns —

SP41 TscH2diL,TscL2diL

SDIx 数据输入到 SCKx 边沿的保持时间

30 — — ns —

注 1: 这些参数为特性值,但生产时未经测试。

2: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

3: SCKx 的 小时钟周期为 100 ns。主模式下产生的时钟不应违反此规范。

4: 假定所有 SPIx 引脚上的负载均为 50 pF。

dsPIC33FJ12GP201/202

DS70264A_CN 第 214 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

图 21-11: SPIx 模块从模式 (CKE = 0)时序特性

SSX

SCKX(CKP = 0)

SCKX(CKP = 1)

SDOX

SP50

SP40SP41

SP30,SP31 SP51

SP35

MSb LSbBit 14 - - - - - -1

MSb 输入 Bit 14 - - - -1 LSb 输入

SP52

SP73SP72

SP72SP73SP71 SP70

注:负载条件请参见图 21-1。

SDIX

表 21-30: SPIx 模块从模式 (CKE = 0)时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 (2) 大值 单位 条件

SP70 TscL SCKx 输入低电平时间 30 — — ns —SP71 TscH SCKx 输入高电平时间 30 — — ns —SP72 TscF SCKx 输入下降时间 (3) — 10 25 ns —SP73 TscR SCKx 输入上升时间 (3) — 10 25 ns —SP30 TdoF SDOx 数据输出下降时间 (3) — — — ns 见参数 D032SP31 TdoR SDOx 数据输出上升时间 (3) — — — ns 见参数 D031SP35 TscH2doV,

TscL2doV在 SCKx 边沿之后 SDOx 数据输出有效的时间

— — 30 ns —

SP40 TdiV2scH,TdiV2scL

SDIx 数据输入到 SCKx 边沿的建立时间

20 — — ns —

SP41 TscH2diL,TscL2diL

SDIx 数据输入到 SCKx 边沿的保持时间

20 — — ns —

SP50 TssL2scH,TssL2scL

SSx ↓ 到 SCKx ↑ 或 SCKx 输入的时间

120 — — ns —

SP51 TssH2doZ SSx ↑ 到 SDOx 输出高阻态的时间 (3)

10 — 50 ns —

SP52 TscH2ssHTscL2ssH

SCKx 边沿后 SSx 有效的时间 1.5 TCY +40

— — ns —

注 1: 这些参数为特性值,但生产时未经测试。

2: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。 3: 假定所有 SPIx 引脚上的负载均为 50 pF。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 215 页

dsPIC33FJ12GP201/202

图 21-12: SPIx 模块从模式 (CKE = 1)时序特性

超 前

信 息

SSx

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDI

SP50

SP60

SDIx

SP30,SP31

MSb Bit 14 - - - - - -1 LSb

SP51

MSb 输入 Bit 14 - - - -1 LSb 输入

SP35

SP52

SP52

SP73SP72

SP72SP73SP71 SP70

SP40SP41

注:负载条件请参见图 21-1。

dsPIC33FJ12GP201/202

DS70264A_CN 第 216 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-31: SPIx 模块从模式 (CKE = 1)时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 (1) 小值 典型值 (2) 大值 单位 条件

SP70 TscL SCKx 输入低电平时间 30 — — ns —SP71 TscH SCKx 输入高电平时间 30 — — ns —SP72 TscF SCKx 输入下降时间 (3) — 10 25 ns —SP73 TscR SCKx 输入上升时间 (3) — 10 25 ns —SP30 TdoF SDOx 数据输出下降时间 (3) — — — ns 见参数 D032SP31 TdoR SDOx 数据输出上升时间 (3) — — — ns 见参数 D031SP35 TscH2doV,

TscL2doV在 SCKx 边沿之后 SDOx 数据输出有效的时间

— — 30 ns —

SP40 TdiV2scH,TdiV2scL

SDIx 数据输入到 SCKx 边沿的建立时间

20 — — ns —

SP41 TscH2diL,TscL2diL

SDIx 数据输入到 SCKx 边沿的保持时间

20 — — ns —

SP50 TssL2scH,TssL2scL

SSx ↓ 到 SCKx ↓ 或 SCKx ↑ 输入的时间

120 — — ns —

SP51 TssH2doZ SSx ↑ 到 SDOX 输出高阻态的时间 (4)

10 — 50 ns —

SP52 TscH2ssHTscL2ssH

SCKx 边沿后 SSx ↑ 有效的时间 1.5 TCY + 40 — — ns —

SP60 TssL2doV 在 SSx 边沿之后 SDOx 数据输出有效的时间

— — 50 ns —

注 1: 这些参数为特性值,但生产时未经测试。

2: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V 和 25°C 条件下的值。

3: SCKx 的 小时钟周期为 100 ns。主模式下产生的时钟不应违反此规范。

4: 假定所有 SPIx 引脚上的负载均为 50 pF。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 217 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-13: I2Cx 总线启动位 / 停止位时序特性 (主模式)

图 21-14: I2Cx 总线数据时序特性 (主模式)

IM31 IM34SCLx

SDAx

启动条件 停止条件

IM30 IM33

注:负载条件请参见图 21-1。

IM11IM10 IM33

IM11IM10

IM20

IM26IM25

IM40 IM40 IM45

IM21

SCLx

SDAx输入

SDAx输出

注:负载条件请参见图 21-1。

dsPIC33FJ12GP201/202

DS70264A_CN 第 218 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-32: I2Cx 总线数据时序要求 (主模式)

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 (1) 大值 单位 条件

IM10 TLO:SCL 时钟低电平时间 100 kHz 模式 TCY/2 (BRG + 1) — µs —

400 kHz 模式 TCY/2 (BRG + 1) — µs —

1 MHz 模式 (2) TCY/2 (BRG + 1) — µs —IM11 THI:SCL 时钟高电平时间 100 kHz 模式 TCY/2 (BRG + 1) — µs —

400 kHz 模式 TCY/2 (BRG + 1) — µs —

1 MHz 模式 (2) TCY/2 (BRG + 1) — µs —IM20 TF:SCL SDAx 和 SCLx

下降时间100 kHz 模式 — 300 ns CB 值规定在 10 至

400 pF 之间400 kHz 模式 20 + 0.1 CB 300 ns

1 MHz 模式 (2) — 100 nsIM21 TR:SCL SDAx 和 SCLx

上升时间100 kHz 模式 — 1000 ns CB 值规定在 10 至

400 pF 之间400 kHz 模式 20 + 0.1 CB 300 ns

1 MHz 模式 (2) — 300 nsIM25 TSU:DAT 数据输入

建立时间100 kHz 模式 250 — ns —

400 kHz 模式 100 — ns

1 MHz 模式 (2) 40 — nsIM26 THD:DAT 数据输入

保持时间100 kHz 模式 0 — µs —

400 kHz 模式 0 0.9 µs

1 MHz 模式 (2) 0.2 — µsIM30 TSU:STA 启动条件

建立时间100 kHz 模式 TCY/2 (BRG + 1) — µs 仅与重复启动条件相关

400 kHz 模式 TCY/2 (BRG + 1) — µs

1 MHz 模式 (2) TCY/2 (BRG + 1) — µsIM31 THD:STA 启动条件

保持时间100 kHz 模式 TCY/2 (BRG + 1) — µs 这个周期后产生第一个

时钟脉冲400 kHz 模式 TCY/2 (BRG + 1) — µs

1 MHz 模式 (2) TCY/2 (BRG + 1) — µsIM33 TSU:STO 停止条件

建立时间100 kHz 模式 TCY/2 (BRG + 1) — µs —

400 kHz 模式 TCY/2 (BRG + 1) — µs

1 MHz 模式 (2) TCY/2 (BRG + 1) — µsIM34 THD:STO 停止条件 100 kHz 模式 TCY/2 (BRG + 1) — ns —

保持时间 400 kHz 模式 TCY/2 (BRG + 1) — ns

1 MHz 模式 (2) TCY/2 (BRG + 1) — nsIM40 TAA:SCL 自时钟边沿到输

出有效的时间100 kHz 模式 — 3500 ns —

400 kHz 模式 — 1000 ns —

1 MHz 模式 (2) — 400 ns —IM45 TBF:SDA 总线空闲时间 100 kHz 模式 4.7 — µs 在启动一个新的传输

前总线必须保持空闲的时间

400 kHz 模式 1.3 — µs

1 MHz 模式 (2) 0.5 — µsIM50 CB 总线容性负载 — 400 pF

注 1: BRG 为 I2C 波特率发生器的值。请参见《dsPIC33F 系列参考手册》中的第 19 章 “I2C™”。请参见Microchip 网站 (www.microchip.com)了解 新的 《dsPIC33F 系列参考手册》章节。

2: 所有 I2Cx 引脚的 大引脚电容为 10 pF (仅对于 1 MHz 模式)。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 219 页

dsPIC33FJ12GP201/202

超 前

信 息

图 21-15: I2Cx 总线启动位 / 停止位时序特性 (从模式)

图 21-16: I2Cx 总线数据时序特性 (从模式)

IS31 IS34SCLx

SDAx

启动条件 停止条件

IS30 IS33

IS30IS31 IS33

IS11

IS10

IS20

IS26IS25

IS40 IS40 IS45

IS21

SCLx

SDAx输入

SDAx输出

dsPIC33FJ12GP201/202

DS70264A_CN 第 220 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-33: I2Cx 总线数据时序要求 (从模式)

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数 符号 特性 小值 大值 单位 条件

IS10 TLO:SCL 时钟低电平时间 100 kHz 模式 4.7 — µs 器件工作频率不得低于 1.5 MHz400 kHz 模式 1.3 — µs 器件工作频率不得低于 10 MHz1 MHz 模式 (1) 0.5 — µs —

IS11 THI:SCL 时钟高电平时间 100 kHz 模式 4.0 — µs 器件工作频率不得低于 1.5 MHz400 kHz 模式 0.6 — µs 器件工作频率不得低于 10 MHz1 MHz 模式 (1) 0.5 — µs —

IS20 TF:SCL SDAx 和 SCLx下降时间

100 kHz 模式 — 300 ns CB 值规定在 10 至 400 pF 之间

400 kHz 模式 20 + 0.1 CB 300 ns

1 MHz 模式 (1) — 100 nsIS21 TR:SCL SDAx 和 SCLx

上升时间100 kHz 模式 — 1000 ns CB 值规定在 10 至 400 pF 之间

400 kHz 模式 20 + 0.1 CB 300 ns

1 MHz 模式 (1) — 300 nsIS25 TSU:DAT 数据输入

建立时间100 kHz 模式 250 — ns —

400 kHz 模式 100 — ns

1 MHz 模式 (1) 100 — nsIS26 THD:DAT 数据输入

保持时间100 kHz 模式 0 0 µs —

400 kHz 模式 0 0.9 µs

1 MHz 模式 (1) 0 0.3 µsIS30 TSU:STA 启动条件

建立时间100 kHz 模式 4.7 — µs 仅与重复启动条件相关

400 kHz 模式 0.6 — µs

1 MHz 模式 (1) 0.25 — µsIS31 THD:STA 启动条件

保持时间100 kHz 模式 4.0 — µs 这个周期后产生第一个时钟脉冲

400 kHz 模式 0.6 — µs

1 MHz 模式 (1) 0.25 — µsIS33 TSU:STO 停止条件

建立时间100 kHz 模式 4.7 — µs —

400 kHz 模式 0.6 — µs

1 MHz 模式 (1) 0.6 — µsIS34 THD:STO 停止条件

保持时间100 kHz 模式 4000 — ns —

400 kHz 模式 600 — ns

1 MHz 模式 (1) 250 nsIS40 TAA:SCL 自时钟边沿到输

出有效的时间100 kHz 模式 0 3500 ns —

400 kHz 模式 0 1000 ns

1 MHz 模式 (1) 0 350 nsIS45 TBF:SDA 总线空闲时间 100 kHz 模式 4.7 — µs 在启动一个新的传输前总线必

须保持空闲的时间400 kHz 模式 1.3 — µs

1 MHz 模式 (1) 0.5 — µsIS50 CB 总线容性负载 — 400 pF —

注 1: 所有 I2Cx 引脚的 大引脚电容为 10 pF (仅对于 1 MHz 模式)。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 221 页

dsPIC33FJ12GP201/202

超 前

信 息

表 21-34: ADC 模块规范

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

器件电源

AD01 AVDD 模块电源 VDD VDD – 0.3和 3.0 中的较大值

— VDD + 0.3和 3.6 中的较小值

V —

AD02 AVSS 模块电源 VSS VSS – 0.3 — VSS + 0.3 V —

参考输入 AD05 VREFH 参考电压高电平 AVSS + 1.7 — AVDD V —AD06 VREFL 参考电压低电平 AVSS — AVDD – 1.7 V —AD07 VREF 绝对参考电压 AVSS – 0.3 — AVDD + 0.3 V —AD08 IREF 电流消耗 — 400

.0016001

µAµA

ADC 工作ADC 关闭

模拟输入

AD10 VINH-VINL 满量程输入范围 VREFL VREFH V 见 “注”

AD11 VIN 绝对输入电压 AVSS AVDD V —AD13 — 泄漏电流 — 0.5 3.5 µA VINL = AVSS = VREFL = 0V,

AVDD = VREFH = 3.6VAD17 RIN 模拟输入信号源的

推荐阻抗

— — 200200

ΩΩ

10 位12 位

ADC 精度 (12 位模式) (2)

AD20a Nr 分辨率 12 个数据位 位

AD21a INL 积分非线性误差 -2 — 2 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD22a DNL 微分非线性误差 >-1 — <1 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD23a GERR 增益误差 1 2 5 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD24a EOFF 失调误差 1 2 3 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD25a — 单调性 (1) — — — — 保证

注 1: ADC 转换结果不会因输入电压的增加而减小,并且不会丢失编码。

2: 测量采用外部 VREF+ 和 VREF- 用作 ADC 参考电压。

3: 测量采用内部 VREF+ 和 VREF- 用作 ADC 参考电压。

dsPIC33FJ12GP201/202

DS70264A_CN 第 222 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

ADC 精度 (12 位模式) (3)

AD20a Nr 分辨率 12 个数据位 位

AD21a INL 积分非线性误差 -2 — 2 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD22a DNL 微分非线性误差 >-1 — <1 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD23a GERR 增益误差 2 3 7 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD24a EOFF 失调误差 2 3 5 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD25a — 单调性 (1) — — — — 保证

动态性能 (12 位模式)

AD30a THD 总谐波失真 -77 -69 -61 dB —AD31a SINAD 信噪比和失真 59 63 64 dB —AD32a SFDR 无杂散动态范围 63 72 79 dB —AD33a FNYQ 输入信号带宽 — — 250 kHz —AD34a ENOB 有效位数 10.3 10.4 10.5 位 —

表 21-34: ADC 模块规范 (续)

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

注 1: ADC 转换结果不会因输入电压的增加而减小,并且不会丢失编码。

2: 测量采用外部 VREF+ 和 VREF- 用作 ADC 参考电压。

3: 测量采用内部 VREF+ 和 VREF- 用作 ADC 参考电压。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 223 页

dsPIC33FJ12GP201/202

超 前

信 息

ADC 精度 (10 位模式) (2)

AD20b Nr 分辨率 10 个数据位 位

AD21b INL 积分非线性误差 -2 — 2 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD22b DNL 微分非线性误差 >-1 — <1 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD23b GERR 增益误差 1 3 6 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD24b EOFF 失调误差 1 2 5 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD25b — 单调性 (1) — — — — 保证

ADC 精度 (10 位模式) (3)

AD20b Nr 分辨率 10 个数据位 位

AD21b INL 积分非线性误差 -2 — 2 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD22b DNL 微分非线性误差 >-1 — <1 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD23b GERR 增益误差 1 4 8 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD24b EOFF 失调误差 2 3 6 LSb VINL = AVSS = VREFL = 0V,AVDD = VREFH = 3.6V

AD25b — 单调性 (1) — — — — 保证

动态性能 (10 位模式)

AD30b THD 总谐波失真 -71 -68 -55 dB —AD31b SINAD 信噪比和失真 53 60 61 dB —AD32b SFDR 无杂散动态范围 55 71 76 dB —AD33b FNYQ 输入信号带宽 — — 550 kHz —AD34b ENOB 有效位数 9.1 9.7 9.8 位 —

表 21-34: ADC 模块规范 (续)

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

注 1: ADC 转换结果不会因输入电压的增加而减小,并且不会丢失编码。

2: 测量采用外部 VREF+ 和 VREF- 用作 ADC 参考电压。

3: 测量采用内部 VREF+ 和 VREF- 用作 ADC 参考电压。

dsPIC33FJ12GP201/202

DS70264A_CN 第 224 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

图 21-17: ADC 转换 (12 位模式)时序特性(ASAM = 0, SSRC<2:0> = 000)

表 21-35: ADC 转换 (12 位模式)时序要求

AD55TSAMP

清零 SAMP置 1 SAMP

AD61

ADCLK

指令

SAMP

AD60

DONE

ADxIF

1 2 3 4 5 6 87

1 – 软件置 1 ADxCON.SAMP 以启动采样。

2 – 采样在放电周期之后启动。TSAMP 在

3 – 软件清零 ADxCON.SAMP 以启动转换。

4 – 采样结束,转换过程启动。

5 – 转换 bit 11。

9 – 转换结束的一个 TAD。

AD50

9

6 – 转换 bit 10。

7 – 转换 bit 1。

8 – 转换 bit 0。

执行

《DSPIC33F 系列参考手册》的第 16 章“具有 DMA 的 10/12 位 ADC”中进行介绍。请参见 Microchip 网站了解 新的《dsPIC33F系列参考手册》章节。

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 大值 单位 条件

时钟参数 (1)

AD50 TAD ADC 时钟周期 142.85 — — nsAD51 tRC ADC 内部 RC 振荡器周期 — 250 — ns

转换速率

AD55 tCONV 转换时间 — 14 TAD nsAD56 FCNV 吞吐率 — — 500 KspsAD57 TSAMP 采样时间 3 TAD — — —

时序参数

AD60 tPCS 从触发采样到启动转换的时间 (2) — 1.0 TAD — — 未选择自动转换触发

AD61 tPSS 从采样位 (SAMP)置 1 到采样启动的时间 (2)

0.5 TAD — 1.5 TAD — —

AD62 tCSS 转换结束到采样启动(ASAM = 1)的时间 (2)

— 0.5 TAD — — —

AD63 tDPU 从 ADC 关闭到 ADC 开启,用于稳定模拟级的时间 (2)

1 — 5 µs —

注 1: 因为采样电容 终将无法保持电荷,因此低于 10 kHz 的时钟频率可能影响线性性能,尤其是在温度较高时。

2: 这些参数为特性值,但生产时未经测试。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 225 页

dsPIC33FJ12GP201/202

图 21-18: ADC 转换 (10 位模式)时序特性(CHPS<1:0> = 01, SIMSAM = 0, ASAM = 0, SSRC<2:0> = 000)

图 21-19: ADC 转换(10 位模式)时序特性(CHPS<1:0> = 01, SIMSAM = 0, ASAM = 1,SSRC<2:0> = 111, SAMC<4:0> = 00001)

超 前

信 息

AD55TSAMP

清零 SAMP置 1 SAMP

AD61

ADCLK指令

SAMP

AD60

DONE

ADxIF

Buffer(0)

Buffer(1)

1 2 3 4 5 6 8 5 6 7

1 – 软件置 1 ADxCON.SAMP 以启动采样。

2 – 采样在放电周期之后启动。TSAMP 在 《dsPIC33F 系列参考手册》的第 16 章

3 – 软件清零 ADxCON.SAMP 以启动转换。

4 – 采样结束,转换过程启动。

5 – 转换 bit 9。

8 – 转换结束的一个 TAD。

AD50

7

AD55

8

6 – 转换 bit 8。

7 – 转换 bit 0。

执行

“具有 DMA 的 10/12 位 ADC”中进行介绍。请参见 Microchip 网站了解 新的 《dsPIC33F 系列参考手册》章节。

1 2 3 4 5 6 4 5 6 8

1 – 软件置 1 ADxCON.ADON,使 AD 开始工作。

2 – 采样在放电周期之后启动。

3 – 转换 bit 9。

4 – 转换 bit 8。

5 – 转换 bit 0。

7 3

6 – 转换结束的一个 TAD。

7 – 开始下一个通道的转换。

8 – 采样时间由 SAMC<4:0> 指定。

TSAMP 在《dsPIC33F 系列参考手册》的第 16 章

ADCLK

指令置 1 ADON

执行

SAMPTSAMP

ADxIF

DONE

AD55 AD55 TSAMP AD55

AD50

“具有 DMA 的 10/12 位 ADC”中进行介绍。请参见 Microchip 网站了解 新的《dsPIC33F系列参考手册》章节。

dsPIC33FJ12GP201/202

DS70264A_CN 第 226 页 超前信息 2007 Microchip Technology Inc.

超 前

信 息

表 21-36: ADC 转换 (10 位模式)时序要求

交流特性

标准工作条件:3.0V 至 3.6V(除非另外声明)工作温度 -40°C ≤ TA ≤ +85°C (工业级)

-40°C ≤ TA ≤ +125°C (扩展级)

参数编号

符号 特性 小值 典型值 (1) 大值 单位 条件

时钟参数 (2)

AD50 TAD ADC 时钟周期 75.76 — — nsAD51 tRC ADC 内部 RC 振荡器周期 — 250 — ns

转换速率

AD55 tCONV 转换时间 — 12 TAD — —AD56 FCNV 吞吐率 — — 1.1 MspsAD57 TSAMP 采样时间 3 TAD — — —

时序参数

AD60 tPCS 从采样触发到转换开始的时间 (1) — 1.0 TAD — — 未选择自动转换触发(SSRC<2:0> = 111)

AD61 tPSS 从采样位 (SAMP)置 1 到采样启动的时间 (1)

0.5 TAD — 1.5 TAD — —

AD62 tCSS 转换结束到采样启动 (ASAM = 1)的时间 (1)

— 0.5 TAD — — —

AD63 tDPU 从 ADC 关闭到 ADC 开启,用于稳定模拟级的时间 (1)

1 — 5 µs —

注 1: 这些参数为特性值,但生产时未经测试。

2: 因为采样电容 终将放电,低于 10 kHz 的时钟速率可能影响线性性能,尤其在温度较高时。

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 227 页

dsPIC33FJ12GP201/202

22.0 封装信息

22.1 封装标识信息

图注: XX...X 客户信息Y 年份代码(日历年的 后一位数字)YY 年份代码(日历年的 后两位数字)WW 星期代码(1 月 1 日的星期代码为 “01”)NNN 以字母数字排序的追踪代码 雾锡(Matte Tin, Sn)的 JEDEC 无铅标志* 表示无铅封装。 JEDEC 无铅标志( )标示于此种封装的外包装上。

注: Microchip 元器件编号如果无法在同一行内完整标注,将换行标出。因此会限制表示客户信息的字符数。

3e

3e

18 引脚 PDIP

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

示例

dsPIC33FJ12GP

0730235

28 引脚 SPDIP

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

示例

dsPIC33FJ12GP

0730235

18 引脚 SOIC

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

示例

dsPIC33FJ12GP201-E/SO

0730235

28 引脚 SOIC(0.300 英寸)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

示例

dsPIC33FJ12GP

0730235

28 引脚 QFN

XXXXXXXXXXXXXXXXYYWWNNN

示例

33FJ12GP202-E/ML0730235

201-E/P

202-E/SP

202-E/SO

3e

3e

3e

3e

3e

dsPIC33FJ12GP201/202

DS70264A_CN 第 228 页 超前信息 2007 Microchip Technology Inc.

22.2 封装详细信息

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 229 页

dsPIC33FJ12GP201/202

dsPIC33FJ12GP201/202

DS70264A_CN 第 230 页 超前信息 2007 Microchip Technology Inc.

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 231 页

dsPIC33FJ12GP201/202

dsPIC33FJ12GP201/202

DS70264A_CN 第 232 页 超前信息 2007 Microchip Technology Inc.

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 233 页

dsPIC33FJ12GP201/202

附录 A: 版本历史

版本 A (2007 年 1 月)

本文档的第一版

dsPIC33FJ12GP201/202

DS70264A_CN 第 234 页 超前信息 2007 Microchip Technology Inc.

注:

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 235 页

dsPIC33FJ12GP201/202

索引

AA/D 转换器 ........................................................................ 161

初始化 ....................................................................... 161主要特性.................................................................... 161

ADC 模块

ADC1 寄存器映射 ................................................. 34, 35

B备用向量表 (AIVT)........................................................... 59变更通知客户服务 ............................................................. 239

CCPU

控制寄存器 .................................................................. 14CPU 的特殊功能................................................................ 173CPU 时钟系统 ..................................................................... 88

选择 ............................................................................. 88C 编译器

MPLAB C18 .............................................................. 190MPLAB C30 .............................................................. 190

操作码说明中使用的符号 .................................................. 182程序存储器

复位向量...................................................................... 24构成 ............................................................................. 24中断向量...................................................................... 24

程序地址空间 ...................................................................... 23表读指令

TBLRDH ............................................................. 45TBLRDL .............................................................. 45

存储器映射 .................................................................. 23构成 ............................................................................. 43可视性操作 .................................................................. 46使用表指令访问程序存储器中的数据 .......................... 45使用程序空间可视性访问程序存储器中的数据 ............ 46访问程序空间内数据的地址生成方式 .......................... 44

串行外设接口 (SPI)....................................................... 135存储器构成 .......................................................................... 23

DDSP 引擎............................................................................. 17

乘法器 ......................................................................... 19代码保护.................................................................... 173, 179代码示例

PWRSAV 指令语法 ..................................................... 97擦除程序存储器页 ....................................................... 51端口写 / 读................................................................. 100启动编程序列 .............................................................. 52装载写缓冲器 .............................................................. 52

电气特性............................................................................ 193AC ............................................................................. 202

读者反馈............................................................................ 240

FFSCM

晶振和 PLL 时钟源的延时 ........................................... 58器件复位...................................................................... 58

封装 ................................................................................... 227标识 ........................................................................... 227详细信息.................................................................... 228

复位 ..................................................................................... 53时间 ............................................................................. 57时钟源选择 .................................................................. 57特殊功能寄存器的复位状态 ......................................... 58

复位过程 ............................................................................. 59

G公式

A/D 转换时钟周期 ..................................................... 163UART 波特率 (BRGH = 0).................................... 154UART 波特率 (BRGH = 1).................................... 154串行时钟速率 ............................................................ 143计算 PWM 周期......................................................... 130计算 大 PWM 分辨率 .............................................. 130器件工作频率 .............................................................. 88器件工作频率和 SPI 时钟速度之间的关系 ................ 138

H红外支持

内置 IrDA 编码器和解码器 ........................................ 156外部 IrDA, IrDA 时钟输出 ....................................... 156

汇编器

MPASM 汇编器......................................................... 190

II/O 端口............................................................................... 99

并行 I/O (PIO)......................................................... 99写 / 读时序 ................................................................ 100

I2CIPMI 支持 .................................................................. 145波特率发生器 ............................................................ 143从地址掩码................................................................ 145地址 .......................................................................... 145工作模式 ................................................................... 143广播呼叫地址支持 ..................................................... 145寄存器 ....................................................................... 143软件控制的时钟延长 (STREN = 1)........................ 145斜率控制 ................................................................... 146中断 .......................................................................... 143主模式工作

多主器件通信、总线冲突和总线仲裁 ................ 146时钟仲裁 ........................................................... 146

I2C 模块

I2C1 寄存器映射 ......................................................... 32

JJTAG 边界扫描接口 .......................................................... 173寄存器

ADxCHS0 (ADCx 输入通道 0 选择)...................... 170ADxCHS123 (ADCx 输入通道 1、 2 和 3 选择).... 169ADxCON1 (ADCx 控制 1)..................................... 165ADxCON2 (ADCx 控制 2)..................................... 167ADxCON3 (ADCx 控制 3)..................................... 168ADxCSSL (ADCx 输入扫描选择寄存器的低位字). 171ADxPCFGL (ADCx 端口配置寄存器的低位字)...... 171CLKDIV (时钟分频比)............................................. 92CORCON (内核控制)........................................ 16, 64I2CxCON (I2Cx 控制)............................................ 147I2CxMSK (I2Cx 从模式地址掩码).......................... 151I2CxSTAT (I2Cx 状态).......................................... 149ICxCON (输入捕捉 x 控制).................................... 128IEC0 (中断允许控制 0)............................................ 72IEC1 (中断允许控制 0)............................................ 74IEC4 (中断允许控制 0)............................................ 75IFS0 (中断标志状态 0)............................................ 68IFS1 (中断标志状态 1)............................................ 70IFS4 (中断标志状态 4)............................................ 71INTCON1 (中断控制 1)........................................... 65

dsPIC33FJ12GP201/202

DS70264A_CN 第 236 页 超前信息 2007 Microchip Technology Inc.

INTCON2 (中断控制 2)............................................ 67INTTREG 中断控制和状态寄存器 ............................... 84IPC0 (中断优先级控制 0)......................................... 76IPC16 (中断优先级控制 16)..................................... 83IPC1 (中断优先级控制 1)......................................... 77IPC2 (中断优先级控制 2)......................................... 78IPC3 (中断优先级控制 3)......................................... 79IPC4 (中断优先级控制 4)......................................... 80IPC5 (中断优先级控制 5)......................................... 81IPC7 (中断优先级控制 7)......................................... 82NVMCON (非易失性存储器密钥)............................ 50NVMCON (闪存存储器控制).................................... 49OCxCON (输出比较 x 控制).................................. 133OSCCON (振荡器控制)........................................... 90OSCTUN (FRC 振荡器调节)................................... 94PLLFBD (PLL 反馈倍频比)...................................... 93RCON (复位控制).................................................... 55SPIxCON1 (SPIx 控制 1)....................................... 140SPIxCON2 (SPIx 控制 2)....................................... 142SPIxSTAT (SPIx 状态和控制)................................ 139SR (CPU 状态).................................................. 14, 64T1CON (Timer1 控制)........................................... 120T2CON 控制 .............................................................. 124T3CON 控制 .............................................................. 125UxMODE (UARTx 模式)........................................ 157UxSTA (UARTx 状态和控制)................................. 159

基于指令的节能模式 ............................................................ 97空闲 ............................................................................. 98休眠 ............................................................................. 97

交流特性............................................................................ 202负载条件.................................................................... 202内部 RC 精度............................................................. 204

节能特性.............................................................................. 97时钟频率和切换 ........................................................... 97

K开发支持............................................................................ 189看门狗定时器 (WDT)............................................. 173, 177

编程注意事项 ............................................................ 177勘误表 ................................................................................... 6客户通知服务..................................................................... 239客户支持............................................................................ 239框图

16 位 Timer1 模块 ..................................................... 119A/D 模块 .................................................................... 162dsPIC33FJ12GP201/202 .............................................. 8dsPIC33FJ12GP201/202 CPU 内核 ........................... 12dsPIC33FJ12GP201/202 PLL..................................... 89dsPIC33FJ12GP201/202 振荡器系统 ......................... 87DSP 引擎..................................................................... 18PLL.............................................................................. 89SPI ............................................................................ 136Timer2/3 (32 位).................................................... 122Timer2 (16 位)....................................................... 123UART ........................................................................ 153复位系统...................................................................... 54共用端口结构 .............................................................. 99看门狗定时器 (WDT)............................................. 178片上稳压器的连接 ..................................................... 176输出比较.................................................................... 132输入捕捉.................................................................... 127

L灵活的配置 ........................................................................ 173漏极开路配置..................................................................... 100

MMicrochip 因特网网站........................................................ 239MPLAB ASM30 汇编器、链接器和库管理器..................... 190MPLAB ICD 2 在线调试器................................................. 191MPLAB ICE 2000 高性能通用在线仿真器......................... 191MPLAB PM3 器件编程器 .................................................. 191MPLAB REAL ICE 在线仿真器系统 .................................. 191MPLAB 集成开发环境软件 ................................................ 189MPLINK 目标链接器 /MPLIB 目标库管理器 ...................... 190脉宽调制模式 .................................................................... 130模寻址 ................................................................................. 40

W 地址寄存器选择 ...................................................... 40操作示例 ..................................................................... 40起始地址和结束地址 ................................................... 40应用 ............................................................................ 41

NNVM 模块

寄存器映射.................................................................. 37内部 RC 振荡器

与 WDT 一起使用...................................................... 177

PPORTA

寄存器映射.................................................................. 36PORTB

寄存器映射.................................................................. 36PWM

占空比 ....................................................................... 130周期 .......................................................................... 130

PICSTART 2 开发编程器 .................................................. 192PICSTART Plus 开发编程器 ............................................. 192PMD 模块

寄存器映射.................................................................. 37POR 和长振荡器起振时间................................................... 58配置寄存器映射................................................................. 173配置模拟端口引脚 ............................................................. 100配置位 ............................................................................... 173

说明 (表)................................................................ 174

R软件堆栈指针,帧指针

CALL 堆栈帧 ............................................................... 38软件模拟器 (MPLAB SIM)............................................. 190

SSPI

从,帧从连接 ............................................................ 138从,帧主连接 ............................................................ 138主 / 从连接 ................................................................ 137主,帧主连接 ............................................................ 137

SPI 模块

SPI1 寄存器映射 ......................................................... 32闪存程序存储器................................................................... 47

RTSP 工作原理 ........................................................... 48编程算法 ..................................................................... 51表指令 ......................................................................... 47操作 ............................................................................ 48控制寄存器.................................................................. 48

设置产生单个输出脉冲 ...................................................... 129设置产生连续输出脉冲 ...................................................... 129时序规范

10 位 A/D 转换要求 ................................................... 22612 位 A/D 转换要求 ................................................... 224I2Cx 总线数据要求 (从模式).................................. 220I2Cx 总线数据要求 (主模式).................................. 218

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 237 页

dsPIC33FJ12GP201/202PLL 时钟 ................................................................... 204SPIx 从模式 (CKE = 0)要求 .................................. 214SPIx 从模式 (CKE = 1)要求 .................................. 216SPIx 主模式 (CKE = 0)要求 .................................. 212SPIx 主模式 (CKE = 1)要求 .................................. 213Timer2 外部时钟要求 ................................................ 209Timer3 外部时钟要求 ................................................ 209Timer1 外部时钟要求 ................................................ 208复位、看门狗定时器、振荡器起振定时器、

上电延时定时器和欠压复位要求 ....................... 207简单输出比较 /PWM 模式要求 .................................. 211输出比较要求 ............................................................ 210

时序特性

CLKO 和 I/O .............................................................. 205时序图

10 位 A/D 转换 .......................................................... 22510 位 A/D 转换 (CHPS = 01, SIMSAM = 0,

ASAM = 0, SSRC = 000).............................. 22512 位 A/D 转换 (ASAM = 0, SSRC = 000)..... 224I2Cx 总线启动位 / 停止位 (从模式)........................ 219I2Cx 总线启动位 / 停止位 (主模式)........................ 217I2Cx 总线数据 (从模式)......................................... 219I2Cx 总线数据 (主模式)......................................... 217SPIx 从模式 (CKE = 0).......................................... 214SPIx 从模式 (CKE = 1).......................................... 215SPIx 主模式 (CKE = 0).......................................... 212SPIx 主模式 (CKE = 1).......................................... 213Timer1、 Timer2 和 Timer3 外部时钟 ....................... 208复位、看门狗定时器、振荡器起振定时器

和上电延时定时器 ............................................. 206输出比较 /PWM......................................................... 211输出比较 (OCx)..................................................... 210输入捕捉 (CAPx)................................................... 210外部时钟.................................................................... 203

时序要求

CLKO 和 I/O .............................................................. 205DCI AC-Link 模式 ...................................................... 221DCI 多通道, I2S 模式 .............................................. 221输入捕捉.................................................................... 210外部时钟.................................................................... 203

时钟切换.............................................................................. 95使能 ............................................................................. 95序列 ............................................................................. 95

输出比较............................................................................ 129寄存器 ....................................................................... 133

数据地址空间 ...................................................................... 25Near 数据空间 ............................................................. 25带有 1 Kb RAM 的 dsPIC33FJ12GP201/202

器件的存储器映射 ............................................... 26对齐 ............................................................................. 25宽度 ............................................................................. 25软件堆栈...................................................................... 38

数据累加器和加法器 / 减法器 .............................................. 19回写 ............................................................................. 20舍入逻辑...................................................................... 20数据空间写饱和 ........................................................... 21溢出和饱和 .................................................................. 19

输入捕捉

寄存器 ....................................................................... 128输入状态变化通知 ............................................................. 100算术逻辑单元 (ALU)........................................................ 17

TTimer1............................................................................... 119Timer2/3............................................................................ 121桶形移位寄存器 ................................................................... 21

UUART

8 位或 9 位数据模式下的接收 ................................... 1558 位数据模式下的发送 .............................................. 1559 位数据模式下的发送 .............................................. 155波特率

发生器 (BRG)................................................ 154间隔和同步发送序列 ................................................. 155使用 UxCTS 和 UxRTS 引脚的流控制 ...................... 155

UART 模块

UART1 寄存器映射 ..................................................... 32

WWWW 地址 ....................................................................... 239WWW,在线支持.................................................................. 6外设模块禁止 (PMD)....................................................... 98外设引脚选择

输出寄存器映射 .......................................................... 33输入寄存器映射 .......................................................... 33

位反转寻址.......................................................................... 41示例 ............................................................................ 42实现 ............................................................................ 41序列表 (16 项)......................................................... 42

温度和电压规范AC............................................................................. 202

稳压器 (片上)................................................................ 176

X系统控制

寄存器映射.................................................................. 36

Y引脚说明 (表).................................................................... 9因特网地址........................................................................ 239

Z在节能指令执行期间的中断 ................................................ 98在线串行编程 (ICSP)............................................ 173, 180在线调试器........................................................................ 180在线仿真 ........................................................................... 173指令集

概述 .......................................................................... 184汇总 .......................................................................... 181

指令寻址模式 ...................................................................... 38MAC 指令 ................................................................... 39MCU 指令 ................................................................... 38其他指令 ..................................................................... 39文件寄存器指令 .......................................................... 38支持的基本模式 .......................................................... 39传送指令和累加器指令................................................ 39

直流特性 ........................................................................... 194I/O 引脚输出规范 ...................................................... 200I/O 引脚输入规范 ...................................................... 199程序存储器................................................................ 201打盹电流 (IDOZE)................................................... 198掉电电流 (IPD)....................................................... 197工作电流 (IDD)....................................................... 196空闲电流 (IIDLE)..................................................... 197温度和电压规范 ........................................................ 195

中断控制和状态寄存器........................................................ 63IECx............................................................................ 63IFSx ............................................................................ 63INTCON1.................................................................... 63INTCON2.................................................................... 63IPCx............................................................................ 63

dsPIC33FJ12GP201/202

DS70264A_CN 第 238 页 超前信息 2007 Microchip Technology Inc.

中断设置过程....................................................................... 85初始化 ......................................................................... 85陷阱服务程序 .............................................................. 85中断服务程序 .............................................................. 85中断禁止...................................................................... 85

中断向量表 (IVT)............................................................. 59自动时钟延长..................................................................... 145

发送模式.................................................................... 145接收模式.................................................................... 145

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 239 页

dsPIC33FJ12GP201/202

MICROCHIP 网站

Microchip 网站 (www.microchip.com)为客户提供在线支持。客户可通过该网站方便地获取文件和信息。只要使用常用的因特网浏览器即可访问。网站提供以下信息:

• 产品支持——数据手册和勘误表、应用笔记和示例程序、设计资源、用户指南以及硬件支持文档、新的软件版本以及存档软件

• 一般技术支持——常见问题 (FAQ)、技术支持请求、在线讨论组以及 Microchip 顾问计划成员名单

• Microchip 业务——产品选型和订购指南、 新Microchip 新闻稿、研讨会和活动安排、 Microchip销售办事处、代理商以及工厂代表列表

变更通知客户服务

Microchip的客户通知服务有助于客户了解Microchip产品的 新信息。注册客户可在他们感兴趣的某个产品系列或开发工具发生变更、更新、发布新版本或勘误表时,收到电子邮件通知。

欲注册,请登录 Microchip 网站 www.microchip.com,点击“变更通知客户(Customer Change Notification)”服务并按照注册说明完成注册。

客户支持

Microchip 产品的用户可通过以下渠道获得帮助:

• 代理商或代表

• 当地销售办事处

• 应用工程师 (FAE)• 技术支持

客户应联系其代理商、代表或应用工程师(FAE)寻求支持。当地销售办事处也可为客户提供帮助。本文档后附有销售办事处的联系方式。

也可通过http://support.microchip.com获得网上技术支持。

dsPIC33FJ12GP201/202

DS70264A_CN 第 240 页 超前信息 2007 Microchip Technology Inc.

读者反馈表

我们努力为您提供 佳文档,以确保您能够成功使用 Microchip 产品。如果您对文档的组织、条理性、主题及其他有助于提高文档质量的方面有任何意见或建议,请填写本反馈表并传真给我公司 TRC 经理,传真号码为 86-21-5407-5066。

请填写以下信息,并从下面各方面提出您对本文档的意见。

致 : TRC 经理

关于 : 读者反馈

总页数 ________

发自 : 姓名

公司

地址

国家 / 省份 / 城市 / 邮编

电话 : (_______) _________ - _________

应用(选填):

您希望收到回复吗?是 否

器件 : 文献编号 :

问题:

传真 : (______) _________ - _________

DS70264A_CNdsPIC33FJ12GP201/202

1. 本文档中哪些部分 有特色?

2. 本文档是否满足了您的软硬件开发要求?如何满足的?

3. 您认为本文档的组织结构便于理解吗?如果不便于理解,那么问题何在?

4. 您认为本文档应该添加哪些内容以改善其结构和主题?

5. 您认为本文档中可以删减哪些内容,而又不会影响整体使用效果?

6. 本文档中是否存在错误或误导信息?如果存在,请指出是什么信息及其具体页数。

7. 您认为本文档还有哪些方面有待改进?

2007 Microchip Technology Inc. 超前信息 DS70264A_CN 第 241 页

dsPIC33FJ12GP201/202

产品标识体系

欲订货或获取价格、交货等信息,请与我公司生产厂或各销售办事处联系。

架构: 33 = 16 位数字信号控制器

闪存系列: FJ = 闪存程序存储器, 3.3V

产品组: GP2 = 通用系列

引脚数: 01 = 18 引脚02 = 28 引脚

温度范围: I = -40°C 至 +85°C (工业级)E = -40°C 至 +125°C (扩展级)

封装: P = 塑封双列直插式封装——300 mil 主体 (PDIP)SP = 窄型塑封双列直插式封装——300 mil 主体 (SPDIP)SO = 塑封小外形封装——宽条, 300 mil 主体(SOIC)ML = 塑封正方无脚封装——6x6 mm 主体 (QFN)

示例:

a) dsPIC33FJ12GP202-E/SP:通用 dsPIC33, 12 KB 程序存储器,28 引脚,扩展级温度, SPDIP 封装。

Microchip 的商标

架构

闪存系列

程序存储器容量(KB)

产品组

引脚数

温度范围

封装

模式

dsPIC 33 FJ 12 GP2 02 T E / SP - XXX

卷带标志(如果适用)

DS70264A_CN 第 242 页 超前信息 2007 Microchip Technology Inc.

全球销售及服务网点

10/05/07