首页资源分类嵌入式处理器PIC > dsPIC33F 系列数据手册_中文

dsPIC33F 系列数据手册_中文

已有 445176个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:PIC33F

    分    享:

    文档简介

    dsPIC33F 系列

    数据手册

    高性能16 位

    数字信号控制器

    文档预览

    dsPIC33F 系列 数据手册 高性能 16 位 数字信号控制器  2007 Microchip Technology Inc. 初稿 DS70165D_CN 请注意以下有关 Microchip 器件代码保护功能的要点: • Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。 • Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。 • 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。 • Microchip 愿与那些注重代码完整性的客户合作。 • Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。 代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的 软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。 提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用 情况的有用信息。Microchip Technology Inc. 及其分公司和相 关公司、各级主管与员工及事务代理机构对译文中可能存在的 任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。 本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范, 是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不 限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而 引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障 Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。 商标 Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron、 dsPIC、 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. 版权所有。 DS70165D_CN 第 ii 页 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和 印度的设计中心均通过了 ISO/TS-16949:2002 认证。公司在 PIC® MCU 与 dsPIC® DSC、 KEELOQ® 跳码器件、串行 EEPROM、单片机外 设、非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS16949:2002。此外, Microchip 在开发系统的设计和生产方面的质量体 系也已通过了 ISO 9001:2000 认证。 初稿  2007 Microchip Technology Inc. dsPIC33F 高性能 16 位数字信号控制器 工作范围: • DC – 40 MIPS (40 MIPS @ 3.0-3.6V, -40°C 至 +85°C) • 工业级温度范围 (-40°C 至 +85°C) 高性能 DSC CPU: • 改进型哈佛结构 • C 编译器优化的指令集 • 16 位宽数据总线 • 24 位宽指令 • 可寻址最大 4M 指令字的线性程序存储空间 • 可寻址最大 64 KB 的线性数据存储空间 • 84 条基本指令:多为单字 / 单周期指令 • 16 个 16 位通用寄存器 • 两个 40 位累加器: - 带有舍入和饱和选择 • 灵活和强大的寻址方式: - 间接寻址、模寻址和位反转寻址 • 软件堆栈 • 16 x 16 位小数 / 整数乘法运算 • 32/16 位和 16/16 位除法运算 • 单指令周期乘-累加: - DSP 运算的累加器回写操作 - 双数据取操作 • 最多可将 40 位数据左移或右移最多 16 位 直接存储器访问 (DMA): • 8 通道硬件直接存储器访问 (Direct Memory Access, DMA): • 2 KB 双口 DMA 缓冲区 (DMA RAM),用于存储 通过 DMA 传输的数据: - 允许在 CPU 执行代码期间在 RAM 和外设间 传输数据 (不额外占用周期) • 大多数外设支持 DMA 中断控制器: • 中断响应延时为 5 个周期 • 118 个中断向量 • 最多 67 个中断源 • 最多 5 个外部中断 • 7 个可编程优先级 • 5 个处理器异常 数字 I/O: • 最多 85 个可编程数字 I/O 引脚 • 最多 24 个引脚上具有电平变化中断 / 唤醒功能 • 输出引脚可驱动 3.0V 至 3.6V 的电压 • 所有数字输入引脚可承受 5V 电压 • 所有 I/O 引脚的灌 / 拉电流为 4 mA 片内闪存和 SRAM: • 闪存程序存储器:最大 256 KB • 数据 SRAM,最大 30 KB (包括 2 KB 的 DMA RAM): 系统管理: • 灵活的时钟选择: - 外部振荡器、晶振、谐振器和内部 RC 振荡器 - 全集成 PLL - 极低抖动 PLL • 上电延时定时器 • 振荡器起振定时器 / 稳定器 • 自带 RC 振荡器的看门狗定时器 • 故障保护时钟监视器 • 多个复位源 功耗管理: • 片内 2.5V 稳压器 • 实时时钟源切换 • 可快速唤醒的空闲、休眠和打盹 (Doze)模式 定时器 / 捕捉 / 比较 /PWM: • 定时器 / 计数器:最多 9 个 16 位定时器: - 最多可以配对作为 4 个 32 位定时器使用 - Timer1 可依靠外部 32 .768 KHz 振荡器作为实 时时钟使用 - 可编程预分频器 • 输入捕捉 (最多 8 个通道): - 上升沿捕捉、下降沿捕捉或上升 / 下降沿捕捉 - 16 位捕捉输入功能 - 每个捕捉通道都带有 4 字深度的 FIFO 缓冲区 • 输出比较 (最多 8 个通道): - 1 个或 2 个 16 位比较模式 - 16 位无毛刺 PWM 模式  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 1 页 dsPIC33F 通信模块: • 3 线 SPI (最多 2 个模块): - 帧支持简单编解码器的 I/O 接口 - 支持 8 位和 16 位数据 - 支持所有串行时钟格式和采样模式 • I2C™ (最多 2 个模块): - 完全支持多主机模式和从模式 - 7 位和 10 位寻址 - 总线冲突检测和仲裁 - 集成信号调理 - 从地址掩码 • UART (最多两个模块) - 检测到地址位时产生中断 - 出现 UART 错误时产生中断 - 检测到启动位时将器件从休眠模式唤醒 - 4 字符深度的发送和接收 FIFO 缓冲区 - LIN 总线支持 - IrDA® 硬件编解码 - 高速波特率模式 - 使用 CTS 和 RTS 的硬件流控制 • 数据转换器接口 (Data Conversion Interface, DCI)模块: - 编解码器接口 - 支持 I2S 和 AC’97 协议 - 最多 16 位数据字,每帧最多 16 字 - 4 字深度的发送和接收缓冲区 • 增强型 CAN (ECAN™ 模块)2.0B active 版本 (最多两个模块): - 最多 8 个发送缓冲区和 32 个接收缓冲区 - 16 个接收过滤器和 3 个屏蔽寄存器 - 用于诊断和总线监视的环回模式、监听模式和 监听所有报文模式 - 收到 CAN 报文时唤醒器件 - 自动处理远程发送请求 - 使用 DMA 的 FIFO 模式 - DeviceNet™ 寻址支持 电机控制外设: • 电机控制 PWM (最多 8 个通道): - 4 个占空比发生器 - 独立或互补模式 - 可编程死区时间和输出极性 - 边沿对齐或中心对齐 - 手工输出改写控制 - 最多 2 个故障输入 - A/D 转换的触发信号 - 16 位分辨率的 PWM 频率 (@ 40 MIPS):边沿对齐模式下为 1220 Hz, 中心对齐模式下为 610 Hz - 11 位分辨率的 PWM 频率 (@ 40 MIPS):边沿对齐模式下为 39.1 KHz, 中心对齐模式下为 19.55 KHz • 正交编码器接口模块: - A 相、 B 相和索引脉冲输入 - 16 位递增 / 递减位置计数器 - 计数方向状态 - 位置测量 (x2 和 x4)模式 - 输入端上的可编程数字噪声滤波器 - 备用 16 位定时器 / 计数器模式 - 位置计数器计满返回 / 下溢时产生中断 模数转换器 (ADC): • 一个器件中最多两个模数转换器 (Analog-toDigital Converter, ADC)模块 • 10 位 1.1Msps 或 12 位 500 ksps 转换: - 2、 4 或 8 路同时采样 - 最多 32 路带有自动扫描功能的输入通道 - 可手工启动转换或与 4 个触发源中的一个同 步 - 休眠模式下仍可进行转换 - 积分非线性误差 (Integral Non-Linearity, INL)最大为 ±2 LSB - 微分非线性误差 (Differential Non-Linearity, DNL)最大为 ±1 LSB CMOS 闪存技术: • 低功耗的高速闪存技术 • 全静态设计 • 3.3V (±10%)工作电压 • 工业级温度 • 低功耗 封装:DS70165D_CN • 100 引脚 TQFP (14x14x1 mm 和 12x12x1 mm) • 80 引脚 TQFP (12x12x1 mm) • 64 引脚 TQFP (10x10x1 mm) 注: 关于每个器件的具体外设特性,请参见相 应的器件数据表。 DS70165D_CN 第 2 页 初稿  2007 Microchip Technology Inc. dsPIC33F dsPIC33F 系列产品 dsPIC33F 系列器件具有两种子系列,分别是通用系列 和电机控制系列。 通用系列是各种 16 位 MCU 嵌入式应用的理想选择。其 中带有编解码器接口的器件非常适合语音和音频处理应 用。 电机控制系列支持各种电机控制应用,如直流无刷电 机、单相和三相交流感应电机及开关磁阻电机。它们也 适 用 于 不 间 断 电 源 (Uninterrupted Power Supply, dsPIC33F 通用系列器件 UPS)、变频器、开关电源和功率因数校正,并且还适 用于控制服务器、电信和其他工业设备中的电源管理模 块。 下表列出了每个系列的器件名称、引脚数、存储容量和 可用的外设,表后还附有它们的引脚图。 16 位定时器 输入捕捉 输出比较 标准 PWM 编解码器 接口 ADC UART SPI I2C™ 增强型 CAN 最大 I/O 引脚数 (2) 器件 引脚 闪存程序 存储器 (KB) RAM (KB) (1) 封装 dsPIC33FJ64GP206 64 64 8 98 8 dsPIC33FJ64GP306 64 64 16 98 8 dsPIC33FJ64GP310 100 64 16 98 8 dsPIC33FJ64GP706 64 64 16 98 8 dsPIC33FJ64GP708 80 64 16 98 8 dsPIC33FJ64GP710 100 64 16 98 8 dsPIC33FJ128GP206 64 128 8 98 8 dsPIC33FJ128GP306 64 128 16 98 8 dsPIC33FJ128GP310 100 128 16 98 8 dsPIC33FJ128GP706 64 128 16 98 8 dsPIC33FJ128GP708 80 128 16 98 8 dsPIC33FJ128GP710 100 128 16 98 8 dsPIC33FJ256GP506 64 256 16 98 8 dsPIC33FJ256GP510 100 256 16 98 8 dsPIC33FJ256GP710 100 256 30 98 8 注 1: RAM 中包括 2 KB 的 DMA RAM。 2: 最大 I/O 引脚数包括与外设功能复用的引脚。 1 1 个ADC, 2 2 1 0 53 PT 18 个通道 1 1 个ADC, 2 2 2 0 53 PT 18 个通道 1 1个 ADC, 2 2 2 0 85 PF, PT 32 个通道 1 2 个ADC, 2 2 2 2 53 PT 18 个通道 1 2 个ADC, 2 2 2 2 69 PT 24 个通道 1 2 个ADC, 2 2 2 2 85 PF, PT 32 个通道 1 1 个ADC, 2 2 1 0 53 PT 18 个通道 1 1 个ADC, 2 2 2 0 53 PT 18 个通道 1 1个 ADC, 2 2 2 0 85 PF, PT 32 个通道 1 2 个ADC, 2 2 2 2 53 PT 18 个通道 1 2 个ADC, 2 2 2 2 69 PT 24 个通道 1 2 个ADC, 2 2 2 2 85 PF, PT 32 个通道 1 1 个ADC, 2 2 2 1 53 PT 18 个通道 1 1个 ADC, 2 2 2 1 85 PF, PT 32 个通道 1 2个 ADC, 2 2 2 2 85 PF, PT 32 个通道  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 3 页 dsPIC33F 引脚图 64 引脚 TQFP 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/CN16/RD7 VDDCORE 57 VDD 58 RF0 59 RF1 60 RG1 61 RG0 62 CSCK/RG14 63 CSDI/RG12 64 CSDO/RG13 56 COFS/RG15 1 AN16/T2CK/T7CK/RC1 2 AN17/T3CK/T6CK/RC2 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/IC8/CN7/RB5 11 AN4/IC7/CN6/RB4 12 AN3/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ64GP206 dsPIC33FJ128GP206 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/INT2/RD9 42 IC1/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 U2TX/CN18/RF5 U2RX/CN17/RF4 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS TDO/AN11/RB11 TMS/AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 4 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 64 引脚 TQFP dsPIC33F 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/CN16/RD7 VDDCORE 57 VDD 58 RF0 59 RF1 60 RG1 61 RG0 62 CSCK/RG14 63 CSDI/RG12 64 CSDO/RG13 56 COFS/RG15 1 AN16/T2CK/T7CK/RC1 2 AN17/T3CK/T6CK/RC2 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/IC8/CN7/RB5 11 AN4/IC7/CN6/RB4 12 AN3/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ64GP306 dsPIC33FJ128GP306 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/INT2/RD9 42 IC1/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 U2TX/CN18/RF5 U2RX/SDA2/CN17/RF4 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS TDO/AN11/RB11 TMS/AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 5 页 dsPIC33F 引脚图 (续) 64 引脚 TQFP 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/CN16/RD7 VDDCORE 57 VDD 58 C1RX/RF0 59 C1TX/RF1 60 RG1 61 RG0 62 CSCK/RG14 63 CSDI/RG12 64 CSDO/RG13 56 COFS/RG15 1 AN16/T2CK/T7CK/RC1 2 AN17/T3CK/T6CK/RC2 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/IC8/CN7/RB5 11 AN4/IC7/CN6/RB4 12 AN3/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ256GP506 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/INT2/RD9 42 IC1/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 U2TX/SCL2/CN18/RF5 U2RX/SDA2/CN17/RF4 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS TDO/AN11/RB11 TMS/AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 6 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 64 引脚 TQFP dsPIC33F 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/CN16/RD7 VDDCORE 57 VDD 58 C1RX/RF0 59 C1TX/RF1 60 C2TX/RG1 61 C2RX/RG0 62 CSCK/RG14 63 CSDI/RG12 64 CSDO/RG13 56 COFS/RG15 1 AN16/T2CK/T7CK/RC1 2 AN17/T3CK/T6CK/RC2 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/IC8/CN7/RB5 11 AN4/IC7/CN6/RB4 12 AN3/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ64GP706 dsPIC33FJ128GP706 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/INT2/RD9 42 IC1/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 U2TX/SCL2/CN18/RF5 U2RX/SDA2/CN17/RF4 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS TDO/AN11/RB11 TMS/AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 7 页 dsPIC33F 引脚图 (续) 80 引脚 TQFP OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 C2TX/RG1 C2RX/RG0 AN22/CN22/RA6 AN23/CN23/RA7 CSCK/RG14 CSDI/RG12 CSDO/RG13 VDD 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 COFS/RG15 1 AN16/T2CK/T7CK/RC1 2 AN17/T3CK/T6CK/RC2 3 AN18/T4CK/T9CK/RC3 4 AN19/T5CK/T8CK/RC4 5 SCK2/CN8/RG6 6 SDI2/CN9/RG7 7 SDO2/CN10/RG8 8 MCLR 9 SS2/CN11/RG9 10 VSS 11 VDD 12 TMS/AN20/INT1/RA12 13 TDO/AN21/INT2/RA13 14 AN5/CN7/RB5 15 AN4/CN6/RB4 16 AN3/CN5/RB3 17 AN2/SS1/CN4/RB2 18 PGC3/EMUC3/AN1/CN3/RB1 19 PGD3/EMUD3/AN0/CN2/RB0 20 dsPIC33FJ64GP708 dsPIC33FJ128GP708 60 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 59 PGD2/EMUD2/SOSCI/CN1/RC13 58 OC1/RD0 57 IC4/RD11 56 IC3/RD10 55 IC2/RD9 54 IC1/RD8 53 SDA2/INT4/RA3 52 SCL2/INT3/RA2 51 VSS 50 OSC2/CLKO/RC15 49 OSC1/CLKIN/RC12 48 VDD 47 SCL1/RG2 46 SDA1/RG3 45 SCK1/INT0/RF6 44 SDI1/RF7 43 SDO1/RF8 42 U1RX/RF2 41 U1TX/RF3 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 8 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 100 引脚 TQFP dsPIC33F OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/RD7 VDDCORE AN22/CN22/RA6 AN23/CN23/RA7 AN24/RE0 AN25/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 AN26/RE2 AN27/RE3 AN28/RE4 VDD RF0 RF1 RG1 RG0 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 AN29/RE5 3 AN30/RE6 4 AN31/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/INT1/RA12 18 AN21/INT2/RA13 19 AN5/CN7/RB5 20 AN4/CN6/RB4 21 AN3/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ64GP310 dsPIC33FJ128GP310 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 SDA2/RA3 58 SCL2/RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 9 页 dsPIC33F 引脚图 (续) 100 引脚 TQFP OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 AN22/CN22/RA6 AN23/CN23/RA7 AN24/RE0 AN25/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 AN26/RE2 AN27/RE3 AN28/RE4 VDD RG1 RG0 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 AN29/RE5 3 AN30/RE6 4 AN31/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/INT1/RA12 18 AN21/INT2/RA13 19 AN5/CN7/RB5 20 AN4/CN6/RB4 21 AN3/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ256GP510 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 SDA2/RA3 58 SCL2/RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 10 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 100 引脚 TQFP dsPIC33F OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 C2TX/RG1 C2RX/RG0 AN22/CN22/RA6 AN23/CN23/RA7 AN24/RE0 AN25/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 AN26/RE2 AN27/RE3 AN28/RE4 VDD 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 AN29/RE5 3 AN30/RE6 4 AN31/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/INT1/RA12 18 AN21/INT2/RA13 19 AN5/CN7/RB5 20 AN4/CN6/RB4 21 AN3/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ64GP710 dsPIC33FJ128GP710 dsPIC33FJ256GP710 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 SDA2/RA3 58 SCL2/RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 11 页 dsPIC33F dsPIC33F 电机控制系列器件 16 位定时器 输入捕捉 输出比较 Std.PWM 电机控制 PWM 正交解码器 接口 编解码器接口 ADC UART SPI I2C™ 增强型 CAN 最大 I/O 引脚数 (2) 器件 引脚 闪存 程序 RAM 存储器 (KB) (1) (KB) 封装 dsPIC33FJ64MC506 64 64 dsPIC33FJ64MC508 80 64 dsPIC33FJ64MC510 100 64 dsPIC33FJ64MC706 64 64 8 9 8 8 8 ch 1 8 9 8 8 8 ch 1 8 9 8 8 8 ch 1 16 9 8 8 8 ch 1 dsPIC33FJ64MC710 100 64 16 9 8 8 8 ch 1 dsPIC33FJ128MC506 64 128 8 9 8 8 8 ch 1 dsPIC33FJ128MC510 100 128 8 9 8 8 8 ch 1 dsPIC33FJ128MC706 64 128 16 9 8 8 8 ch 1 dsPIC33FJ128MC708 80 128 16 9 8 8 8 ch 1 dsPIC33FJ128MC710 100 128 16 9 8 8 8 ch 1 dsPIC33FJ256MC510 100 256 16 9 8 8 8 ch 1 dsPIC33FJ256MC710 100 256 30 9 8 8 8 ch 1 注 1: RAM 中包括 2 KB 的 DMA RAM。 2: 最大 I/O 引脚数包括与外设功能复用的引脚。 0 1 个 ADC, 2 2 2 1 53 PT 16 个通道 0 1 个 ADC, 2 2 2 1 69 PT 18 个通道 0 1 个 ADC, 2 2 2 1 85 PF, PT 24 个通道 0 2 个 2 2 2 1 53 PT ADC, 24 个通道 0 2 个ADC, 2 2 2 2 85 PF, PT 16 个通道 0 1 个ADC, 2 2 2 1 53 PT 16 个通道 0 1 个ADC, 2 2 2 1 85 PF, PT 24 个通道 0 2 个ADC, 2 2 2 1 53 PT 16 个通道 0 2 个ADC, 2 2 2 2 69 PT 18 个通道 0 2个 ADC, 2 2 2 2 85 PF, PT 24 个通道 0 1 个ADC, 2 2 2 1 85 PF, PT 24 个通道 0 2 个ADC, 2 2 2 2 85 PF, PT 24 个通道 DS70165D_CN 第 12 页 初稿  2007 Microchip Technology Inc. 引脚图 64 引脚 TQFP dsPIC33F 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/UPDN/CN16/RD7 VDDCORE 57 VDD 58 C1RX/RF0 59 C1TX/RF1 60 PWM1L/RE0 61 PWM1H/RE1 62 PWM2L/RE2 63 PWM2H/RE3 64 PWM3L/RE4 56 PWM3H/RE5 1 PWM4L/RE6 2 PWM4H/RE7 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/QEB/IC8/CN7/RB5 11 AN4/QEA/IC7/CN6/RB4 12 AN3/INDX/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ64MC506 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/FLTB/INT2/RD9 42 IC1/FLTA/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 U2TX/CN18/RF5 32 U2RX/CN17/RF4 31 AN15/OCFB/CN12/RB15 30 U2RTS/AN14/RB14 29 TDI/AN13/RB13 28 TCK/AN12/RB12 27 26 25 VDD VSS TDO/AN11/RB11 24 TMS/AN10/RB10 23 AN9/RB9 22 U2CTS/AN8/RB8 21 20 19 AVSS AVDD PGD1/EMUD1/AN7/RB7 18 PGC1/EMUC1/AN6/OCFA/RB6 17  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 13 页 dsPIC33F 引脚图 (续) 64 引脚 TQFP 49 OC2/RD1 50 OC3/RD2 51 OC4/RD3 52 OC5/IC5/CN13/RD4 53 OC6/IC6/CN14/RD5 54 OC7/CN15/RD6 55 OC8/UPDN/CN16/RD7 VDDCORE 57 VDD 58 C1RX/RF0 59 C1TX/RF1 60 PWM1L/RE0 61 PWM1H/RE1 62 PWM2L/RE2 63 PWM2H/RE3 64 PWM3L/RE4 56 PWM3H/RE5 1 PWM4L/RE6 2 PWM4H/RE7 3 SCK2/CN8/RG6 4 SDI2/CN9/RG7 5 SDO2/CN10/RG8 6 MCLR 7 SS2/T5CK/CN11/RG9 8 VSS 9 VDD 10 AN5/QEB/IC8/CN7/RB5 11 AN4/QEA/IC7/CN6/RB4 12 AN3/INDX/CN5/RB3 13 AN2/SS1/CN4/RB2 14 PGC3/EMUC3/AN1/VREF-/CN3/RB1 15 PGD3/EMUD3/AN0/VREF+/CN2/RB0 16 dsPIC33FJ128MC506 dsPIC33FJ64MC506 dsPIC33FJ128MC706 48 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 47 PGD2/EMUD2/SOSCI/T4CK/CN1/RC13 46 OC1/RD0 45 IC4/INT4/RD11 44 IC3/INT3/RD10 43 IC2/U1CTS/FLTB/INT2/RD9 42 IC1/FLTA/INT1/RD8 41 VSS 40 OSC2/CLKO/RC15 39 OSC1/CLKIN/RC12 38 VDD 37 SCL1/RG2 36 SDA1/RG3 35 U1RTS/SCK1/INT0/RF6 34 U1RX/SDI1/RF2 33 U1TX/SDO1/RF3 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 U2TX/SCL2/CN18/RF5 U2RX/SDA2/CN17/RF4 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS TDO/AN11/RB11 TMS/AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 14 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 80 引脚 TQFP dsPIC33F OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/UPDN/RD7 VDDCORE C1RX/RF0 C1TX/RF1 PWM1L/RE0 PWM1H/RE1 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 VDD RG1 RG0 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 PWM3H/RE5 1 PWM4L/RE6 2 PWM4H/RE7 3 AN16/T2CK/T7CK/RC1 4 AN17/T3CK/T6CK/RC2 5 SCK2/CN8/RG6 6 SDI2/CN9/RG7 7 SDO2/CN10/RG8 8 MCLR 9 SS2/CN11/RG9 10 VSS 11 VDD 12 TMS/FLTA/INT1/RE8 13 TDO/FLTB/INT2/RE9 14 AN5/QEB/CN7/RB5 15 AN4/QEA/CN6/RB4 16 AN3/INDX/CN5/RB3 17 AN2/SS1/CN4/RB2 18 PGC3/EMUC3/AN1/CN3/RB1 19 PGD3/EMUD3/AN0/CN2/RB0 20 dsPIC33FJ64MC508 60 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 59 PGD2/EMUD2/SOSCI/CN1/RC13 58 OC1/RD0 57 IC4/RD11 56 IC3/RD10 55 IC2/RD9 54 IC1/RD8 53 SDA2/INT4/RA3 52 SCL2/INT3/RA2 51 VSS 50 OSC2/CLKO/RC15 49 OSC1/CLKIN/RC12 48 VDD 47 SCL1/RG2 46 SDA1/RG3 45 SCK1/INT0/RF6 44 SDI1/RF7 43 SDO1/RF8 42 U1RX/RF2 41 U1TX/RF3 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 15 页 dsPIC33F 引脚图 (续) 80 引脚 TQFP OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/CN16/UPDN/RD7 VDDCORE C1RX/RF0 C1TX/RF1 C2TX/RG1 CRX2/RG0 PWM1L/RE0 PWM1H/RE1 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 VDD 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 PWM3H/RE5 1 PWM4L/RE6 2 PWM4H/RE7 3 AN16/T2CK/T7CK/RC1 4 AN17/T3CK/T6CK/RC2 5 SCK2/CN8/RG6 6 SDI2/CN9/RG7 7 SDO2/CN10/RG8 8 MCLR 9 SS2/CN11/RG9 10 VSS 11 VDD 12 TMS/FLTA/INT1/RE8 13 TDO/FLTB/INT2/RE9 14 AN5/QEB/CN7/RB5 15 AN4/QEA/CN6/RB4 16 AN3/INDX/CN5/RB3 17 AN2/SS1/CN4/RB2 18 PGC3/EMUC3/AN1/CN3/RB1 19 PGD3/EMUD3/AN0/CN2/RB0 20 dsPIC33FJ128MC708 60 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 59 PGD2/EMUD2/SOSCI/CN1/RC13 58 OC1/RD0 57 IC4/RD11 56 IC3/RD10 55 IC2/RD9 54 IC1/RD8 53 SDA2/INT4/RA3 52 SCL2/INT3/RA2 51 VSS 50 OSC2/CLKO/RC15 49 OSC1/CLKIN/RC12 48 VDD 47 SCL1/RG2 46 SDA1/RG3 45 SCK1/INT0/RF6 44 SDI1/RF7 43 SDO1/RF8 42 U1RX/RF2 41 U1TX/RF3 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 AN15/OCFB/CN12/RB15 U2RTS/AN14/RB14 TDI/AN13/RB13 TCK/AN12/RB12 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 U2CTS/AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 16 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 100 引脚 TQFP dsPIC33F OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/UPDN/CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 AN22/CN22/RA6 AN23/CN23/RA7 PWM1L/RE0 PWM1H/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 VDD RG1 RG0 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 PWM3H/RE5 3 PWM4L/RE6 4 PWM4H/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/FLTA/INT1/RE8 18 AN21/FLTB/INT2/RE9 19 AN5/QEB/CN7/RB5 20 AN4/QEA/CN6/RB4 21 AN3/INDX/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ64MC510 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 RA3 58 RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 17 页 dsPIC33F 引脚图 (续) 100 引脚 TQFP OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/UPDN//CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 AN22/CN22/RA6 AN23/CN23/RA7 PWM1L/RE0 PWM1H/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 VDD RG1 RG0 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 PWM3H/RE5 3 PWM4L/RE6 4 PWM4H/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/FLTA/INT1/RE8 18 AN21/FLTB/INT2/RE9 19 AN5/QEB/CN7/RB5 20 AN4/QEA/CN6/RB4 21 AN3/INDX/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ128MC510 dsPIC33FJ256MC510 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 SDA2/RA3 58 SCL2/RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6 DS70165D_CN 第 18 页 初稿  2007 Microchip Technology Inc. 引脚图 (续) 100 引脚 TQFP dsPIC33F OC2/RD1 OC3/RD2 OC4/RD3 IC5/RD12 IC6/CN19/RD13 OC5/CN13/RD4 OC6/CN14/RD5 OC7/CN15/RD6 OC8/UPDN//CN16/RD7 VDDCORE C1RX/RF0 C1TX/RF1 C2TX/RG1 C2RX/RG0 AN22/CN22/RA6 AN23/CN23/RA7 PWM1L/RE0 PWM1H/RE1 CSCK/RG14 CSDI/RG12 CSDO/RG13 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 VDD 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 COFS/RG15 1 VDD 2 PWM3H/RE5 3 PWM4L/RE6 4 PWM4H/RE7 5 AN16/T2CK/T7CK/RC1 6 AN17/T3CK/T6CK/RC2 7 AN18/T4CK/T9CK/RC3 8 AN19/T5CK/T8CK/RC4 9 SCK2/CN8/RG6 10 SDI2/CN9/RG7 11 SDO2/CN10/RG8 12 MCLR 13 SS2/CN11/RG9 14 VSS 15 VDD 16 TMS/RA0 17 AN20/FLTA/INT1/RE8 18 AN21/FLTB/INT2/RE9 19 AN5/QEB/CN7/RB5 20 AN4/QEA/CN6/RB4 21 AN3/INDX/CN5/RB3 22 AN2/SS1/CN4/RB2 23 PGC3/EMUC3/AN1/CN3/RB1 24 PGD3/EMUD3/AN0/CN2/RB0 25 dsPIC33FJ64MC710 dsPIC33FJ128MC710 dsPIC33FJ256MC710 75 VSS 74 PGC2/EMUC2/SOSCO/T1CK/CN0/RC14 73 PGD2/EMUD2/SOSCI/CN1/RC13 72 OC1/RD0 71 IC4/RD11 70 IC3/RD10 69 IC2/RD9 68 IC1/RD8 67 INT4/RA15 66 INT3/RA14 65 VSS 64 OSC2/CLKO/RC15 63 OSC1/CLKIN/RC12 62 VDD 61 TDO/RA5 60 TDI/RA4 59 SDA2/RA3 58 SCL2/RA2 57 SCL1/RG2 56 SDA1/RG3 55 SCK1/INT0/RF6 54 SDI1/RF7 53 SDO1/RF8 52 U1RX/RF2 51 U1TX/RF3 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 U2TX/CN18/RF5 U2RX/CN17/RF4 IC8/U1RTS/CN21/RD15 IC7/U1CTS/CN20/RD14 VDD VSS AN15/OCFB/CN12/RB15 AN14/RB14 AN13/RB13 AN12/RB12 U2CTS/RF12 U2RTS/RF13 TCK/RA1 VDD VSS AN11/RB11 AN10/RB10 AN9/RB9 AN8/RB8 AVSS AVDD VREF+/RA10 VREF-/RA9 PGD1/EMUD1/AN7/RB7 PGC1/EMUC1/AN6/OCFA/RB6  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 19 页 dsPIC33F 目录 dsPIC33F 系列产品................................................................................................................................................................................ 3 1.0 器件概述 ..................................................................................................................................................................................... 23 2.0 CPU............................................................................................................................................................................................ 27 3.0 存储器构成 ................................................................................................................................................................................. 39 4.0 闪存程序存储器 .......................................................................................................................................................................... 77 5.0 复位 ............................................................................................................................................................................................ 83 6.0 中断控制器 ................................................................................................................................................................................. 87 7.0 直接存储器访问 (DMA)......................................................................................................................................................... 135 8.0 振荡器配置 ............................................................................................................................................................................... 149 9.0 节能特性 ................................................................................................................................................................................... 157 10.0 I/O 端口 .................................................................................................................................................................................... 159 11.0 Timer1 ...................................................................................................................................................................................... 161 12.0 Timer2/3、 Timer4/5、 Timer6/7 和 Timer8/9 ......................................................................................................................... 163 13.0 输入捕捉 ................................................................................................................................................................................... 169 14.0 输出比较 ................................................................................................................................................................................... 171 15.0 电机控制 PWM 模块 ................................................................................................................................................................. 175 16.0 正交编码器接口 (QEI)模块................................................................................................................................................... 197 17.0 串行外设接口 (SPI)............................................................................................................................................................... 205 18.0 I2C™......................................................................................................................................................................................... 213 19.0 通用异步收发器 (UART)....................................................................................................................................................... 223 20.0 增强型 CAN 模块 ...................................................................................................................................................................... 231 21.0 数据转换器接口 (DCI)模块................................................................................................................................................... 261 22.0 10 位 /12 位模 / 数转换器 (ADC)........................................................................................................................................... 275 23.0 特殊功能 ................................................................................................................................................................................... 289 24.0 指令集综述 ............................................................................................................................................................................... 297 25.0 开发支持 ................................................................................................................................................................................... 305 26.0 电气特性 ................................................................................................................................................................................... 309 27.0 封装信息 ................................................................................................................................................................................... 351 附录 A: 版本历史 ........................................................................................................................................................................ 357 索引 .................................................................................................................................................................................................. 359 Microchip 网站.................................................................................................................................................................................... 365 变更通知客户服务 .............................................................................................................................................................................. 365 客户支持............................................................................................................................................................................................. 365 读者反馈表 ......................................................................................................................................................................................... 366 产品标识体系 ..................................................................................................................................................................................... 367 全球销售及服务网点 .......................................................................................................................................................................... 368 DS70165D_CN 第 20 页 初稿  2007 Microchip Technology Inc. dsPIC33F 致客户 我们旨在提供最佳文档供客户正确使用 Microchip 产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。 如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 CTRC@microchip.com,或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。 最新数据手册 欲获得本数据手册的最新版本,请查询我公司的网站: http://www.microchip.com 查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000 的 A 版本。 勘误表 现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。 欲了解某一器件是否存在勘误表,请通过以下方式之一查询: • Microchip 网站 http://www.microchip.com • 当地 Microchip 销售办事处 (见最后一页) 在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。 客户通知系统 欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 21 页 dsPIC33F 注: DS70165D_CN 第 22 页 初稿  2007 Microchip Technology Inc. 1.0 器件概述 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 该文档包含针对以下器件的具体信息: • dsPIC33FJ64GP206 • dsPIC33FJ64GP306 • dsPIC33FJ64GP310 • dsPIC33FJ64GP706 • dsPIC33FJ64GP708 • dsPIC33FJ64GP710 • dsPIC33FJ128GP206 • dsPIC33FJ128GP306 • dsPIC33FJ128GP310 • dsPIC33FJ128GP706 • dsPIC33FJ128GP708 • dsPIC33FJ128GP710 • dsPIC33FJ256GP506 • dsPIC33FJ256GP510 • dsPIC33FJ256GP710 • dsPIC33FJ64MC506 • dsPIC33FJ64MC508 • dsPIC33FJ64MC510 • dsPIC33FJ64MC706 • dsPIC33FJ64MC710 • dsPIC33FJ128MC506 • dsPIC33FJ128MC510 • dsPIC33FJ128MC706 • dsPIC33FJ128MC708 • dsPIC33FJ128MC710 • dsPIC33FJ256MC510 • dsPIC33FJ256MC710 dsPIC33F 通用和电机控制系列器件包括具有多种引脚 数 (64、 80 和 100)、不同程序存储容量 (64 KB、 128 KB 和 256 KB)和不同 RAM 容量 (8 KB、 16 KB 和 30 KB)的器件。 dsPIC33F 这使此系列器件适合于多种高性能数字信号控制应用。 器件的引脚与 PIC24H 系列器件的引脚兼容,并且还与 dsPIC30F 系列器件高度兼容。这样便于根据应用对特定 功能、计算资源和系统成本要求等方面的需求,在不同 系列器件之间移植。 dsPIC33F 系列器件采用强大的 16 位架构,此架构将数 字信号处理器( Digital Signal Processor ,DSP)的计 算能力与单片机 (MCU)的控制特性无缝地集成在一 起。 这种集成的功能对于需要高速、重复计算和控制的 应用非常理想。 DSP 引擎、两个 40 位累加器、支持除法运算的硬件、 桶形移位寄存器、 17 × 17 位乘法器、大的 16 位工作 寄存器阵列和多种数据寻址模式,共同为 dsPIC33F 中 央处理单元 (Central Processing Unit, CPU)提供广 泛的数学处理能力。灵活而确定的中断处理与丰富的外 设相结合,使得 dsPIC33F 器件非常适合控制应用。此 外,直接存储器访问(DMA)允许数据在多个外设和专 用 DMA RAM 之间进行无 CPU 开销的传输。可靠的现 场可编程闪存程序存储器确保能对使用 dsPIC33F 器件 的应用进行扩展。 图 1-1 所示为 dsPIC33F 系列器件中各种内核和外设模 块的一般框图,同时表 1-1 列出了引脚图中显示的各种 引脚的功能。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 23 页 dsPIC33F 图 1-1: PSV 和表 数据访问 控制模块 dsPIC33F 一般框图 中断 控制器 8 16 23 23 23 PCU PCH PCL 程序计数器 堆栈 循环 控制 控制 逻辑 逻辑 地址锁存器 Y 数据总线 X 数据总线 16 16 数据锁存器 16 数据锁存器 X RAM 地址 锁存器 Y RAM 地址 锁存器 16 16 地址发生器单元 DMA RAM DMA 控制器 PORTA PORTB 16 PORTC 程序存储器 数据锁存器 地址总线 24 指令 译码和 控制 至各不同模块的 控制信号 OSC2/CLKO OSC1/CLKI 时序 发生 FRC/LPRC 振荡器 高精度 带隙 参考源 稳压器 上电延时 定时器 振荡器 起振定时器 上电 复位 看门狗 定时器 欠压 复位 ROM 锁存器 EA 多路开关 16 16 立即数数据 指令寄存器 16 DSP 引擎 除法支持 16 × 16 W 寄存器阵列 16 16 位 ALU 16 PORTD PORTE PORTF PORTG VDDCORE/VCAP VDD,VSS MCLR 定时器 1-9 PWM QEI DCI ADC1, 2 CAN1,2 注: 输入捕捉 1-8 输出比较 / PWM1-8 CN1-23 SPI1,2 I2C1,2 UART1,2 并非在所有器件的引脚配置中都实现了全部的引脚或功能。 关于每个器件的特定引脚和功能的信息,请参见引脚图。 DS70165D_CN 第 24 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 1-1: 引脚说明 引脚名称 引脚 类型 缓冲器 类型 说明 AN0-AN31 I Analog 模拟输入通道。 AVDD P P 模拟模块的正电源。 AVSS P P 模拟模块的接地参考点。 CLKI CLKO CN0-CN23 I ST/CMOS 外部时钟源输入。始终与 OSC1 引脚功能复用。 O - 振荡器晶振输出。在晶振模式下,该引脚与晶振或谐振器相连。在 RC 和 EC 模式下 可选择输出 CLKO 信号。总是与 OSC2 引脚功能复用。 I ST 输入电平变化通知输入。 可软件编程使能所有输入引脚的内部弱上拉。 COFS CSCK CSDI CSDO I/O ST 数据转换器接口帧同步引脚。 I/O ST 数据转换器接口串行时钟输入 / 输出引脚。 I ST 数据转换器接口串行数据输入引脚。 O - 数据转换器接口串行数据输出引脚。 C1RX I C1TX O C2RX I C2TX O PGD1/EMUD1 I/O PGC1/EMUC1 I PGD2/EMUD2 I/O PGC2/EMUC2 I PGD3/EMUD3 I/O PGC3/EMUC3 I IC1-IC8 I INDX I QEA I QEB I UPDN O INT0 I INT1 I INT2 I INT3 I INT4 I ST - ST - ST ST ST ST ST ST ST ST ST ST CMOS ST ST ST ST ST ECAN1 总线接收引脚。 ECAN1 总线发送引脚。 ECAN2 总线接收引脚。 ECAN2 总线发送引脚。 编程 / 调试通信通道 1 使用的数据 I/O 引脚。 编程 / 调试通信通道 1 使用的时钟输入引脚。 编程 / 调试通信通道 2 使用的数据 I/O 引脚。 编程 / 调试通信通道 2 使用的时钟输入引脚。 编程 / 调试通信通道 3 使用的数据 I/O 引脚。 编程 / 调试通信通道 3 使用的时钟输入引脚。 输入捕捉通道 1-8。 正交编码器索引脉冲输入。 QEI 模式下的正交编码器 A 相输入。 定时器模式下的辅助定时器外部时钟 / 门控输入。 QEI 模式下的正交编码器 B 相输入。 定时器模式下的辅助定时器外部时钟 / 门控输入。 位置向上 / 向下计数器方向状态。 外部中断 0。 外部中断 1。 外部中断 2。 外部中断 3。 外部中断 4。 FLTA FLTB PWM1L PWM1H PWM2L PWM2H PWM3L PWM3H PWM4L PWM4H I ST PWM 故障 A 输入。 I ST PWM 故障 B 输入。 O - PWM 1 低电平输出。 O - PWM 1 高电平输出。 O - PWM 2 低电平输出。 O - PWM 2 高电平输出。 O - PWM 3 低电平输出。 O - PWM 3 高电平输出。 O - PWM 4 低电平输出。 O - PWM 4 高电平输出。 MCLR I/P ST 主复位输入。此引脚为低电平时器件复位 (低电平有效)。 OCFA OCFB OC1-OC8 I ST 比较故障 A 输入 (比较通道 1、 2、 3 和 4)。 I ST 比较故障 B 输入 (比较通道 5、 6、 7 和 8)。 O - 比较输出通道 1-8。 OSC1 OSC2 I ST/CMOS 振荡器晶振输入。当配置为 RC 模式时为 ST 缓冲器,否则为 CMOS 缓冲器。 I/O - 振荡器晶振输出。在晶振模式下,该引脚与晶振或谐振器相连。在 RC 和 EC 模式下 可选择输出 CLKO 信号。 图注: CMOS = CMOS 兼容输入或输出; Analog = 模拟输入 ST = CMOS 电平的施密特触发器输入; O = 输出; I = 输入; P = 电源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 25 页 dsPIC33F 表 1-1: 引脚说明 (续) 引脚名称 引脚 类型 缓冲器 类型 说明 RA0-RA7 I/O RA9-RA10 I/O RA12-RA15 I/O ST PORTA 为双向 I/O 端口。 ST ST RB0-RB15 I/O RC1-RC4 I/O RC12-RC15 I/O ST PORTB 为双向 I/O 端口。 ST PORTC 为双向 I/O 端口。 ST RD0-RD15 I/O RE0-RE9 I/O RF0-RF8 I/O RF12-RF13 ST PORTD 为双向 I/O 端口。 ST PORTE 为双向 I/O 端口。 ST PORTF 为双向 I/O 端口。 RG0-RG3 I/O RG6-RG9 I/O RG12-RG15 I/O ST PORTG 为双向 I/O 端口。 ST ST SCK1 SDI1 SDO1 SS1 SCK2 SDI2 SDO2 SS2 SCL1 SDA1 SCL2 SDA2 SOSCI SOSCO TMS TCK TDI TDO T1CK T2CK T3CK T4CK T5CK T6CK T7CK T8CK T9CK U1CTS U1RTS U1RX U1TX U2CTS U2RTS U2RX U2TX VDD VDDCORE VSS VREF+ I/O ST SPI1 的同步串行时钟输入 / 输出。 I ST SPI1 数据输入。 O - SPI1 数据输出。 I/O ST SPI1 从动同步或帧脉冲 I/O。 I/O ST SPI2 的同步串行时钟输入 / 输出。 I ST SPI2 数据输入。 O - SPI2 数据输出。 I/O ST SPI2 从动同步或帧脉冲 I/O。 I/O ST I2C1 的同步串行时钟输入 / 输出。 I/O ST I2C1 的同步串行数据输入 / 输出。 I/O ST I2C2 的同步串行时钟输入 / 输出。 I/O ST I2C2 的同步串行数据输入 / 输出。 I ST/CMOS 32.768 kHz 低功耗晶振输入,否则为 CMOS 缓冲器。 O - 32.768 kHz 低功耗晶振输出。 I ST JTAG 测试模式选择引脚。 I ST JTAG 测试时钟输入引脚。 I ST JTAG 测试数据输入引脚。 O - JTAG 测试数据输出引脚。 I ST Timer1 外部时钟输入。 I ST Timer2 外部时钟输入。 I ST Timer3 外部时钟输入。 I ST Timer4 外部时钟输入。 I ST Timer5 外部时钟输入。 I ST Timer6 外部时钟输入。 I ST Timer7 外部时钟输入。 I ST Timer8 外部时钟输入。 I ST Timer9 外部时钟输入。 I ST UART1 允许发送。 O - UART1 请求发送。 I ST UART1 接收。 O - UART1 发送。 I ST UART2 允许发送。 O - UART2 请求发送。 I ST UART2 接收。 O - UART2 发送。 P - 外设逻辑和 I/O 引脚的正电源端。 P - CPU 逻辑滤波器电容连接。 P - 逻辑模块和 I/O 引脚的接地参考。 I Analog 模拟参考高电压输入。 VREF- I Analog 模拟参考低电压输入。 图注: CMOS = CMOS 兼容输入或输出; Analog = 模拟输入 ST = CMOS 电平的施密特触发器输入; O = 输出; I = 输入; P = 电源 DS70165D_CN 第 26 页 初稿  2007 Microchip Technology Inc. 2.0 CPU 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F CPU 模块采用 16 位 (数据)的改进哈佛架 构,具有增强指令集,其中包含对 DSP 的强大支持。 CPU 拥有 24 位指令字,指令字带有长度可变的操作码 字段。程序计数器 (Program Counter, PC)为 23 位 宽,可以寻址最大 4M × 24 位的用户程序存储空间。实 际实现的程序存储容量因器件而异。单周期指令预取机 制可帮助维持吞吐量并使指令的执行具有预测性。除了 改变程序流的指令、双字传送 (MOV.D)指令和表指令 以外,所有指令都在单个周期内执行。 使用 DO 和 REPEAT指令支持无开销的程序循环结构,这两条指令在 任何时间都可以被中断。 dsPIC33F 器件在编程模型中有 16 个 16 位的工作寄存 器。每个工作寄存器都可以充当数据、地址或地址偏移 量寄存器。第 16 个工作寄存器 (W15)作为软件堆栈 指针 (Stack Pionter, SP),用于中断和调用。 dsPIC33F 指令集具有两类指令:MCU 类指令和 DSP 类指令。 这两类指令无缝地集成到单个 CPU 中。指令 集包括很多寻址模式,指令的设计可使 C 编译器的效率 达到最优。对于大多数指令, dsPIC33F 能在每个指令 周期内执行一次数据 (或程序)存储器数据读操作、一 次工作寄存器 (数据)读操作、一次数据存储器写操作 和一次程序存储器 (指令)读操作。所以,可以支持 3 个操作数的指令,使 A + B = C 操作能在单个周期内执 行。 图 2-1 显示了 CPU 的框图,图 2-2 显示了 dsPIC33F 的 编程模型。 2.1 数据寻址概述 数据空间可以作为 32K 字或 64 KB 寻址,并被分成两块, 称为 X 和 Y 数据存储空间。 每个存储块有各自独立的地 址发生单元 (Address Generation Unit, AGU)。MCU 类指令只通过 X 存储空间 AGU 进行操作,可将整个存 储映射空间作为一个线性数据空间访问。某些 DSP 指令 通过 X 和 Y 的 AGU 进行操作以支持双操作数读操作,这 样会将数据地址空间分成两个部分。 X 和 Y 数据空间的 边界视具体器件而定。 dsPIC33F X 和 Y 地址空间都支持无开销循环缓冲区 (模寻址)。 模寻址省去了 DSP 算法的软件边界检查开销。此外,X AGU 的循环寻址可以用于任何 MCU 类指令。X AGU 还 支持位反转寻址,大幅简化了基 2 FFT 算法对输入或输 出数据的重新排序。 可以选择将数据存储空间映射的高 32 KB 映射到由 8 位 程序空间可视性页 (Program Space Visibility Page, PSVPAG)寄存器定义的任何 16K 程序字边界内的程序 空间内。程序空间到数据空间的映射功能让任何指令都 能象访问数据空间一样访问程序空间。 数据空间还包括 2 KB 的 DMA RAM,它主要用于 DMA 数据传输,但也可用作通用 RAM。 2.2 DSP 引擎概述 DSP 引擎具备一个高速 17 位 x 17 位乘法器、一个 40 位 ALU、两个 40 位饱和累加器和一个 40 位双向桶形移 位寄存器。该桶形移位寄存器能在单个周期内将一个 40 位的值右移或左移最多 16 位。DSP 指令可以无缝地与 所有其他指令一起操作,其设计可实现最佳的实时性 能。 MAC 类指令和其他相关指令可以在同一个周期内, 同时完成从存储器中取出两个数据操作数,将两个 W 寄 存器相乘并累加,且可选择使结果饱和。这要求 RAM 数据存储空间对于这些指令拆分为两块,但对于所有其 他指令保持线性。这是通过将某些工作寄存器专用于每 个地址空间,以透明和灵活的方式实现的。 2.3 MCU 的特性 dsPIC33F 具备一个由 MCU ALU 和 DSP 引擎共用的 17位 x 17位单周期乘法器。此乘法器可以进行有符号、 无符号和混合符号的乘法运算。使用 17 位 x 17 位乘法 器进行 16 位 x 16 位乘法运算不仅允许您执行混合符号 的乘法运算,而且对于 (-1.0) x (-1.0) 这样的特殊运算也 可以得到准确结果。 dsPIC33F 支持小数和整数的 16/16 位和 32/16 位除法 运 算。所 有的 除 法 指 令都 是 迭 代 操作 且 必 须 在一 个 REPEAT 循环中执行,总执行时间为 19 个指令周期。 在这 19 个周期的任一周期内可以中断除法操作而不会 丢失数据。 一个 40 位的桶形移位寄存器用于在单个周期内将数据 右移或左移最多 16 位。 MCU 和 DSP 指令都可使用该 桶形移位寄存器。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 27 页 dsPIC33F 图 2-1: dsPIC33F CPU 内核框图 PSV 和表 数据访问 控制模块 Y 数据总线 中断 控制器 X 数据总线 8 16 16 16 16 数据锁存器 数据锁存器 23 DMA PCU PCH PCL 23 程序计数器 X RAM Y RAM RAM 16 堆栈 控制 逻辑 循环 控制 逻辑 地址 锁存器 地址 锁存器 23 地址锁存器 16 16 地址发生器单元 DMA 控制器 程序存储器 数据锁存器 地址总线 24 指令 译码和 控制 到各模块的控制信号 ROM 锁存器 EA 多路开关 16 16 立即数数据 指令寄存器 16 DSP 引擎 除法支持 16 × 16 工作寄存器阵列 16 16 位 ALU 16 到外设模块 DS70165D_CN 第 28 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 2-2: dsPIC33F 编程模型 D15 DSP 操作数 寄存器 DSP 地址 寄存器 D0 W0/WREG W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12/DSP 偏移量寄存器 W13/DSP 回写寄存器 W14/ 帧指针 W15/ 堆栈指针 PUSH.S 影子寄存器 DO 影子寄存器 图注 工作寄存器 SPLIM 堆栈指针限制寄存器 DSP 累加器 PC22 AD39 AccA AccB AD31 7 0 TBLPAG 数据表页地址 7 0 PSVPAG 程序空间可视性页地址 15 RCOUNT 15 DCOUNT 22 DOSTART 22 DOEND 15 CORCON AD15 AD0 PC0 0 程序计数器 0 REPEAT 循环计数器 0 DO 循环计数器 0 DO 循环起始地址 DO 循环结束地址 0 内核配置寄存器 OA OB SA SB OAB SAB DA DC IPL2 IPL1 IPL0 RA N OV Z C 状态寄存器 SRH SRL  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 29 页 dsPIC33F 2.4 CPU 控制寄存器 寄存器 2-1: SR:CPU 状态寄存器 R-0 OA bit 15 R-0 R/C-0 R/C-0 OB SA(1) SB(1) R-0 OAB R/C-0 SAB R -0 R/W-0 DA DC bit 8 R/W-0(2) R/W-0(3) R/W-0(3) R-0 IPL<2:0>(2) RA bit 7 R/W-0 N R/W-0 OV R/W-0 Z R/W-0 C bit 0 图注: C = 只清零位 S = 只置 1 位 1 =置1 R = 可读位 W = 可写位 0 = 清零 U= 未实现位,读为 0 -n= 上电复位时的值 x= 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 OA:累加器 A 溢出状态位 1 = 累加器 A 溢出 0 = 累加器 A 未溢出 OB:累加器 B 溢出状态位 1 = 累加器 B 溢出 0 = 累加器 B 未溢出 SA:累加器 A 饱和 “粘住”状态位 (1) 1 = 累加器 A 饱和或在某时已经饱和 0 = 累加器 A 未饱和 SB:累加器 B 饱和 “粘住”状态位 (1) 1 = 累加器 B 饱和或在某时已经饱和 0 = 累加器 B 未饱和 OAB:OA 和 OB 组合的累加器溢出状态位 1 = 累加器 A 或 B 已经溢出 0 = 累加器 A 和 B 都未溢出 SAB:SA 和 SB 组合的累加器 “粘住”状态位 1 = 累加器 A 或 B 饱和或在过去某时已经饱和 0 = 累加器 A 和 B 都未饱和 注: 此位可被读取或清零 (但不能置 1)。清零此位的同时将清零 SA 和 SB。 DA:DO 循环状态位 1 = 正在进行 DO 循环 0 = 不在进行 DO 循环 DC:MCU ALU 半进位 / 借位标志位 1 = 结果的第 4 低位 (对于字节大小的数据)或第 8 低位 (对于字大小的数据)发生了向高位的进位 0 = 结果的第 4 低位 (对于字节大小的数据)或第 8 低位 (对于字大小的数据)未发生向高位的进位 注 1: 此位可被读取或清零 (但不能置 1)。 2: IPL<2:0> 位和 IPL<3> 位 (CORCON<3>)共同决定 CPU 的中断优先级。如果 IPL<3> = 1,则括号中的 值表示中断优先级。当 IPL<3> = 1 时,禁止用户中断。 3: 当 NSTDIS (INTCON1<15>)= 1 时, IPL<2:0> 状态位是只读的。 DS70165D_CN 第 30 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 2-1: SR:CPU 状态寄存器 (续) bit 7-5 bit 4 bit 3 bit 2 bit 1 bit 0 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) RA:REPEAT 循环状态位 1 = 正在进行 REPEAT 循环 0 = 不在进行 REPEAT 循环 N:MCU ALU 负标志位 1 = 结果为负 0 = 结果为非负 (零或正值) OV:MCU ALU 溢出标志位 此位用于有符号的算术运算 (以二进制补码的方式进行) 。它表示量值上的溢出,这种溢出将导致符 号位改变状态。 1 = 在本次算术运算中有符号运算发生了溢出 0 = 未发生溢出 Z:MCU ALU 全零标志位 1 = 影响 Z 位的任何运算在过去某时已将该位置 1 0 = 影响 Z 位的最近一次运算已经将该位清零 (即运算结果非零) C:MCU ALU 进位 / 借位标志位 1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位 注 1: 此位可被读取或清零 (但不能置 1)。 2: IPL<2:0> 位和 IPL<3> 位 (CORCON<3>)共同决定 CPU 的中断优先级。如果 IPL<3> = 1,则括号中的 值表示中断优先级。当 IPL<3> = 1 时,禁止用户中断。 3: 当 NSTDIS (INTCON1<15>)= 1 时, IPL<2:0> 状态位是只读的。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 31 页 dsPIC33F 寄存器 2-2: CORCON:内核控制寄存器 U-0 - bit 15 U-0 U-0 R/W-0 R/W-0 R-0 - - US EDT(1) R/W-0 SATA bit 7 R/W-0 SATB R/W-1 SATDW R/W-0 ACCSAT R/C-0 IPL3(2) R/W-0 PSV 图注: R = 可读位 0 = 清零 C = 只清零位 W = 可写位 x = 未知 -n = 上电复位时的值 U = 未实现位,读为 0 bit 15-13 bit 12 bit 11 bit 10-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 US:DSP 乘法无符号 / 有符号控制位 1 = DSP 引擎执行无符号乘法运算 0 = DSP 引擎执行有符号乘法运算 EDT:DO 循环提前终止控制位 (1) 1 = 在当前循环迭代结束时终止 DO 循环 0 = 无影响 DL<2:0>:DO 循环嵌套层级状态位 111 = 正在进行 7 层 DO 循环嵌套 • • 001 = 正在进行 1 层 DO 循环嵌套 000 = 正在进行 0 层 DO 循环嵌套 (目前没有 DO 循环嵌套) SATA:AccA 饱和使能位 1 = 使能累加器 A 饱和 0 = 禁止累加器 A 饱和 SATB:AccB 饱和使能位 1 = 使能累加器 B 饱和 0 = 禁止累加器 B 饱和 SATDW:DSP 引擎的数据空间写饱和使能位 1 = 使能数据空间写饱和 0 = 禁止数据空间写饱和 ACCSAT:累加器饱和模式选择位 1 = 9.31 饱和 (超饱和) 0 = 1.31 饱和 (正常饱和) IPL3:CPU 中断优先级状态位 3(2) 1 = CPU 中断优先级大于 7 0 = CPU 中断优先级等于或小于 7 PSV:数据空间中程序空间可视性使能位 1 = 程序空间在数据空间中可视 0 = 程序空间在数据空间中不可视 RND:舍入模式选择位 1 = 使能有偏 (常规)舍入 0 = 使能无偏 (收敛)舍入 IF:整数或小数乘法器模式选择位 1 = 使能 DSP 乘法运算的整数模式 0 = 使能 DSP 乘法运算的小数模式 注 1: 此位将总是读为 0。 2: IPL3 位和 IPL<2:0> 位 (SR<7:5>)共同决定 CPU 的中断优先级。 R-0 DL<2:0> R/W-0 RND 1= 置 1 R-0 bit 8 R/W-0 IF bit 0 DS70165D_CN 第 32 页 初稿  2007 Microchip Technology Inc. dsPIC33F 2.5 算术逻辑单元 (ALU) dsPIC33F ALU 为 16 位宽,并能进行加、减、移位和 逻辑运算。 除非特别指明,算术运算一般以二进制补码 方式进行。根据不同的运算,ALU 可能会影响 SR 寄存 器中的进位标志位 (C)、全零标志位 (Z)、负标志位 (N) 、溢出标志位 (OV)和半进位标志位 (DC)的 值。在减法操作中,C 和 DC 位分别作为借位和半借位 位。 根据所使用的指令模式, ALU 可以执行 8 位或 16 位运 算。依据指令的寻址模式,ALU 运算的数据可以来自 W 寄存器阵列或数据存储器。同样,ALU 的输出数据可以 被写入 W 寄存器阵列或数据存储单元。 有 关 每 条 指 令 所 影 响 的 SR 位 的 信 息,请参见 《dsPIC30F/33F 程序员参考手册》(DS70157B_CN)。 dsPIC33F CPU 融入了对乘法和除法的硬件支持。它带 有专用的硬件乘法器以及支持 16 位除数除法的硬件。 2.5.1 乘法器 通过使用 DSP 引擎的高速 17 位 x17 位乘法器,ALU 支 持各种无符号、有符号或混合符号的 MCU 乘法运算: 1. 16 位 x16 位有符号乘法运算 2. 16 位 x16 位无符号乘法运算 3. 16 位有符号数 x5 位无符号立即数 4. 16 位无符号数 x16 位无符号数 5. 16 位无符号数 x5 位无符号立即数 6. 16 位无符号数 x16 位有符号数 7. 8 位无符号数 x8 位无符号数 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 位× 17 位乘法器、一个桶形 移位寄存器和一个 40 位加法器 / 减法器 (带两个目标 累加器以及舍入和饱和逻辑)组成。 dsPIC33F 为单周期指令流架构;因此, DSP 引擎的工 作不能与 MCU 指令流的执行同时进行。但是,某些 MCU ALU 和 DSP 引擎资源可由同一条指令 (例如, ED 和 EDAC)同时使用。 DSP 引擎能够执行固有的不需要其他数据的累加器— 累加器操作。这些指令是 ADD、 SUB 和 NEG。 通过 CPU 内核控制寄存器 (CORCON)中的各个位, 可以对 DSP 引擎的操作进行多种选择,这些选择如下: 1. 小数或整数 DSP 乘法 (IF)。 2. 有符号或无符号 DSP 乘法 (US)。 3. 常规或收敛舍入 (RND)。 4. AccA 自动饱和使能 / 禁止 (SATA)。 5. AccB 自动饱和使能 / 禁止 (SATB)。 6. 使能 / 禁止写数据存储器操作时的自动饱和 (SATDW)。 7. 累加器饱和模式选择 (ACCSAT)。 图 2-3 给出了 DSP 引擎的框图。 表 2-1: DSP 指令汇总 指令 CLR ED EDAC MAC MAC MOVSAC MPY MPY MPY.N MSC 代数运算 A=0 A = (x – y)2 A = A + (x – y)2 A = A + (x * y) A = A + x2 A 无变化 A=x*y A=x2 A=–x*y A=A–x*y ACC 回写 有 无 无 有 无 有 无 无 无 有  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 33 页 dsPIC33F 图 2-3: DSP 引擎框图 40 进位 / 借位输出 进位 / 借位输入 40 位累加器 A 40 位累加器 B 饱和 加法器 取补 40 舍入 饱16 逻辑 和 40 40 40 桶形 移位 16 寄存器 40 符号扩展 32 16 补零 33 32 17 位 乘法器 / 定标器 16 16 到 / 来自 W 阵列 Y 数据总线 X 数据总线 DS70165D_CN 第 34 页 初稿  2007 Microchip Technology Inc. dsPIC33F 2.6.1 乘法器 17位×17位的乘法器可以进行有符号或无符号的运算, 其输出经过定标器进行换算后可支持 1.31 小数(Q31) 或 32 位整数结果。无符号操作数经过零扩展后,送入 乘法器输入值的第 17 位。有符号操作数经过符号扩展, 送入乘法器输入值的第 17 位。17 位× 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 x10-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 (CORCON<7:6>)和 ACCSAT (CORCON<4>)模 式控制位来确定什么时候及其什么值要饱和。 在状态寄存器中有 6 个支持饱和及溢出的位,它们是: 1. OA: AccA 溢出至警戒位 2. OB: AccB 溢出至警戒位 3. SA: AccA 已饱和 (bit 31 溢出并饱和) 或 AccA 溢出至警戒位并饱和(bit 39 溢出并饱和) 4. SB: AccB 已饱和 (bit 31 溢出并饱和) 或 AccB 溢出至警戒位并饱和(bit 39 溢出并饱和) 5. OAB: OA 和 OB 的逻辑或 (OR) 6. SAB: SA 和 SB 的逻辑或 (OR) 每次数据通过加法器 / 减法器,就会修改 OA 和 OB 位。 置 1 时,它们表明最近的运算已经溢出到累加器警戒位 (bit 32 到 bit 39)。如果 OA 和 OB 位置 1 而且 INTCON1 寄存器中相应的溢出陷阱允许位 (OVATE 和 OVBTE) 置 1 的话,还可以选择用 OA 和 OB 位产生算术警告陷 阱(见第 6.0 节 “中断控制器”)。这使得用户能够立 即采取措施,例如,改正系统增益。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 35 页 dsPIC33F 每次数据通过加法器 / 减法器,就会修改 SA 和 SB 位, 但用户只能对它们进行清零。置 1 时,它们表明累加器 已经溢出其最大范围 (对于 32 位饱和是 bit 31,而 40 位饱和是 bit 39),将发生饱和 (如果饱和使能的话)。 如果没有使能饱和,SA 和 SB 置 1 默认为 bit 39 溢出, 于是表明产生了灾难性溢出。如果 INTCON1 寄存器中 的 COVTE 位置 1,当饱和被禁止时,SA 和 SB 位将产 生算术警告陷阱。 在状态寄存器中,对于溢出和饱和状态位,可以将 OA 和 OB 的逻辑或形成 OAB 位,将 SA 和 SB 的逻辑或形 成 SAB 位。这样,只需检查状态寄存器中的一个位,程 序就能判断累加器是否已溢出,或者累加器是否已饱 和。对于通常要使用两个累加器的复数运算而言,这很 有用。 器件支持三种饱和及溢出模式: 1. bit 39 溢出和饱和: 当发生 bit 39 溢出和饱和时,饱和逻辑将最大正 9.31 (0x7FFFFFFFFF)或最大负 9.31 值 (0x8000000000)装入目标累加器。SA 或 SB 位 置 1 并保持置 1 状态直到被用户清零。这称为 “超饱和” ,为错误数据或不可预期的算法问题 (例如,增益计算)提供了保护机制。 2. bit 31 溢出和饱和: 当发生 bit 31 溢出和饱和时,饱和逻辑将最大的 正 1.31 值 (0x7FFFFFFFFF)或最小的负 1.31 值 (0x8000000000)装入目标累加器。 SA 或 SB 位置 1 并保持置 1 状态直到被用户清零。当 此饱和模式生效时,不使用警戒位 (因此 OA、 OB 或 OAB 位永远不会置 1)。 3. bit 39 灾难性溢出: 来自加法器的 bit 39 溢出状态位,被用来置 1 SA 或 SB 位,(置 1 后,这两位将保持置 1,除非用 户进行清零)。 不进行饱和操作,允许累加器溢 出 (破坏其符号)。如果 INTCON1 寄存器中的 COVTE 位置 1,则灾难性溢出可能引发陷阱异 常。 2.6.2.2 累加器 “回写” MAC 类指令 (MPY、 MPY.N、 ED 和 EDAC 除外)可以 选择将累加器高位字 (bit 16 至 bit 31)的舍入形式写 入数据存储空间,前提是当前指令不对该累加器进行操 作。通过 X 总线,寻址组合的 X 和 Y 地址空间,执行 回写操作。支持以下寻址模式: 1. W13,寄存器直接寻址: 非操作目标的累加器的舍入内容以1.15小数形式 写入 W13。 2. [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,否则收敛的(或无偏)舍入 操作方式与常规舍入相同。ACCxL 等于 0x8000 时,要 对 ACCxH 的最低有效位(Least significant bit,LSb) (累加器的 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)数据空间。对于这类指令,始终要对数据进行舍 入。 DS70165D_CN 第 36 页 初稿  2007 Microchip Technology Inc. dsPIC33F 2.6.2.4 数据空间写饱和 除加法器 / 减法器饱和外,对数据空间进行写操作也会饱 和,但不会影响源累加器的内容。 数据空间写饱和逻辑 模块接受来自舍入逻辑模块的一个 16 位的 1.15 小数值 作为输入,还接受来自源(累加器)和 16 位舍入加法器 的溢出状态。这些输入经过组合,用来选择恰当的 1.15 小数值作为输出,写入至数据存储空间中。 如果 CORCON 寄存器中的 SATDW 位置 1,将检测(经 过舍入或截取后的)数据是否溢出,并相应地进行调整。 如果输入数据大于 0x007FFF,则写入数据存储器中的数 据被强制为最大的正 1.15 值,0x7FFF。如果输入数据小 于 0xFF8000,则写入数据存储器中的数据被强制为最大 的负 1.15 值, 0x8000。源累加器的最高有效位 (Most significant bit, MSb)(bit 39)用来决定被检测的操作 数的符号。 如果 CORCON 寄存器中的 SATDW 位没有置 1,则输入 数据都将通过,在任何情况下都不会被修改。 2.6.3 桶形移位寄存器 桶形移位寄存器在单个周期内最多可算术或逻辑右移 16 位或左移 16 位。源寄存器可以是两个 DSP 累加器 中的任何一个,或者是 X 总线 (支持寄存器或存储器数 据的多位移位)。 移位寄存器需要一个有符号二进制值,用来确定移位操 作的幅度 (位数)和方向。正值将操作数右移。负值则将 操作数左移。值为 0 则不改变操作数。 桶形移位寄存器是 40 位宽的,于是,它为 DSP 移位操 作提供了 40 位的结果,而为 MCU 移位操作提供 16 位 的结果。来自 X 总线的数据在桶形移位寄存器中的存放 方式是:右移则数据存放在 bit 16 至 bit 31 中,左移则存 放在 bit 0 至 bit 16 中。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 37 页 dsPIC33F 注: DS70165D_CN 第 38 页 初稿  2007 Microchip Technology Inc. dsPIC33F 3.0 存储器构成 注: 本数据手册总结了 dsPIC33F 系列器件的 功能,但是不应把本手册当作无所不包的 参考手册来使用。要了解本数据手册之外 的其他信息,请参见 《dsPIC30F 系列参 考手册》(DS70046E_CN )。 dsPIC33F 系列架构具有独立的程序和数据空间及总 线。这一架构同时还允许在代码执行过程中从数据空间 直接访问程序存储器。 3.1 程序地址空间存储 dsPIC33F 器件的程序地址空间可存储 4M 个指令字。可 通过由程序执行过程中 23 位程序计数器(PC)、表操作 或数据空间重映射得到的 24 位值寻址这一空间,如第 3.6 节 “程序存储空间与数据存储空间的接口”所述。 用户只能访问程序存储空间的低半地址部分(地址范围 为 0x000000 至 0x7FFFFF)。使用 TBLRD/TBLWT 指 令时,情况有所不同,这两条指令采用 TBLPAG<7> 以 允许访问配置存储空间中的配置位和器件 ID。 图 3-1 给出了 dsPIC33F 系列器件的存储器映射情况。 图 3-1: dsPIC33F 系列器件的程序存储器映射 dsPIC33FJ64XXXXX GOTO 指令 复位地址 中断向量表 保留 备用向量表 dsPIC33FJ128XXXXX GOTO 指令 复位地址 中断向量表 保留 备用向量表 用户闪存 程序存储空间 (22K 指令字) 用户闪存 程序存储空间 (44K 指令字) dsPIC33FJ256XXXXX GOTO 指令 复位地址 中断向量表 保留 备用向量表 0x000000 0x000002 0x000004 0x0000FE 0x000100 0x000104 0x0001FE 0x000200 用户闪存 程序存储空间 (88K 指令字) 0x00ABFE 0x00AC00 0x0157FE 0x015800 用户存储空间 未用 (读为 0) 未实现 (读为 0) 未实现 (读为 0) 0x02ABFE 0x02AC00 0x7FFFFE 0x800000 保留 器件 配置寄存器 保留 保留 器件 配置寄存器 保留 保留 器件 配置寄存器 保留 0xF7FFFE 0xF80000 0xF80017 0xF80010 配置存储空间 DEVID (2) DEVID (2) DEVID (2) 0xFEFFFE 0xFF0000 0xFFFFFE  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 39 页 dsPIC33F 3.1.1 程序存储器构成 程序存储空间由可字寻址的块构成。 虽然它被视为 24 位宽,但将程序空间的每个地址视作一个低位字和一个 高位字的组合更加合理,其中高位字的高字节部分没有 实现。低位字的地址始终为偶数,而高位字的地址为奇 数 (见图 3-2)。 程序存储器地址始终在低位字处按字对齐。并且在代码 执行过程中地址将递增或递减 2。这种寻址方式与数据 存储空间寻址兼容,且为访问程序存储空间中的数据提 供了可能 。 图 3-2: 程序存储器构成 3.1.2 中断和陷阱向量 所有 dsPIC33F 器件中从 0x00000 到 0x000200 之间的 地址空间都是保留的,用来存储硬编码的程序执行向 量。提供了一个硬件复位向量将代码执行从器件复位时 PC 的默认值重新定位到代码实际开始处。用户可在地 址 0x000000 处编写一条 GOTO 指令以将代码的实际起 始处定义为 0x000002。 dsPIC33F 器件也具有两个中断向量表,地址分别为从 0x000004到0x0000FF和 0x000100到0x0001FF。这两 个中断向量表允许使用不同的中断服务程序 (Interrupt Service Routines,ISR)处理每个器件中断源。关于中 断向量表更详细的讨论,请参见第 6.1 节 “中断向量 表”。 高位字 地址 高位字 23 16 0x000001 00000000 0x000003 00000000 0x000005 00000000 0x000007 00000000 低位字 8 PC 地址 (低位字地址) 0 0x000000 0x000002 0x000004 0x000006 程序存储器 “虚拟”字节 (读为 0) 指令宽度 DS70165D_CN 第 40 页 初稿  2007 Microchip Technology Inc. 3.2 数据地址空间 dsPIC33F CPU具有独立的16位宽数据存储空间。使用 独立的地址发生单元 (AGU)对数据空间执行读写操 作。图 3-3 到图 3-5 给出了具有不同 RAM 容量的器件 的数据存储器映射。 数据存储空间中的所有有效地址 (Effective Address, EA)都是 16 位宽的,并且指向数据空间中的字节。这 种构成方式使得数据空间的地址范围为 64 KB 或 32K 字。数据存储空间的低半地址部分 (即当 EA<15> = 0 时) 用作实现的存储单元,而高半地址部分 (EA<15> = 1)则保留为程序空间可视性区域(Program Space Visibility ,PSV)区域。(见第 3.6.3 节“使用程 序空间可视性访问程序存储器中的数据”)。 dsPIC33F 器件共实现了 最大 30 KB 的数据存储空间。 如果 EA 指向了该区域以外的存储单元,则将返回一个 全零的字或字节。 3.2.1 数据空间宽度 数据存储空间组织为可字节寻址的 16 位宽的块。在数 据存储器和寄存器中的数据是以 16 位字为单位对齐的, 但所有数据空间的有效地址(EA)都被解析为字节。 每 个字的低字节部分具有偶地址,而高字节部分则具有奇 地址。 3.2.2 数据存储器构成和对齐方式 为了保持与 PIC® 器件向后兼容和提高数据存储空间的 使用效率, dsPIC33F 指令集同时支持字和字节操作。 字节访问会在内部对按字对齐的存储空间的所有有效地 址计算进行调整。例如,对于执行后修改寄存器间接寻 址模式 [Ws++],字节操作时,内核将其识别为值 Ws + 1,而字操作时,内核将其识别为 Ws + 2。 使用任何有效地址的最低位 (LSb)决定要选择哪个字 节,读数据字节的操作将读取包含此字节的整个字。选 定的字节被放在数据总线的低字节处。也就是说,数据 存储器和寄存器被组织为两个共享 (字)地址译码,而 写入线相互独立的字节宽度的并行实体。数据字节写操 作只写入存储阵列和寄存器中与字节地址匹配的相应部 分。 dsPIC33F 所有字访问都必须按偶地址对齐。不支持不对齐的字数 据取操作。因此当混合字节和字操作或从 8 位 MCU 代 码移植到此系列器件时,必须要小心。若试图进行这种 不对齐的读或写操作,则会产生地址错误陷阱。如果在 读操作时产生错误,正在执行的指令将完成 ;而如果在 写操作时产生错误,指令仍将执行,但不会进行写入。 无论是哪种情况都将执行陷阱,从而允许系统和 / 或用 户检查地址错误发生之前的机器状态。 所有载入 W 寄存器的字节都将载入 W 寄存器的低字节 (Least Significant Byte, LSB),W 寄存器的高字节 (Most Significant Byte, MSB)不变。 提供了一条符号扩展 (SE)指令,允许用户把 8 位的 有符号数据转换为 16 位的有符号值。或者,对于 16 位 无符号数据,用户可以清零任何 W 寄存器的 MSB,方 法是在相应的地址处执行一条零扩展 (ZE)指令。 3.2.3 SFR 空间 Near 数据空间的前2 KB单元(从0x0000到0x07FF)主 要被特殊功能寄存器 (Special Function Registers, SFR)占用。 dsPIC33F 内核和外设模块使用这些寄存 器来控制器件的工作。 SFR 分布在受其控制的模块中,通常一个模块会使用一 组 SFR。大部分 SFR 空间包含未用的地址单元,它们 读为 0。表 3-1 到表 3-34 给出了所有实现的 SFR 及其 地址的完整列表。 注: 不同器件的实际外设功能集和中断也各不 相同。关于特定器件的信息,请参见相应 器件的数据表和引脚图。 3.2.4 NEAR 数据空间 在 0x0000 和 0x1FFF 之间的 8 KB 的区域被称为 Near 数据空间。可以使用所有存储器直接寻址指令中的 13 位 绝对地址字段直接寻址这一空间中的地址单元。 此外, 还可以使用 MOV 指令寻址整个数据空间,支持使用 16 位地址字段的存储器直接寻址模式或使用工作寄存器作 为地址指针的间接寻址模式。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 41 页 dsPIC33F 图 3-3: 带有 8 KB RAM dsPIC33F 器件的数据存储器映射 2 KB SFR 空间 MSB 地址 0x0001 0x07FF 0x0801 16 位 MSB LSB SFR 空间 LSB 地址 0x0000 0x07FE 0x0800 X 数据 RAM(X) 8 KB SRAM 空间 0x17FF 0x1801 0x1FFF 0x2001 0x27FF 0x2801 Y 数据 RAM(Y) DMA RAM 0x17FE 0x1800 0x1FFE 0x2000 0x27FE 0x2800 0x8001 0x8000 可选择映射到 程序存储器 X 数据 未实现(X) 8 KB Near 数据 空间 0xFFFF 0xFFFE DS70165D_CN 第 42 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 3-4: 带有 16 KB RAM dsPIC33F 器件的数据存储器映射 2 KB SFR 空间 MSB 地址 0x0001 0x07FF 0x0801 16 位 MSB LSB SFR Space LSB 地址 0x0000 0x07FE 0x0800 16 KB SRAM 空间 0x1FFF 0x27FF 0x2801 0x3FFF 0x4001 0x47FF 0x4801 X 数据 RAM(X) Y 数据 RAM(Y) DMA RAM 0x1FFE 0x27FE 0x2800 0x3FFE 0x4000 0x47FE 0x4800 8 KB Near 数据 空间 0x8001 可选择映射到 程序存储器 X 数据 未实现(X) 0x8000 0xFFFF 0xFFFE  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 43 页 dsPIC33F 图 3-5: 带有 30 KB RAM dsPIC33F 器件的数据存储器映射 2 KB SFR 空间 MSB 地址 0x0001 0x07FF 0x0801 16 位 MSB LSB SFR 空间 LSB 地址 0x0000 0x07FE 0x0800 X 数据 RAM(X) 8 KB Near 数据 空间 30 KB SRAM 空间 0x47FF 0x4801 0x77FF 0x7800 0x7FFF 0x8001 Y 数据 RAM(Y) DMA RAM 0x47FE 0x4800 0x77FE 0x7800 0x7FFE 0x8000 可选择映射到 程序存储器 X 数据 未实现(X) 0xFFFF 0xFFFE DS70165D_CN 第 44 页 初稿  2007 Microchip Technology Inc. 3.2.5 X 和 Y 数据空间 内核有两个数据空间 X 和 Y。可单独访问这些数据空间 (对于一些 DSP 指令)或作为一个统一的线性地址范围 来访问 (对于 MCU 指令) 。使用两个地址发生单元 (AGU)和独立的数据总线来访问这两个数据空间。此 特性允许某些指令同时从 RAM 中取两个字,因此提高 了某些 DSP 算法的执行效率,如有限冲激响应(Finite Impulse Response, FIR)滤波算法和快速傅立叶变换 (Fast Fourier Transform, FFT)。 X 数据空间由所有指令使用并支持所有寻址模式。 X 数 据空间的读 / 写数据总线相互独立。所有将 X 和 Y 数据 空间看作一个组合的 X 和 Y 地址空间的指令均将 X 读数 据总线作为读数据路径。 X 数据空间也可为双操作数 DSP 指令 (MAC 类指令)的 X 数据预取路径。 MAC 类指令(CLR、ED、EDAC、MAC、MOVSAC、MPY、 MPY.N 和 MSC)将 Y 数据空间与 X 数据空间一起使用, 从而提供两条可同时对数据进行读操作的路径。 X 和 Y 数据空间都支持所有指令的模寻址,但要受到寻 址模式的限制。而位反转寻址模式只可用于对 X 数据空 间的写操作。 所以数据存储器写操作 (包括 DSP 类指令中的数据存 储器写操作)均把数据空间视为组合的 X 和 Y 地址空 间。X 和 Y 数据空间的分界取决于具体的器件且不能由 用户编程。 所有有效地址均为 16 位宽并且指向数据空间内的字节。 因此,数据空间地址范围为 64 KB 或 32 K 字,尽管不 同器件上实际实现的存储单元有所不同。 dsPIC33F 3.2.6 DMA RAM 每个 dsPIC33F 器件包含 2 KB 的双口 DMA RAM,位于 Y 数据空间的末端。DMA RAM 空间是 Y 数据 RAM 的 一部分,其中的存储单元可同时被 CPU 和 DMA 控制器 模块访问。DMA 控制器使用 DMA RAM 存储使用 DMA 传输到各个外设的数据,以及使用 DMA 从各个外设传输 进来的数据。 DMA 控制器可以在不占用 CPU 周期的情 况下访问 DMA RAM。 当 CPU 和 DMA 控制器尝试同时写同一个 DMA RAM 单 元时,硬件确保CPU具有优先访问权。因此,DMA RAM 提供了传输 DMA 数据的可靠方式,而无须暂停 CPU。 注: 在不需要使用 DMA 功能的应用中, DMA RAM 可作为通用数据存储区使用。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 45 页 dsPIC33F DS70165D_CN 第46 页 表 3-1: CPU 内核寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 初稿 WREG0 0000 工作寄存器 0 WREG1 0002 工作寄存器 1 WREG2 0004 工作寄存器 2 WREG3 0006 工作寄存器 3 WREG4 0008 工作寄存器 4 WREG5 000A 工作寄存器 5 WREG6 000C 工作寄存器 6 WREG7 000E 工作寄存器 7 WREG8 0010 工作寄存器 8 WREG9 0012 工作寄存器 9 WREG10 0014 工作寄存器 10 WREG11 0016 工作寄存器 11 WREG12 0018 工作寄存器 12 WREG13 001A 工作寄存器 13 WREG14 001C 工作寄存器 14 WREG15 001E 工作寄存器 15 SPLIM 0020 堆栈指针限制寄存器 PCL 002E 程序计数器低位字寄存器 PCH 0030 — — — — — — — — 程序计数器高字节寄存器 TBLPAG 0032 — — — — — — — — 表页地址指针寄存器 PSVPAG 0034 — — — — — — — — 程序存储器可视性页地址指针寄存器 RCOUNT 0036 Repeat 循环计数器寄存器 DCOUNT 0038 DCOUNT<15:0> DOSTARTL 003A DOSTARTL<15:1> DOSTARTH 003C — — — — — — — — — — DOSTARTH<5:0> DOENDL 003E DOENDL<15:1> DOENDH 0040 0040 — — — — — — — — — DOENDH SR 0042 OA OB SA SB OAB SAB DA DC IPL2 IPL1 IPL0 RA N OV Z CORCON 0044 — — — US EDT DL<2:0> SATA SATB SATDW ACCSAT IPL3 PSV RND MODCON 0046 XMODEN YMODEN — — BWM<3:0> YWM<3:0> XWM<3:0> XMODSRT 0048 XS<15:1> XMODEND 004A XE<15:1> YMODSRT 004C YS<15:1> YMODEND 004E YE<15:1> XBREV 0050 BREN XB<14:0> DISICNT 0052 — — 禁止中断计数器寄存器 BSRAM 0750 — — — — — — — — — — — — — IW_BSR IR_BSR SSRAM 0752 — — — — — — — — — — — — — IW_SSR IR_SSR 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0 0 C IF 0 1 0 1 RL_BSR RL_SSR 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0800 xxxx 0000 0000 0000 0000 xxxx xxxx xxxx 00xx xxxx 00xx 0000 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx 0000 0000  2007 Microchip Technology Inc.  2007 Microchip Technology Inc. 表 3-2: 电平变化通知寄存器映射 SFR SFR 名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 CNEN1 CNEN2 CNPU1 CNPU2 图注: 0060 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE CN9IE CN8IE CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE 0062 — — — — — — — — CN23IE CN22IE CN21IE CN20IE CN19IE CN18IE CN17IE CN16IE 0068 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE CN9PUE CN8PUE CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE 006A — — — — — — — — CN23PUE CN22PUE CN21PUE CN20PUE CN19PUE CN18PUE CN17PUE CN16PUE x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0000 0000 0000 0000 初稿 dsPIC33F DS70165D_CN 第47 页 dsPIC33F DS70165D_CN 第48 页 表 3-3: SFR 名称 SFR 地址 中断控制器寄存器映射 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 初稿 INTCON1 0080 NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE SFTACERR DIV0ERR DMACERR MATHERR ADDRERR STKERR OSCFAIL — INTCON2 0082 ALTIVT DISI — — — — — — — — — INT4EP INT3EP INT2EP INT1EP INT0EP IFS0 0084 — DMA1IF AD1IF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF T2IF OC2IF IC2IF DMA0IF T1IF OC1IF IC1IF INT0IF IFS1 0086 U2TXIF U2RXIF INT2IF T5IF T4IF OC4IF OC3IF DMA2IF IC8IF IC7IF AD2IF INT1IF CNIF — MI2C1IF SI2C1IF IFS2 0088 T6IF DMA4IF — OC8IF OC7IF OC6IF OC5IF IC6IF IC5IF IC4IF IC3IF DMA3IF C1IF C1RXIF SPI2IF SPI2EIF IFS3 008A FLTAIF — DMA5IF DCIIF DCIEIF QEIIF PWMIF C2IF C2RXIF INT4IF INT3IF T9IF T8IF MI2C2IF SI2C2IF T7IF IFS4 008C — — — — — — — — C2TXIF C1TXIF DMA7IF DMA6IF — U2EIF U1EIF FLTBIF IEC0 0094 — DMA1IE AD1IE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE T2IE OC2IE IC2IE DMA0IE T1IE OC1IE IC1IE INT0IE IEC1 0096 U2TXIE U2RXIE INT2IE T5IE T4IE OC4IE OC3IE DMA2IE IC8IE IC7IE AD2IE INT1IE CNIE — MI2C1IE SI2C1IE IEC2 0098 T6IE DMA4IE — OC8IE OC7IE OC6IE OC5IE IC6IE IC5IE IC4IE IC3IE DMA3IE C1IE C1RXIE SPI2IE SPI2EIE IEC3 009A FLTAIE — DMA5IE DCIIE DCIEIE QEIIE PWMIE C2IE C2RXIE INT4IE INT3IE T9IE T8IE MI2C2IE SI2C2IE T7IE IEC4 009C — — — — — — — — C2TXIE C1TXIE DMA7IE DMA6IE — U2EIE U1EIE FLTBIE IPC0 00A4 — T1IP<2:0> — OC1IP<2:0> — IC1IP<2:0> — INT0IP<2:0> IPC1 00A6 — T2IP<2:0> — OC2IP<2:0> — IC2IP<2:0> — DMA0IP<2:0> IPC2 00A8 — U1RXIP<2:0> — SPI1IP<2:0> — SPI1EIP<2:0> — T3IP<2:0> IPC3 00AA — — — — — DMA1IP<2:0> — AD1IP<2:0> — U1TXIP<2:0> IPC4 00AC — CNIP<2:0> — — — — — MI2C1IP<2:0> — SI2C1IP<2:0> IPC5 00AE — IC8IP<2:0> — IC7IP<2:0> — AD2IP<2:0> — INT1IP<2:0> IPC6 00B0 — T4IP<2:0> — OC4IP<2:0> — OC3IP<2:0> — DMA2IP<2:0> IPC7 00B2 — U2TXIP<2:0> — U2RXIP<2:0> — INT2IP<2:0> — T5IP<2:0> IPC8 00B4 — C1IP<2:0> — C1RXIP<2:0> — SPI2IP<2:0> — SPI2EIP<2:0> IPC9 00B6 — IC5IP<2:0> — IC4IP<2:0> — IC3IP<2:0> — DMA3IP<2:0> IPC10 00B8 — OC7IP<2:0> — OC6IP<2:0> — OC5IP<2:0> — IC6IP<2:0> IPC11 00BA — T6IP<2:0> — DMA4IP<2:0> — — — — — OC8IP<2:0> IPC12 00BC — T8IP<2:0> — MI2C2IP<2:0> — SI2C2IP<2:0> — T7IP<2:0> IPC13 00BE — C2RXIP<2:0> — INT4IP<2:0> — INT3IP<2:0> — T9IP<2:0> IPC14 00C0 — DCIEIP<2:0> — QEIIP<2:0> — PWMIP<2:0> — C2IP<2:0> IPC15 00C2 — FLTAIP<2:0> — — — — — DMA5IP<2:0> — DCIIP<2:0> IPC16 00C4 — — — — — U2EIP<2:0> — U1EIP<2:0> — FLTBIP<2:0> IPC17 00C6 — C2TXIP<2:0> — C1TXIP<2:0> — DMA7IP<2:0> — DMA6IP<2:0> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444 4444  2007 Microchip Technology Inc. DS70165D_CN 第49 页 初稿  2007 Microchip Technology Inc. 表 3-4: 定时器寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 TMR1 0100 Timer1 寄存器 PR1 0102 周期寄存器 1 T1CON 0104 TON — TSIDL — — — — — — TGATE TCKPS<1:0> TMR2 0106 TMR3HLD 0108 Timer2 寄存器 Timer3 保持寄存器 (仅在 32 位定时器工作模式下使用) TMR3 010A Timer3 寄存器 PR2 010C 周期寄存器 2 PR3 010E 周期寄存器 3 T2CON 0110 TON — TSIDL — — — — — — TGATE TCKPS<1:0> T3CON 0112 TON — TSIDL — — — — — — TGATE TCKPS<1:0> TMR4 0114 TMR5HLD 0116 Timer4 寄存器 Timer5 保持寄存器 (仅在 32 位定时器工作模式下使用) TMR5 0118 Timer5 寄存器 PR4 011A 周期寄存器 4 PR5 011C 周期寄存器 5 T4CON 011E TON — TSIDL — — — — — — TGATE TCKPS<1:0> T5CON 0120 TON — TSIDL — — — — — — TGATE TCKPS<1:0> TMR6 0122 Timer6 寄存器 TMR7HLD 0124 Timer7 保持寄存器 (仅在 32 位定时器工作模式下使用) TMR7 0126 Timer7 寄存器 PR6 0128 周期寄存器 6 PR7 012A 周期寄存器 7 T6CON 012C TON — TSIDL — — — — — — TGATE TCKPS<1:0> T7CON 012E TON — TSIDL — — — — — — TGATE TCKPS<1:0> TMR8 0130 Timer8 寄存器 TMR9HLD 0132 Timer9 保持寄存器 (仅在 32 位定时器工作模式下使用) TMR9 0134 Timer9 寄存器 PR8 0136 周期寄存器 8 PR9 0138 周期寄存器 9 T8CON 013A TON — TSIDL — — — — — — TGATE TCKPS<1:0> T9CON 013C TON — TSIDL — — — — — — TGATE TCKPS<1:0> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 3 Bit 2 Bit 1 — TSYNC TCS T32 — TCS — — TCS T32 — TCS — — TCS T32 — TCS — — TCS T32 — TCS — — TCS Bit 0 — — — — — — — — — 所有复位 时的状态 xxxx FFFF 0000 xxxx xxxx xxxx FFFF FFFF 0000 0000 xxxx xxxx xxxx FFFF FFFF 0000 0000 xxxx xxxx xxxx FFFF FFFF 0000 0000 xxxx xxxx xxxx FFFF FFFF 0000 0000 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第50 页 表 3-5: 输入捕捉寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 IC1BUF IC1CON IC2BUF IC2CON IC3BUF IC3CON IC4BUF IC4CON IC5BUF IC5CON IC6BUF IC6CON IC7BUF IC7CON IC8BUF IC8CON 图注: 0140 0142 — — ICSIDL — — — — 0144 0146 — — ICSIDL — — — — 0148 014A — — ICSIDL — — — — 014C 014E — — ICSIDL — — — — 0150 0152 — — ICSIDL — — — — 0154 0156 — — ICSIDL — — — — 0158 015A — — ICSIDL — — — — 015C 015E — — ICSIDL — — — — x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 8 Bit 7 Bit 6 Bit 5 输入捕捉 1 寄存器 — ICTMR 输入捕捉 2 寄存器 — ICTMR 输入捕捉 3 寄存器 — ICTMR 输入捕捉 4 寄存器 — ICTMR 输入捕捉 5 寄存器 — ICTMR 输入捕捉 6 寄存器 — ICTMR 输入捕捉 7 寄存器 — ICTMR 输入捕捉 8 寄存器 — ICTMR ICI<1:0> ICI<1:0> ICI<1:0> ICI<1:0> ICI<1:0> ICI<1:0> ICI<1:0> ICI<1:0> Bit 4 ICOV ICOV ICOV ICOV ICOV ICOV ICOV ICOV Bit 3 ICBNE ICBNE ICBNE ICBNE ICBNE ICBNE ICBNE ICBNE Bit 2 Bit 1 ICM<2:0> ICM<2:0> ICM<2:0> ICM<2:0> ICM<2:0> ICM<2:0> ICM<2:0> ICM<2:0> Bit 0 所有复位 时的状态 xxxx 0000 xxxx 0000 xxxx 0000 xxxx 0000 xxxx 0000 xxxx 0000 xxxx 0000 xxxx 0000 dsPIC33F DS70165D_CN 第51 页 初稿  2007 Microchip Technology Inc. 表 3-6: SFR 名称 输出比较寄存器映射 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 OC1RS OC1R OC1CON OC2RS OC2R OC2CON OC3RS OC3R OC3CON OC4RS OC4R OC4CON OC5RS OC5R OC5CON OC6RS OC6R OC6CON OC7RS OC7R OC7CON OC8RS OC8R OC8CON 图注: 0180 0182 0184 — — OCSIDL — — — — 0186 0188 018A — — OCSIDL — — — — 018C 018E 0190 — — OCSIDL — — — — 0192 0194 0196 — — OCSIDL — — — — 0198 019A 019C — — OCSIDL — — — — 019E 01A0 01A2 — — OCSIDL — — — — 01A4 01A6 01A8 — — OCSIDL — — — — 01AA 01AC 01AE — — OCSIDL — — — — x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 8 Bit 7 Bit 6 输出比较 1 辅助寄存器 输出比较 1 寄存器 — — — 输出比较 2 辅助寄存器 输出比较 2 寄存器 — — — 输出比较 3 辅助寄存器 输出比较 3 寄存器 — — — 输出比较 4 辅助寄存器 输出比较 4 寄存器 — — — 输出比较 5 辅助寄存器 输出比较 5 寄存器 — — — 输出比较 6 辅助寄存器 输出比较 6 寄存器 — — — 输出比较 7 辅助寄存器 输出比较 7 寄存器 — — — 输出比较 8 辅助寄存器 输出比较 8 寄存器 — — — Bit 5 — — — — — — — — Bit 4 Bit 3 OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL OCFLT OCTSEL Bit 2 Bit 1 Bit 0 OCM<2:0> OCM<2:0> OCM<2:0> OCM<2:0> OCM<2:0> OCM<2:0> OCM<2:0> OCM<2:0> 所有复位 时的状态 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 xxxx xxxx 0000 dsPIC33F dsPIC33F DS70165D_CN 第52 页 表 3-7: SFR 名称 地址 8 输出 PWM 寄存器映射 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 复位时的状态 PTCON 01C0 PTEN — PTSIDL — — — — — PTOPS<3:0> PTCKPS<1:0> PTMOD<1:0> 0000 0000 0000 0000 PTMR 01C2 PTDIR PWM 定时器计数值寄存器 0000 0000 0000 0000 PTPER 01C4 — PWM 时基周期寄存器 0000 0000 0000 0000 SEVTCMP 01C6 SEVTDIR PWM 特殊事件比较寄存器 0000 0000 0000 0000 PWMCON1 01C8 — — — — PMOD4 PMOD3 PMOD2 PMOD1 PEN4H PEN3H PEN2H PEN1H PEN4L PEN3L PEN2L PEN1L 0000 0000 1111 1111 PWMCON2 01CA — — — — SEVOPS<3:0> — — — — — IUE OSYNC UDIS 0000 0000 0000 0000 DTCON1 01CC DTBPS<1:0> DTB<5:0> DTAPS<1:0> DTA<5:0> 0000 0000 0000 0000 DTCON2 01CE — — — — — — — — DTS4A DTS4I DTS3A DTS3I DTS2A DTS2I DTS1A DTS1I 0000 0000 0000 0000 FLTACON 01D0 FAOV4H FAOV4L FAOV3H FAOV3L FAOV2H FAOV2L FAOV1H FAOV1L FLTAM — — — FAEN4 FAEN3 FAEN2 FAEN1 0000 0000 0000 0000 FLTBCON 01D2 FBOV4H FBOV4L FBOV3H FBOV3L FBOV2H FBOV2L FBOV1H FBOV1L FLTBM — — — FBEN4 FBEN3 FBEN2 FBEN1 0000 0000 0000 0000 OVDCON 01D4 POVD4H POVD4L POVD3H POVD3L POVD2H POVD2L POVD1H POVD1L POUT4H POUT4L POUT3H POUT3L POUT2H POUT2L POUT1H POUT1L 1111 1111 0000 0000 PDC1 01D6 PWM 占空比寄存器 1 0000 0000 0000 0000 PDC2 01D8 PWM 占空比寄存器 2 0000 0000 0000 0000 PDC3 01DA PWM 占空比寄存器 3 0000 0000 0000 0000 PDC4 01DC PWM 占空比寄存器 4 0000 0000 0000 0000 图注: u = 未初始化的位, — = 未实现 (读为 0) 初稿  2007 Microchip Technology Inc.  2007 Microchip Technology Inc. 表 3-8: SFR 名称 地址 QEI 寄存器映射 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 复位时的状态 QEICON 01E0 CNTERR — QEISIDL INDX UPDN QEIM<2:0> SWPAB PCDOUT TQGATE TQCKPS<1:0> DFLTCON 01E2 — — — — — IMV<1:0> CEID QEOUT QECK<2:0> — POSCNT 01E4 MAXCNT 01E6 位置计数器 <15:0> 最大计数值 <15:0> 图注: u = 未初始化的位, — = 未实现 (读为 0)。 表 3-9: I2C1 寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 POSRES TQCS UPDN_SRC 0000 0000 0000 0000 — — — 0000 0000 0000 0000 0000 0000 0000 0000 1111 1111 1111 1111 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 I2C1RCV I2C1TRN I2C1BRG I2C1CON I2C1STAT I2C1ADD I2C1MSK 图注: 0200 — — — — — — 0202 — — — — — — 0204 — — — — — — 0206 I2CEN - I2CSIDL SCLREL IPMIEN A10M 0208 ACKSTAT TRSTAT — — — BCL 020A — — — — — — 020C — — — — — — x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 — — — DISSLW GCSTAT — — SMEN ADD10 GCEN IWCOL STREN I2COV 接收寄存器 发送寄存器 波特率发生器寄存器 ACKDT ACKEN RCEN D_A P S 地址寄存器 地址掩码寄存器 PEN R_W RSEN RBF SEN TBF 0000 00FF 0000 1000 0000 0000 0000 初稿 表 3-10: I2C2 寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 I2C2RCV I2C2TRN I2C2BRG I2C2CON I2C2STAT I2C2ADD I2C2MSK 图注: 0210 — — — — — — — 0212 — — — — — — — 0214 — — — — — — — 0216 I2CEN - I2CSIDL SCLREL IPMIEN A10M DISSLW 0218 ACKSTAT TRSTAT — — — BCL GCSTAT 021A — — — — — — 021C — — — — — — x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 — — SMEN ADD10 Bit 7 GCEN IWCOL Bit 6 STREN I2COV Bit 5 Bit 4 Bit 3 接收寄存器 发送寄存器 波特率发生器寄存器 ACKDT ACKEN RCEN D_A P S 地址寄存器 地址掩码寄存器 Bit 2 PEN R_W Bit 1 RSEN RBF Bit 0 SEN TBF 所有复位 时的状态 0000 00FF 0000 1000 0000 0000 0000 dsPIC33F DS70165D_CN 第53 页 dsPIC33F DS70165D_CN 第54 页 表 3-11: UART1 寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 U1MODE 0220 UARTEN — USIDL IREN RTSMD — UEN1 UEN0 WAKE LPBACK U1STA 0222 UTXISEL1 UTXINV UTXISEL0 — U1TXREG 0224 — — — — UTXBRK UTXEN UTXBF — — — TRMT URXISEL<1:0> U1RXREG 0226 — — — — — — — U1BRG 0228 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 波特率发生器预分频比 Bit 5 Bit 4 Bit 3 ABAUD URXINV BRGH ADDEN RIDLE PERR UART 发送寄存器 UART 接收寄存器 Bit 2 Bit 1 PDSEL<1:0> FERR OERR Bit 0 所有复位 时的状态 STSEL 0000 URXDA 0110 xxxx 0000 0000 表 3-12: SFR 名称 SFR 地址 U2MODE U2STA 0230 0232 UART2 寄存器映射 Bit 15 Bit 14 Bit 13 UARTEN — USIDL UTXISEL1 UTXINV UTXISEL0 Bit 12 IREN — Bit 11 Bit 10 RTSMD — UTXBRK UTXEN Bit 9 UEN1 UTXBF Bit 8 UEN0 TRMT Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 WAKE LPBACK ABAUD URXINV BRGH URXISEL<1:0> ADDEN RIDLE PERR Bit 2 Bit 1 PDSEL<1:0> FERR OERR Bit 0 所有复位 时的状态 STSEL URXDA 0000 0110 U2TXREG U2RXREG U2BRG 图注: 0234 — — — — — — 0236 — — — — — — 0238 x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 — — 波特率发生器预分频比 UART 发送寄存器 UART 接收寄存器 xxxx 0000 0000 初稿  2007 Microchip Technology Inc. 表 3-13: SPI1 寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 SPI1STAT SPI1CON1 SPI1CON2 SPI1BUF 图注: 0240 SPIEN — SPISIDL — — — 0242 - — - DISSCK DISSDO MODE16 0244 FRMEN SPIFSD FRMPOL — — — 0248 x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 — — — SPIROV SMP CKE: SSEN CKP — — — — SPI1 发送和接收缓冲寄存器 — MSTEN — Bit 4 Bit 3 Bit 2 — — — SPRE<2:0> — — — Bit 1 Bit 0 所有复位 时的状态 SPITBF SPIRBF PPRE<1:0> FRMDLY — 0000 0000 0000 0000 表 3-14: SPI2 寄存器映射 SFR 名称 SFR 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 SPI2STAT 0260 SPIEN — SPISIDL — — — SPI2CON1 SPI2CON2 0262 0264 — — — DISSCK DISSDO MODE16 FRMEN SPIFSD FRMPOL — — — SPI2BUF 图注: 0268 x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 — — — SPIROV SMP CKE SSEN CKP — — — — SPI2 发送和接收缓冲寄存器 — MSTEN — Bit 4 Bit 3 Bit 2 — — — SPRE<2:0> — — — Bit 1 Bit 0 所有复位 时的状态 SPITBF SPIRBF PPRE<1:0> FRMDLY - 0000 0000 0000 0000  2007 Microchip Technology Inc. 表 3-15: ADC1 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 ADC1BUF0 0300 ADC 数据缓冲器 0 AD1CON1 0320 ADON — ADSIDL ADDMABM — AD12B FORM<1:0> SSRC<2:0> — SIMSAM ASAM SAMP DONE AD1CON2 0322 VCFG<2:0> — — CSCNA CHPS<1:0> BUFS — SMPI<3:0> BUFM ALTS AD1CON3 0324 ADRC — — SAMC<4:0> — — ADCS<5:0> AD1CHS123 0326 — — — — — CH123NB<1:0> CH123SB — — — — — CH123NA<1:0> CH123SA AD1CHS0 0328 CH0NB — — CH0SB<4:0> CH0NA — — CH0SA<4:0> AD1PCFGH 032A PCFG31 PCFG30 PCFG29 PCFG28 PCFG27 PCFG26 PCFG25 PCFG24 PCFG23 PCFG22 PCFG21 PCFG20 PCFG19 PCFG18 PCFG17 PCFG16 AD1PCFGL 032C PCFG15 PCFG14 PCFG13 PCFG12 PCFG11 PCFG10 PCFG9 PCFG8 PCFG7 PCFG6 PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 AD1CSSH 032E CSS31 CSS30 CSS29 CSS28 CSS27 CSS26 CSS25 CSS24 CSS23 CSS22 CSS21 CSS20 CSS19 CSS18 CSS17 CSS16 AD1CSSL 0330 CSS15 CSS14 CSS13 CSS12 CSS11 CSS10 CSS9 CSS8 CSS7 CSS6 CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 AD1CON4 0332 — — — — — — — — — — — — — DMABL<2:0> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 xxxx 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 初稿 表 3-16: ADC2 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 ADC2BUF0 0340 ADC 数据缓冲器 0 AD2CON1 0360 ADON — ADSIDL ADDMABM — AD12B FORM<1:0> SSRC<2:0> AD2CON2 0362 VCFG<2:0> — — CSCNA CHPS<1:0> BUFS — AD2CON3 0364 ADRC — — SAMC<4:0> — — AD2CHS123 0366 — — — — — CH123NB<1:0> CH123SB — — — AD2CHS0 0368 CH0NB — — — CH0SB<3:0> CH0NA — — 保留 036A — — — — — — — — — — — AD2PCFGL 036C PCFG15 PCFG14 PCFG13 PCFG12 PCFG11 PCFG10 PCFG9 PCFG8 PCFG7 PCFG6 PCFG5 保留 036E — — — — — — — — — — — AD2CSSL 0370 CSS15 CSS14 CSS13 CSS12 CSS11 CSS10 CSS9 CSS8 CSS7 CSS6 CSS5 AD2CON4 0372 — — — — — — — — — — — 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 — SIMSAM ASAM SAMP DONE SMPI<3:0> BUFM ALTS ADCS<5:0> — — CH123NA<1:0> CH123SA — CH0SA<3:0> — — — — — PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 — — — — — CSS4 CSS3 CSS2 CSS1 CSS0 — — DMABL<2:0> xxxx 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 dsPIC33F DS70165D_CN 第55 页  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第56 页 表 3-17: DMA 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 DMA0CON 0380 CHEN SIZE DIR HALF NULLW — DMA0REQ 0382 FORCE — — — — — DMA0STA 0384 DMA0STB 0386 DMA0PAD 0388 DMA0CNT 038A — — — — — — DMA1CON 038C CHEN SIZE DIR HALF NULLW — DMA1REQ 038E FORCE — — — — — DMA1STA 0390 DMA1STB 0392 DMA1PAD 0394 DMA1CNT 0396 — — — — — — DMA2CON 0398 CHEN SIZE DIR HALF NULLW — DMA2REQ 039A FORCE — — — — — DMA2STA 039C DMA2STB 039E DMA2PAD 03A0 DMA2CNT 03A2 — — — — — — DMA3CON 03A4 CHEN SIZE DIR HALF NULLW — DMA3REQ 03A6 FORCE — — — — — DMA3STA 03A8 DMA3STB 03AA DMA3PAD 03AC DMA3CNT 03AE — — — — — — DMA4CON 03B0 CHEN SIZE DIR HALF NULLW — DMA4REQ 03B2 FORCE — — — — — DMA4STA 03B4 DMA4STB 03B6 DMA4PAD 03B8 DMA4CNT 03BA — — — — — — DMA5CON 03BC CHEN SIZE DIR HALF NULLW — DMA5REQ 03BE FORCE — — — — — DMA5STA 03C0 DMA5STB 03C2 图注: — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 9 — — — — — — — — — — — — Bit 8 Bit 7 — — — — STA<15:0> STB<15:0> PAD<15:0> — — — — STA<15:0> STB<15:0> PAD<15:0> — — — — STA<15:0> STB<15:0> PAD<15:0> — — — — STA<15:0> STB<15:0> PAD<15:0> — — — — STA<15:0> STB<15:0> PAD<15:0> — — — — STA<15:0> STB<15:0> Bit 6 — — — — — — Bit 5 Bit 4 Bit 3 Bit 2 AMODE<1:0> — — IRQSEL<6:0> CNT<9:0> AMODE<1:0> — — IRQSEL<6:0> CNT<9:0> AMODE<1:0> — — IRQSEL<6:0> CNT<9:0> AMODE<1:0> — — IRQSEL<6:0> CNT<9:0> AMODE<1:0> — — IRQSEL<6:0> CNT<9:0> AMODE<1:0> — — IRQSEL<6:0> Bit 1 Bit 0 MODE<1:0> MODE<1:0> MODE<1:0> MODE<1:0> MODE<1:0> MODE<1:0> 所有复位 时的状态 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 dsPIC33F  2007 Microchip Technology Inc. 表 3-17: DMA 寄存器映射 (续) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 DMA5PAD 03C4 PAD<15:0> DMA5CNT 03C6 — — — — — — CNT<9:0> DMA6CON 03C8 CHEN SIZE DIR HALF NULLW — — — — — AMODE<1:0> — — MODE<1:0> DMA6REQ 03CA FORCE — — — — — — — — IRQSEL<6:0> DMA6STA 03CC STA<15:0> DMA6STB 03CE STB<15:0> DMA6PAD 03D0 PAD<15:0> DMA6CNT 03D2 — — — — — — CNT<9:0> DMA7CON 03D4 CHEN SIZE DIR HALF NULLW — — — — — AMODE<1:0> — — MODE<1:0> DMA7REQ 03D6 FORCE — — — — — — — — IRQSEL<6:0> DMA7STA 03D8 STA<15:0> DMA7STB 03DA STB<15:0> DMA7PAD 03DC PAD<15:0> DMA7CNT 03DE — — — — — — CNT<9:0> DMACS0 03E0 PWCOL7 PWCOL6 PWCOL5 PWCOL4 PWCOL3 PWCOL2 PWCOL1 PWCOL0 XWCOL7 XWCOL6 XWCOL5 XWCOL4 XWCOL3 XWCOL2 XWCOL1 XWCOL0 DMACS1 03E2 — — — — LSTCH<3:0> PPST7 PPST6 PPST5 PPST4 PPST3 PPST2 PPST1 PPST0 DSADR 03E4 DSADR<15:0> 图注: — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 初稿 dsPIC33F DS70165D_CN 第57 页 dsPIC33F DS70165D_CN 第58 页 表 3-18: 当 C1CTRL1.WIN = 0 或 1 时的 ECAN1 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 C1CTRL1 0400 — — CSIDL ABAT CANCKS REQOP<2:0> OPMODE<2:0> — CANCAP — — WIN C1CTRL2 0402 — — — — — — — — — — — DNCNT<4:0> C1VEC 0404 — — — FILHIT<4:0> — ICODE<6:0> C1FCTRL 0406 DMABS<2:0> — — — — — — — — FSA<4:0> C1FIFO 0408 — — FBP<5:0> — — FNRB<5:0> C1INTF 040A — — TXBO TXBP RXBP TXWAR RXWAR EWARN IVRIF WAKIF ERRIF — FIFOIF RBOVIF RBIF TBIF C1INTE 040C — — — — — — — — IVRIE WAKIE ERRIE — FIFOIE RBOVIE RBIE TBIE C1EC 040E TERRCNT<7:0> RERRCNT<7:0> C1CFG1 0410 — — — — — — — — SJW<1:0> BRP<5:0> C1CFG2 0412 — WAKFIL — — — SEG2PH<2:0> SEG2PHTS SAM SEG1PH<2:0> PRSEG<2:0> C1FEN1 0414 FLTEN15 FLTEN14 FLTEN13 FLTEN12 FLTEN11 FLTEN10 FLTEN9 FLTEN8 FLTEN7 FLTEN6 FLTEN5 FLTEN4 FLTEN3 FLTEN2 FLTEN1 FLTEN0 C1FMSKSEL1 0418 F7MSK<1:0> F6MSK<1:0> F5MSK<1:0> F4MSK<1:0> F3MSK<1:0> F2MSK<1:0> F1MSK<1:0> F0MSK<1:0> C1FMSKSEL2 041A F15MSK<1:0> F14MSK<1:0> F13MSK<1:0> F12MSK<1:0> F11MSK<1:0> F10MSK<1:0> F9MSK<1:0> F8MSK<1:0> 图注: — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0480 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 初稿 表 3-19: 当 C1CTRL1.WIN = 0 时的 ECAN1 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 0400041E 参见当 WIN = x 时的定义 C1RXFUL1 0420 RXFUL15 RXFUL14 RXFUL13 RXFUL12 RXFUL11 RXFUL10 RXFUL9 RXFUL8 RXFUL7 RXFUL6 RXFUL5 RXFUL4 RXFUL3 RXFUL2 RXFUL1 RXFUL0 C1RXFUL2 0422 RXFUL31 RXFUL30 RXFUL29 RXFUL28 RXFUL27 RXFUL26 RXFUL25 RXFUL24 RXFUL23 RXFUL22 RXFUL21 RXFUL20 RXFUL19 RXFUL18 RXFUL17 RXFUL16 C1RXOVF1 0428 RXOVF15 RXOVF14 RXOVF13 RXOVF12 RXOVF11 RXOVF10 RXOVF9 RXOVF8 RXOVF7 RXOVF6 RXOVF5 RXOVF4 RXOVF3 RXOVF2 RXOVF1 RXOVF0 C1RXOVF2 042A RXOVF31 RXOVF30 RXOVF29 RXOVF28 RXOVF27 RXOVF26 RXOVF25 RXOVF24 RXOVF23 RXOVF22 RXOVF21 RXOVF20 RXOVF19 RXOVF18 RXOVF17 RXOVF16 C1TR01CON 0430 TXEN1 TXABT1 TXLARB1 TXERR1 TXREQ1 RTREN1 TX1PRI<1:0> TXEN0 TXABAT0 TX TXERR0 TXREQ0 RTREN0 LARB0 TX0PRI<1:0> C1TR23CON 0432 TXEN3 TXABT3 TXLARB3 TXERR3 TXREQ3 RTREN3 TX3PRI<1:0> TXEN2 TXABAT2 TX TXERR2 TXREQ2 RTREN2 LARB2 TX2PRI<1:0> C1TR45CON 0434 TXEN5 TXABT5 TXLARB5 TXERR5 TXREQ5 RTREN5 TX5PRI<1:0> TXEN4 TXABAT4 TX TXERR4 TXREQ4 RTREN4 LARB4 TX4PRI<1:0> 0000 0000 0000 0000 0000 0000 0000 C1TR67CON 0436 TXEN7 TXABT7 TXLARB7 TXERR7 TXREQ7 RTREN7 C1RXD C1TXD 图注: 0440 0442 x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 TX7PRI<1:0> TXEN6 接收到的数据字 待发送的数据字 TXABAT6 TX LARB6 TXERR6 TXREQ6 RTREN6 TX6PRI<1:0> xxxx xxxx xxxx  2007 Microchip Technology Inc. DS70165D_CN 第59 页 初稿  2007 Microchip Technology Inc. 表 3-20: 寄存器名称 当 C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 0400041E C1BUFPNT1 0420 F3BP<3:0> F2BP<3:0> C1BUFPNT2 0422 F7BP<3:0> F6BP<3:0> C1BUFPNT3 0424 F11BP<3:0> F10BP<3:0> C1BUFPNT4 0426 F15BP<3:0> F14BP<3:0> C1RXM0SID 0430 SID<10:3> C1RXM0EID 0432 EID<15:8> C1RXM1SID 0434 SID<10:3> C1RXM1EID 0436 EID<15:8> C1RXM2SID 0438 SID<10:3> C1RXM2EID 043A EID<15:8> C1RXF0SID 0440 SID<10:3> C1RXF0EID 0442 EID<15:8> C1RXF1SID 0444 SID<10:3> C1RXF1EID 0446 EID<15:8> C1RXF2SID 0448 SID<10:3> C1RXF2EID 044A EID<15:8> C1RXF3SID 044C SID<10:3> C1RXF3EID 044E EID<15:8> C1RXF4SID 0450 SID<10:3> C1RXF4EID 0452 EID<15:8> C1RXF5SID 0454 SID<10:3> C1RXF5EID 0456 EID<15:8> C1RXF6SID 0458 SID<10:3> C1RXF6EID 045A EID<15:8> C1RXF7SID 045C SID<10:3> C1RXF7EID 045E EID<15:8> C1RXF8SID 0460 SID<10:3> C1RXF8EID 0462 EID<15:8> C1RXF9SID 0464 SID<10:3> C1RXF9EID 0466 EID<15:8> C1RXF10SID 0468 SID<10:3> C1RXF10EID 046A EID<15:8> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 8 Bit 7 Bit 6 参见当 WIN = x 时的定义 Bit 5 F1BP<3:0> F5BP<3:0> F9BP<3:0> F13BP<3:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 — MIDE EID<7:0> — MIDE EID<7:0> — MIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> F0BP<3:0> F4BP<3:0> F8BP<3:0> F12BP<3:0> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> 0000 0000 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第60 页 表 3-20: 当 C1CTRL1.WIN = 1 时的 ECAN1 寄存器映射 (续) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 C1RXF11SID 046C SID<10:3> C1RXF11EID 046E EID<15:8> C1RXF12SID 0470 SID<10:3> C1RXF12EID 0472 EID<15:8> C1RXF13SID 0474 SID<10:3> C1RXF13EID 0476 EID<15:8> C1RXF14SID 0478 SID<10:3> C1RXF14EID 047A EID<15:8> C1RXF15SID 047C SID<10:3> C1RXF15EID 047E EID<15:8> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 7 Bit 6 Bit 5 SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> Bit 4 Bit 3 — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> Bit 2 — — — — — Bit 1 Bit 0 EID<17:16> EID<17:16> EID<17:16> EID<17:16> EID<17:16> 所有复位 时的状态 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx dsPIC33F  2007 Microchip Technology Inc. 表 3-21: 当 C2CTRL1.WIN = 0 或 1 时的 ECAN2 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 C2CTRL1 0500 — — CSIDL ABAT CANCKS REQOP<2:0> OPMODE<2:0> — CANCAP — — WIN C2CTRL2 0502 — — — — — — — — — — — DNCNT<4:0> C2VEC 0504 — — — FILHIT<4:0> - ICODE<6:0> C2FCTRL 0506 DMABS<2:0> — — — — — — — — FSA<4:0> C2FIFO 0508 — — FBP<5:0> — — FNRB<5:0> C2INTF 050A — — TXBO TXBP RXBP TXWAR RXWAR EWARN IVRIF WAKIF ERRIF — FIFOIF RBOVIF RBIF TBIF C2INTE 050C — — — — — — — — IVRIE WAKIE ERRIE — FIFOIE RBOVIE RBIE TBIE C2EC 050E TERRCNT<7:0> RERRCNT<7:0> C2CFG1 0510 — — — — — — — — SJW<1:0> BRP<5:0> C2CFG2 0512 — WAKFIL — — — SEG2PH<2:0> SEG2PHTS SAM SEG1PH<2:0> PRSEG<2:0> C2FEN1 0514 FLTEN15 FLTEN14 FLTEN13 FLTEN12 FLTEN11 FLTEN10 FLTEN9 FLTEN8 FLTEN7 FLTEN6 FLTEN5 FLTEN4 FLTEN3 FLTEN2 FLTEN1 FLTEN0 C2FMSKSEL1 0518 F7MSK<1:0> F6MSK<1:0> F5MSK<1:0> F4MSK<1:0> F3MSK<1:0> F2MSK<1:0> F1MSK<1:0> F0MSK<1:0> C2FMSKSEL2 051A F15MSK<1:0> F14MSK<1:0> F13MSK<1:0> F12MSK<1:0> F11MSK<1:0> F10MSK<1:0> F9MSK<1:0> F8MSK<1:0> 图注: — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0480 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 初稿 表 3-22: 当 C2CTRL1.WIN = 0 时的 ECAN2 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 0500051E 参见当 WIN = x 时的定义 C2RXFUL1 0520 RXFUL15 RXFUL14 RXFUL13 RXFUL12 RXFUL11 RXFUL10 RXFUL9 RXFUL8 RXFUL7 RXFUL6 RXFUL5 RXFUL4 RXFUL3 RXFUL2 RXFUL1 RXFUL0 C2RXFUL2 0522 RXFUL31 RXFUL30 RXFUL29 RXFUL28 RXFUL27 RXFUL26 RXFUL25 RXFUL24 RXFUL23 RXFUL22 RXFUL21 RXFUL20 RXFUL19 RXFUL18 RXFUL17 RXFUL16 C2RXOVF1 0528 RXOVF15 RXOVF14 RXOVF13 RXOVF12 RXOVF11 RXOVF10 RXOVF09 RXOVF08 RXOVF7 RXOVF6 RXOVF5 RXOVF4 RXOVF3 RXOVF2 RXOVF1 RXOVF0 C2RXOVF2 052A RXOVF31 RXOVF30 RXOVF29 RXOVF28 RXOVF27 RXOVF26 RXOVF25 RXOVF24 RXOVF23 RXOVF22 RXOVF21 RXOVF20 RXOVF19 RXOVF18 RXOVF17 RXOVF16 C2TR01CON 0530 TXEN1 TX TX ABAT1 LARB1 TX ERR1 TX RTREN1 REQ1 TX1PRI<1:0> TXEN0 TX ABAT0 TX LARB0 TX ERR0 TX RTREN0 REQ0 TX0PRI<1:0> C2TR23CON 0532 TXEN3 TX TX ABAT3 LARB3 TX ERR3 TX RTREN3 REQ3 TX3PRI<1:0> TXEN2 TX ABAT2 TX LARB2 TX ERR2 TX RTREN2 REQ2 TX2PRI<1:0> C2TR45CON 0534 TXEN5 TX TX ABAT5 LARB5 TX ERR5 TX RTREN5 REQ5 TX5PRI<1:0> TXEN4 TX ABAT4 TX LARB4 TX ERR4 TX RTREN4 REQ4 TX4PRI<1:0> C2TR67CON 0536 TXEN7 TX TX ABAT7 LARB7 TX ERR7 TX RTREN7 REQ7 TX7PRI<1:0> TXEN6 TX ABAT6 TX LARB6 TX ERR6 TX RTREN6 REQ6 TX6PRI<1:0> C2RXD 0540 接收到的数据字 C2TXD 0542 待发送的数据字 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 0000 0000 0000 0000 0000 0000 0000 xxxx xxxx xxxx dsPIC33F DS70165D_CN 第61 页  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第62 页 表 3-23: 当 C2CTRL1.WIN = 1 时的 ECAN2 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 0500 - 051E C2BUFPNT1 0520 F3BP<3:0> F2BP<3:0> C2BUFPNT2 0522 F7BP<3:0> F6BP<3:0> C2BUFPNT3 0524 F11BP<3:0> F10BP<3:0> C2BUFPNT4 0526 F15BP<3:0> F14BP<3:0> C2RXM0SID 0530 SID<10:3> C2RXM0EID 0532 EID<15:8> C2RXM1SID 0534 SID<10:3> C2RXM1EID 0536 EID<15:8> C2RXM2SID 0538 SID<10:3> C2RXM2EID 053A EID<15:8> C2RXF0SID 0540 SID<10:3> C2RXF0EID 0542 EID<15:8> C2RXF1SID 0544 SID<10:3> C2RXF1EID 0546 EID<15:8> C2RXF2SID 0548 SID<10:3> C2RXF2EID 054A EID<15:8> C2RXF3SID 054C SID<10:3> C2RXF3EID 054E EID<15:8> C2RXF4SID 0550 SID<10:3> C2RXF4EID 0552 EID<15:8> C2RXF5SID 0554 SID<10:3> C2RXF5EID 0556 EID<15:8> C2RXF6SID 0558 SID<10:3> C2RXF6EID 055A EID<15:8> C2RXF7SID 055C SID<10:3 C2RXF7EID 055E EID<15:8> C2RXF8SID 0560 SID<10:3 C2RXF8EID 0562 EID<15:8> C2RXF9SID 0564 SID<10:3 C2RXF9EID 0566 EID<15:8> C2RXF10SID 0568 SID<10:3 C2RXF10EID 056A EID<15:8> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 参见当 WIN = x 时的定义 F1BP<3:0> F5BP<3:0> F9BP<3:0> F13BP<3:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 — MIDE EID<7:0> — MIDE EID<7:0> — MIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> F0BP<3:0> F4BP<3:0> F8BP<3:0> F12BP<3:0> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> — EID<17:16> 0000 0000 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx dsPIC33F DS70165D_CN 第63 页 初稿  2007 Microchip Technology Inc. 表 3-23: 当 C2CTRL1.WIN = 1 时的 ECAN2 寄存器映射 (续) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 C2RXF11SID 056C SID<10:3 C2RXF11EID 056E EID<15:8> C2RXF12SID 0570 SID<10:3 C2RXF12EID 0572 EID<15:8> C2RXF13SID 0574 SID<10:3 C2RXF13EID 0576 EID<15:8> C2RXF14SID 0578 SID<10:3 C2RXF14EID 057A EID<15:8> C2RXF15SID 057C SID<10:3 C2RXF15EID 057E EID<15:8> 图注: x = 复位时的值未知, — = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 7 Bit 6 Bit 5 SID<2:0> SID<2:0> SID<2:0> SID<2:0> SID<2:0> Bit 4 Bit 3 — MIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> — EXIDE EID<7:0> Bit 2 — — — — — Bit 1 Bit 0 EID<17:16> EID<17:16> EID<17:16> EID<17:16> EID<17:16> 所有复位 时的状态 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx dsPIC33F dsPIC33F DS70165D_CN 第64 页 表 3-24: DCI 寄存器映射 SFR 名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 复位时的状态 DCICON1 0280 DCIEN — DCISIDL — DLOOP CSCKD CSCKE COFSD UNFM CSDOM DJST DCICON2 0282 — — — — BLEN1 BLEN0 — COFSG<3:0> DCICON3 0284 — — — — BCG<11:0> DCISTAT 0286 — — — — SLOT3 SLOT2 SLOT1 SLOT0 — — — TSCON 0288 TSE15 TSE14 TSE13 TSE12 TSE11 TSE10 TSE9 TSE8 TSE7 TSE6 TSE5 RSCON 028C RSE15 RSE14 RSE13 RSE12 RSE11 RSE10 RSE9 RSE8 RSE7 RSE6 RSE5 RXBUF0 0290 接收缓冲器数据寄存器 0 RXBUF1 0292 接收缓冲器数据寄存器 1 RXBUF2 RXBUF3 0294 0296 接收缓冲器数据寄存器 2 接收缓冲器数据寄存器 3 TXBUF0 0298 发送缓冲器数据寄存器 0 TXBUF1 029A 发送缓冲器数据寄存器 1 TXBUF2 TXBUF3 029C 029E 发送缓冲器数据寄存器 2 发送缓冲器数据寄存器 3 图注: — = 未实现 (读为 0)。 注 1: 关于对寄存器位域的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 — — — — ROV TSE4 TSE3 RSE4 RSE3 — COFSM1 WS<3:0> RFUL TSE2 RSE2 TUNF TSE1 RSE1 COFSM0 TMPTY TSE0 RSE0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 初稿 表 3-25: PORTA 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 TRISA 02C0 TRISA15 TRISA14 TRISA13 TRISA12 — TRISA10 TRISA9 — PORTA 02C2 RA15 RA14 RA13 RA12 — RA10 RA9 — LATA 02C4 LATA15 LATA14 LATA13 LATA12 — LATA10 LATA9 — ODCA(2) 06C0 ODCA15 ODCA14 ODCA13 ODCA12 — — — — 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 TRISA7 RA7 LATA7 — TRISA6 RA6 LATA6 — TRISA5 RA5 LATA5 ODCA5 Bit 4 TRISA4 RA4 LATA4 ODCA4 Bit 3 Bit 2 TRISA3 RA3 LATA3 ODCA3 TRISA2 RA2 LATA2 ODCA2 Bit 1 TRISA1 RA1 LATA1 ODCA1 Bit 0 所有复位 时的状态 TRISA0 RA0 LATA0 ODCA0 D6C0 xxxx xxxx xxxx  2007 Microchip Technology Inc. 表 3-26: PORTB 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 TRISB 02C6 TRISB15 TRISB14 TRISB13 TRISB12 TRISB11 TRISB10 TRISB9 TRISB8 PORTB 02C8 RB15 RB14 RB13 RB12 RB11 RB10 RB9 RB8 LATB 02CA LATB15 LATB14 LATB13 LATB12 LATB11 LATB10 LATB9 LATB8 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 Bit 7 TRISB7 RB7 LATB7 Bit 6 TRISB6 RB6 LATB6 Bit 5 TRISB5 RB5 LATB5 Bit 4 TRISB4 RB4 LATB4 Bit 3 TRISB3 RB3 LATB3 Bit 2 TRISB2 RB2 LATB2 Bit 1 Bit 0 所有复位 时的状态 TRISB1 RB1 LATB1 TRISB0 RB0 LATB0 FFFF xxxx xxxx  2007 Microchip Technology Inc. 表 3-27: PORTC 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 TRISC 02CC TRISC15 TRISC14 TRISC13 TRISC12 — — — — — PORTC 02CE RC15 RC14 RC13 RC12 — — — — — LATC 02D0 LATC15 LATC14 LATC13 LATC12 — — — — — 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 Bit 6 — — — Bit 5 — — — Bit 4 Bit 3 Bit 2 Bit 1 TRISC4 RC4 LATC4 TRISC3 RC3 LATC3 TRISC2 RC2 LATC2 TRISC1 RC1 LATC1 Bit 0 — — — 所有复位 时的状态 F01E xxxx xxxx 表 3-28: PORTD 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 所有复位 时的状态 TRISD 02D2 TRISD15 TRISD14 TRISD13 TRISD12 TRISD11 TRISD10 TRISD9 TRISD8 PORTD 02D4 RD15 RD14 RD13 RD12 RD11 RD10 RD9 RD8 LATD 02D6 LATD15 LATD14 LATD13 LATD12 LATD11 LATD10 LATD9 LATD8 ODCD 06D2 ODCD15 ODCD14 ODCD13 ODCD12 ODCD11 ODCD10 ODCD9 ODCD8 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 TRISD7 RD7 LATD7 ODCD7 TRISD6 RD6 LATD6 ODCD6 TRISD5 RD5 LATD5 ODCD5 TRISD4 RD4 LATD4 ODCD4 TRISD3 RD3 LATD3 ODCD3 TRISD2 RD2 LATD2 ODCD2 TRISD1 RD1 LATD1 ODCD1 TRISD0 RD0 LATD0 ODCD0 FFFF xxxx xxxx xxxx 初稿 表 3-29: PORTE 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 TRISE 02D8 — — — — — — — — PORTE 02DA — — — — — — — — LATE 02DC — — — — — — — — 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 TRISE7 RE7 LATE7 Bit 6 TRISE6 RE6 LATE6 Bit 5 TRISE5 RE5 LATE5 Bit 4 TRISE4 RE4 LATE4 Bit 3 TRISE3 RE3 LATE3 Bit 2 TRISE2 RE2 LATE2 Bit 1 TRISE1 RE1 LATE1 Bit 0 所有复位 时的状态 TRISE0 RE0 LATE0 03FF xxxx xxxx dsPIC33F DS70165D_CN 第65 页 表 3-30: PORTF 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 TRISF PORTF LATF ODCF 图注: 注 1: 02DE — — TRISF13 TRISF12 — — — TRISF8 02E0 — — RF13 RF12 — — — RF8 02E2 — — LATF13 LATF12 — — — LATF8 06DE — — ODCF13 ODCF12 — — — ODCF8 x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 TRISF7 RF7 LATF7 ODCF7 Bit 6 TRISF6 RF6 LATF6 ODCF6 Bit 5 TRISF5 RF5 LATF5 ODCF5 Bit 4 TRISF4 RF4 LATF4 ODCF4 Bit 3 TRISF3 RF3 LATF3 ODCF3 Bit 2 TRISF2 RF2 LATF2 ODCF2 Bit 1 TRISF1 RF1 LATF1 ODCF1 Bit 0 TRISF0 RF0 LATF0 ODCF0 所有复位 时的状态 31FF xxxx xxxx xxxx dsPIC33F DS70165D_CN 第66 页 表 3-31: PORTG 寄存器映射 (1) 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 TRISG 02E4 TRISG15 TRISG14 TRISG13 TRISG12 — — TRISG9 TRISG8 TRISG7 TRISG6 — PORTG 02E6 RG15 RG14 RG13 RG12 — — RG9 RG8 RG7 RG6 — LATG 02E8 LATG15 LATG14 LATG13 LATG12 — — LATG9 LATG8 LATG7 LATG6 — ODCG 06E4 ODCG15 ODCG14 ODCG13 ODCG12 — — ODCG9 ODCG8 ODCG7 ODCG6 — 图注: x = 复位时的值未知,— = 未实现 (读为 0)。对于 100 引脚器件,复位值以 16 进制格式显示。 注 1: 实际的 I/O 端口引脚设置随器件变化。请参见相应的引脚图。 Bit 4 — — — — Bit 3 TRISG3 RG3 LATG3 ODCG3 Bit 2 TRISG2 RG2 LATG2 ODCG2 Bit 1 TRISG1 RG1 LATG1 ODCG1 Bit 0 所有复位 时的状态 TRISG0 RG0 LATG0 ODCG0 F3CF xxxx xxxx xxxx 表 3-32: 系统控制寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 RCON 0740 TRAPR IOPUWR — — — — — VREGS EXTR SWR SWDTEN WDTO SLEEP IDLE OSCCON 0742 — COSC<2:0> — NOSC<2:0> CLKLOCK — LOCK — CF — CLKDIV 0744 ROI DOZE<2:0> DOZEN FRCDIV<2:0> PLLPOST<1:0> — PLLPRE<4::0> PLLFBD 0746 — — — — — — — PLLDIV<8:0> OSCTUN 0748 — — — — — — — — — — TUN<5:0> 图注: x = 复位时的值未知,— = 未实现 (读为 0)。复位值以 16 进制格式显示。 注 1: RCON 寄存器的复位值由复位类型决定。 2: OSCCON 寄存器的复位值取决于 FOSC 配置位和复位类型。 Bit 1 Bit 0 所有复位 时的状态 BOR POR LPOSCEN OSWEN xxxx(1) 0300(2) 0040 0030 0000 初稿 表 3-33: NVM 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 NVMCON NVMKEY 图注: 注 1: 0760 WR WREN WRERR — — — — — — 0766 — — — — — — — — x = 复位时的值未知,— = 未实现 (读为 0)。复位值以 16 进制格式显示。 给出的复位值只针对上电复位而言。在其他复位状态下的值取决于复位时对存储器执行写或擦除操作的状态。 ERASE Bit 5 — Bit 4 Bit 3 — NVMKEY<7:0> Bit 2 Bit 1 NVMOP<3:0> Bit 0 所有复位 时的状态 0000(1) 0000  2007 Microchip Technology Inc. 表 3-34: PMD 寄存器映射 寄存器名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 PMD1 PMD2 PMD3 图注: 0770 T5MD T4MD T3MD T2MD T1MD QEIMD PWMMD 0772 IC8MD IC7MD IC6MD IC5MD IC4MD IC3MD IC2MD 0774 T9MD T8MD T7MD T6MD — — — x = 复位时的值未知,— = 未实现 (读为 0)。复位值以 16 进制格式显示。 Bit 8 DCIMD IC1MD — Bit 7 I2C1MD OC8MD — Bit 6 U2MD OC7MD — Bit 5 U1MD OC6MD — Bit 4 Bit 3 Bit 2 SPI2MD OC5MD — SPI1MD OC4MD — C2MD OC3MD — Bit 1 C1MD OC2MD I2C2MD Bit 0 所有复位 时的状态 AD1MD OC1MD AD2MD 0000 0000 0000 3.2.7 软件堆栈 除了用作工作寄存器外,dsPIC33F 器件中的 W15 寄存 器也可用作软件堆栈指针。堆栈指针总是指向堆栈顶部 第一个可供使用的字,从低地址向高地址方向生长。堆 栈指针在弹出堆栈之前递减,而在压入堆栈后递增,如 图 3-6 所示。对于执行任何 CALL 指令时的 PC 压栈, 在压栈前, PC 的 MSB 要进行零扩展,从而确保 MSB 始终清零。 注: 在异常处理期间,在 PC 压入堆栈之间,要 先将PC的MSB与SRL寄存器组合在一起。 堆栈指针限制寄存器(SPLIM)与堆栈指针相关联,它 设置堆栈上边界的地址。 SPLIM 在复位时不会被初始 化。与堆栈指针一样, SPLIM<0> 被强制为 0,因为所 有的堆栈操作必须是字对齐的。每当使用 W15 作为源 指 针 或 目 标 指 针 产 生 有 效 地 址 时,有 效 地 址 会 与 SPLIM 中的值进行比较。如果堆栈指针(W15)的内容 与 SPLIM 寄存器的内容相等,则会执行压栈操作而不 产生堆栈错误陷阱,但在随后的压栈操作时将会产生堆 栈错误陷阱。因此,例如如果想要在堆栈超过 RAM 中 的地址 0x2000 时产生堆栈错误陷阱,则需用值 0x1FFE 来初始化 SPLIM。 类似地,当堆栈指针地址小于 0x0800 时,就会产生堆 栈指针下溢(堆栈错误)陷阱。这避免了堆栈进入特殊 功能寄存器 (SFR)空间。 在对 SPLIM 寄存器进行写操作后,不应紧跟使用 W15 进行间接读操作的指令。 图 3-6: 0x0000 15 CALL 堆栈帧 0 堆栈向高地址方向 生长 PC<15:0> 000000000 PC<22:16> < 空字 > W15(CALL 前) W15(CALL 后) POP : [--W15] PUSH : [W15++] dsPIC33F 3.2.8 数据 RAM 保护功能 dsPIC33F 系列产品支持数据 RAM 保护功能,允许使用 引导和安全代码段安全性保护 RAM 段。 BS 安全 RAM 段 (Secure RAM segment for BS, BSRAM) 使能时仅可通过引导段闪存代码访问。RAM 安全 RAM 段 (Secure RAM segment for RAM, SSRAM)使能 时仅可通过安全段闪存代码访问。表 3-1 中对 BSRAM 和 SSRAM SFR 进行了概括。 3.3 指令寻址模式 寻址模式经过优化可以支持各指令的具体功能,基本的 寻址模式在表 3-35 中给出。 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 位立即数寻址 注: 并非所有的指令都支持上面给出的全部寻 址模式。某些指令可能只支持这些寻址模 式中的某些模式,指令不同支持的寻址模 式可能不同。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 67 页 dsPIC33F 表 3-35: 支持的基本寻址模式 寻址模式 说明 文件寄存器直接寻址 寄存器直接寻址 寄存器间接寻址 执行后修改的寄存器间接寻址 执行前修改的寄存器间接寻址 寄存器偏移量寄存器间接寻址 立即数偏移量寄存器间接寻址 明确指定文件寄存器的地址。 直接访问寄存器的内容。 Wn 的内容形成 EA。 Wn 的内容形式 EA。然后用一个常量值来修改 Wn (递增或递减)。 执行前先用一个有符号常量值修改 Wn (递增或递减),以形成 EA。 Wn 和 Wb 的和形成 EA。 Wn 和立即数的和形成 EA。 3.3.3 传送指令和累加器指令 与其他指令相比,传送和 DSP 累加器类指令提供了更 为灵活的寻址模式。 除了大多数 MCU 指令支持的寻址 模式以外,传送和累加器指令还支持寄存器偏移量间接 寻址模式,这也叫做寄存器变址寻址模式。 注: 对于 MOV 指令,指令中指定的源寄存器和 目的寄存器有效地址的寻址模式可以不 同。然而,4 位 Wb(寄存器偏移量)字段 为源寄存器和目的寄存器共用 (但通常只 被源寄存器或目的寄存器之一使用 )。 概括地说,传送指令和累加器指令支持下列寻址模式: • 寄存器直接寻址 • 寄存器间接寻址 • 执行后修改的寄存器间接寻址 • 执行前修改的寄存器间接寻址 • 寄存器偏移量间接寻址 (寄存器变址寻址) • 立即数偏移量寄存器间接寻址 • 8 位立即数寻址 • 16 位立即数寻址 注: 并非所有的指令都支持上面给出的全部寻 址模式。各条指令可能支持上述某些寻址 模 式,指 令 不 同 支 持 的 寻 址 模 式 可 能 不 同。 3.3.4 MAC 类指令 双源操作数 DSP 指令(CLR、ED、EDAC、MAC、MPY、 MPY.N、MOVSAC 和 MSC)也叫做 MAC 指令,它们使用一 组简化的寻址模式,允许用户通过寄存器间接寻址表高 效地对数据指针进行操作。 双源操作数预取寄存器必须是集合 {W8, W9, W10, W11} 的成员。对于数据读取,W8 和 W9 总是分配给 X RAGU,而W10和 W11则始终用于Y AGU,从而产生的 有效地址 (无论是在修改之前还是之后)对于 W8 和 W9 必须是 X 数据空间中的有效地址,对于 W10 和 W11 而言则必须是 Y 数据空间中的有效地址。 注: 带寄存器偏移量的寄存器间接寻址,仅可 用于 W9 (在 X 空间中)和 W11 (在 Y 空间中)。 概括地说, MAC 类指令支持下列寻址模式: • 寄存器间接寻址 • 执行后修改 (修改量为 2)的寄存器间接寻址 • 执行后修改 (修改量为 4)的寄存器间接寻址 • 执行后修改 (修改量为 6)的寄存器间接寻址 • 带寄存器偏移量的寄存器间接寻址 (寄存器变址 寻址) 3.3.5 其他指令 除了上述的各种寻址模式之外,一些指令使用各种大小 的立即数。例如, BRA (转移)指令使用 16 位有符号 立即数来直接指定转移的目标,而 DISI 指令使用一个 14 位无符号立即数字段。在一些指令中,比如 ADD Acc,操作数的来源或运算结果已经暗含在操作码中。某 些操作,比如 NOP,没有任何操作数。 3.4 模寻址 模寻址模式是一种使用硬件来自动支持循环数据缓冲区 的方法。目的是在执行紧凑循环代码时(这在许多 DSP 算法中很典型),不需要用软件来执行数据地址边界检 查。 可以对数据空间或程序空间进行模寻址 (因为这两种空 间的数据指针机制本质上是相同的)。每个 X (也提供 指向程序空间的指针)和 Y 数据空间中都可支持一个循 环缓冲区。模寻址可以对任何 W 寄存器指针进行操作。 然而,最好不要将 W14 或 W15 用于模寻址,因为这两 个寄存器分别用作堆栈帧指针和堆栈指针。 DS70165D_CN 第 68 页 初稿  2007 Microchip Technology Inc. dsPIC33F 总的来说,任何特定的循环缓冲区只能配置为单向工 作,因为根据缓冲区的方向,对缓冲区起始地址 (对于 递增缓冲区)或结束地址 (对于递减缓冲区)有某些限 制。 使用限制的惟一例外是那些长度为 2 的幂的缓冲区。这 些缓冲区满足起始和结束地址判据,它们可以双向工作 (即,在低地址边界和高地址边界上都将进行地址边界 检查)。 3.4.1 起始地址和结束地址 模寻址机制要求指定起始和结束地址,并把它们载入 16 位 模 缓 冲 区 地 址 寄 存 器:XMODSRT、 XMODEND、 YMODSRT 和 YMODEND (见表 3-1)。 注: Y 空间模寻址的 EA 计算使用字长度的数据 (每个 EA 的 LSb 始终清零)。 循环缓冲区的长度不直接指定,相应的起始地址、结束 地址之差可以确定长度。循环缓冲区的最大长度为 32K 字 (64 KB)。 3.4.2 W 地址寄存器选择 模寻址和位反转寻址控制寄存器 MODCON<15:0> 中包 含使能标志以及指定 W 地址寄存器的 W 寄存器字段。 XWM 和 YWM 字段选择对哪些寄存器进行模寻址。如果 XWM = 15,则禁止 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-7: 模寻址操作示例 字节 地址 0x1100 MOV #0x1100, W0 MOV W0, XMODSRT ;set modulo start address MOV #0x1163, W0 MOV W0, MODEND ;set modulo end address MOV #0x8001, W0 MOV W0, MODCON ;enable W1, X AGU for modulo MOV #0x0000, W0 ;W0 holds buffer fill value MOV #0x1110, W1 ;point W1 to buffer 0x1163 DO AGAIN, #0x31 MOV W0, [W1++] AGAIN: INC W0, W0 ;fill the 50 buffer locations ;fill the next location ;increment the fill value 起始地址 = 0x1100 结束地址 = 0x1163 长度 = 0x0032 字  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 69 页 dsPIC33F 3.4.3 模寻址的应用 模寻址可以应用于与任何 W 寄存器相关的有效地址 (EA)计算中。重要的是要意识到,地址边界检查功 能,不仅会检查地址是否正好在地址边界上,而且会检 查地址是否小于或大于上限 (对于递增缓冲区)、是否 低于下限 (对于递减缓冲区)。因此,地址变化可能会 越过边界,但仍然可以正确调整。 注: 只有在使用执行前修改或执行后修改寻址 模式来计算有效地址时,模修正有效地址 才被写回寄存器。如果使用了地址偏移量 (例如, [W7+W2]),会进行模地址修正, 但寄存器的内容保持不变。 3.5 位反转寻址 位反转寻址用来简化基 2 FFT 算法的数据重新排序。位 反转寻址受 X AGU 支持,仅限于数据写入。 地址修改量,可以是常数或寄存器的内容,可视为将其 位顺序反转。源地址和目的地址仍然是正常的顺序。于 是,惟一需要反转的操作数就是地址修改量。 3.5.1 位反转寻址的实现 位反转寻址的使能方式如下: 1. MODCON寄存器中BWM位(W寄存器选择位) 的值,是除 15 以外的任何值 (不能使用位反转 寻址访问堆栈)。 2. 将 XBREV 寄存器中的 BREN 位置 1。 3. 使用的寻址模式是预递增或后递增的寄存器间接 寻址模式。 如果位反转缓冲区的长度是 M = 2N 字节,则数据缓冲 区起始地址的最后 N 位必须是零。 XB<14:0> 是位反转地址修改量或 “中心点”(pivot point),通常是一个常数。对于FFT计算,其值等于FFT 数据缓冲区长度的一半。 注: 所有位反转 EA 的计算都使用字数据 (每 个 EA 的 LSb 始终清零)。为了产生兼容 (字节)地址,要相应地调整 XB 的值。 使能位反转寻址时,仅对预递增或后递增的寄存器间接 寻址,并且仅针对字数据写入操作进行位反转寻址。对 于任何其他寻址模式或对于字节数据,不会进行位反转 寻址,而是生成正常的地址。在进行位反转寻址时, W 地址指针将始终加上地址修改量(XB),与寄存器间接 寻址模式相关的偏移量将被忽略。此外,由于要求是字 数据,EA 的 LSb 被忽略 (且始终被清零)。 注: 不应同时使能模寻址和位反转寻址。如果 用户试图这么做的话,对于 X WAGU,位 反转寻址将优先, X WAGU 模寻址将被禁 止。然而,在 X RAGU 中,模寻址继续起 作用。 如果通过置 1 BREN (XBREV<15>)位使能了位反转 寻址,那么,在写 XBREV 寄存器之后,不应马上进行 使用被指定为位反转指针的 W 寄存器的间接读操作。 DS70165D_CN 第 70 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 3-8: 位反转地址示例 正常顺序的地址 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 0 围绕二进制值的中心 左右交换位位置 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b1 b2 b3 b4 0 位反转地址 中心点 对于 16 字位反转缓冲区,XB = 0x0008 表 3-36: A3 A2 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 位反转地址序列 (16 项) 正常地址 A1 A0 十进制 0 0 0 0 1 1 1 0 2 1 1 3 0 0 4 0 1 5 1 0 6 1 1 7 0 0 8 0 1 9 1 0 10 1 1 11 0 0 12 0 1 13 1 0 14 1 1 15 位反转地址 A3 A2 A1 A0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 十进制 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 71 页 dsPIC33F 3.6 程序存储空间与数据存储空间的接口 dsPIC33F 架构采用 24 位宽的程序空间和 16 位宽的数 据空间。该架构也是一种改进的哈佛结构,这意味着数 据也能存放在程序空间内。要成功使用程序存储器中的 数据,在访问数据时必须确保这两种存储空间中的信息 是对齐的。 除了正常执行外, dsPIC33F 架构还提供了两种可在操 作过程中访问程序空间的方法: • 使用表指令访问程序空间中任意位置的各个字节或 字 • 将程序空间的一部分重新映射到数据空间 (程序 空间可视性) 表指令允许应用程序读写程序存储器中的一小块区域。 这一功能对于访问需要随时更新的数据表来说非常理 想。也可通过表操作访问一个程序字的所有字节。重映 射方式允许应用程序访问一大块数据,但只限于读操 作,它非常适合于在一个大的静态数据表中进行查找。 这一方式只能访问程序字的低位字。 3.6.1 对程序空间进行寻址 由于数据和程序空间的地址范围分别为 16 位和 24 位, 因此需要一个从 16 位数据寄存器创建一个 23 位或 24 位程序地址的方法。方法取决于所采用的接口方式。 对于表操作,使用 8 位的表页寄存器 (TBLPAG)定义 程序空间中一个 32K 字的区域。TBLPAG 寄存器的 8 位 与 16 位 EA 组合形成了一个完整的 24 位程序空间地 址。 在这种地址形式下,TBLPAG 的最高位用来决定 操作是发生在用户存储区中 (TBLPAG<7> = 0)还是 配置存储区中 (TBLPAG<7> = 1)。 对于重映射操作, 使用 8 位的程序空间可视性寄存器 (PSVPAG)定义程序空间中的 16K 字页。当 EA 的最 高位为 1 时,PSVPAG 与 EA 的低 15 位组合形成一个 23 位的程序空间地址。与表操作不同,重映射操作被严 格限制在用户存储区中。 表3-37 和图3-9 显示了如何通过表操作和重映射访问来 从数据 EA 创建程序 EA。本文中,P<23:0> 指一个程序 空间字,而 D<15:0> 指一个数据空间字。 表 3-37: 程序空间地址构成 访问类型 访问 空间 程序空间地址 <23> <22:16> <15> <14:1> <0> 通过指令访问 (代码执行) 用户 0 PC<22:1> 0 0xx xxxx xxxx xxxx xxxx xxx0 TBLRD/TBLWT (读 / 写字节或字) 用户 TBLPAG<7:0> 0xxx xxxx 数据 EA<15:0> 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>。 DS70165D_CN 第 72 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 3-9: 访问程序空间内的数据的地址生成方式 程序计数器 (1) 表操作 (2) 0 程序计数器 0 23 位 1/0 TBLPAG 8位 EA 1/0 16 位 24 位 程序空间可视性 (1) (重映射) 选择 1 0 PSVPAG 8位 EA 15 位 23 位 选择用户 / 配置 空间 0 选择字节 注 1: 程序空间地址的最低位始终为 0,其目的是为了确保程序和数据空间内的数据是字对齐的。 2: 不要求表操作是字对齐的。允许对配置存储空间执行表读操作。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 73 页 dsPIC33F 3.6.2 使用表指令访问程序存储器中的数据 TBLRDL 和 TBLWTL 指令,提供了读或写程序空间内 任何地址的低位字的直接方法,无需通过数据空间。 TBLRDH 和 TBLWTH 指令是可以把一个程序空间字的高 8 位作为数据读写的惟一方法。 对于每个连续的 24 位程序字,PC 的递增量为 2。这使 得程序存储器地址能够直接映射到数据空间地址。于 是,程序存储器可以看作是两个 16 位字宽的地址空间, 它们 并 排 放 置,具 有 相 同 的 地 址 范 围。 TBLRDL 和 TBLWTL 访问存有最低有效数据字的空间,而 TBLRDH 和 TBLWTH 则访问存有最高有效数据字节的空间。 提供了两条表指令来对程序空间执行字节或字(16 位) 大小的数据读写。读和写都可以采用字节或字操作的形 式。 1. TBLRDL (表读低位字):在字操作模式中,该 指令将程序空间地址的低位字 (P<15:0>)映射 到数据地址 (D<15:0>)中。 在字节模式中,低位程序字的高字节或低字节被 映射到数据地址的低字节中。当字节选择位为 1 时映射高字节;当字节选择位为 0 时映射低字 节。 图 3-10: TBLPAG 02 使用表指令访问程序存储器 程序空间 23 15 0 0x000000 0x020000 0x030000 2. TBLRDH (表读高位字): 在字操作模式中,该 指令将程序地址的整个高位字(P<23:16>)映射 到数据地址中。注意 D<15:8> 为 “虚拟”字节, 它始终为 0。 在字节模式中,程序字的高字节或低字节被映射 到数据地址的D<7:0> 中,这和上一种情况相同。 注意当选择高位 “虚拟”字节 (字节选择位 = 1) 时,数据将始终为 0。 表指令 TBLWTH 和 TBLWTL 以类似的方式向程序地址 空间写入各字节或字。第 4.0 节“闪存程序存储器”对 这两条指令的详细操作给出了说明。 对于所有的表操作,要访问程序存储空间的哪个区域是 由表页寄存器 (TBLPAG)决定的。 TBLPAG 可寻址 器件的整个程序存储空间,包括用户空间和配置空间。 当 TBLPAG<7> = 0 时,表页位于用户存储区中,当 TBLPAG<7> = 1 时,表页位于配置存储区中。 23 16 00000000 00000000 00000000 00000000 “虚拟”字节 8 0 0x800000 TBLRDH.B(Wn<0> = 0) TBLRDL.B(Wn<0> = 1) TBLRDL.B(Wn<0> = 0) TBLRDL.W 表操作的地址是由 TBLPAG 寄存器定义的页中的数据 EA 决定的。 只给出了读操作的过程;也可以对用户存储区执行写操作。 DS70165D_CN 第 74 页 初稿  2007 Microchip Technology Inc. dsPIC33F 3.6.3 使用程序空间可视性访问程序存储器 中的数据 可选择将数据空间的高 32 KB 映射到程序空间中的任 何 16K 字页中。这提供了通过数据空间对存储的常量 数据的透明访问,而无需使用特殊指令 (即 TBLRDL/H 指令)。 如果数据空间 EA 的 MSb 为 1,并且程序空间可视性使 能 (方 法 是 将 内 核 控 制 寄 存 器 中 的 PSV 位 (CORCON<2>)置 1)时,就能通过数据空间访问程 序空间。由程序空间可视性页寄存器 (PSVPAG)决定 要被映射到数据空间中的程序存储区的位置。这一 8 位 的寄存器定义程序空间中 256 个可能的 16K 字页中的一 个。事实上,PSVPAG 作为程序存储地址的高 8 位,而 EA 的 15 位则作为地址的低位。注意,对于每个程序存 储字 PC 都将递增 2,数据空间地址的低 15 位将直接映 射到相应程序空间地址的低 15 位。 将数据读入该区域的指令,需要一个额外的指令周期, 因为这类指令需要对程序存储器执行两次数据取操作。 尽管每个数据空间地址,0x8000 和更高,直接映射到 图 3-11: 程序空间可视性操作 当 CORCON<2> = 1 且 EA<15> = 1 时: PSVPAG 02 程序空间 23 15 由 PSVPAG 指定的 页中的数据被映射到 数据存储空间的高半 地址部分…… 0 0x000000 0x010000 0x018000 对应的程序存储器地址 (见图 3-11),但只使用 24 位 程序字的低 16 位来存放数据。所有用来存放数据的程 序存储单元的高 8 位都应当被设置为 1111 1111 或 0000 0000,强制为一条 NOP 指令,从而避免了可能出 现意外执行这一区域内的代码的情况。 注: 在执行表读写操作时, PSV 访问被暂时禁 止。 对于使用 PSV 而又在 REPEAT 循环之外执行的指令, MOV 和 MOV.D 指令除了规定的执行时间之外,还需要一 个额外的指令周期。 其他所有的指令,除了规定的指令 执行时间之外,需要两个额外的指令周期。 对于使用 PSV 而又在 REPEAT 循环内执行的指令,下 列情况,除了规定的指令执行时间之外,需要两个额外 的指令周期: • 在第一次迭代中执行的指令 • 在最后一次迭代中执行的指令 • 由于中断而退出循环之前执行的指令 • 中断得到处理后而再次进入循环时执行的指令 REPEAT 循环的所有其他各次迭代,都允许使用 PSV 访 问数据的指令在一个周期内执行。 地址空间 0x0000 数据 EA<14:0> 0x8000 0x800000 PSV 区域 0xFFFF ……EA 的低 15 位指定 PSV 区域内的确切地 址。这与实际程序空间 的低 15 位地址是对应 的。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 75 页 dsPIC33F 注: DS70165D_CN 第 76 页 初稿  2007 Microchip Technology Inc. dsPIC33F 4.0 闪存程序存储器 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 器件包含用于存储和执行应用代码的内部闪 存程序存储器。在整个 VDD 范围内,存储器在正常工作 状态下都是可读写并可擦除的。 可采用两种方式对闪存存储器进行编程: 1. 在线串行编程 (In-Circuit Serial Programming™, ICSP)功能 2. 运行时自编程 (Run-Time Self-Programming, RTSP) ICSP 允许在最终应用电路中对 dsPIC33F 系列器件进 行串行编程。 只需要使用五根线就可以完成编程,它们 分别是编程时钟线、编程数据线 (以下备用编程引脚对 之一:PGC1/PGD1、PGC2/PGD2 或 PGC3/PGD3)、 电源线 (VDD)、地线 (VSS)和主复位 (MCLR)信 号线。 这允许用户使用未编程器件生产电路板,仅在产 品交付前才对数字信号控制器进行编程。从而可以将最 新版本的固件或者定制固件烧写到器件中。 图 4-1: 表寄存器寻址 RTSP 是通过使用 TBLRD (表读)和 TBLWT (表写) 指令来完成的。使用 RTSP 用户可以一次将 64 条指令 (192 字节)的块 (或 “行”)或单个程序存储字写入 程序存储器,也可以一次擦除 512 条指令(1536 字节) 的块 (或 “页”)。 4.1 表指令和闪存编程 闪存存储器的编程都是用表读和表写指令实现的,与使 用的方法无关。这些指令允许器件在正常工作模式下通 过数据存储器直接读写程序存储空间。 程序存储器中 24 位目标地址由 TBLPAG 寄存器中的 bit<7:0> 和表指 针中指定 W 寄存器中的有效地址 (EA)组成,如图 41 所示。 TBLRDL 和 TBLWTL 指令用于读写程序存储空间的 bit<15:0>。TBLRDL 和 TBLWTL 能以字模式或字节模式 访问程序存储器。 TBLRDH 和 TBLWTH 指令用于读写程序存储空间的 bit<23:16>。 TBLRDH 和 TBLWTH 同样能以字模式或字 节模式访问程序存储器。 24 位 使用 程序计数器 0 程序计数器 0 使用 表指令 1/0 TBLPAG 寄存器 8位 工作寄存器有效地址 16 位 用户 / 配置 空间选择 字节 24 位有效地址 选择  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第77 页 dsPIC33F 4.2 RTSP 工作原理 dsPIC33F 闪存程序存储器阵列以 64 条指令 (即 192 字节)为一行。RTSP 允许用户一次擦除由 8 行数据 (512 条指令)组成的程序存储器页,一次编程一行或 一个字。 表 26-11,直流特性:程序存储器给出了典型 的擦除和编程时间。 8 行擦除页和单行写入行都是边界 对齐的,从程序存储器起始地址开始,分别到 1536 字 节边界和 192 字节边界。 程序存储器实现了保持缓冲区,它能缓冲 64 条指令的 编程数据。 在实际编程操作前,必须将待写数据顺序装 入缓冲器。 装入的指令字必须始终来自一组 64 个指令 字的边界。 RTSP 编程的基本步骤是先建立一个表指针,然后执行 一系列 TBLWT 指令将数据装入缓冲器。将 NVMCON 寄 存器中的控制位置 1 执行编程。 共需 64 条 TBLWT 和 TBLWTH 指令来装载指令。 因为只写缓冲器,所以所有的表写操作都是单字写操作 (2 个指令周期)。对每一行编程都需要一个编程周期。 4.3 控制寄存器 读写闪存程序存储器共使用两个 SFR:NVMCON 和 NVMKEY。 NVMCON 寄存器 (寄存器 4-1)控制要擦除的块和要 编程的存储器类型,以及编程周期的开始。 NVMKEY 是一个只写寄存器,用于写保护。在启动编程 或擦除操作前,用户必须连续写 55h 和 AAh 到 NVMKEY 寄存器。更多详细信息请参见第 4.4 节 “编程操作” 4.4 编程操作 在 RTSP 模式下,编程或擦除内部闪存时需要执行完整 的编程步骤。编程操作的持续时间通常为 4ms,在此期 间 处 理 器 暂 停 等 待 操 作 完 成。将 WR 位 (NVMCON<15>)置 1 启动操作,当操作完成时 WR 位会自动清零。 DS70165D_CN 第78 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 4-1: NVMCON: 闪存存储器控制寄存器 R/SO-0(1) R/W-0(1) R/W-0(1) U-0 U-0 U-0 U-0 U-0 WR WREN WRERR - - - - - bit 15 bit 8 U-0 - bit 7 R/W-0(1) U-0 ERASE - U-0 R/W-0(1) R/W-0(1) R/W-0(1) R/W-0(1) - NVMOP<3:0>(2) bit 0 图注: R = 可读位 -n = 上电复位时的值 SO = 只可置 1 的位 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12-7 bit 6 bit 5-4 bit 3-0 WR: 写控制位 1 = 启动闪存存储器编程或擦除操作。该操作是自定时的,一旦操作完成该位即由硬件清零。 0 = 编程或擦除操作完成,并处于停止状态 WREN: 写使能位 1 = 使能闪存编程 / 擦除操作 0 = 禁止闪存编程 / 擦除操作 WRERR: 写序列错误标志位 1 = 尝试执行错误的编程或擦除序列或执行终止 (在 WR 位置 1 时该位被自动置 1) 0 = 编程或擦除操作正常完成 未实现:读为 0 ERASE:擦除 / 编程使能位 1 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的擦除操作 0 = 在下一条 WR 命令时执行 NVMOP<3:0> 指定的编程操作 未实现:读为 0 NVMOP<3:0>:NVM 操作选择位 (2) 1111 = 存储器批量擦除操作 (ERASE = 1)或无操作 (ERASE = 0) 1110 = 保留 1101 = 擦除通用段和 FGS 配置寄存器 (ERASE = 1)或无操作 (ERASE = 0) 1100 = 擦除安全段和 FSS 配置寄存器 (ERASE = 1)或无操作 (ERASE = 0) 1011 = 保留 0011 = 存储器字编程操作 (ERASE = 0)或无操作 (ERASE = 1) 0010 = 存储器页擦除操作 (ERASE = 1)或无操作 (ERASE = 0) 0001 = 存储器行编程操作 (ERASE = 0)或无操作 (ERASE = 1) 0000 = 编程或擦除单个配置寄存器字节 注 1: 只能在上电复位时复位这些位。 2: NVMOP<3:0> 的所有其他组合均未实现。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第79 页 dsPIC33F 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 ; Init pointer to row to be ERASED MOV #tblpage(PROG_ADDR), W0 MOV W0, TBLPAG MOV #tbloffset(PROG_ADDR), W0 TBLWTL W0, [W0] DISI #5 MOV MOV MOV MOV BSET NOP NOP #0x55, W0 W0, NVMKEY #0xAA, W1 W1, NVMKEY NVMCON, #WR ; ; Initialize NVMCON ; ; Initialize PM Page Boundary SFR ; Initialize in-page EA[15:0] pointer ; Set base address of erase block ; Block all interrupts with priority <7 ; for next 5 instructions ; Write the 55 key ; ; Write the AA key ; Start the erase sequence ; Insert two NOPs after the erase ; command is asserted DS70165D_CN 第80 页 初稿  2007 Microchip Technology Inc. dsPIC33F 例 4-2: 装载写缓冲器 ; Set up NVMCON for row programming operations MOV #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 SFR MOV #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 latch TBLWTH W3, [W0++] ; Write PM high byte into program latch ; 1st_program_word MOV #LOW_WORD_1, W2 ; MOV #HIGH_BYTE_1, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latch TBLWTH W3, [W0++] ; Write PM high byte into program latch ; 2nd_program_word MOV #LOW_WORD_2, W2 ; MOV #HIGH_BYTE_2, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latch TBLWTH W3, [W0++] ; Write PM high byte into program latch • • • ; 63rd_program_word MOV #LOW_WORD_31, W2 ; MOV #HIGH_BYTE_31, W3 ; TBLWTL W2, [W0] ; Write PM low word into program latch TBLWTH W3, [W0++] ; Write PM high byte into program latch 例 4-3: DISI MOV MOV MOV MOV BSET NOP NOP 启动编程序列 #5 #0x55, W0 W0, NVMKEY #0xAA, W1 W1, NVMKEY NVMCON, #WR ; Block all interrupts with priority <7 ; for next 5 instructions ; Write the 55 key ; ; Write the AA key ; Start the erase sequence ; Insert two NOPs after the ; erase command is asserted  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第81 页 dsPIC33F 注: DS70165D_CN 第82 页 初稿  2007 Microchip Technology Inc. 5.0 复位 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 复位模块包括所有的复位源并控制器件的主复位信号 SYSRST。下面列出了器件的复位源: • POR:上电复位 • BOR :欠压复位 • MCLR:主复位引脚复位 • SWR:RESET 指令 • WDTR:看门狗定时器复位 • TRAPR:陷阱冲突复位 • IOPUWR:非法操作码和未初始化的 W 寄存器复 位 图 5-1 所示为复位模块的简化框图。 任何有效的复位源都会使 SYSRST 信号有效。很多与 CPU 和外设有关的寄存器被强制为已知的复位状态。大 多数寄存器不受复位的影响;在 POR 时寄存器状态未 知,而在其他复位时寄存器状态不变。 图 5-1: 复位系统框图 RESET 指令 MCLR VDD 毛刺滤波器 WDT 模块 休眠或空闲 VDD 上升 检测 内部 稳压器 POR BOR dsPIC33F 注: 有关寄存器复位状态的信息,请参见本手 册中特定的外设或 CPU 章节。 任何类型的器件复位都会将RCON寄存器中相应的状态 位置 1 以表明复位类型(见寄存器 5-1)。POR 将清零 除 POR 位 (RCON<0>)之外的所有位, POR 位在 POR 时置 1。用户可在代码执行过程中的任何时间置 1 或清零任何位。RCON 寄存器中的各位仅用作状态位。 在软件中将特定的复位状态位置 1 不会导致器件发生复 位。 RCON寄存器还有与看门狗定时器和器件节能状态相关 的其他位。本手册的其他章节中将讨论这些位的功能。 注: RCON 寄存器中的状态位应该在被读取后 清零,这样在器件复位后的下一个 RCON 寄存器值才有意义。 SYSRST 陷阱冲突 非法操作码 未初始化的 W 寄存器  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第83 页 dsPIC33F 寄存器 5-1: RCON:复位控制寄存器 (1) R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0 R/W-0 TRAPR IOPUWR - - - - - VREGS bit 15 bit 8 R/W-0 EXTR bit 7 R/W-0 SWR R/W-0 SWDTEN(2) R/W-0 WDTO R/W-0 SLEEP R/W-0 IDLE R/W-1 BOR R/W-1 POR bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15 bit 14 bit 13-9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 TRAPR: 陷阱复位标志位 1 = 发生了陷阱冲突复位 0 = 未发生陷阱冲突复位 IOPUWR:非法操作码或访问未初始化的 W 寄存器复位标志位 1 = 检测到非法操作码、非法地址模式或将未初始化的 W 寄存器用作地址指针而导致复位 0 = 未发生非法操作码或未初始化的 W 寄存器复位 未实现:读为 0 VREGS:在休眠模式下稳压器待机位 1 = 在休眠模式下,稳压器进入待机模式 0 = 在休眠模式下,稳压器继续工作 EXTR:外部复位 (MCLR)引脚位 1 = 发生主复位引脚复位 0 = 未发生主复位引脚复位 SWR:软件复位 (指令)标志位 1 = 执行了 RESET 指令 0 = 没有执行 RESET 指令 SWDTEN:软件使能 / 禁止 WDT 位 (2) 1 = 使能 WDT 0 = 禁止 WDT WDTO: 看门狗定时器超时溢出标志位 1 = WDT 发生超时溢出 0 = WDT 未发生超时溢出 SLEEP: 从休眠模式唤醒标志位 1 = 器件处于休眠模式 0 = 器件不处于休眠模式 IDLE:从空闲模式唤醒标志位 1 = 器件处于空闲模式 0 = 器件不处于空闲模式 BOR: 欠压复位标志位 1 = 发生了欠压复位 0 = 未发生欠压复位 注 1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的一位置 1 不会导致器件复位。 2: 如果 FWDTEN 配置位为 1 (未编程),则始终使能 WDT,而与 SWDTEN 位的设置无关。 DS70165D_CN 第84 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 5-1: RCON:复位控制寄存器 (1) bit 0 POR: 上电复位标志位 1 = 发生了上电复位 0 = 未发生上电复位 注 1: 所有复位状态位都可以用软件置 1 或清零。用软件将这些位中的一位置 1 不会导致器件复位。 2: 如果 FWDTEN 配置位为 1 (未编程),则始终使能 WDT,而与 SWDTEN 位的设置无关。 表 5-1: 复位标志位 标志位 置 1 所表示的事件 TRAPR (RCON<15>) 陷阱冲突事件 IOPUWR (RCON<14>) 非法操作码或访问了未初始化的 W 寄存器 EXTR (RCON<7>) MCLR 复位 SWR (RCON<6>) RESET 指令 WDTO (RCON<4>) WDT 超时溢出 SLEEP (RCON<3>) PWRSAV #SLEEP 指令 IDLE (RCON<2>) BOR (RCON<1> PWRSAV #IDLE 指令 BOR POR (RCON<0>) POR 注: 所有复位标志位均可由用户软件置 1 或清零。 POR POR 清零所表示的事件 POR POR PWRSAV 指令和 POR POR POR - - 5.1 复位时的时钟源选择 如果使能了时钟切换,则按照表 5-2 所示那样选择器件 复位时的系统时钟源。如果禁止了时钟切换功能,则总 是根据振荡器配置位选择系统时钟源。更多详细信息请 参见第 8.0 节 “振荡器配置”。 表 5-2: 复位类型 POR BOR MCLR WDTR SWR 不同复位类型的振荡器选择 (使 能时钟切换功能) 确定时钟源的方式 振荡器配置位 (FNOSC<2:0>) COSC 控制位 (OSCCON<14:12>) 5.2 器件复位时间 表 5-3 总结了各种类型器件复位的复位时间。系统复位 信号 SYSRST,在 POR 延时和 PWRT 延时结束后发出。 器件实际开始执行代码的时间还取决于系统振荡器延 时,它包括振荡器起振定时器 (OST)延时和 PLL 锁 定时间。OST 和 PLL 锁定时间与相应的 SYSRST 延时 同时发生。 FSCM 延时决定在 SYSRST 信号发出到 FSCM 开始监 视系统时钟源的时间。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第85 页 dsPIC33F 表 5-3: 各种器件复位的复位延时 复位类型 时钟源 SYSRST 延时 系统时钟 延时 FSCM 延时 注 POR EC, FRC, LPRC Tpor + TSTARTUP + TRST - - 1, 2, 3 ECPLL, FRCPLL Tpor + TSTARTUP + TRST TLOCK TFSCM 1, 2, 3, 5, 6 XT, HS, SOSC Tpor + TSTARTUP + TRST TOST TFSCM 1, 2, 3, 4, 6 XTPLL, HSPLL Tpor + TSTARTUP + TRST TOST + TLOCK TFSCM 1, 2, 3, 4, 5, 6 MCLR 任何时钟 TRST - - 3 WDT 任何时钟 TRST - - 3 软件 任何时钟 TRST - - 3 非法操作码 任何时钟 TRST - - 3 未初始化的 W 陷阱冲突 任何时钟 任何时钟 TRST TRST - - 3 - - 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)。 5.2.1 POR 和长振荡器起振时间 振荡器起振电路及其相关的延时定时器与上电时发生的 器件复位延时无关。某些晶振电路 (尤其是低频晶振) 的起振时间会相对较长。因此,在 SYSRST 发出后,可 能会发生以下一种或多种情况: • 振荡电路未起振。 • 振荡器起振定时器尚未超时 (如果使用了晶振)。 • PLL 未实现锁定 (如果使用了 PLL)。 在有效时钟源供系统使用前,器件不会开始执行代码。 因此,当必须确定复位延时时,必须考虑振荡器和 PLL 起振延时。 5.2.2 故障保护时钟监视器 (FSCM)和器 件复位 如果使能了 FSCM,它将在发出 SYSRST 信号时开始 监视系统时钟源。 如果有效时钟源在此时不可用,器件 会自动切换至 FRC 振荡器,用户可以切换至陷阱服务 程序中要求的晶振。 5.2.2.1 晶振和 PLL 时钟源的 FSCM 延时 当系统时钟源由晶振和 / 或 PLL 提供时,在 POR 和 PWRT 延时后会自动插入一小段延时 (TFSCM)。在此 延时结束前,FSCM 不会开始监视系统时钟源。FSCM 延时的标称值为 100 µs,为振荡器和 / 或 PLL 稳定下来 提 供 了 更 多 的 时 间。在 大 多 数 情 况 下,如 果 禁 止 了 PWRT,FSCM 延时会防止在器件复位时产生振荡器故 障陷阱。 5.3 特殊功能寄存器的复位状态 大部分与 CPU 和外设有关的特殊功能寄存器(SFR)会 在器件复位时复位为某个特定值。 SFR 是按其外设或 CPU 功能分组的,其复位值在本手册的相应章节中说 明。 除了复位控制寄存器 RCON 和振荡器控制寄存器 OSCCON 外,所有其他 SFR 的复位值都与复位类型无 关。RCON 寄存器的复位值取决于器件复位的类型。而 OSCCON 寄存器的复位值取决于器件复位的类型和 FOSC 配置寄存器中对振荡器配置位设置的值。 DS70165D_CN 第86 页 初稿  2007 Microchip Technology Inc. 6.0 中断控制器 注: 本数据手册总结了 dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 中断控制器将诸多外设中断请求信号缩减到 一个到 dsPIC33F CPU 的中断请求。该控制器具有以 下特性: • 多达 8 个处理器异常和软件陷阱 • 7 个用户可选择的优先级 • 具有多达 118 个向量的中断向量表 (Interrupt Vector Table, IVT) • 每个中断或异常源都有惟一的向量 • 指定的用户优先级中的固定优先级 • 用于支持调试的备用中断向量表 (Alternate Interrupt Vector Table, AIVT) • 固定的中断进入和返回延时 6.1 中断向量表 中断向量表 (IVT)如图 6-1 所示。IVT 位于程序存储 器中,起始存储单元地址是 000004h。IVT 包含 126 个 向量,由 8 个不可屏蔽的陷阱向量和多达 118 个中断源 组成。 一般来说,每个中断源都有自己的中断向量。 每 个中断向量都包含 24 位宽的地址。每个中断向量存储 单元中设置的值是其对应的中断服务程序 (Interrupt Service Routine, ISR)的起始地址。 中断向量有一个自然优先级;也就是说每个中断向量的 优先级与其在向量表中的位置有关。如果其他方面都相 同,较低地址的中断向量具有较高的自然优先级。 例 如,与向量 0 相关的中断比任何其他向量地址的中断具 有更高的自然优先级。 dsPIC33F 器件实现了多达 67 个惟一中断和 5 个不可屏 蔽的陷阱。表 6-1 和表 6-2 对此做了总结。 dsPIC33F 6.1.1 备用中断向量表 如图 6-1 所示,备用中断向量表 (AIVT)位于 IVT 之 后。ALTIVT 控制位(INTCON2<15>)控制对 AIVT 的 访问。如果 ALTIVT 位置 1,所有中断和异常处理将使 用备用向量而不是默认的向量。备用向量与默认向量的 构成相同。 AIVT支持调试功能,它提供了一种不需要将中断向量再 编程就可以在应用和支持环境之间切换的方法。此特性 也支持运行时在不同应用之间切换以便评估各种软件算 法。如果不需要 AIVT,应该用 IVT 中使用的地址设置 AIVT。 6.2 复位过程 由于复位过程中不涉及到中断控制器,所以器件复位并 不是真的异常。作为对复位的响应, dsPIC33F 器件清 零其寄存器,同时强制 PC 为零。然后数字信号控制器 从地址 0x000000 处开始执行程序。用户在复位地址中 写入 GOTO 指令会使程序执行重新定位到相应的启动程 序。 注: 应该使用包含 RESET 指令的默认中断处理 程序的入口地址编程 IVT 和 AIVT 中所有未 实现或未使用的向量存储单元。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 87 页 dsPIC33F 图 6-1: 自然优先级降序排列 dsPIC33F 中断向量表 复位 – GOTO 指令 复位 – GOTO 地址 保留 振荡器故障陷阱向量 地址错误陷阱向量 堆栈错误陷阱向量 算术错误陷阱向量 DMA 错误陷阱向量 保留 保留 中断向量 0 中断向量 1 ~ ~ ~ 中断向量 52 中断向量 53 中断向量 54 ~ ~ ~ 中断向量 116 中断向量 117 保留 保留 保留 振荡器故障陷阱向量 地址错误陷阱向量 堆栈错误陷阱向量 算术错误陷阱向量 DMA 错误陷阱向量 保留 保留 中断向量 0 中断向量 1 ~ ~ ~ 中断向量 52 中断向量 53 中断向量 54 ~ ~ ~ 中断向量 116 中断向量 117 代码起始 0x000000 0x000002 0x000004 0x000014 0x00007C 0x00007E 0x000080 0x0000FC 0x0000FE 0x000100 0x000102 0x000114 0x00017C 0x00017E 0x000180 0x0001FE 0x000200 中断向量表(IVT)(1) 备用中断向量表(AIVT)(1) 注 1: 关于所实现的中断向量列表请参见表 6-1。 DS70165D_CN 第 88 页 初稿  2007 Microchip Technology Inc. 表 6-1: 向量编号 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 中断向量 中断请求 (IRQ)编号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 IVT 地址 0x000014 0x000016 0x000018 0x00001A 0x00001C 0x00001E 0x000020 0x000022 0x000024 0x000026 0x000028 0x00002A 0x00002C 0x00002E 0x000030 0x000032 0x000034 0x000036 0x000038 0x00003A 0x00003C 0x00003E 0x000040 0x000042 0x000044 0x000046 0x000048 0x00004A 0x00004C 0x00004E 0x000050 0x000052 0x000054 0x000056 0x000058 0x00005A 0x00005C 0x00005E 0x000060 0x000062 0x000064 0x000066 0x000068 0x00006A 0x00006C 0x00006E dsPIC33F AIVT 地址 0x000114 0x000116 0x000118 0x00011A 0x00011C 0x00011E 0x000120 0x000122 0x000124 0x000126 0x000128 0x00012A 0x00012C 0x00012E 0x000130 0x000132 0x000134 0x000136 0x000138 0x00013A 0x00013C 0x00013E 0x000140 0x000142 0x000144 0x000146 0x000148 0x00014A 0x00014C 0x00014E 0x000150 0x000152 0x000154 0x000156 0x000158 0x00015A 0x00015C 0x00015E 0x000160 0x000162 0x000164 0x000166 0x000168 0x00016A 0x00016C 0x00016E 中断源 INT0 – 外部中断 0 IC1 – 输入捕捉 1 OC1 – 输出比较 1 T1 – Timer1 DMA0 – DMA 通道 0 IC2 – 输入捕捉 2 OC2 – 输出比较 2 T2 – Timer2 T3 – Timer3 SPI1E – SPI1 错误 SPI1 – SPI1 传输完成 U1RX – UART1 接收器 U1TX – UART1 发送器 ADC1 – ADC 1 DMA1 – DMA 通道 1 保留 SI2C1 – I2C1 从动事件 MI2C1 – I2C1 主控事件 保留 电平变化通知中断 INT1 – 外部中断 1 ADC2 – ADC 2 IC7 – 输入捕捉 7 IC8 – 输入捕捉 8 DMA2 – DMA 通道 2 OC3 – 输出比较 3 OC4 – 输出比较 4 T4 – Timer4 T5 – Timer5 INT2 – 外部中断 2 U2RX – UART2 接收器 U2TX – UART2 发送器 SPI2E – SPI2 错误 SPI1 – SPI1 传输完成 C1RX – ECAN1 接收数据就绪 C1 – ECAN1 事件 DMA3 – DMA 通道 3 IC3 – 输入捕捉 3 IC4 – 输入捕捉 4 IC5 – 输入捕捉 5 IC6 – 输入捕捉 6 OC5 – 输出比较 5 OC6 – 输出比较 6 OC7 – 输出比较 7 OC8 – 输出比较 8 保留  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 89 页 dsPIC33F 表 6-1: 向量编号 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80-125 中断向量 (续) 中断请求 (IRQ)编号 IVT 地址 46 0x000070 47 0x000072 48 0x000074 49 0x000076 50 0x000078 51 0x00007A 52 0x00007C 53 0x00007E 54 0x000080 55 0x000082 56 0x000084 57 0x000086 58 0x000088 59 0x00008A 60 0x00008C 61 0x00008E 62 0x000090 63 0x000092 64 65 66 67 68 69 70 71 72-117 0x000094 0x000096 0x000098 0x00009A 0x00009C 0x00009E 0x0000A0 0x0000A2 0x0000A40x0000FE 表 6-2: 陷阱向量 向量编号 0 1 2 3 4 5 6 7 IVT 地址 0x000004 0x000006 0x000008 0x00000A 0x00000C 0x00000E 0x000010 0x000012 AIVT 地址 0x000170 0x000172 0x000174 0x000176 0x000178 0x00017A 0x00017C 0x00017E 0x000180 0x000182 0x000184 0x000186 0x000188 0x00018A 0x00018C 0x00018E 0x000190 0x000192 0x000194 0x000196 0x000198 0x00019A 0x00019C 0x00019E 0x0001A0 0x0001A2 0x0001A40x0001FE 中断源 DMA4 – DMA 通道 4 T6 – Timer6 T7 – Timer7 SI2C2 – I2C2 从动事件 MI2C2 – I2C2 主控事件 T8 – Timer8 T9 – Timer9 INT3 – 外部中断 3 INT4 – 外部中断 4 C2RX – ECAN2 接收数据就绪 C2 – ECAN2 事件 PWM – PWM 周期匹配 QEI – 位置计数器比较 DCIE – DCI 错误 DCID – DCI 传输完成 DMA5 – DMA 通道 5 保留 FLTA – MCPWM 故障 A FLTB – MCPWM 故障 B U1E – UART1 错误 U2E – UART2 错误 保留 DMA6 – DMA 通道 6 DMA7 – DMA 通道 7 C1TX – ECAN1 发送数据请求 C2TX – ECAN2 发送数据请求 保留 AIVT 地址 0x000084 0x000086 0x000088 0x00008A 0x00008C 0x00008E 0x000090 0x000092 陷阱源 保留 振荡器故障 地址错误 堆栈错误 算术错误 DMA 错误陷阱 保留 保留 DS70165D_CN 第 90 页 初稿  2007 Microchip Technology Inc. 6.3 中断控制和状态寄存器 dsPIC33F 器件一共有 30 个用于中断控制器的寄存器: • INTCON1 • INTCON2 • IFS0 至 IFS4 • IEC0 至 IEC4 • IPC0 至 IPC17 • INTTREG INTCON1 和 INTCON2 控制全局中断。INTCON1 包含 中断嵌套禁止 (NSTDIS)位和处理器陷阱源的控制和 状态标志。 INTCON2 寄存器控制外部中断请求信号行 为和备用中断向量表的使用。 IFS 寄存器包含所有中断请求标志。每个中断源都有一 个状态位,由各自的外设或外部信号置 1,而由软件清 零。 IEC 寄存器包含所有的中断允许位。这些控制位用于单 独允许外设或外部信号中断。 dsPIC33F IPC 寄存器用于设置每个中断源的中断优先级。可以给 用户中断源分配 8 个优先级之一。 INTTREG 寄存器包含相关的中断向量编号和新的 CPU 中断优先级,分别锁存在 INTTREG 寄存器中的向量编 号 (VECNUM<6:0>)和中断优先级 (ILR<3:0>)位域 中。新中断优先级是等待处理中断的优先级。 中断源按表 6-1 的顺序分配给 IFSx、 IECx 和 IPCx 寄 存器。例如, INT0 (外部中断 0)表示向量编号为 8, 自然优先级为 0 的外部中断。所以 INT0IF 位在 IFS0<0> 中,INT0IE 位在 IEC0<0> 中,INT0IP 位在 IPC0 的第 一个位位置 (IPC0<2:0>)中。 尽管两个 CPU 控制寄存器不是中断控制硬件的特定组 成部分,但它们仍包含控制中断功能的位。 CPU 状态 寄存器 SR 包含 IPL<2:0> 位(SR<7:5>)。这些位表示 当前CPU中断优先级。用户可以写IPL位更改当前CPU 优先级。 CORCON 寄存器包含 IPL3 位,这个位与 IPL<2:0> 位一 起表示当前 CPU 优先级。 IPL3 是一个只读位,所以用 户软件不能屏蔽陷阱事件。 在下面各页中的寄存器 6-1 到寄存器 6-32 说明了所有的 中断寄存器。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 91 页 dsPIC33F 寄存器 6-1: R-0 OA bit 15 SR:CPU 状态寄存器 (1) R-0 R/C-0 R/C-0 OB SA SB R-0 OAB R/C-0 SAB R -0 R/W-0 DA DC bit 8 R/W-0(2) R/W-0(2) R/W-0(2) R-0 IPL2(2) IPL1(2) IPL0(2) RA bit 7 R/W-0 N R/W-0 OV R/W-0 Z R/W-0 C bit 0 图注: C = 只清零位 S = 只置 1 位 1 = 置1 R = 可读位 W = 可写位 0 = 清零 U = 未实现位,读为 0 -n = 上电复位时的值 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: U-0 — bit 15 CORCON:内核控制寄存器 (1) U-0 U-0 R/W-0 — — US R/W-0 EDT R-0 R-0 DL<2:0> R/W-0 SATA bit 7 R/W-0 SATB R/W-1 SATDW R/W-0 ACCSAT R/C-0 IPL3(2) R/W-0 PSV R/W-0 RND 图注: R = 可读位 0 = 清零 C = 只清零位 W = 可写位 x = 未知 -n = 上电复位时的值 U = 未实现位,读为 0 1 = 置1 bit 3 IPL3:CPU 中断优先级状态位 3(2) 1 = CPU 中断优先级大于 7 0 = CPU 中断优先级为 7 或更小 注 1: 如需了解整个寄存器的详细信息,请参见寄存器 2-2:“CORCON:内核控制寄存器”。 2: IPL3 位与 IPL<2:0> 位 (SR<7:5>)一起构成 CPU 的中断优先级。 R-0 bit 8 R/W-0 IF bit 0 DS70165D_CN 第 92 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-3: R/W-0 NSTDIS bit 15 INTCON1:中断控制寄存器 1 R/W-0 OVAERR R/W-0 R/W-0 R/W-0 OVBERR COVAERR COVBERR R/W-0 OVATE R/W-0 OVBTE R/W-0 SFTACERR bit 7 R/W-0 R/W-0 R/W-0 R/W-0 DIV0ERR DMACERR MATHERR ADDRERR R/W-0 STKERR R/W-0 OSCFAIL 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 NSTDIS:中断嵌套禁止位 1 = 禁止中断嵌套 0 = 使能中断嵌套 OVAERR:累加器 A 溢出陷阱标志位 1 = 陷阱由累加器 A 溢出引起 0 = 陷阱不是由累加器 A 溢出引起 OVBERR:累加器 B 溢出陷阱标志位 1 = 陷阱由累加器 B 溢出引起 0 = 陷阱不是由累加器 B 溢出引起 COVAERR:累加器 A 灾难性溢出陷阱使能位 1 = 陷阱由累加器 A 灾难性溢出引起 0 = 陷阱不是由累加器 A 灾难性溢出引起 COVBERR:累加器 B 灾难性溢出陷阱使能位 1 = 陷阱由累加器 B 灾难性溢出引起 0 = 陷阱不是由累加器 B 灾难性溢出引起 OVATE:累加器 A 溢出陷阱允许位 1 = 使能累加器 A 溢出陷阱 0 = 禁止陷阱 OVBTE:累加器 B 溢出陷阱允许位 1 = 使能累加器 B 溢出陷阱 0 = 禁止陷阱 COVTE:灾难性溢出陷阱允许位 1 = 使能累加器 A 或 B 的灾难性溢出陷阱 0 = 禁止陷阱 SFTACERR:累加器移位错误状态位 1 = 算术错误陷阱由非法累加器移位引起 0 = 算术错误陷阱不是由非法累加器移位引起 DIV0ERR:算术错误状态位 1 = 算术错误陷阱由被零除引起 0 = 算术错误陷阱不是由被零除引起 DMACERR:DMA 控制器错误状态位 1 = 发生了 DMA 控制器错误陷阱 0 = 未发生 DMA 控制器错误陷阱 MATHERR:算术错误状态位 1 = 发生了算术错误陷阱 0 = 未发生算术错误陷阱 R/W-0 COVTE bit 8 U-0 — bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 93 页 dsPIC33F 寄存器 6-3: INTCON1:中断控制寄存器 1 (续) bit 3 ADDRERR:地址错误陷阱状态位 1 = 发生了地址错误陷阱 0 = 未发生地址错误陷阱 bit 2 STKERR:堆栈错误陷阱状态位 1 = 发生了堆栈错误陷阱 0 = 未发生堆栈错误陷阱 bit 1 OSCFAIL:振荡器故障陷阱状态位 1 = 发生了振荡器故障陷阱 0 = 未发生振荡器故障陷阱 bit 0 未实现:读为 0 DS70165D_CN 第 94 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-4: INTCON2:中断控制寄存器 2 R/W-0 R-0 U-0 U-0 U-0 U-0 U-0 ALTIVT DISI — — — — — bit 15 U-0 — bit 7 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 — — INT4EP INT3EP INT2EP INT1EP 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13-5 bit 4 bit 3 bit 2 bit 1 bit 0 ALTIVT:备用中断向量表使能位 1 = 使用备用中断向量表 0 = 使用标准 (默认)向量表 DISI:DISI 指令状态位 1 = 执行了 DISI 指令 0 = 没有执行 DISI 指令 未实现:读为 0 INT4EP:外部中断 4 边沿检测极性选择位 1 = 下降沿中断 0 = 上升沿中断 INT3EP:外部中断 3 边沿检测极性选择位 1 = 下降沿中断 0 = 上升沿中断 INT2EP:外部中断 2 边沿检测极性选择位 1 = 下降沿中断 0 = 上升沿中断 INT1EP:外部中断 1 边沿检测极性选择位 1 = 下降沿中断 0 = 上升沿中断 INT0EP:外部中断 0 边沿检测极性选择位 1 = 下降沿中断 0 = 上升沿中断 U-0 — bit 8 R/W-0 INT0EP bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 95 页 dsPIC33F 寄存器 6-5: U-0 — bit 15 IFS0:中断标志状态寄存器 0 R/W-0 DMA1IF R/W-0 AD1IF R/W-0 U1TXIF R/W-0 U1RXIF R/W-0 SPI1IF R/W-0 SPI1EIF R/W-0 T2IF bit 7 R/W-0 OC2IF R/W-0 IC2IF R/W-0 DMA01IF R/W-0 T1IF R/W-0 OC1IF R/W-0 IC1IF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 未实现:读为 0 DMA1IF:DMA 通道 1 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 AD1IF:ADC1 转换完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 U1TXIF:UART1 发送器中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 U1RXIF:UART1 接收器中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 SPI1IF:SPI1 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 SPI1EIF:SPI1 错误中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T3IF:Timer3 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T2IF:Timer2 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC2IF:输出比较通道 2 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC2IF:输入捕捉通道 2 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA0IF:DMA 通道 0 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T1IF:Timer1 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 R/W-0 T3IF bit 8 R/W-0 INT0IF bit 0 DS70165D_CN 第 96 页 初稿  2007 Microchip Technology Inc. 寄存器 6-5: IFS0:中断标志状态寄存器 0 (续) bit 2 OC1IF:输出比较通道 1 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 1 IC1IF:输入捕捉通道 1 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 0 INT0IF:外部中断 0 标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 97 页 dsPIC33F 寄存器 6-6: R/W-0 U2TXIF bit 15 IFS1:中断标志状态寄存器 1 R/W-0 U2RXIF R/W-0 INT2IF R/W-0 T5IF R/W-0 T4IF R/W-0 OC4IF R/W-0 OC3IF R/W-0 DMA21IF bit 8 R/W-0 IC8IF bit 7 R/W-0 IC7IF R/W-0 AD2IF R/W-0 INT1IF R/W-0 CNIF R/W-0 — R/W-0 MI2C1IF R/W-0 SI2C1IF bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 U2TXIF:UART2 发送器中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 U2RXIF:UART2 接收器中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 INT2IF:外部中断 2 标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T5IF:Timer5 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T4IF:Timer4 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC4IF:输出比较通道 4 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC3IF:输出比较通道 3 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA2IF:DMA 通道 2 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC8IF:输入捕捉通道 8 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC7IF:输入捕捉通道 7 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 AD2IF:ADC2 转换完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 INT1IF:外部中断 1 标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DS70165D_CN 第 98 页 初稿  2007 Microchip Technology Inc. 寄存器 6-6: IFS1:中断标志状态寄存器 1 (续) bit 3 CNIF:输入电平变化通知中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 2 未实现:读为 0 bit 1 MI2C1IF:I2C1 主控事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 0 SI2C1IF:I2C1 从动事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 99 页 dsPIC33F 寄存器 6-7: R/W-0 T6IF bit 15 IFS2:中断标志状态寄存器 2 R/W-0 U-0 DMA4IF — R/W-0 OC8IF R/W-0 OC7IF R/W-0 OC6IF R/W-0 OC5IF R/W-0 IC5IF bit 7 R/W-0 IC4IF R/W-0 IC3IF R/W-0 DMA3IF R/W-0 C1IF R/W-0 C1RXIF R/W-0 SPI2IF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 T6IF:Timer6 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA4IF:DMA 通道 4 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 未实现:读为 0 OC8IF:输出比较通道 8 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC7IF:输出比较通道 7 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC6IF:输出比较通道 6 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 OC5IF:输出比较通道 5 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC6IF:输入捕捉通道 6 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC5IF:输入捕捉通道 5 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC4IF:输入捕捉通道 4 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 IC3IF:输入捕捉通道 3 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA3IF:DMA 通道 3 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 C1IF:ECAN1 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 R/W-0 IC6IF bit 8 R/W-0 SPI2EIF bit 0 DS70165D_CN 第 100 页 初稿  2007 Microchip Technology Inc. 寄存器 6-7: IFS2:中断标志状态寄存器 2 (续) bit 2 C1RXIF:ECAN1 接收数据就绪中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 1 SPI2IF:SPI2 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 0 SPI2EIF:SPI2 错误中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 101 页 dsPIC33F 寄存器 6-8: R/W-0 FLTAIF bit 15 IFS3:中断标志状态寄存器 3 U-0 R/W-0 R/W-0 — DMA5IF DCIIF R/W-0 DCIEIF R/W-0 QEIIF R/W-0 PWMIF R/W-0 C2RXIF bit 7 R/W-0 INT4IF R/W-0 INT3IF R/W-0 T9IF R/W-0 T8IF R/W-0 MI2C2IF R/W-0 SI2C2IF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 FLTAIF:PWM 故障 A 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 未实现:读为 0 DMA5IF:DMA 通道 5 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DCIIF:DCI 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DCIEIF:DCI 错误中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 QEIIF:QEI 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 PWMIF:PWM 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 C2IF:ECAN2 事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 C2RXIF:ECAN2 接收数据就绪中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 INT4IF:外部中断 4 标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 INT3IF:外部中断 3 标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T9IF:Timer9 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 T8IF:Timer8 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 R/W-0 C2IF bit 8 R/W-0 T7IF bit 0 DS70165D_CN 第 102 页 初稿  2007 Microchip Technology Inc. 寄存器 6-8: IFS3:中断标志状态寄存器 3 (续) bit 2 MI2C2IF:I2C2 主控事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 1 SI2C2IF:I2C2 从动事件中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 bit 0 T7IF:Timer7 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 103 页 dsPIC33F 寄存器 6-9: IFS4:中断标志状态寄存器 4 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 R/W-0 R/W-0 R/W-0 R/W-0 U-0 C2TXIF C1TXIF DMA7IF DMA6IF — bit 7 R/W-0 U2EIF R/W-0 U1EIF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 C2TXIF:ECAN2 发送数据请求中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 C1TXIF:ECAN1 发送数据请求中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA7IF:DMA 通道 7 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 DMA6IF:DMA 通道 6 数据传输完成中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 未实现:读为 0 U2EIF:UART2 错误中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 U1EIF:UART1 错误中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 FLTBIF:PWM 故障 B 中断标志状态位 1 = 产生了中断请求 0 = 未产生中断请求 U-0 — bit 8 R/W-0 FLTBIF bit 0 DS70165D_CN 第 104 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-10: IEC0:中断允许控制寄存器 0 U-0 — bit 15 R/W-0 DMA1IE R/W-0 AD1IE R/W-0 U1TXIE R/W-0 U1RXIE R/W-0 SPI1IE R/W-0 SPI1EIE R/W-0 T2IE bit 7 R/W-0 OC2IE R/W-0 IC2IE R/W-0 DMA0IE R/W-0 T1IE R/W-0 OC1IE R/W-0 IC1IE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 未实现:读为 0 DMA1IE:DMA 通道 1 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 AD1IE:ADC1 转换完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 U1TXIE:UART1 发送器中断允许位 1 = 允许中断请求 0 = 禁止中断请求 U1RXIE:UART1 接收器中断允许位 1 = 允许中断请求 0 = 禁止中断请求 SPI1IE:SPI1 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 SPI1EIE:SPI1 错误中断允许位 1 = 允许中断请求 0 = 禁止中断请求 T3IE:Timer3 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 T2IE:Timer2 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC2IE:输出比较通道 2 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC2IE:输入捕捉通道 2 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DMA0IE:DMA 通道 0 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 T1IE:Timer1 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 R/W-0 T3IE bit 8 R/W-0 INT0IE bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 105 页 dsPIC33F 寄存器 6-10: IEC0:中断允许控制寄存器 0 (续) bit 2 OC1IE:输出比较通道 1 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 1 IC1IE:输入捕捉通道 1 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 0 INT0IE:外部中断 0 允许位 1 = 允许中断请求 0 = 禁止中断请求 DS70165D_CN 第 106 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-11: R/W-0 U2TXIE bit 15 IEC1:中断允许控制寄存器 1 R/W-0 U2RXIE R/W-0 INT2IE R/W-0 T5IE R/W-0 T4IE R/W-0 OC4IE R/W-0 OC3IE R/W-0 IC8IE bit 7 R/W-0 IC7IE R/W-0 AD2IE R/W-0 INT1IE R/W-0 CNIE R/W-0 — R/W-0 MI2C1IE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 U2TXIE:UART2 发送器中断允许位 1 = 允许中断请求 0 = 禁止中断请求 U2RXIE:UART2 接收器中断允许位 1 = 允许中断请求 0 = 禁止中断请求 INT2IE:外部中断 2 允许位 1 = 允许中断请求 0 = 禁止中断请求 T5IE:Timer5 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 T4IE:Timer4 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC4IE:输出比较通道 4 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC3IE:输出比较通道 3 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DMA2IE:DMA 通道 2 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC8IE:输入捕捉通道 8 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC7IE:输入捕捉通道 7 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 AD2IE:ADC2 转换完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 INT1IE:外部中断 1 允许位 1 = 允许中断请求 0 = 禁止中断请求 R/W-0 DMA2IE bit 8 R/W-0 SI2C1IE bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 107 页 dsPIC33F 寄存器 6-11: IEC1:中断允许控制寄存器 1 (续) bit 3 CNIE:输入电平变化通知中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 2 未实现:读为 0 bit 1 MI2C1IE:I2C1 主控事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 0 SI2C1IE:I2C1 从动事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DS70165D_CN 第 108 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-12: IEC2:中断允许控制寄存器 2 R/W-0 R/W-0 U-0 R/W-0 T6IE DMA4IE — OC8IE bit 15 R/W-0 OC7IE R/W-0 OC6IE R/W-0 OC5IE R/W-0 IC5IE bit 7 R/W-0 IC4IE R/W-0 IC3IE R/W-0 DMA3IE R/W-0 C1IE R/W-0 C1RXIE R/W-0 SPI2IE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 T6IE:Timer6 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DMA4IE:DMA 通道 4 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 未实现:读为 0 OC8IE:输出比较通道 8 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC7IE:输出比较通道 7 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC6IE:输出比较通道 6 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 OC5IE:输出比较通道 5 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC6IE:输入捕捉通道 6 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC5IE:输入捕捉通道 5 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC4IE:输入捕捉通道 4 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 IC3IE:输入捕捉通道 3 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DMA3IE:DMA 通道 3 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 C1IE:ECAN1 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 R/W-0 IC6IE bit 8 R/W-0 SPI2EIE bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 109 页 dsPIC33F 寄存器 6-12: IEC2:中断允许控制寄存器 2 (续) bit 2 C1RXIE:ECAN1 接收数据就绪中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 1 SPI2IE:SPI2 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 0 SPI2EIE:SPI2 错误中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DS70165D_CN 第 110 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-13: R/W-0 FLTAIE bit 15 IEC3:中断允许控制寄存器 3 U-0 R/W-0 R/W-0 — DMA5IE DCIIE R/W-0 DCIEIE R/W-0 QEIIE R/W-0 PWMIE R/W-0 C2RXIE bit 7 R/W-0 INT4IE R/W-0 INT3IE R/W-0 T9IE R/W-0 T8IE R/W-0 MI2C2IE R/W-0 SI2C2IE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 FLTAIE:PWM 故障 A 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 未实现:读为 0 DMA5IE:DMA 通道 5 数据传输完成中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DCIIE:DCI 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DCIEIE:DCI 错误中断允许位 1 = 允许中断请求 0 = 禁止中断请求 QEIIE:QEI 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 PWMIE:PWM 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 C2IE:ECAN2 事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 C2RXIE:ECAN2 接收数据就绪中断允许位 1 = 允许中断请求 0 = 禁止中断请求 INT4IE:外部中断 4 允许位 1 = 允许中断请求 0 = 禁止中断请求 INT3IE:外部中断 3 允许位 1 = 允许中断请求 0 = 禁止中断请求 T9IE:Timer9 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 T8IE:Timer8 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 R/W-0 C2IE bit 8 R/W-0 T7IE bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 111 页 dsPIC33F 寄存器 6-13: IEC3:中断允许控制寄存器 3 (续) bit 2 MI2C2IE:I2C2 主控事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 1 SI2C2IE:I2C2 从动事件中断允许位 1 = 允许中断请求 0 = 禁止中断请求 bit 0 T7IE:Timer7 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DS70165D_CN 第 112 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-14: IEC4:中断允许控制寄存器 4 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 R/W-0 R/W-0 R/W-0 R/W-0 U-0 C2TXIE C1TXIE DMA7IE DMA6IE — bit 7 R/W-0 U2EIE R/W-0 U1EIE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 C2TXIE:ECAN2 发送数据请求中断允许位 1 = 允许中断请求 0 = 禁止中断请求 C1TXIE:ECAN1 发送数据请求中断允许位 1 = 允许中断请求 0 = 禁止中断请求 DMA7IE:DMA 通道 7 数据传输完成允许状态位 1 = 允许中断请求 0 = 禁止中断请求 DMA6IE:DMA 通道 6 数据传输完成允许状态位 1 = 允许中断请求 0 = 禁止中断请求 未实现:读为 0 U2EIE:UART2 错误中断允许位 1 = 允许中断请求 0 = 禁止中断请求 U1EIE:UART1 错误中断允许位 1 = 允许中断请求 0 = 禁止中断请求 FLTBIE:PWM 故障 B 中断允许位 1 = 允许中断请求 0 = 禁止中断请求 U-0 — bit 8 R/W-0 FLTBIE bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 113 页 dsPIC33F 寄存器 6-15: IPC0:中断优先级控制寄存器 0 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 T1IP<2:0> — R/W-1 R/W-0 OC1IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 IC1IP<2:0> — R/W-1 R/W-0 INT0IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 T1IP<2:0>:Timer1 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC1IP<2:0>:输出比较通道 1 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC1IP<2:0>:输入捕捉通道 1 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 INT0IP<2:0>:外部中断 0 优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 114 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-16: IPC1:中断优先级控制寄存器 1 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 T2IP<2:0> — R/W-1 R/W-0 OC2IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 IC2IP<2:0> — R/W-1 R/W-0 DMA0IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 T2IP<2:0>:Timer2 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC2IP<2:0>:输出比较通道 2 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC2IP<2:0>:输入捕捉通道 2 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA0IP<2:0>:DMA 通道 0 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 115 页 dsPIC33F 寄存器 6-17: IPC2:中断优先级控制寄存器 2 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 U1RXIP<2:0> — R/W-1 R/W-0 SPI1IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 SPI1EIP<2:0> — R/W-1 R/W-0 T3IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 U1RXIP<2:0>:UART1 接收器中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SPI1IP<2:0>:SPI1 事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SPI1EIP<2:0>:SPI1 错误中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 T3IP<2:0>:Timer3 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 116 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-18: IPC3:中断优先级控制寄存器 3 U-0 — bit 15 U-0 U-0 U-0 U-0 — — — — R/W-1 R/W-0 DMA1IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 AD1IP<2:0> — R/W-1 R/W-0 U1TXIP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 DMA1IP<2:0>:DMA 通道 1 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 AD1IP<2:0>:ADC1 转换完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 U1TXIP<2:0>:UART1 发送器中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 117 页 dsPIC33F 寄存器 6-19: 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 — bit 7 R/W-1 R/W-0 R/W-0 U-0 MI2C1IP<2:0> — R/W-1 R/W-0 SI2C1IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11-7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 CNIP<2:0>:输入电平变化通知中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 MI2C1IP<2:0>:I2C1 主控事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SI2C1IP<2:0>:I2C1 从动事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 118 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-20: IPC5:中断优先级控制寄存器 5 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 IC8IP<2:0> — R/W-1 R/W-0 IC7IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 AD2IP<2:0> — R/W-1 R/W-0 INT1IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 IC8IP<2:0>:输入捕捉通道 8 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC7IP<2:0>:输入捕捉通道 7 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 AD2IP<2:0>:ADC2 转换完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 INT1IP<2:0>:外部中断 1 优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 119 页 dsPIC33F 寄存器 6-21: IPC6:中断优先级控制寄存器 6 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 T4IP<2:0> — R/W-1 R/W-0 OC4IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 OC3IP<2:0> — R/W-1 R/W-0 DMA2IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 T4IP<2:0>:Timer4 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC4IP<2:0>:输出比较通道 4 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC3IP<2:0>:输出比较通道 3 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA2IP<2:0>:DMA 通道 2 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 120 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-22: IPC7:中断优先级控制寄存器 7 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 U2TXIP<2:0> — R/W-1 R/W-0 U2RXIP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 INT2IP<2:0> — R/W-1 R/W-0 T5IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 U2TXIP<2:0>:UART2 发送器中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 U2RXIP<2:0>:UART2 接收器中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 INT2IP<2:0>:外部中断 2 优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 T5IP<2:0>:Timer5 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 121 页 dsPIC33F 寄存器 6-23: IPC8:中断优先级控制寄存器 8 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 C1IP<2:0> — R/W-1 R/W-0 C1RXIP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 SPI2IP<2:0> — R/W-1 R/W-0 SPI2EIP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 C1IP<2:0>:ECAN1 事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 C1RXIP<2:0>:ECAN1 接收数据就绪中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SPI2IP<2:0>:SPI2 事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SPI2EIP<2:0>:SPI2 错误中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 122 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-24: IPC9:中断优先级控制寄存器 9 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 IC5IP<2:0> — R/W-1 R/W-0 IC4IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 IC3IP<2:0> — R/W-1 R/W-0 DMA3IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 IC5IP<2:0>:输入捕捉通道 5 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC4IP<2:0>:输入捕捉通道 4 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC3IP<2:0>:输入捕捉通道 3 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA3IP<2:0>:DMA 通道 3 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 123 页 dsPIC33F 寄存器 6-25: U-0 — bit 15 IPC10:中断优先级控制寄存器 10 R/W-1 R/W-0 R/W-0 U-0 OC7IP<2:0> — R/W-1 R/W-0 OC6IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 OC5IP<2:0> — R/W-1 R/W-0 IC6IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 OC7IP<2:0>:输出比较通道 7 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC6IP<2:0>:输出比较通道 6 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC5IP<2:0>:输出比较通道 5 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 IC6IP<2:0>:输入捕捉通道 6 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 124 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-26: IPC11:中断优先级控制寄存器 11 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 T6IP<2:0> — R/W-1 R/W-0 DMA4IP<2:0> R/W-0 bit 8 U-0 — bit 7 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R/W-0 — — — — OC8IP<2:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7-3 bit 2-0 未实现:读为 0 T6IP<2:0>:Timer6 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA4IP<2:0>:DMA 通道 4 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 OC8IP<2:0>:输出比较通道 8 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 125 页 dsPIC33F 寄存器 6-27: U-0 — bit 15 IPC12:中断优先级控制寄存器 12 R/W-1 R/W-0 R/W-0 U-0 T8IP<2:0> — R/W-1 R/W-0 MI2C2IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 SI2C2IP<2:0> — R/W-1 R/W-0 T7IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 T8IP<2:0>:Timer8 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 MI2C2IP<2:0>:I2C2 主控事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 SI2C2IP<2:0>:I2C2 从动事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 T7IP<2:0>:Timer7 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 126 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-28: U-0 — bit 15 IPC13:中断优先级控制寄存器 13 R/W-1 R/W-0 R/W-0 U-0 C2RXIP<2:0> — R/W-1 R/W-0 INT4IP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 INT3IP<2:0> — R/W-1 R/W-0 T9IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 C2RXIP<2:0>:ECAN2 接收数据就绪中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 INT4IP<2:0>:外部中断 4 优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 INT3IP<2:0>:外部中断 3 优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 T9IP<2:0>:Timer9 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 127 页 dsPIC33F 寄存器 6-29: U-0 — bit 15 IPC14:中断优先级控制寄存器 14 R/W-1 R/W-0 R/W-0 U-0 DCIEIP<2:0> — R/W-1 R/W-0 QEIIP<2:0> U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 PWMIP<2:0> — R/W-1 R/W-0 C2IP<2:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 DCIEIP<2:0>:DCI 错误中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 QEIIP<2:0>:QEI 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 PWMIP<2:0>:PWM 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 C2IP<2:0>:ECAN2 事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第 128 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-30: IPC15:中断优先级控制寄存器 15 U-0 R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 — FLTAIP<2:0> — — — bit 15 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 DMA5IP<2:0> — R/W-1 R/W-0 DCIIP<2:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11-7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 FLTAIP<2:0>:PWM 故障 A 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA5IP<2:0>:DMA 通道 5 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DCIIP<2:0>:DCI 事件中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 U-0 — bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 129 页 dsPIC33F 寄存器 6-31: U-0 — bit 15 IPC16:中断优先级控制寄存器 16 U-0 U-0 U-0 U-0 — — — — R/W-1 R/W-0 U2EIP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 U1EIP<2:0> — R/W-1 R/W-0 FLTBIP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 U2EIP<2:0>:UART2 错误中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 U1EIP<2:0>:UART1 错误中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 FLTBIP<2:0>:PWM 故障 B 中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 DS70165D_CN 第 130 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 6-32: IPC17:中断优先级控制寄存器17 U-0 — bit 15 R/W-1 R/W-0 R/W-0 U-0 C2TXIP<2:0> — R/W-1 R/W-0 C1TXIP<2:0> R/W-0 bit 8 U-0 — bit 7 R/W-1 R/W-0 R/W-0 U-0 DMA7IP<2:0> — R/W-1 R/W-0 DMA6IP<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6-4 bit 3 bit 2-0 未实现:读为 0 C2TXIP<2:0>:ECAN2 发送数据请求中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 C1TXIP<2:0>:ECAN1 发送数据请求中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA7IP<2:0>:DMA 通道 7 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源 未实现:读为 0 DMA6IP<2:0>:DMA 通道 6 数据传输完成中断优先级位 111 = 中断优先级为 7 (最高优先级中断) • • • 001 = 中断优先级为 1 000 = 禁止中断源  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 131 页 dsPIC33F 寄存器 6-33: R-0 — bit 15 INTTREG:中断控制和状态寄存器 R/W-0 U-0 U-0 R-0 — — — R-0 R-0 ILR<3:0> U-0 R-0 R-0 R-0 R-0 R-0 R-0 — VECNUM<6:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 位未实现位,读为 0 0 = 清零 bit 15-12 bit 11-8 bit 7 bit 6-0 未实现:读为 0 ILR:新的 CPU 中断优先级位 1111 = CPU 中断优先级为 15 • • • 0001 = CPU 中断优先级为 1 0000 = CPU 中断优先级为 0 未实现:读为 0 VECNUM:待处理中断向量编号位 0111111 = 待处理中断向量的编号为 135 • • • 0000001 = 待处理中断向量的编号为 9 0000000 = 待处理中断向量的编号为 8 x = 未知 R-0 bit 8 R-0 bit 0 DS70165D_CN 第 132 页 初稿  2007 Microchip Technology Inc. 6.4 中断设置过程 6.4.1 初始化 要配置中断源: 1. 如果不需要嵌套中断,将 NSTDIS 控制位 (INTCON1<15>)置 1。 2. 通过写相应的 IPCx 控制寄存器中的控制位为中 断源选择由用户分配的优先级。优先级由特定 的应用和中断源类型决定。如果不需要多个优先 级,可以将所有允许中断源的 IPCx 寄存器控制 位编程为相同的非零值。 注: 在器件复位时,IPCx 寄存器被初始化,为 所有用户中断源分配优先级 4。 3. 将相应 IFSx 寄存器中与外设相关的中断标志状 态位清零。 4. 通过将相应 IECx 寄存器中与中断源相关的中断 允许控制位置 1 允许中断源。 6.4.2 中断服务程序 如何声明中断服务程序 (ISR)以及怎样使用正确的向 量地址初始化 IVT,将取决于编程语言(即 C 语言或汇 编语言)和用于开发应用程序的语言开发工具包。一般 情况下,用户必须将相应 IFSx 寄存器中与 ISR 处理的 中断源相对应的中断标志清零。否则,在退出 ISR 后会 立即再次进入 ISR。如果 ISR 用汇编语言编码,则必须 使用 RETFIE 指令结束 ISR,以便将保存的 PC 值、SRL 值和原先的 CPU 优先级弹出堆栈。 dsPIC33F 6.4.3 陷阱服务程序 陷阱服务程序 (Trap Service Routine, TSR)的编码 方式类似于 ISR,只是必须将 INTCON1 寄存器中相应 的陷阱状态标志清零,以避免重新进入 TSR。 6.4.4 禁止中断 可以通过以下步骤禁止所有用户中断: 1. 使用 PUSH 指令将当前 SR 值压入软件堆栈。 2. 通过将值 OEh 与 SRL 进行逻辑或运算来强制把 CPU 的优先级设置为 7。 要允许用户中断,可以使用 POP 指令恢复先前的 SR 值。 注意只能禁止优先级小于或等于 7 的用户中断。不能禁 止陷阱源 (优先级为 8-15)。 使用 DISI 指令可以方便地将优先级为 1-6 的中断禁止 一段固定的时间。 DISI 指令不能禁止优先级为 7 的中 断源。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 133 页 dsPIC33F 注: DS70165D_CN 第 134 页 初稿  2007 Microchip Technology Inc. 7.0 直接存储器访问 (DMA) 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 直接存储器访问(Direct Memory Access,DMA)是在 外设 SFR(如 UART 接收寄存器和输入捕捉 1 缓冲区) 和 RAM 中缓冲区或存储在 RAM 中的变量间复制数据的 非常高效的机制,它极少需要 CPU 干预。在每次外设 中断发生时,DMA 控制器能自动复制所有数据块,无需 用户软件读或写外设特殊功能寄存器(SFR)。DMA 控 制器使用专用的总线传输数据,因此,不会占用 CPU 的 代码执行周期。 要使用 DMA 功能,相应的用户缓冲区 或变量必须位于 DMA RAM 空间中。 表 7-1 列出了可以使用 DMA 的 dsPIC33F 外设以及与 之相关的中断请求 (Interrupt Request, IRQ)编号。 表 7-1: 支持 DMA 的外设 外设 IRQ 编号 INT0 0 输入捕捉 1 1 输入捕捉 2 5 输出比较 1 2 输出比较 2 6 Timer2 7 Timer3 8 SPI1 10 SPI2 33 UART1 接收 11 UART1 发送 12 UART2 接收 30 UART2 发送 31 ADC1 13 ADC2 21 DCI 60 ECAN1 接收 34 ECAN1 发送 70 ECAN2 接收 55 ECAN2 发送 71 dsPIC33F DMA 控制器具有 8 个相同的数据传输通道。 每个通道都有一组控制和状态寄存器。每个 DMA 通道 可配置为将数据从双口 DMA RAM 缓冲区复制到外设 SFR 中,或从外设 SFR 复制到 DMA RAM 缓冲区中。 DMA 控制器支持以下功能: • 按字或字节传输数据 • 将数据从外设传输到 DMA RAM 或从 DMA RAM 传 输到外设 • 有或无自动后递增的 DMA RAM 间接寻址 • 外设间接寻址——在某些外设中 DMA RAM 读 / 写地 址的一部分可能来自外设 • 单数据块传输——在传输完一个数据块后终止 DMA 传输 • 连续数据块传输——在完成一次数据块传输后重新装 载 DMA RAM 缓冲区起始地址 • “乒乓”(Ping-Pong)模式——在连续数据块传输之 间切换两个 DMA RAM 的起始地址,然后交替填充两 个缓冲区 • 自动或手动启动数据块传输 • 每个通道可以从20 个可能的数据源或目标源中选择 对于每个DMA通道,在传输完每块数据后产生一个DMA 中断请求。 也可在填充完整块数据的一半后产生中断。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 135 页 dsPIC33F 图 7-1: 使用专用事务总线的顶层系统架构 DMA 控制器 外设间接地址 SRAM DMA RAM 端口 1 端口 2 DMA 控制 DMA 通道 SRAM X 总线 DMA DS 总线 CPU 外设总线 DMA 就绪 外设 3 CPU DMA CPU 非 DMA 就绪 外设 CPU DMA DMA 就绪 外设 1 CPU DMA DMA 就绪 外设 2 注:为了明了起见,CPU 和 DMA 地址总线没有显示。 7.1 DMAC 寄存器 每个 DMAC 通道 x (x = 0、 1、2、3、4、5、6 或 7) 均包含以下寄存器: • 16 位 DMA 通道控制寄存器 (DMAxCON) • 16 位 DMA 通道 IRQ 选择寄存器 (DMAxREQ) • 16 位 DMA RAM 主起始地址寄存器 (DMAxSTA) • 16 位 DMA RAM 辅助起始地址寄存器 (DMAxSTB) • 16 位 DMA 外设地址寄存器 (DMAxPAD) • 10 位 DMA 传输计数寄存器 (DMAxCNT) 还有一对状态寄存器 DMACS0 和 DMACS1 是所有 DMAC 通道共用的。DMACS0 包含 DMA RAM 和 SFR 的 写 冲 突 标 志 位,分 别 为 XWCOLx 和 PWCOLx。 DMACS1 指示 DMA 通道和乒乓模式状态。 DMAxCON、DMAxREQ、DMAxPAD 和 DMAxCNT 都 是常规的读 / 写寄存器。读取 DMAxSTA 或 DMAxSTB 寄存器读到的是 DMA RAM 地址寄存器的内容。可以直 接写入 DMAxSTA 或 DMAxSTB 寄存器。这允许用户可 以在任何时候确定 DMA 缓冲器的指针值 (地址)。 中断标志位(DMAxIF)位于中断控制器的 IFSx 寄存器 中。相应的中断允许控制位 (DMAxIE)位于中断控制 器 的 IECx 寄 存 器 中,而 相 应 的 中 断 优 先 级 控 制位 (DMAxIP)则位于中断控制器的 IPCx 寄存器中。 7.2 DMAC 工作模式 每个 DMA 通道都有其状态寄存器和用来配置通道的控 制寄存器 (DMAxCON),可支持以下工作模式: • 按字或字节传输数据 • 将数据从外设传输到 DMA RAM 或从 DMA RAM 传 输到外设 • 后递增或静态 DMA RAM 地址 • 单数据块或连续数据块传输 • 在每次传输完成后,自动切换两个 DMA RAM 的 起始地址 (乒乓模式) • 强制进行单数据块 DMA 传输 (手动模式) 每个 DMA 通道均可被独立配置为: • 从 20 个 DMA 请求源中选择一个 • 手动使能或禁止 DMA 通道 • 当传输完成一半或全部完成时中断 CPU DMA通道中断被发送到中断控制器模块,并通过相关允 许标志位允许。 通道 DMA RAM 和外设的写冲突故障被组合成一个 DMAC 错误陷阱 (优先级为 10),该陷阱是不可屏蔽 的。DMAC 状态寄存器 (DMACS0)包含每个通道的 DMA RAM 写冲突 (XWCOLx)和外设写冲突 (PWCOLx)状态位,DMAC 错误陷阱处理程序可利用 这两个标志位来判断产生故障的原因。 DS70165D_CN 第 136 页 初稿  2007 Microchip Technology Inc. 7.2.1 字节或字传输 每个 DMA 通道均可被配置成传输字或字节。通常,字 只能在对齐的 (偶)地址之间来回传输,而字节则可以 在任何 (合法)的地址之间来回传输。 如果 SIZE 位 (DMAxCON<14>)清零,则传输字大小 的 数 据。 DMA RAM 地 址 寄 存 器 (DMAxSTA 或 DMAxSTB)的LSb被忽略。如果使能后递增寻址模式, 则 DMA RAM 地址寄存器在传输完每个字后递增 2。 如果 SIZE 位置 1,则传输字节大小的数据。如果使能 后递增寻址模式,则 DMA RAM 地址寄存器在传输完每 个字节后递增 1。 注: DMAxCNT 的值与被传输数据的大小 (字 节 / 字)无关。如果需要地址偏移量,则需 要将计数器左移 1 位来产生字传输所需的 正确地址偏移量 (地址是对齐的)。 7.2.2 寻址模式 DMAC 支持 DMA RAM 地址 (源地址或目标地址)的 寄存器间接和寄存器间接后递增寻址模式。可独立选择 每个通道的 DMA RAM 寻址模式。总是使用寄存器间接 寻址模式访问外设 SFR。 如果 AMODE<1:0> 位 (DMAxCON<5:4>)被设置为 01,则使用不带后递增的寄存器间接寻址模式,这意味 着 DMA RAM 的地址保持不变。 如果 AMODE<1:0> 位清零,则使用带有后递增的寄存 器间接寻址模式访问 DMA RAM,这意味着 DMA RAM 的地址在每次访问后递增。 dsPIC33F 通过将 AMODE<1:0> 位设置为 10,可将任何 DMA 通 道配置为工作在外设间接寻址模式下。在该模式下, DMA RAM 的源地址或目标地址部分来自于外设以及 DMA 地址寄存器。每个外设模块都有一个预分配的外 设间接地址,该地址和 DMA 起始地址寄存器的内容进 行逻辑或操作,以获取有效的 DMA RAM 地址。 DMA RAM 起始地址寄存器的值必须是 2 的整数幂。 注 1: 只有 ECAN 和 ADC 模块能使用外设间接 寻址。 7.2.3 DMA 传输方向 可将每个 DMA 通道配置为将数据从外设传输到 DMA RAM,或从 DMA RAM 传输到外设。 如果 DIR 位 (DMAxCON<13>)清零,则将外设 SFR 的内容读出(使用 DMA 外设地址寄存器 DMAxPAD), 并写入 DMA RAM (使用 DMA RAM 地址寄存器)。 如果 DIR 位(DMAxCON<13>)置 1,则将 DMA RAM 中的内容读出 (使用 DMA RAM 地址寄存器),并写入 外设 (使用 DMA 外设地址寄存器 DMAxPAD)。 7.2.4 空数据外设写模式 如果将 NULLW 位 (DMAxCON<11>)置 1,除了将数 据从外设 SFR 传输到 DMA RAM 外,还会将一个空数 据写入外设 SFR(假设 DIR 位清零)。在需要连续接收 数据而不发送任何数据的应用中,该模式最有用。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 137 页 dsPIC33F 7.2.5 连续数据块或单数据块的工作 每个 DMA 通道均可被配置为单数据块或连续数据块工 作模式。 如果 MODE<0> (DMAxCON<0>)清零,那么通道将 在连续数据块模式下工作。 当传送了所有数据后 (即,检测到了缓冲区末端),将 为后续使用自动重新配置通道。 在发送最后一块数据 时,产生的下一个有效地址将为原始起始地址 (来自选 定的 DMAxSTA 或 DMAxSTB 寄存器)。如果 HALF 位 (DMAxCON<12>)清 零,发 送 完 成 中 断 标 志 位 (DMAxIF)将 置 1。 如 果 HALF 位 置 1,那 么 此 时 DMAxIF 将不会被置 1,并且通道将保持使能。 如果 MODE<0> 置 1,那么通道将在单数据块模式下工 作。当传送了所有数据后(即,检测到了缓冲区末端), 通道被自动禁止。 在发送最后一块数据时,不产生新的 有效地址,并且 DMA RAM 地址寄存器保留最后访问的 DMA RAM 地址。如果 HALF 位清零, DMAxIF 位将置 1。如果 HALF 位置 1,那么此时 DMAxIF 将不会被置 1 并且通道被自动禁止。 7.2.6 乒乓模式 用户通过将 MODE<1> 位 (DMAxCON<1>)置 1 使能 乒乓模式。 在该模式下,交替选择 DMAxSTA 和 DMAxSTB 作为连 续数据块传输的 DMA RAM 起始地址。这样,可以用单 个 DMA 通道来支持 DMA RAM 中的两个长度相同的缓 冲区。通过允许 CPU 在处理一个缓冲区的同时装载另 一个缓冲区,使用此技术可获得最大的数据吞吐率。 7.2.7 手动传输模式 通过在软件中将 FORCE 位 (DMAxREQ<15>)置 1, 可创建手动 DMA 请求。如果使能了这种模式,相应的 DMA 通道将只传输一个数据元素,而不是数据块。 当强制的 DMA 传输完成时,FORCE 位将由硬件清零, 它不能由用户清零。试图在正在进行的 DMA 请求完成 前将该位置 1 是无效的。 手动 DMA 传输功能是个一次性事件。在强制 (手动) 传输完成后, DMA 通道将总是恢复到正常工作模式 (即,以硬件 DMA 请求为基础)。 该模式为用户提供了一种启动数据块传输的简单方法。 例如,使用手动模式将第一个数据元素传输到一个串行 外设的操作允许使用 “发送缓冲区空” DMA 请求通过 DMAC 自动传输该缓冲区中的后续数据。 7.2.8 DMA 请求源选择 对于每个 DMA 通道,均可以在 128 个中断源中选择一 个作为相应通道的 DMA 请求。具体选择哪个中断源由 IRQSEL<6:0> 位 (DMAxREQ<6:0>)的内容决定。可 用的中断源因器件而异。请参见表 7-1 了解与每个能产 生 DMA 传输的中断源相关的 IRQ 编号。 7.3 DMA 中断和陷阱 每个 DMA 通道均能产生一个独立的 “整个数据块传输 完成”(HALF = 0)或 “数据块的一半传输完成” (HALF = 1)中断。每个 DMA 通道都有其自身的中断 向量,因此,不使用它被分配到的外设的中断向量。 如 果外设包含多字缓冲区,为了使用 DMA,必须禁止外设 的缓冲功能。DMA中断请求仅由数据传输产生,外设错 误条件不能产生 DMA 中断请求。 DMA 控制器还能够通过不可屏蔽的 CPU 陷阱事件反应 外设和 DMA RAM 的写冲突错误条件。DMA 错误陷阱 在发生以下故障条件之一时产生: • CPU 和外设之间的 DMA RAM 数据写冲突 - 当 CPU 和外设试图同时写入相同的 DMA RAM 地址时产生该条件 • CPU 和 DMA 控制器之间的外设 SFR 数据写冲突 - 当 CPU 和 DMA 控制器试图同时写入相同的外 设 SFR 时产生该条件 通道 DMA RAM 和外设的写冲突故障被组合成一个 DMAC 错误陷阱 (优先级为 10),该陷阱是不可屏蔽 的。 DMAC 状态寄存器 (DMACS)包含每个通道的 DMA RAM 写冲突 (XWCOLx)和外设写冲突 (PWCOLx)状态位,DMAC 错误陷阱处理程序可利用 这两种状态标志位来判断产生故障的原因。 DS70165D_CN 第 138 页 初稿  2007 Microchip Technology Inc. dsPIC33F 7.4 DMA 初始化示例 以下是 DMA 初始化示例: 例 7-1: DMA 初始化方法示例 // Clear all DMA controller status bits to a known state DMACS0 = 0; // Set up DMA Channel 0: Word mode, Read from Peripheral & Write to DMA; Interrupt when all the data has been moved; Indirect with post-increment; Continuous mode with Ping-Pong Disabled DMA0CON = 0x0000; //Automatic DMA transfer initiation by DMA request; DMA Peripheral IRQ Number set up for ADC1 DMA0REQ = 0x000D; // Set up offset into DMA RAM so that the buffer that collects ADC result data starts at the base of DMA RAM DMA0STA = 0x0000; // DMA0PAD should be loaded with the address of the ADC conversion result register DMA0PAD = (volatile unsigned int) &ADC1BUF0; // DMA transfer of 256 words of data DMA0CNT = 0x0100 ; //Clear the DMA0 Interrupt Flag IFS0bits.DMA0IF = 0; //Enable DMA0 Interrupts IEC0bits.DMA0IE = 1; //Enable the DMA0 Channel DMA0CONbits.CHEN = 1;  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 139 页 dsPIC33F 寄存器 7-1: DMAxCON:DMA 通道 x 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 CHEN SIZE DIR HALF NULLW — bit 15 U-0 U-0 — — bit 8 U-0 — bit 7 U-0 R/W-0 R/W-0 U-0 — AMODE<1:0> — U-0 R/W-0 R/W-0 — MODE<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10-6 bit 5-4 bit 3-2 bit 1-0 CHEN:通道使能位 1 = 使能通道 0 = 禁止通道 SIZE: 数据传输大小位 1 = 字节 0=字 DIR:传输方向位 (源 / 目标总线选择) 1 = 从 DMA RAM 地址读,写到外设地址 0 = 从外设地址读,写到 DMA RAM 地址 HALF: 数据块传输完成中断选择位 1 = 当传送了一半数据时,发出数据块传输完成中断 0 = 当传送了所有数据时,发出数据块传输完成中断 NULLW:空数据外设写模式选择位 1 = 除将外设 SFR 中的数据写入 DMA RAM 外,还将空数据写入外设 SFR (DIR 位也必须清零) 0 = 正常工作 未实现:读为 0 AMODE<1:0>:DMA 通道寻址模式选择位 11 = 保留 (将工作在外设间接寻址模式下) 10 = 外设间接寻址模式 01 = 无后递增的寄存器间接寻址模式 00 = 带后递增的寄存器间接寻址模式 未实现:读为 0 MODE<1:0>:DMA 通道工作模式选择位 11 = 使能单数据块乒乓模式 (与每个 DMA RAM 缓冲区之间传输一块数据) 10 = 使能连续数据块乒乓模式 01 = 禁止单数据块乒乓模式 00 = 禁止连续数据块乒乓模式 DS70165D_CN 第 140 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 7-2: DMAxREQ:DMA 通道 x IRQ 选择寄存器 R/W-0 U-0 U-0 U-0 U-0 U-0 FORCE(1) — — — — — bit 15 U-0 U-0 — — bit 8 U-0 — bit 7 R/W-0 R/W-0 R/W-0 U-0 IRQSEL6(2) IRQSEL5(2) IRQSEL4(2) IRQSEL3(2) U-0 IRQSEL2(2) R/W-0 IRQSEL1(2) R/W-0 IRQSEL0(2) bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-7 bit 6-0 FORCE:强制 DMA 传输位 (1) 1 = 强制进行单次 DMA 传输 (手动模式) 0 = 自动按照 DMA 请求进行 DMA 传输 未实现:读为 0 IRQSEL<6:0>:DMA 外设 IRQ 编号选择位 (3) 0000000-1111111 = 可选择作为通道 DMAREQ 的 DMAIRQ0-DMAIRQ127 注 1: FORCE 位不能被用户清零。当强制的 DMA 传输完成时, FORCE 位由硬件清零。 2: 请参见表 6-1 获取所有中断源的 IRQ 编号的完整列表。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 141 页 dsPIC33F 寄存器 7-3: R/W-0 bit 15 DMAxSTA:DMA 通道 x RAM 起始地址寄存器 A(1) R/W-0 R/W-0 R/W-0 R/W-0 STA<15:8> R/W-0 R/W-0 R/W-0 bit 8 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 STA<7:0> R/W-0 R/W-0 R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 STA<15:0>:主 DMA RAM 起始地址位 (源地址或目标地址) 注 1: 读取该地址寄存器将返回 DMA RAM 地址寄存器的当前内容,而不是写入 STA<15:0> 的内容。如果使能 了通道 (即通道处于工作状态),写入该寄存器可能导致 DMA 通道的行为不可预测,应该避免。 寄存器 7-4: R/W-0 bit 15 DMAxSTB:DMA 通道 x RAM 起始地址寄存器 B(1) R/W-0 R/W-0 R/W-0 R/W-0 STB<15:8> R/W-0 R/W-0 R/W-0 bit 8 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 STB<7:0> R/W-0 R/W-0 R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置位 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 STB<15:0>:辅助 DMA RAM 起始地址位 (源地址或目标地址) 注 1: 读取该地址寄存器将返回 DMA RAM 地址寄存器的当前内容,而不是写入 STB<15:0> 的内容。如果使能 了通道 (即通道处于工作状态),写入该寄存器可能导致 DMA 通道的行为不可预测,应该避免。 DS70165D_CN 第 142 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 7-5: R/W-0 bit 15 DMAxPAD:DMA 通道 x 外设地址寄存器 (1) R/W-0 R/W-0 R/W-0 R/W-0 PAD<15:8> R/W-0 R/W-0 R/W-0 bit 8 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PAD<7:0> R/W-0 R/W-0 R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 PAD<15:0>: 外设地址寄存器位 注 1: 如果使能了通道 (即通道处于工作状态),写入该寄存器可能导致 DMA 通道的行为不可预测,应该避免。 寄存器 7-6: DMAxCNT:DMA 通道 x 传输计数寄存器 (1) U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — bit 15 U-0 R/W-0 — CNT<9:8>(2) bit 8 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 CNT<7:0> R/W-0 R/W-0 R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-10 bit 9-0 未实现:读为 0 CNT<9:0>:DMA 传输计数寄存器位 (2) 注 1: 如果使能了通道 (即通道处于工作状态),写入该寄存器可能导致 DMA 通道的行为不可预测,应该避免。 2: DMA 传输的次数 = CNT<9:0> + 1。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 143 页 dsPIC33F 寄存器 7-7: R/C-0 PWCOL7 bit 15 DMACS0:DMA 控制器状态寄存器 0 R/C-0 PWCOL6 R/C-0 PWCOL5 R/C-0 PWCOL4 R/C-0 PWCOL3 R/C-0 PWCOL2 R/C-0 PWCOL1 R/C-0 PWCOL0 bit 8 R/C-0 XWCOL7 bit 7 R/C-0 XWCOL6 R/C-0 XWCOL5 R/C-0 XWCOL4 R/C-0 XWCOL3 R/C-0 XWCOL2 R/C-0 XWCOL1 R/C-0 XWCOL0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 PWCOL7:通道 7 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL6:通道 6 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL5:通道 5 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL4:通道 4 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL3:通道 3 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL2:通道 2 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL1:通道 1 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 PWCOL0:通道 0 外设写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 XWCOL7:通道 7 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 XWCOL6:通道 6 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 XWCOL5:通道 5 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 XWCOL4:通道 4 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 DS70165D_CN 第 144 页 初稿  2007 Microchip Technology Inc. 寄存器 7-7: DMACS0:DMA 控制器状态寄存器 0 (续) bit 3 XWCOL3:通道 3 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 bit 2 XWCOL2:通道 2 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 bit 1 XWCOL1:通道 1 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 bit 0 XWCOL0:通道 0 DMA RAM 写冲突标志位 1 = 检测到写冲突 0 = 未检测到写冲突 dsPIC33F  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 145 页 dsPIC33F 寄存器 7-8: U-0 — bit 15 DMACS1:DMA 控制器状态寄存器 1 U-0 U-0 U-0 R-1 — — — R-1 R-1 LSTCH<3:0> R-0 PPST7 bit 7 R-0 PPST6 R-0 PPST5 R-0 PPST4 R-0 PPST3 R-0 PPST2 R-0 PPST1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 LSTCH<3:0>:上一次工作的 DMA 通道位 1111 = 自系统复位以来没有发生 DMA 传输 1110-1000 = 保留 0111 = 上次数据传输是通过 DMA 通道 7 进行的 0110 = 上次数据传输是通过 DMA 通道 6 进行的 0101 = 上次数据传输是通过 DMA 通道 5 进行的 0100 = 上次数据传输是通过 DMA 通道 4 进行的 0011 = 上次数据传输是通过 DMA 通道 3 进行的 0010 = 上次数据传输是通过 DMA 通道 2 进行的 0001 = 上次数据传输是通过 DMA 通道 1 进行的 0000 = 上次数据传输是通过 DMA 通道 0 进行的 PPST7:通道 7 乒乓模式状态标志位 1 = 选择 DMA7STB 寄存器 0 = 选择 DMA7STA 寄存器 PPST6:通道 6 乒乓模式状态标志位 1 = 选择 DMA6STB 寄存器 0 = 选择 DMA6STA 寄存器 PPST5:通道 5 乒乓模式状态标志位 1 = 选择 DMA5STB 寄存器 0 = 选择 DMA5STA 寄存器 PPST4:通道 4 乒乓模式状态标志位 1 = 选择 DMA4STB 寄存器 0 = 选择 DMA4STA 寄存器 PPST3:通道 3 乒乓模式状态标志位 1 = 选择 DMA3STB 寄存器 0 = 选择 DMA3STA 寄存器 PPST2:通道 2 乒乓模式状态标志位 1 = 选择 DMA2STB 寄存器 0 = 选择 DMA2STA 寄存器 PPST1:通道 1 乒乓模式状态标志位 1 = 选择 DMA1STB 寄存器 0 = 选择 DMA1STA 寄存器 PPST0:通道 0 乒乓模式状态标志位 1 = 选择 DMA0STB 寄存器 0 = 选择 DMA0STA 寄存器 R-1 bit 8 R-0 PPST0 bit 0 DS70165D_CN 第 146 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 7-9: DSADR:最近的 DMA RAM 地址 R-0 R-0 R-0 R-0 R-0 R-0 DSADR<15:8> bit 15 R-0 R-0 R-0 R-0 R-0 R-0 DSADR<7:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 bit 15-0 DSADR<15:0>:DMA 控制器最近访问的 DMA RAM 地址位 R-0 R-0 x = 未知 R-0 bit 8 R-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 147 页 dsPIC33F 注: DS70165D_CN 第 148 页 初稿  2007 Microchip Technology Inc. dsPIC33F 8.0 振荡器配置 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 振荡器系统提供: • 可选择多种外部和内部振荡器作为时钟源 • 可将内部工作频率调整为所要求系统时钟频率的片 上 PLL 图 8-1: dsPIC33F 振荡器系统框图 • 内部 FRC 振荡器也可使用 PLL,因此允许在没有任 何外部时钟产生硬件的情况下全速工作 • 不同时钟源之间的时钟切换 • 可节省系统功耗的可编程时钟后分频器 • 故障保护时钟监视器 (FSCM)可检测时钟故障并采 取故障保护措施 • 一个时钟控制寄存器 (OSCCON) • 用于主振荡器选择的非易失性配置位 图 8-1 给出了振荡器系统的简化框图。 OSC2 OSC1 主振荡器 dsPIC33F XT, HS, EC XTPLL, HSPLL, ECPLL, FRCPLL PLL DOZE<2:0> CPU /FRCDIIV /DOZE FRC 振荡器 SOSCO SOSCI LPRC 振荡器 辅助振荡器 SOSCEN 使能 振荡器 FRC, FRCDIVN FRCDIV<2:0> 16 分频 FRCDIV16 LPRC 外设 SOSC 时钟控制逻辑 故障保护 时钟 监视器 WDT, PWRT 其他模块的 时钟源选择 . 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第149 页 dsPIC33F 8.1 CPU 时钟系统 dsPIC33F 提供 7 种系统时钟选择: • FRC 振荡器 • 带 PLL 的 FRC 振荡器 • 主 (XT、 HS 或 EC)振荡器 • 带 PLL 的主振荡器 • 辅助 (LP)振荡器 • LPRC 振荡器 • 带后分频器的 FRC 振荡器 8.1.1 系统时钟源 FRC (快 速 RC)内 部 振 荡 器 工 作 频 率 的 标 称 值 为 7.37 MHz。用户软件能够通过有选择地指定 FRC 时钟 的分频比 (从 1:2 至 1:256)调节 FRC 频率。使用 FRCDIV<2:0> (CLKDIV<10:8>)位来选择该分频比。 主振荡器能以下列任一时钟作为其时钟源: 1. XT(晶振):3 MHz 至 10 MHz 范围的晶振和陶 瓷谐振器。 晶振连接在 OSC1 和 OSC2 引脚之 间。 2. HS (高速晶振):10 MHz 至 40 MHz 范围的晶 振。晶振连接在 OSC1 和 OSC2 引脚之间。 3. EC (外部时钟):0.8 MHz 至 64 MHz 范围内的 外部时钟信号。外部时钟信号直接施加到 OSC1 引脚。 辅助 (LP)振荡器是为低功耗运行而设计的,它使用 32.768 kHz 晶振或陶瓷谐振器。LP 振荡器使用 SOSCI 引脚和 SOSCO 引脚。 LPRC (低功耗 RC)内部振荡器工作频率的标称值为 32.768 kHz。 它也可以用作看门狗定时器 (Watchdog Timer, WDT)和故障保护时钟监视器 (FSCM)的参 考时钟。 可选择将 FRC 和主振荡器产生的时钟信号加到片内锁 相环 (PLL),为器件工作提供宽范围的输出频率。第 8.1.3 节 “PLL 配置”给出了 PLL 配置的说明。 8.1.2 系统时钟选择 通过设置配置位可选择器件发生上电复位事件时使用的 振荡器源。振荡器配置位设置位于程序存储器的配置寄 存器中。(详情见第 23.1 节 “配置位”。)初始振荡器 选择配置位 FNOSC<2:0>(FOSCSEL<2:0>)和主振荡 器模式选择配置位 POSCMD<1:0>(FOSC<1:0>)选择 在上电复位时使用的振荡器源。 FRC主振荡器是默认的 (未编程的)选择。 配置位允许用户在12种不同的时钟模式之间进行选择, 如表 8-1 所示。 振荡器的输出 (或当选择了 PLL 模式时 PLL 的输出) FOSC 被 2 分频以产生器件指令时钟(FCY)。FCY 定义 器件的工作速度, dsPIC33F 架构最高可支持 40 MHz 的工作速度。 指令执行速度或器件工作频率 FCY 如下: 公式 8-1: 器件工作频率 FCY = FOSC/2 8.1.3 PLL 配置 主振荡器和内部 FRC 振荡器能有选择地使用片上 PLL 来获取更高的工作速度。PLL 在选择器件工作速度方面 提供很大的灵活性。 PLL 的框图如图 8-2 所示。 以 FIN 表示的主振荡器或 FRC 的输出在提供给 PLL 的 电压控制振荡器 (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 的器件工作速度。 对于主振荡器或 FRC 振荡器,输出为 FIN,则 PLL 的输 出 FOSC 为 (由以下公式计算): 公式 8-2: FOSC 计算 ( ) M FOSC = FIN* N1*N2 DS70165D_CN 第150 页 初稿  2007 Microchip Technology Inc. dsPIC33F 例如,假设正在使用 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 输出,该频率在所需的 100200 MHz 范围内。 如 果 PLLPOST<1:0> = 0,那 么 N2 = 2。这提供 160/2 = 80 MHz 的 Fosc。产 生 的 器 件 工 作速度是 80/2 = 40 MIPS。 图 8-2: dsPIC33F PLL 框图 公式 8-3: 带 PLL 的 XT 模式示例 ( ) FCY = FOSC = 1 22 10000000*32 2*2 = 40 MIPS 时钟源(晶振、外部时钟 或内部 RC) 0.8-8.0 MHz 的信号 PLLPRE X 1.6-16.0 MHz 的信号 2-33 分频 100-200 MHz 的信号 12.5-80 MHz 的信号 VCO PLLDIV 2-513 倍频 PLLPOST 2、4 或 8 分频 FOSC 表 8-1: 用于时钟选择的配置位值 振荡器模式 振荡器源 POSCMD<1:0> FNOSC<2:0> 注 带 N 分频的快速 RC 振荡器 (FRCDIVN) 内部 11 带 16 分频的快速 RC 振荡器 (FRCDIV16) 内部 11 低功耗 RC 振荡器 (LPRC) 内部 11 辅助 (Timer1)振荡器 (SOSC) 辅助 11 带 PLL 的主振荡器 (HS)(HSPLL) 主 10 带 PLL 的主振荡器 (XT)(XTPLL) 主 01 带 PLL 的主振荡器 (EC)(ECPLL) 主 00 主振荡器 (HS) 主 10 主振荡器 (XT) 主 01 主振荡器 (EC) 主 00 带 PLL 的快速 RC 振荡器 (FRCPLL) 内部 11 快速 RC 振荡器 (FRC) 内部 11 注 1: 由 OSCIOFNC 配置位决定的 OSC2 引脚功能。 2: 对于未编程 (已擦除)器件,这是默认的振荡器模式。 111 1, 2 110 1 101 1 100 1 011 011 011 1 010 010 010 1 001 1 000 1 . 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第151 页 dsPIC33F 寄存器 8-1: OSCCON: 振荡器控制寄存器 U-0 — bit 15 R-0 R-0 R-0 U-0 COSC<2:0> — R/W-y R/W-0 U-0 R-0 U-0 R/C-0 U-0 CLKLOCK — LOCK — CF — bit 7 图注: R = 可读位 -n = 上电复位时的值 y = 在 POR 时由配置位设置的值 W = 可写位 U = 未实现位,读为 0 1 =置1 0 = 清零 bit 15 bit 14-12 bit 11 bit 10-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 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) 未实现:读为 0 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) CLKLOCK:时钟锁定使能位 1 = 如果 (FCKSM1 = 1),那么时钟和 PLL 配置被锁定。 如果 (FCKSM1 = 0),那么时钟和 PLL 配置可以被修改。 0 = 时钟和 PLL 选择未被锁定,配置可以被修改 未实现:读为 0 LOCK:PLL 锁定状态位 (只读) 1 = 表示 PLL 处于锁定状态,或 PLL 起振定时器延时结束 0 = 表示 PLL 处于失锁状态,起振定时器在运行或 PLL 被禁止 未实现:读为 0 CF:时钟故障检测位 (由应用程序读 / 清零) 1 = FSCM 检测到时钟故障 0 = FSCM 未检测到时钟故障 未实现:读为 0 LPOSCEN:辅助 (LP)振荡器使能位 1 = 使能辅助振荡器 0 = 禁止辅助振荡器 OSWEN: 振荡器切换使能位 1 = 请求切换到由 NOSC<2:0> 位指定的振荡器 0 = 振荡器切换完成 R/W-y NOSC<2:0> R/W-0 LPOSCEN x = 未知 R/W-y bit 8 R/W-0 OSWEN bit 0 DS70165D_CN 第152 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 8-2: R/W-0 ROI bit 15 CLKDIV:时钟分频比寄存器 R/W-0 R/W-0 DOZE<2:0> R/W-0 R/W-0 DOZEN(1) R/W-1 R/W-0 FRCDIV<2:0> R/W-0 bit 8 R/W-0 R/W-1 PLLPOST<1:0> bit 7 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — PLLPRE<4:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 y = 在 POR 时由配置位设置的值 W = 可写位 U = 未实现位,读为 0 1 =置1 0 = 清零 x = 未知 bit 15 bit 14-12 bit 11 bit 10-8 bit 7-6 bit 5 bit 4-0 ROI: 中断恢复位 1 = 中断将清零 DOZEN 位,并且处理器时钟 / 外设时钟比被设置为 1:1 0 = 中断对 DOZEN 位无影响 DOZE<2:0>:处理器时钟分频比选择位 (3) 000 = FCY/1 (默认) 001 = FCY/2 010 = FCY/4 011 = FCY/8 100 = FCY/16 101 = FCY/32 110 = FCY/64 111 = FCY/128 DOZEN:DOZE 模式使能位 (1) 1 = DOZE<2:0> 位域指定外设时钟和处理器时钟之间的比率 0 = 处理器时钟 / 外设时钟比率强制为 1:1 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 分频 PLLPOST<1:0>:PLL VCO 输出分频比选择位 (也表示为 “N2”, PLL 后分频比) (2) 00 = 输出 /2 00 = 输出 /4 10 = 保留 (默认为输出 /4) 00 = 输出 /8 未实现:读为 0 PLLPRE<4:0>:PLL 相位检测器输入分频比位 (也表示为 “N1”, PLL 预分频比) 00000 = 输入 /2 00001 = 输入 /3 ••• 11111 = 输入 /33 注 1: 当 ROI 位被置 1 且发生中断时,该位被清零。 . 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第153 页 dsPIC33F 寄存器 8-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 bit 7 R/W-0 R/W-1 R/W-1 R/W-0 PLLDIV<7:0> R/W-0 R/W-0 R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-9 bit 8-0 未实现:读为 0 PLLDIV<8:0>:PLL 反馈倍频比位 (也表示为 “M”, PLL 倍频比) 000000000 = 2 000000001 = 3 000000010 = 4 • • • 111111111 = 513 DS70165D_CN 第154 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 8-4: OSCTUN:FRC 振荡器调节寄存器 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 U-0 — bit 7 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — TUN5 TUN4 TUN3 TUN2 TUN1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-6 bit 5-0 未实现:读为 0 TUN<5:0>:FRC 振荡器调节位 011111 = 中心频率 + 11.625% 011110 = 中心频率 + 11.25% (8.23 MHz) • • • 000001 = 中心频率 + 0.375% (7.40 MHz) 000000 = 中心频率 (标称值 7.37 kHz) 000001 = 中心频率 – 0.375% (7.345 MHz) • • • 000001 = 中心频率 – 11.625% (6.52 MHz) 000001 = 中心频率 – 12% (6.49 MHz) U-0 — bit 8 R/W-0 TUN0 bit 0 . 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第155 页 dsPIC33F 8.2 时钟切换工作原理 在软件控制下,应用可以在任何时候在四个时钟源 (主 振荡器、LP、FRC 和 LPRC)之间自由切换。为限制该 灵活性可能产生的影响, dsPIC33F 器件的时钟切换过 程带有安全锁定。 注: 主 振 荡 器 模 式 有 三 种 不 同 的 由 POSCMD<1:0> 配置 位 决 定 的 子 模式 (XT、 HS 和 EC)。在应用中可以用软件 实现从主振荡器模式切换到其他模式,或 从其他模式切换到主振荡器模式,但不能 在不对器件进行再编程的情况下在主振荡 器模式的不同子模式之间进行切换。 8.2.1 使能时钟切换 要使能时钟切换,配置寄存器中的 FCKSM1 配置位必 须编程为 0。(详情请见第 23.1 节 “配置位”。)如果 FCKSM1 配置位未被编程 (1),则禁止时钟切换功能 和故障保护时钟监视器功能。这是默认设置。 当 时 钟 切 换 被 禁 止 时, NOSC 控制位 (OSCCON<10:8>)不控制时钟选择。但是,COSC 位 (OSCCON<14:12>)反映 FNOSC 配置位选择的时钟 源。 当时 钟 切 换 被 禁 止 时, OSWEN (OSCCON<0>)无效。它总是保持为 0。 控制位 8.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 状态)除外。 注 1: 在整个时钟切换序列中,处理器继续执行 代 码。对 时 序 敏 感 的 代 码 不 应 在 此 时 执 行。 2:不允许直接在使能 PLL 和 FRCPLL 的任何 主振荡器模式之间进行时钟切换。在这些 情况下,应用必须首先切换到 FRC 模式将 其作为两个 PLL 模式之间的过渡时钟源。 8.3 故障保护时钟监视器 (FSCM) 故障保护时钟监视器 (FSCM)允许器件在发生振荡器 故障时继续运行。通过编程使能 FSCM 功能。如果使能 了 FSCM 功能,LPRC 内部振荡器将总是运行(休眠模 式除外)并且不受看门狗定时器的控制。 在发生振荡器故障时, FSCM 产生时钟故障陷阱事件, 并将系统时钟切换到 FRC 振荡器。然后应用程序可尝 试重新启动振荡器或执行受控关闭。通过简单地将复位 地址装入振荡器故障陷阱向量,可将陷阱作为一个热复 位来处理。 如果使用 PLL 来对系统时钟倍频,则时钟发生故障时内 部 FRC 也会被以相同的倍频比倍频。时钟发生故障时 器件会切换到带 PLL 的 FRC。 DS70165D_CN 第156 页 初稿  2007 Microchip Technology Inc. dsPIC33F 9.0 节能特性 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F提供了管理功耗的功能,该功能是通过有选择 地管理 CPU 和外设的时钟源来实现的。一般而言,较低 的时钟频率和减少时钟源驱动电路的数目会使功耗降 低。dsPIC33F 器件用以下四种方法管理功耗: • 时钟频率 • 基于指令的休眠模式和空闲模式 • 软件控制的打盹模式 • 用软件有选择的进行外设控制 可以组合使用这些方法从而在保证关键应用特性(如对 于时序敏感的通信)的情况下有选择地调节应用的功 耗。 9.1 时钟频率和时钟切换 dsPIC33F器件提供的时钟频率范围较大,用户可根据应 用需要进行选择。 如果未锁定系统时钟配置,用户只需 更改 NOSC 位 (OSCCON<10:8>)即可选择低功耗或 高精度振荡器。 在工作期间更改系统时钟的过程以及相 应的限制,将在第 8.0 节 “振荡器配置”中进行更详细 的讨论。 9.2 基于指令的节能模式 dsPIC33F 器件有两种特殊的节能模式,通过执行特殊 的 PWRSAV 指令可以进入这两种模式。休眠模式下时钟 停止运行并停止所有代码执行;空闲模式下 CPU 停止 工作并停止代码执行,但是允许外设模块继续工作。 例 9-1 中所示为 PWRSAV 指令的汇编语法。 注: SLEEP_MODE 和 IDLE_MODE 是在所选 器件的汇编头文件中定义的常数。 在被允许的中断产生、 WDT 超时或器件复位时,器件 会退出休眠模式和空闲模式。器件退出这两种模式的过 程称为 “唤醒”。 9.2.1 休眠模式 休眠模式具有下列特征: • 系统时钟源关闭。如果使用了片上振荡器,也要关 闭它。 • 如果 I/O 引脚上不消耗电流,则器件电流消耗将降 至最低。 • 由于系统时钟源被禁止,所以故障保护时钟监视器 在休眠模式下不工作。 • 如果 WDT 被使能, LPRC 时钟在休眠模式下将继 续运行。 • WDT 如果被使能,则在进入休眠模式之前自动清 零。 • 有些器件功能或外设可能在休眠模式下继续工作, 包括 I/O 端口上的输入电平变化通知功能或使用外 部时钟输入的外设等。任何需要使用系统时钟源来 工作的外设在休眠模式下将被禁止。 当发生以下任何事件时,器件将从休眠模式唤醒: • 产生任何被单独允许的中断 • 任何形式的器件复位 • WDT 超时 从休眠模式唤醒时,处理器将使用在进入休眠模式时处 于工作状态的时钟源重新开始工作。 例 9-1: PWRSAV PWRSAV PWRSAV 指令语法 #SLEEP_MODE #IDLE_MODE ; Put the device into SLEEP mode ; Put the device into IDLE mode  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第157 页 dsPIC33F 9.2.2 空闲模式 空闲模式具有下列特征: • CPU 将停止执行指令。 • WDT 自动清零。 • 系统时钟源保持工作状态。默认情况下,所有外设 模块将继续使用系统时钟源正常工作,也可以有选 择地禁止它们 (见第 9.4 节 “禁止外设模块”)。 • 如果 WDT 或 FSCM 被使能, LPRC 也将保持工 作状态。 当发生以下任何事件时,器件将从空闲模式唤醒: • 产生任何被单独允许的中断。 • 任何器件复位。 • WDT 超时。 从空闲模式唤醒时,重新为 CPU 提供时钟,且立即从 PWRSAV 指令之后的下一条指令或 ISR 中的第一条指令 开始执行指令。 9.2.3 在节能指令执行期间的中断 在 PWRSAV 指令执行期间发生的中断都将延迟到进入休 眠或空闲模式后才产生,并导致器件从休眠或空闲模式 中唤醒。 9.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 的速度开始执行指令。 9.4 禁止外设模块 外设模块禁止(PMD)寄存器通过停止所有提供给模块 的时钟源提供一种禁止外设模块的方法。当通过相应的 PMD 控制位禁止外设时,外设就进入了功耗最低的状 态。 与外设相关的控制寄存器和状态寄存器也被禁止, 因此写入那些寄存器不会有影响,且读取值无效。 只有在 PMD 寄存器中的相应位被清零且特定的 dsPIC® DSC 器件支持某个外设时,才会使能相应的外设模块。 如果外设包含在器件中,那么默认情况下,它是使能 的。 注: 如果 PMD 位置 1,那么相应的模块将在 1 个指令周期的延时后被禁止。 类似地,如 果 PMD 位清零,那么相应的模块将在 1 个 指令周期的延时后被使能 (假设已将模块 控制寄存器配置为使能模块的工作)。 DS70165D_CN 第158 页 初稿  2007 Microchip Technology Inc. dsPIC33F 10.0 I/O 端口 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 所有器件引脚 (除 VDD、 VSS、 MCLR 和 OSC1/CLKI 以外)均由外设和并行 I/O 端口共用。 所有 I/O 输入端 口都为施密特触发器输入,提高了抗噪声能力。 10.1 并行 I/O (PIO)端口 通常,与某个外设共用一个引脚的并行 I/O 端口总是服 从于该外设。外设的输出缓冲器数据和控制信号提供给 一对多路开关。这对多路开关用于选择 I/O 引脚的输出 数据和控制信号是用于外设还是相应的端口。该逻辑电 路同时会阻止 “环回进入 (loop through)”,即一个 端口的数字输出可以驱动共用同一个引脚的外设输入。 图 10-1 中显示出端口是如何与其他外设复用的,以及对 应的 I/O 引脚。 当使能某外设并驱动与其相对应的引脚时,将禁止此引 脚的通用输出功能。可以读该 I/O 引脚,但并行端口引 脚的输出驱动器将被禁止。若使能某外设但没有驱动引 脚时,则该引脚可由一个端口驱动。 所有端口引脚都有三个寄存器,这些寄存器与端口引脚 作为数字 I/O 时的工作直接相关。 数据方向寄存器 (TRISx)决定引脚是输入引脚还是输出引脚。 如果数 据方向位为 1,则为输入引脚。复位以后,所有端口引 脚被定义为输入引脚。读锁存器 (LATx)时,读到的 是锁存器中的值;写锁存器时,写入的是锁存器。可以 直接读写锁存器(LATx)。但读取端口(PORTx)时, 读的是端口引脚的值;而写入端口引脚时,写入的是相 应的锁存器。 对于某个特定器件,无效的位及其相关的数据和控制寄 存器都将被禁止。这意味着相应的 LATx 和 TRISx 寄存 器以及该端口引脚将读为 0。 当一个定义为只用作输入的引脚与另一个外设或功能复 用时,由于没有其他竞争的输出源,它将不再是一个专 用端口。INT4 引脚就是这样一个例子。 注: 数字输入引脚上的电压可在 -0.3V 到 5.6V 之间。 图 10-1: 一个典型共用端口的结构框图 外设模块 外设输入数据 输出多路开关 外设模块使能 外设输出使能 外设输出数据 I/O 1 输出使能 0 读 TRIS PIO 模块 1 输出数据 0 数据总线 写 TRIS 写 LAT + 写端口 读锁存器 读端口 DQ CK TRIS 锁存器 D Q CK 数据锁存器 I/O 引脚 输入数据  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第159 页 dsPIC33F 10.2 漏极开路配置 除 PORT、 LAT 和 TRIS 寄存器用于数据控制外,每个 端口引脚也可被单独地配置为数字输出或漏极开路输 出。 这是由与每个端口相对应的漏极开路控制寄存器 (ODCx)控制的,将其中的任何位置 1 即可将相应的 引脚配置为漏极开路输出。 这种开漏特性允许通过使用外部上拉电阻在仅数字引脚 上产生高于 VDD (如 5V)的输出电平。(与模拟功能 复用的引脚不支持漏极开路 I/O 特性。)允许的最大开 漏电压与最大 VIH 规范相同。端口引脚和外设配置都支 持漏极开路输出特性。 10.3 配置模拟端口引脚 ADxPCFGH、ADxPCFGL 和 TRIS 寄存器用于控制 ADC 端口引脚的操作。 若希望端口引脚为模拟输入引脚,则 必须将相应的 TRIS 位置 1(输入)。如果将 TRIS 位清 零 (输出),则该引脚的数字输出电平 (VOH 或 VOL) 将被转换。 清零 ADxPCFGH 或 ADxPCFGL 寄存器中的任何位都 会 将 相 应 的 引 脚 配 置 为 模 拟 引 脚。这 也 是 与 模 拟 (ANx)功能相关的任何 I/O 引脚的复位状态。 注: 在有两个 ADC 模块的器件中,如果在 AD1PCFGH (L)和 AD2PCFGH (L)中 相应的 PCFG 位被清零,则相应的引脚将 被配置为模拟输入。 读取端口寄存器时,所有配置为模拟输入通道的引脚均 读为 0 (低电平)。 配置为数字输入的引脚将不对模拟输入信号进行转换。 对任何定义为数字输入的引脚 (包括 ANx 引脚)施加 模拟电平可能导致输入缓冲器的电流消耗超出规范值。 注: 模拟输入引脚上的电压可以在 -0.3V 到 (VDD + 0.3 V)之间。 10.4 I/O 端口写 / 读时序 在改变端口方向或对端口执行写操作,与对同一端口执 行读操作之间需要间隔一个指令周期。通常在两者之间 插入一条 NOP 指令。 10.5 输入状态变化通知 I/O 端口的输入状态变化通知功能允许 dsPIC33F 器件 在选定输入引脚的状态变化时,向处理器发出中断请 求。 当禁止时钟时,该特性还可在休眠模式下检测到输 入状态改变。取决于器件的引脚数,最多可以选择 (允 许) 24 个外部信号 (CN0 到 CN23)在输入状态发生 变化时产生中断请求。 有四个与 CN 模块相关的控制寄存器。 CNEN1 和 CNEN2 寄存器包含每个 CN 输入引脚的中断允许位。将 其中任一位置 1 将允许相应引脚的 CN 中断。 每个 CN 引脚都有一个与之相连的弱上拉电路。弱上拉 电路充当连接到该引脚的电流源,当连接了按钮或键盘 设备时,不再需要使用外部电阻。使用包含每个 CN 引 脚控制位的 CNPU1 和 CNPU2 寄存器可分别使能各个 上拉电路。将任一控制位置 1 均可使能相应引脚的弱上 拉功能。 注: 只要端口引脚被配置为数字输出引脚,状 态变化通知引脚上的弱上拉电路将始终被 禁止。 例 10-1: 端口写 / 读示例 MOV MOV NOP btss 0xFF00, W0 W0, TRISBB PORTB, #13 ; Configure PORTB<15:8> as inputs ; and PORTB<7:0> as outputs ; Delay 1 cycle ; Next Instruction DS70165D_CN 第160 页 初稿  2007 Microchip Technology Inc. dsPIC33F 11.0 TIMER1 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 Timer1 模块是一个 16 位的定时器,可作为实时时钟的 时间计数器,或作为自由运行的间隔定时器 / 计数器。 Timer1 可在以下三种模式下工作: • 16 位定时器 • 16 位同步计数器 • 16 位异步计数器 Timer1 还支持以下三种功能: • 定时器门控操作 • 可选的预分频比设置 • 在 CPU 空闲模式和休眠模式期间的定时器操作 • 在 16 位周期寄存器匹配时或外部门控信号的下降 沿产生中断 图 11-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> 来设置中断优先级。 图 11-1: 16 位 TIMER1 模块框图 SOSCO/ T1CK SOSCI TGATE SOSCEN 门控 同步 TCY TON 1x 01 TCKPS<1:0> 2 预分频器 1, 8, 64, 256 00 TGATE TCS 将 T1IF 置 1 1 0 复位 相等 QD Q CK TMR1 比较器 0 1 TSYNC 同步 PR1  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 161 页 dsPIC33F 寄存器 11-1: T1CON:TIMER1 控制寄存器 R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 TON - TSIDL - - - - bit 15 U-0 - bit 7 R/W-0 R/W-0 R/W-0 U-0 TGATE TCKPS<1:0> - R/W-0 TSYNC R/W-0 TCS 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12-7 bit 6 bit 5-4 bit 3 bit 2 bit 1 bit 0 TON:Timer1 使能位 1 = 启动 16 位 Timer1 0 = 停止 16 位 Timer1 未实现:读为 0 TSIDL:在空闲模式停止位 1 = 当器件进入空闲模式时,模块停止工作 0 = 在空闲模式下模块继续工作 未实现:读为 0 TGATE:Timer1 门控时间累加使能位 当 T1CS = 1 时: 此位被忽略。 当 T1CS = 0 时: 1 = 使能门控时间累加 0 = 禁止门控时间累加 TCKPS<1:0> :Timer1 输入时钟预分频比选择位 11 = 1:256 10 = 1:64 01 = 1:8 00 = 1:1 未实现:读为 0 TSYNC:Timer1 外部时钟输入同步选择位 当 TCS = 1 时: 1 = 同步外部时钟输入 0 = 不同步外部时钟输入 当 TCS = 0 时: 此位被忽略。 TCS:Timer1 时钟源选择位 1 = 来自引脚 T1CK 的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY) 未实现:读为 0 U-0 - bit 8 U-0 - bit 0 DS70165D_CN 第 162 页 初稿  2007 Microchip Technology Inc. 12.0 TIMER2/3、TIMER4/5、TIMER6/ 7 和 TIMER8/9 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 Timer2/3、 Timer4/5、 Timer6/7 和 Timer8/9 模块为 32 位定时器,也可被配置为四个具有可选工作模式的独立 16 位定时器。 作为 32 位定时器, Timer2/3、 Timer4/5、 Timer6/7 和 Timer8/9 具有三种工作模式: • 具有所有 16 位工作模式 (异步计数器模式除外) 的两个独立 16 位定时器 (如 Timer2 和 Timer3) • 单个 32 位定时器 • 单个 32 位同步计数器 还支持以下功能: • 定时器门控操作 • 可选的预分频比设置 • 在空闲模式和休眠模式期间的定时器工作 • 在 32 位周期寄存器匹配时产生中断 • 输入捕捉和输出比较模块的时基 (仅限 Timer2 和 Timer3) • ADC1 事件触发器 (仅限 Timer2/3) • ADC2 事件触发器 (仅限 Timer4/5) 所有 8 个 32 位定时器都能作为同步定时器或计数器。 它们也提供上面所列的功能,但事件触发功能除外,它 仅 由 Timer2/3 实 现。通 过 在 T2CON、 T3CON、 T4CON、 T5CON、 T6CON、 T7CON、 T8CON 和 T9CON 寄存器中设置相应的位来确定工作模式和使能 特性。寄存器 12-1 对 T2CON、 T4CON、 T6CON 和 T8CON 作 了 一 般 介 绍。寄 存 器 12-2 对 T3CON、 T5CON、 T7CON 和 T9CON 作了介绍。 在 32 位定时器 / 计数器工作模式下,Timer2、Timer4、 Timer6 或 Timer8 是 32 位定时器的低位字; Timer3、 Timer5、 Timer7 或 Timer9 是 32 位定时器的高位字。 注: 在 32 位工作模式中, T3CON、 T5CON、 T7CON 和 T9CON 控制位的取值与操作无 关。只有 T2CON、 T4CON、 T6CON 和 T8CON 控 制 位 被 用 于 设 置 和控制。 Timer2、 Timer4、 Timer6 和 Timer8 时钟 和门控输入用于 32 位定时器模块,但中断 由 Timer3、Timer5、Ttimer7 和 Timer9 中 断标志位产生。 dsPIC33F 为 32 位工作配置 Timer2/3、 Timer4/5、 Timer6/7 或 Timer8/9: 1. 将相应的 T32 控制位置 1。 2. 使用 TCKPS<1:0> 位为 Timer2、Timer4、Timer6 或 Timer8 选择预分频比。 3. 使用相应的 TCS 和 TGATE 位设置时钟和门控模 式。 4. 装入定时器的周期值。PR3、PR5、PR7 或 PR9 包含值的高位字,而 PR2、 PR4、 PR6 或 PR8 包含低位字。 5. 如果需要中断,将中断允许位 T3IE、T5IE、T7IE 或 T9IE 置 1。使用优先级位 T3IP<2:0>、 T5IP<2:0>、 T7IP<2:0> 或 T9IP<2:0> 来设置中 断优先级。Timer2、Timer4、Timer6 或 Timer8 控制定时器,而中断由 Timer3、Timer5、Timer7 或 Timer9 产生。 6. 将相应的 TON 位置 1。 任意时刻定时器的值被存储在寄存器对 TMR3:TMR2、 TMR5:TMR4、 TMR7:TMR6 或 TMR9:TMR8 中。 TMR3、 TMR5、 TMR7 或 TMR9 总是包含计数值的高 位字,而 TMR2、TMR4、TMR6 或 TMR8 包含低位字。 要将任一定时器配置为进行独立的 16 位工作: 1. 清零与该定时器对应的 T32 位。 2. 使用 TCKPS<1:0> 位选择定时器预分频比。 3. 使用相应的 TCS 和 TGATE 位设置时钟和门控模 式。 4. 将定时器的周期值装入 PRx 寄存器。 5. 如果需要中断,将中断允许位 TxIE 置 1。使用优 先级位 TxIP<2:0> 来设置中断优先级。 6. 将 TON 位置 1。 32 位定时器对(Timer4/5)的框图示例如图 12-1 所示, 图 12-2 给出了工作在 16 位模式下的定时器(Timer4) 示例。 注: 只有 Timer2 和 Timer3 能触发 DMA 数据传 输。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第163 页 dsPIC33F 图 12-1: TIMER2/3 (32 位)框图 (1) T2CK TGATE 门控 同步 TCY 1 将 T3IF 置 1 0 QD Q CK PR3 PR2 ADC 事件触发信号 (2) 相等 比较器 MSb LSb 复位 读 TMR2 写 TMR2 TMR3 16 TMR2 16 16 TMR3HLD 16 数据总线 <15:0> TON 1x 01 TCKPS<1:0> 2 预分频器 1, 8, 64, 256 00 TGATE TCS 同步 注 1: 必须将 32 位定时器控制位 T32 置 1 以使定时器工作在 32 位定时器 / 计数器模式。所有控制位都在 T2CON 寄存器中。 2: ADC 事件触发功能仅可在 Timer2/3 上使用。 DS70165D_CN 第164 页 初稿  2007 Microchip Technology Inc. 图 12-2: TIMER2 (16 位)框图 T2CK TGATE 将 T2IF 置 1 1 0 复位 相等 门控 同步 TCY QD Q CK TMR2 比较器 PR2 dsPIC33F TON 1x 01 TCKPS<1:0> 2 预分频器 1, 8, 64, 256 00 TCS TGATE 同步  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第165 页 dsPIC33F 寄存器 12-1: R/W-0 TON bit 15 TxCON (T2CON、 T4CON、 T6CON 或 T8CON)控制寄存器 U-0 R/W-0 U-0 U-0 U-0 U-0 — TSIDL — — — — U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 — TGATE TCKPS<1:0> T32(1) — TCS bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12-7 bit 6 bit 5-4 bit 3 bit 2 bit 1 bit 0 TON:Timerx 使能位 当 T32 = 1 时: 1 = 启动 32 位 Timerx/y 0 = 停止 32 位 Timerx/y 当 T32 = 0 时: 1 = 启动 16 位 Timerx 0 = 停止 16 位 Timerx 未实现:读为 0 TSIDL:在空闲模式停止位 1 = 当器件进入空闲模式时,模块停止工作 0 = 模块在空闲模式下继续工作 未实现:读为 0 TGATE:Timerx 门控时间累加使能位 当 TCS = 1 时: 此位被忽略。 当 TCS = 0 使: 1 = 使能门控时间累加 0 = 禁止门控时间累加 TCKPS<1:0>:Timerx 输入时钟预分频比选择位 11 = 1:256 10 = 1:64 01 = 1:8 00 = 1:1 T32:32 位定时器模式选择位 (1) 1 = Timerx 和 Timery 形成一个 32 位定时器 0 = Timerx 和 Timery 作为两个 16 位定时器 未实现:读为 0 TCS:Timerx 时钟源选择位 1 = 来自引脚 TxCK 的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY) 未实现:读为 0 注 1: 在 32 位模式中, T3CON 控制位不影响 32 位定时器的工作。 U-0 — bit 8 U-0 — bit 0 DS70165D_CN 第166 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 12-2: R/W-0 TON(1) bit 15 TyCON (T3CON、 T5CON、 T7CON 或 T9CON)控制寄存器 U-0 R/W-0 U-0 U-0 U-0 U-0 — TSIDL(1) — — — — U-0 — bit 8 U-0 R/W-0 R/W-0 R/W-0 U-0 — TGATE(1) TCKPS<1:0>(1) — bit 7 U-0 R/W-0 U-0 — TCS(1) — bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12-7 bit 6 bit 5-4 bit 3-2 bit 1 bit 0 TON:Timery 使能位 (1) 1 = 启动 16 位 Timery 0 = 停止 16 位 Timery 未实现:读为 0 TSIDL:在空闲模式停止位 (1) 1 = 当器件进入空闲模式时,模块停止工作 0 = 模块在空闲模式下继续工作 未实现:读为 0 TGATE:Timery 门控时间累加使能位 (1) 当 TCS = 1 时: 此位被忽略。 当 TCS = 0 时: 1 = 使能门控时间累加 0 = 禁止门控时间累加 TCKPS<1:0>:Timer3 输入时钟预分频选择位 (1) 11 = 1:256 10 = 1:64 01 = 1:8 00 = 1:1 未实现:读为 0 TCS:Timery 时钟源选择位 (1) 1 = 来自引脚 TyCK 的外部时钟 (上升沿触发计数) 0 = 内部时钟 (FCY) 未实现:读为 0 注 1: 当使能 32 位工作时 (T2CON<3> = 1),这些位对 Timery 的工作没有影响;所有定时器功能通过 T2CON 设置。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第167 页 dsPIC33F 注: DS70165D_CN 第168 页 初稿  2007 Microchip Technology Inc. 13.0 输入捕捉 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 输入捕捉模块在需要频率 (周期)和脉冲测量的应用中 很有用。 dsPIC33F 器件支持最多 8 路输入捕捉通道。 当 ICx 引脚上有事件发生时,输入捕捉模块捕捉选定时 基寄存器的 16 位值。导致发生捕捉的事件分为以下三 类: 1. 简单捕捉事件模式 - 每当 ICx 引脚上的输入信号出现下降沿时捕 捉定时器值 - 每当 ICx 引脚上的输入信号出现上升沿时捕 捉定时器值 2. 在每个边沿(上升沿和下降沿)都捕捉定时器值 3. 预分频捕捉事件模式 - ICx 引脚上的输入信号每出现 4 个上升沿捕 捉一次定时器值 - ICx 引脚上的输入信号每出现 16 个上升沿 捕捉一次定时器值 dsPIC33F 每路输入捕捉通道都可以选择两个16位定时器(Timer2 或 Timer3)之一作为时基。选定定时器可以使用内部或 外部时钟。 其他工作特性包括: • 当 CPU 在休眠和空闲模式时通过捕捉引脚上的信号 将器件唤醒 • 输入捕捉事件中断 • 用于存储捕捉值的 4 字 FIFO 缓冲器 - 在填充完 1、 2、 3 或 4 个缓冲单元后可选择 产生中断 • 输入捕捉也可用来提供额外的外部中断源。 注: 只有 OC1 和 OC2 能触发 DMA 数据传输。 如果需要 DMA 数据传输, FIFO 缓冲器大 小必须设置为 1 (ICI<1:0> = 00)。 图 13-1: 输入捕捉框图 ICx 引脚 预分频器 计数器 (1, 4, 16) 边沿检测逻辑 和 时钟同步器 3 ICM<2:0>(ICxCON<2:0>) 模式选择 ICOV, ICBNE(ICxCON<4:3>) ICxI<1:0> ICxCON FIFO 读/写 逻辑 中断 逻辑 来自 16 位定时器 TMRy TMRz 16 16 1 0 ICTMR (ICxCON<7>) FIFO ICxBUF 系统总线 将标志 ICxIF 置 1 (在 IFSn 寄存器中) 注 :在信号、寄存器或位名称中的“x”表示捕捉通道的编号。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第169 页 dsPIC33F 13.1 输入捕捉寄存器 寄存器 13-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 ICTMR(1) bit 7 R/W-0 R/W-0 ICI<1:0> R-0, HC R-0, HC ICOV ICBNE R/W-0 R/W-0 ICM<2:0> R/W-0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13 bit 12-8 bit 7 bit 6-5 bit 4 bit 3 bit 2-0 未实现:读为 0 ICSIDL: 输入捕捉模块在空闲模式下停止的控制位 1 = 在 CPU 空闲模式下输入捕捉模块将停止工作 0 = 在 CPU 空闲模式下输入捕捉模块将继续工作 未实现:读为 0 ICTMR:输出比较定时器选择位 (1) 1 = 发生捕捉事件时捕捉 TMR2 的内容 0 = 发生捕捉事件时捕捉 TMR3 的内容 ICI<1:0>: 选择发生每次中断捕捉的次数的位 11 = 每 4 次捕捉事件中断一次 10 = 每 3 次捕捉事件中断一次 01 = 每 2 次捕捉事件中断一次 00 = 每次捕捉事件中断一次 ICOV:输入捕捉溢出状态标志位 (只读) 1 = 发生了输入捕捉溢出 0 = 未发生输入捕捉溢出 ICBNE:输入捕捉缓冲器空状态位 (只读) 1 = 输入捕捉缓冲器非空,至少可以再读一次捕捉值 0 = 输入捕捉缓冲器为空 ICM<2:0>: 输入捕捉模式选择位 111 = 当器件处于休眠或空闲模式时,输入捕捉通道仅用作中断引脚 (只检测上升沿,所有其他控制 位都不适用。) 110 = 未使用 (模块禁止) 101 = 捕捉模式,每 16 个上升沿捕捉一次 100 = 捕捉模式,每 4 个上升沿捕捉一次 011 = 捕捉模式,每个上升沿捕捉一次 010 = 捕捉模式,每个下降沿捕捉一次 001 = 捕捉模式,每个边沿(上升沿和下降沿)捕捉一次(ICI<1:0> 位不控制该模式下的中断产生。) 000 = 输入捕捉模块关闭 注 1: 定时器选择可能会和上述不同。更多详细信息请参见器件的数据手册。 DS70165D_CN 第170 页 初稿  2007 Microchip Technology Inc. 14.0 输出比较 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 14.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 以使比较时基计 数。 8. 在 TMRy 和 OCxR 第一次匹配时,OCx 引脚将被 驱动为高电平。 9. 当递增定时器 TMRy 和输出比较辅助寄存器 OCxRS 发生匹配时,在 OCx 引脚上驱动脉冲的 第二个边沿(即下降沿)。OCx 引脚不会驱动输 出额外的脉冲,OCx 引脚将保持为低电平。第二 次比较匹配事件会导致 OCxIF 中断标志位置 1, 如果已通过将 OCxIE 位置 1 允许中断,将产生中 断。更多有关外设中断的信息,请参见第 6.0 章 “中断控制器”。 10. 要发出另一个单脉冲输出,在需要的情况下要改 变定时器和比较寄存器的设置,然后执行写操 作,将 OCM 位设置为 100。不需要禁止和重新 使能定时器以及将 TMRy 寄存器清零,但这么做 可能对确定一个自已知事件时间边界发出的脉冲 有好处。 dsPIC33F 在输出脉冲下降沿后不一定要禁止输出比较模块。重 写 OCxCON 寄存器的值可以发出另一个脉冲。 14.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 使能比 较时基。 8. 在 TMRy 和 OCxR 第一次匹配时,OCx 引脚将被 驱动为高电平。 9. 当比较时基TMRy和输出比较辅助寄存器OCxRS 发生匹配时,OCx 引脚驱动输出脉冲的第二个边 沿 (即下降沿)。 10. 第二次比较匹配事件会导致 OCxIF 中断标志位置 1。 11. 当比较时基和相应的定时器周期寄存器中的值匹 配时,TMRy 寄存器复位为 0x0000 并重新开始计 数。 12. 重复步骤 8 到步骤 11,可无限制地产生连续脉冲 流。 OCxIF 标志位在每次 OCxRS 与 TMRy 的比 较匹配事件发生时置 1。 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第171 页 dsPIC33F 14.3 脉宽调制模式 当将输出比较模块配置为 PWM 操作时,需遵循以下步 骤: 1. 通过写所选的定时器周期寄存器 (PRy)设置 PWM 周期。 2. 通过写 OCxRS 寄存器设置 PWM 占空比。 3. 使用初始占空比写 OxCR 寄存器。 4. 如果需要的话,允许定时器和输出比较模块中 断。输出比较中断需要使用 PWM 故障引脚。 5. 通过写输出比较模块位 OCM<2:0> (OCxCON<2:0>)将输出比较模块配置为两个 PWM 工作模式中的一个。 6. 通过将 TON (TxCON<15>)置 1 设置 TMRy 预分频值并使能时基。 注: OCxR 寄存器应该在输出比较模块第一次 使能之前被初始化。当模块在 PWM 模式 下工作时, OCxR 寄存器成为只读占空比 寄存器。 OCxR 寄存器中保存的值成为第 一个 PWM 周期的 PWM 占空比。直到时基 周 期 匹 配 发 生,输 出 比 较 辅 助 寄 存 器 OCxRS 的内容才会被传输到 OCxR。 14.3.1 PWM 周期 PWM 周期可通过写入 PRy (定时器周期寄存器)来指 定。可使用公式 14-1 来计算 PWM 周期: 公式 14-1: 计算 PWM 周期 PWM 周期 = [(PRy) + 1] • TCY • ( 定时器预分频值 ) 其中: PWM 频率 = 1/[PWM 周期 ] 注: 若 PRy 的值为 N,则会使 PWM 周期为 N + 1 个时基计数周期。例如:写入 PRy 寄存器的值为 7 将产生由 8 个时基周期组 成的 PWM 周期。 14.3.2 PWM 占空比 PWM 占空比是通过写 OCxRS 寄存器指定的。在任何时 间都可以写入 OCxRS 寄存器,但是在 PRy 和 TMRy 发 生匹配(即周期完成)前占空比值不会被锁存到 OCxR。 这可以为 PWM 占空比提供双重缓冲,对于 PWM 的无毛 刺操作是极其重要的。在 PWM 模式中,OCxR 是只读寄 存器。 以下是 PWM 占空比的部分重要边界参数: • 如果输出比较寄存器 OCxR 装入 0000h, OCx 引 脚将保持低电平 (0% 占空比)。 • 如果 OCxR 大于 PRy (定时器周期寄存器),则引 脚将保持高电平 (占空比为 100%)。 • 如果 OCxR 等于 PRy, OCx 引脚在一个时基计数 周期内为低电平,而在其余所有的计数周期内均为 高电平。 PWM 模式的详细时序请参见例 14-1。表 14-1 显示器件 工作速度为 10 MIPS 时的 PWM 频率和分辩率示例。 公式 14-2: 计算最大 PWM 分辨率 ( ) log10 最大 PWM 分辨率(位)= FCY FPWM 位 log10(2) 例 14-1: PWM 周期和占空比计算 1. 在期望 PWM 频率为 52.08 kHz, FCY = 16 MHz 且 Timer2 预分频比为 1:1 时,计算定时器周期寄存器的值。 TCY = 62.5 ns PWM 周期 = 1/PWM 频率 = 1/52.08 kHz = 19.2 µs PWM 周期 = (PR2 + 1) • TCY • (Timer2 预分频值 ) 19.2 µs = (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 位 DS70165D_CN 第172 页 初稿 2007 Microchip Technology Inc. dsPIC33F 表 14-1: 器件工作在 4 MIPS (FCY = 4 MHz)时的 PWM 频率和分辩率示例 PWM 频率 7.6 Hz 61 Hz 122 Hz 977 Hz 3.9 kHz 31.3 kHz 定时器预分频比 周期寄存器的值 分辩率 (位) 8 FFFFh 16 1 FFFFh 16 1 7FFFh 15 1 0FFFh 12 1 03FFh 10 1 007Fh 7 125 kHz 1 001Fh 5 表 14-2: 器件工作在 16 MIPS (FCY = 16 MHz)时的 PWM 频率和分辩率示例 PWM 频率 30.5 Hz 244 Hz 488 Hz 3.9 kHz 15.6 kHz 125 kHz 定时器预分频比 周期寄存器的值 8 FFFFh 1 FFFFh 1 7FFFh 1 0FFFh 1 03FFh 1 007Fh 分辩率 (位) 16 16 15 12 10 7 500 kHz 1 001Fh 5 表 14-3: 器件工作在 40 MIPS (FCY = 40 MHz)时的 PWM 频率和分辩率示例 PWM 频率 76 Hz 610 Hz 1.22 Hz 9.77 kHz 39 kHz 313 kHz 定时器预分频比 周期寄存器的值 分辩率 (位) 8 FFFFh 16 1 FFFFh 16 1 7FFFh 15 1 0FFFh 12 1 03FFh 10 1 007Fh 7 1.25 MHz 1 001Fh 5 图 14-1: 输出比较模块框图 将标志位 OCxIF 置 1(1) OCxRS(1) OCxR(1) 比较器 输出 逻辑 3 OCM2:OCM0 模式选择 0 1 OCTSEL 0 1 16 16 SQ R 输出使能 OCx(1) OCFA 或 OCFB(2) 来自时基 (3) 的 TMR 寄存器输入 来自时基 (3) 的周期匹配信号 注 1: 此处显示的 “x”表示对与相应的输出比较通道 1 到 8 相关的寄存器的引用。 2: OCFA 引脚控制 OC1 到 OC4 通道。 OCFB 引脚控制 OC5 到 OC8 通道。 3: 每个输出比较通道可以使用两个可选时基中的一个。想要了解与该模块相关的时基,请参见器件的数据手册。 注: 只有 OC1 和 OC2 能触发 DMA 数据传输。 2007 Microchip Technology Inc. 初稿 DS70165D_CN 第173 页 dsPIC33F 14.4 输出比较寄存器 寄存器 14-1: OCxCON:输出比较 x 控制寄存器 U-0 U-0 R/W-0 U-0 U-0 U-0 U-0 — — OCSIDL — — — — bit 15 U-0 U-0 U-0 R-0 HC R/W-0 R/W-0 R/W-0 — — — OCFLT OCTSEL(1) OCM<2:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 HC = 由硬件清零 W = 可写位 1 =置1 HS = 由硬件置 1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13 bit 12-5 bit 4 bit 3 bit 2-0 未实现:读为 0 OCSIDL: 在空闲模式下停止输出比较控制位 1 = 输出比较 x 在 CPU 空闲模式下将停止 0 = 输出比较 x 在 CPU 空闲模式下继续工作 未实现:读为 0 OCFLT:PWM 故障条件状态位 1 = 已经产生 PWM 故障条件 (只能由硬件清零) 0 = 未产生 PWM 故障条件 (仅当 OCM<2:0> = 111 时,才使用该位。) OCTSEL:输出比较定时器选择位 (1) 1 = Timer3 是比较 x 的时钟源 0 = Timer2 是比较 x 的时钟源 OCM<2:0>: 输出比较模式选择位 111 = OCx 处于 PWM 模式,使能故障引脚 110 = OCx 处于 PWM 模式,禁止故障引脚 101 = 初始化 OCx 引脚为低电平,在 OCx 引脚上产生连续的输出脉冲 100 = 初始化 OCx 引脚为低电平,在 OCx 引脚上产生单个输出脉冲 011 = 比较事件使 OCx 引脚的电平翻转 010 = 初始化 OCx 引脚为高电平,比较事件强制 OCx 引脚为低电平 001 = 初始化 OCx 引脚为低电平,比较事件强制 OCx 引脚为高电平 000 = 禁止输出比较通道 注 1: 想要了解输出比较模块可用的特定时基,请参见器件的数据手册。 U-0 — bit 8 R/W-0 bit 0 DS70165D_CN 第174 页 初稿 2007 Microchip Technology Inc. 15.0 电机控制 PWM 模块 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 电机控制 PWM 模块简化了产生多种同步脉宽调制 (PWM)输出的任务。特别是它还能支持以下电源和电 机控制应用: • 三相交流感应电机 • 开关磁阻 (SR)电机 • 直流无刷 (BLDC)电机 • 不间断电源 (UPS) PWM 模块具有如下特性: • 8 个 PWM I/O 引脚带 4 个占空比发生器 • 最高 16 位分辨率 • “实时改变” PWM 频率 • 边沿对齐和中心对齐输出模式 • 单脉冲发生模式 • 支持中心对齐模式下的不对称更新中断 • 电子换相电机 (Electrically Commutative Motor, ECM)操作的输出改写控制 • 用于触发其他外设事件的 “特殊事件”比较器 • 故障引脚,用于选择性地驱动每一个 PWM 输出引 脚进入定义的状态 • 可将占空比更新配置为立即更新或与 PWM 时基同 步 dsPIC33F 此模块包含 4 个占空比发生器,编号为 1 到 4。该模块 有 8 个 PWM 输出引脚,编号为 PWM1H/PWM1L 到 PWM4H/PWM4L。8 个 I/O 引脚被分为 4 个带编号的高 端 / 低端引脚对,分别由后缀 H 或 L 表示。对于互补负 载,低端 PWM 引脚输出总是与高端 I/O 引脚的输出互 补。 PWM 模块允许多种对特定电源控制应用有利的操作模 式。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 175 页 dsPIC33F 图 15-1: PWM 模块框图 PWMCON1 PWMCON2 DTCON1 DTCON2 FLTACON FLTBCON OVDCON PWM 使能和模式选择 SFR 死区时间控制 SFR 故障引脚控制 SFR PWM 手动 控制 SFR PWM 发生器 4 PDC4 缓冲器 16 位数据总线 PTMR 比较器 PTPER PTPER 缓冲区 PTCON 比较器 SEVTCMP PDC4 比较器 PWM 发生器 3 PWM 发生器 2 PWM 发生器 1 通道 4 死区时间 发生器和 改写逻辑 通道 3 死区时间 发生器和 改写逻辑 通道 2 死区时间 发生器和 改写逻辑 通道 1 死区时间 发生器和 改写逻辑 输出 驱动器 模块 SEVTDIR PTDIR 特殊事件 后分频器 特殊事件触发信号 PWM4H PWM4L PWM3H PWM3L PWM2H PWM2L PWM1H PWM1L FLTA FLTB PWM 时基 注: 为明了起见,没有显示 PWM 发生器 1、 2 和 3 的细节。 DS70165D_CN 第 176 页 初稿  2007 Microchip Technology Inc. 15.1 PWM 时基 PWM 时基由一个带有预分频器和后分频器的 15 位定时 器提供。该时基可通过 PTMR SFR 访问。 PTMR<15> 为一个只读状态位 PTDIR,表示 PWM 时基当前的计数 方向。如果 PTDIR 清零,则表示 PTMR 正在向上计数。 如果 PTDIR 置 1,则表示 PTMR 正在向下计数。PWM 时基是通过 PTCON SFR 来配置的。 通过置 1/ 清零 PTCON SFR 中的 PTEN 位来使能 / 禁止 PWM 时基。 当在软件中将 PTEN 位清零时, PTMR 不会清零。 PTPER SFR 设置 PTMR 的计数周期。用户必须将 15 位值写入 PTPER<14:0>。当 PTMR<14:0> 中的值与 PTPER<14:0> 中的值匹配时,时基将复位为 0 或在下 一个时钟周期到来时使计数方向反向。具体执行哪一种 操作取决于时基的工作模式。 注: 如果 PWM 周期寄存器被设置为 0x0000, 则定时器将停止计数,并且不会产生中断 和特殊事件触发信号,即使特殊事件值也 为 0x0000 亦是如此。如果 PWM 周期寄存 器已经为 0x0000,时基模块将不会更新该 寄存器;因此,为了更新 PWM 周期寄存 器,用户必须禁止 PWM 时基。 可以将 PWM 时基配置为以下四种不同的工作模式: • 自由运行模式 • 单事件模式 • 连续向上 / 向下计数模式 • 带双更新中断的连续向上 / 向下计数模式 这四种模式是通过 PTCON SFR 中的 PTMOD<1:0> 位 进行选择的。 向上 / 向下计数模式支持产生中心对齐的 PWM 信号。单事件模式使得 PWM 模块能够对某些电 子换相电机 (ECM)进行脉冲控制。 PWM 时基产生的中断信号由 PTCON SFR 中的模式选 择 位 (PTMOD<1:0>)和 后 分 频 比 选 择 位 (PTOPS<3:0>)决定。 dsPIC33F 15.1.1 自由运行模式 在自由运行模式中,PWM 时基将向上计数直到与 PWM 时基周期寄存器 (PTPER)中的值匹配。 PTMR 寄存 器在随后的输入时钟边沿复位,且只要 PTEN 位保持置 1,时基将继续向上计数。 当 PWM 时基处于自由运行模式(PTMOD<1:0> = 00) 时,每当其与 PTPER 寄存器匹配就将产生中断事件, 并且 PTMR 寄存器复位为零。可在此定时器模式中使用 后分频比选择位,以降低产生中断事件的频率。 15.1.2 单事件模式 在单事件模式中, PWM 时基在 PTEN 位置 1 时将开始 向上计数。当 PTMR 寄存器中的值与 PTPER 寄存器匹 配时,PTMR 寄存器将在随后的输入时钟边沿复位,且 由硬件清零 PTEN 位以停止时基。 当 PWM 时基处于单事件模式 (PTMOD<1:0> = 01) 时,每当其与 PTPER 寄存器匹配时,就会产生中断事 件。PTMR 寄存器在随后的输入时钟边沿复位至零,并 且 PTEN 位清零。后分频比选择位对此定时器模式没有 影响。 15.1.3 连续向上 / 向下计数模式 在连续向上 / 向下计数模式中,PWM 时基将向上计数, 直到与 PTPER 寄存器中的值匹配。定时器将在随后的 输入时钟边沿开始向下计数。PTMR SFR 中的 PTDIR 位为只读位,它表示计数的方向。当定时器向下计数时 PTDIR 位将置 1。 在向上 / 向下计数模式 (PTMOD<1:0> = 10)中,每 当 PTMR 寄存器的值变为零就会产生中断事件,并且 PWM 时基开始向上计数。可在此定时器模式中使用后 分频比选择位,以降低产生中断事件的频率。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 177 页 dsPIC33F 15.1.4 双更新模式 在双更新模式 (PTMOD<1:0> = 11)下,每当 PTMR 寄存器等于零时,以及每当发生周期匹配时都将产生中 断事件。后分频比选择位对此定时器模式没有影响。 双更新模式向用户提供了两种额外的功能。由于 PWM 占空比在每个周期可更新两次,所以可使控制环带宽加 倍。其次,可产生不对称中心对齐的 PWM 波形,这种 波形可使某些电机控制应用的输出波形失真最小。 注: 将 PWM 周期寄存器的值设置为 0x0001, 会产生连续的中断脉冲,因此是必须避免 的。 15.1.5 PWM 时基预分频器 PTMR 的输入时钟 (FOSC/4)的预分频比选项有 1:1、 1:4、 1:16 或 1:64,这通过 PTCON SFR 中的控制位 PTCKPS<1:0> 进行选择。当发生以下任一情况时,预 分频器计数器将清零: • 对 PTMR 寄存器执行写操作 • 对 PTCON 寄存器执行写操作 • 任何器件复位 当对 PTCON 执行写操作时, PTMR 寄存器不会清零。 15.1.6 PWM 时基后分频器 PTMR 的匹配输出可选择通过一个 4 位后分频器(可提 供 1:1 到 1:16 的分频比)进行后分频。 当发生以下任一情况时,后分频器计数器将清零: • 对 PTMR 寄存器执行写操作 • 对 PTCON 寄存器执行写操作 • 任何器件复位 当对 PTCON 执行写操作时, PTMR 寄存器不会清零。 15.2 PWM 周期 PTPER 是一个 15 位的寄存器,用于设置 PWM 时基的 计数周期。PTPER 是一个双重缓冲的寄存器。在以下情 况下,PTPER 缓冲器的内容会被装入 PTPER 寄存器中: • 自由运行模式和单事件模式:当 PTMR 寄存器在 与 PTPER 寄存器发生匹配后复位为零时。 • 向上 / 向下计数模式:当 PTMR 寄存器为零时。 当 PWM 时基被禁止 (PTEN = 0)时,保存在 PTPER 缓冲器中的值会被自动装入 PTPER 寄存器。 使用公式 15-1 可确定 PWM 周期。 公式 15-1: PWM 周期 TCY • (PTPER + 1) TPWM = (PTMR 预分频值 ) 如果 PWM 时基被配置为某种向上 / 向下计数模式,则 PWM 周期将为公式 15-1 的计算结果的两倍。 给定器件振荡频率和 PWM 频率可使用公式 15-2 确定最 大 PWM 分辨率 (以位为单位): 公式 15-2: PWM 分辨率 分辨率 = log (2 • TPWM/TCY) log (2) 15.3 边沿对齐的 PWM 当 PWM 时基处于自由运行模式或单事件模式时,模块将 产生边沿对齐 PWM 信号。边沿对齐 PWM 输出信号的周 期由 PTPER 中的值指定,其占空比由相应的占空比寄 存器指定 (见图 15-2)。在周期开始时 (PTMR = 0) PWM 输出被驱动为有效,而在占空比寄存器中的值与 PTMR 匹配时 PWM 输出变为无效。 如果特定占空比寄存器中的值为 0,则相应 PWM 引脚 的输出在整个 PWM 周期中都将为无效。此外,如果占 空比寄存器中的值大于 PTPER 寄存器中保存的值,则 PWM 引脚的输出在整个 PWM 周期内都将有效。 图 15-2: 边沿对齐的 PWM 锁存的新占空比 PTPER PTMR 值 0 占空比 周期 DS70165D_CN 第 178 页 初稿  2007 Microchip Technology Inc. 15.4 中心对齐的 PWM 当 PWM 时基配置为某种向上 / 向下计数模式时,模块 将产生中心对齐的 PWM 信号。(见图 15-3)。 当占空比寄存器的值与 PTMR 的值相匹配并且 PWM 时 基正在向下计数 (PTDIR = 1)时, PWM 比较输出被 驱动为有效状态。当 PWM 时基正在向上计数 (PTDIR = 0)且 PTMR 寄存器中的值与占空比值匹配时,PWM 比较输出将被驱动为无效状态。 如果特定占空比寄存器中的值为 0,则相应 PWM 引脚 的输出在整个 PWM 周期中都将为无效。此外,如果占 空比寄存器中的值等于 PTPER 寄存器中保存的值,则 PWM 引脚的输出在整个 PWM 周期内都将有效。 图 15-3: PTPER 占空比 中心对齐的 PWM 周期 /2 PTMR 值 0 周期 15.5 PWM 占空比比较单元 有四个 16 位特殊功能寄存器 (PDC1、 PDC2、 PDC3 和 PDC4)用于为 PWM 模块指定占空比值。 每个占空比寄存器中的值确定 PWM 输出处于有效状态 的时间。占空比寄存器为 16 位宽。其 LSb 确定在周期 开始时是否出现 PWM 边沿,从而使 PWM 分辨率加倍。 dsPIC33F 15.5.1 占空比寄存器缓冲器 四个 PWM 占空比寄存器都采用了双重缓冲,以使 PWM 输出更新时无毛刺。对于每个占空比,都有两个占空比 寄存器,一个可供用户访问,另一个保存当前 PWM 周 期中使用的实际比较值。 对于边沿对齐的 PWM 输出,每当发生与 PTPER 寄存 器的匹配并且 PTMR 复位时,将更新为新的占空比值。 当禁止 PWM 时基 (PTEN = 0)且 PWMCON2 中的 UDIS 位清零时,占空比缓冲器中的内容自动装入占空 比寄存器。 当 PWM 时基处于向上 / 向下计数模式时,当 PTMR 寄 存器的值为零且 PWM 时基开始向上计数时,更新占空 比。当禁止 PWM 时基 (PTEN = 0)时,占空比缓冲 器的内容将被自动装入占空比寄存器。 当 PWM 时基处于带双更新的向上 / 向下计数模式时, 当 PTMR 寄存器的值为零以及 PTMR 寄存器的值与 PTPER 寄存器中的值匹配时,都会更新占空比。 当禁 止 PWM 时基 (PTEN = 0)时,占空比缓冲器的内容 被自动装入占空比寄存器。 15.5.2 立即更新占空比 当立即更新使能位 (IUE = 1)置 1 时,任何对占空比 寄存器的写入都将立即更新占空比。此功能使用户可立 即更新有效 PWM 占空比寄存器,而不是等待当前时基 周期结束。当使能立即更新 (IUE = 1)时,由于在检 测到系统故障和发出系统纠正命令之间的延迟缩短了, 从而改善了闭环伺服应用的系统稳定性。 如果 PWM 输出在写入新的占空比时有效,并且新的占 空比小于当前时基值,则 PWM 脉冲宽度将缩短。如果 PWM 输出在写入新的占空比时有效,并且新的占空比 大于当前时基值,则 PWM 脉冲宽度将延长。 如果 PWM 输出在写入新的占空比时无效,并且新的占 空比大于当前时基值,则 PWM 输出将立即有效,并在 新写入的占空比时间内保持有效。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 179 页 dsPIC33F 15.6 互补 PWM 操作 在互补操作模式中,每对 PWM 输出引脚将输出互补的 PWM信号。在器件开关的过程中,有一段两个输出均无 效的短暂时间,此时可以选择插入一段死区时间 (见 第 15.7 节 “死区时间发生器”)。 在互补模式下,占空比比较单元如下分配给 PWM 输出: • PDC1 寄存器控制 PWM1H/PWM1L 输出 • PDC2 寄存器控制 PWM2H/PWM2L 输出 • PDC3 寄存器控制 PWM3H/PWM3L 输出 • PDC4 寄存器控制 PWM4H/PWM4L 输出 通过将 PWMCON1 SFR 中相应的 PMODx 位清零,可 为每个 PWM I/O 引脚对选择互补模式。默认情况下, PWM I/O 引脚在器件复位时被设置为互补模式。 15.7 死区时间发生器 当任何一对 PWM I/O 引脚工作在互补输出模式时,都 可插入死区时间。 PWM 输出使用推挽式驱动电路。因 为功率输出器件不能瞬时完成开关,所以必须在关闭互 补的一对 PWM 输出中的一个和开启另一个晶体管之间 提供一定的时间。 图 15-4: 死区时间时序图 该 PWM 模块允许编程两个不同的死区时间。这两个死 区时间可以用以下两种方法之一来提高用户灵活性: • 可以对 PWM 输出信号进行优化使互补晶体管对中 的高端和低端晶体管的关断时间不同。在一对互补 对中低端晶体管的关断事件和高端晶体管的导通事 件之间插入第一个死区时间。在高端晶体管的关断 事件和低端晶体管的导通事件之间插入第二个死区 时间。 • 两个死区时间可以单独分配给一对 PWM I/O 引 脚。此工作模式可以使 PWM 模块单独用每一对 PWM I/O 引脚驱动不同的晶体管 / 负载。 15.7.1 死区时间发生器 PWM 模块的每一对互补输出都有一个 6 位的向下计数 器,用于插入死区时间。如图 15-4 所示,每个死区时间 单元都有与占空比比较输出相连的上升沿和下降沿检 测。 占空比发生器 PWMxH PWMxL 通过 DTSxA 位选择的时间(A 或 B) 通过 DTSxI 位选择的时间(A 或 B) DS70165D_CN 第 180 页 初稿  2007 Microchip Technology Inc. 15.7.2 死区时间分配 DTCON2 SFR 包含可使死区时间分配给每对互补输出 的控制位。表 15-1 总结了每个死区时间选择控制位的功 能。 表 15-1: 死区时间选择位 位 功能 DTS1A DTS1I DTS2A DTS2I DTS3A DTS3I DTS4A DTS4I 选择在 PWM1L/PWM1H 出现有效边沿时插入死 区时间。 选择在 PWM1L/PWM1H 出现无效边沿时插入死 区时间。 选择在 PWM2L/PWM2H 出现有效边沿时插入死 区时间。 选择在 PWM2L/PWM2H 出现无效边沿时插入死 区时间。 选择在 PWM3L/PWM3H 出现有效边沿时插入死 区时间。 选择在 PWM3L/PWM3H 出现无效边沿时插入死 区时间。 选择在 PWM4L/PWM4H 出现有效边沿时插入死 区时间。 选择在 PWM4L/PWM4H 出现无效边沿时插入死 区时间。 15.7.3 死区时间范围 每个死区时间单元提供的死区时间是通过指定输入时钟 预分频比和 6 位无符号死区时间计数值来设置的。每个 单元提供的死区时间可单独设置。 死区时间单元提供了四种输入时钟预分频比选项,使用 户根据器件的工作频率选择适当的死区时间范围。可以 为两个死区时间值中的每一个独立地选择时钟预分频比 选项。死区时间时钟预分频比是使用 DTCON1 SFR 中 的 DTAPS<1:0> 和 DTBPS<1:0> 控制位选择的。每个 死区时间值均可选择以下时钟预分频比选项 :TCY、 2 TCY、 4 TCY 或 8 TCY。 在选择预分频比之后,通过将两个 6 位无符号值载入 DTCON1 SFR 对每个单元的死区时间进行调整。 死区时间单元预分频器在发生以下事件时清零: • 由于占空比比较边沿事件而装载向下计数器。 • 写入 DTCON1 或 DTCON2 寄存器。 • 任何器件复位。 注: 用户不应在 PWM 模块正在工作(PTEN = 1) 时修改 DTCON1 或 DTCON2 的值。否则 可能产生不可预期的结果。 dsPIC33F 15.8 独立的 PWM 输出 在驱动某些类型的负载时需要使用独立 PWM 输出模 式。当 PWMCON1 寄存器中相应的 PMODx 位置 1 时, 特定的一对 PWM 输出就处于独立输出模式。当模块工 作在独立 PWM 输出模式下,并且允许相邻 PWM I/O 引 脚同时有效时,这两个 I/O 引脚之间不会实现死区时间 控制。 在独立 PWM 输出模式下,每个占空比发生器同时与输 出对中的两个 PWM I/O 引脚相连。通过使用相关的占 空比寄存器以及 OVDCON 寄存器中相应的位,用户可 为在此模式下工作的每个 PWM I/O 引脚选择以下信号 输出选项: • I/O 引脚输出 PWM 信号 • I/O 引脚无效 • I/O 引脚有效 15.9 单脉冲 PWM 操作 PWM 模块在 PTCON 控制位 PTMOD<1:0> = 10 时产 生单脉冲输出。在单脉冲模式下,只能产生边沿对齐的 输出。在单脉冲模式下,当 PTEN 位置 1 时,PWM I/O 引脚被驱动为有效状态。当发生与占空比寄存器的匹配 时,PWM I/O 引脚被驱动为无效状态。当发生与 PTPER 寄存器的匹配时,PTMR 寄存器清零,所有有效的 PWM I/O 引脚都将被驱动为无效状态,PTEN 位清零并且产生 一个中断。 15.10 PWM 输出改写 PWM 输出改写位可以让用户手工将 PWM I/O 引脚驱动 为指定逻辑状态,而不受占空比比较单元的影响。 所有与 PWM 输出改写功能相关的控制位都包含在 OVDCON 寄存器中。OVDCON 寄存器的上半部分包含 8 个位(POVDxH<4:1> 和 POVDxL<4:1>),它们决定 哪些 PWM I/O 引脚将被改写。OVDCON 寄存器的下半 部分也包含 8 个位(POUTxH<4:1> 和 POUTxL<4:1>), 它们确定在通过 POVD 位改写特定输出时 PWM I/O 引 脚的状态。 15.10.1 互补输出模式 当 PWMxL 引脚通过 OVDCON 寄存器驱动为有效时, 强制输出信号与该引脚对中对应的 PWMxH 引脚的输出 互补。当手工改写 PWM 通道时,仍将插入死区时间。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 181 页 dsPIC33F 15.10.2 改写同步 如果 PWMCON2 寄存器中的 OSYNC 位置 1,所有通 过 OVDCON 寄存器执行的输出改写将与 PWM 时基同 步。同步的输出改写将发生在以下时间: • 边沿对齐模式:当 PTMR 为 0 时 • 中心对齐模式:当 PTMR 为 0 且 PTMR 的值与 PTPER 匹配时 15.11 PWM 输出和极性控制 有三个与 PWM 模块相关的器件配置位提供 PWM 输出 引脚控制: • 配置位 HPOL • 配置位 LPOL • 配置位 PWMPIN FPOR 配置寄存器 (见第 23.0 节 “特殊功能”)中的 这三个位与位于 PWMCON1 SFR 中的 8 个 PWM 使能 位(PENxH<4:1> 和 PENxL<4:1>)配合使用。这些配 置位和 PWM 使能位确保在发生器件复位后 PWM 引脚 处于正确的状态。 PWMPIN 配置熔丝允许在器件复位 时选择性地使能 PWM 模块输出。如果 PWMPIN = 0, 则 PWM 输 出 将 在 复 位 时 驱 动 为 无 效 状 态。 如果 PWMPIN = 1(默认),则 PWM 输出将为三态。HPOL 位指定 PWMxH 输出的极性,而 LPOL 位指定 PWMxL 输出的极性。 15.11.1 输出引脚控制 PWMCON1 SFR 中的 PENxH<4:1> 和 PENxL<4:1> 控 制位分别使能每个高端PWM输出引脚和每个低端PWM 输出引脚。如果某个特定 PWM 输出引脚未使能,则视 作通用 I/O 引脚。 15.12 PWM 故障引脚 有两个与 PWM 模块相关的故障引脚(FLTA 和 FLTB)。 当使能时,可以选择用这些引脚将 PWM I/O 引脚驱动 为定义的状态。 15.12.1 故障引脚使能位 FLTACON 和 FLTBCON SFR 各有 4 个控制位,这些控 制位决定某对 PWM I/O 引脚是否将由故障输入引脚控 制。要将某对 PWM I/O 引脚使能为故障改写,应将 FLTACON 或 FLTBCON 寄存器中的对应位置 1。 如果 FLTACON 或 FLTBCON 寄存器中的所有使能位都 已清零,则对应的故障输入引脚对于 PWM 模块没有影 响,并且该引脚可用作通用中断或 I/O 引脚。 注: 故障引脚逻辑可独立于PWM逻辑工作。如 果FLTACON/FLTBCON寄存器中的所有使 能位都被清零,则故障引脚可用作通用中 断引脚。 每个故障引脚都有与之关联的中 断向量、中断标志位和中断优先级位。 15.12.2 故障状态 特殊功能寄存器 FLTACON 和 FLTBCON 各有 8 个位, 这些位决定当故障输入引脚变为有效时每个 PWM I/O 引脚的状态。当这些位清零时,PWM I/O 引脚将被驱动 为无效状态。当这些位置 1 时,PWM I/O 引脚将被驱动 为有效状态。有效和无效状态与 PWM I/O 引脚被定义 的极性(通过 HPOL 和 LPOL 极性控制位设置)相对应。 当 PWM 模块的一对 I/O 处于互补模式,并且两个引脚 都编程为在产生故障条件时驱动为有效时,存在一种特 殊情况。在互补模式中 PMWxH 引脚将始终优先,因 此两个 I/O 引脚不能同时被驱动为有效。 15.12.3 故障引脚优先级 如果两个故障输入引脚均被分配为控制某一对 PWM 引 脚,则为故障 A 输入引脚编程的故障状态将优先于故障 B 输入引脚。 DS70165D_CN 第 182 页 初稿  2007 Microchip Technology Inc. 15.12.4 故障输入模式 每个故障输入引脚都有两种工作模式: • 闩锁模式:当故障引脚驱动为低电平时, PWM 输 出将进入 FLTACON/FLTBCON 寄存器中定义的状 态。 PWM 输出将保持在此状态,直到故障引脚被 驱动为高电平,并且相应的中断标志由软件清零。 当这两种操作都发生后, PWM 输出将在下一个 PWM 周期开始时或在半周期边界返回到正常工作 状态。如果中断标志在故障状态结束前清零, PWM 模块将等到故障引脚不再有效时才恢复输 出。 • 逐周期模式:当故障输入引脚驱动为低电平时,只 要故障引脚保持为低电平, PWM 输出将会一直保 持定义的故障状态。在故障引脚被驱动为高电平 后, PWM 输出将在下一个 PWM 周期开始时或半 周期边界返回正常工作状态。 各 故 障 输 入 引脚 的 工 作 模 式 通 过 FLTACON 和 FLTBCON 特殊功能寄存器中的 FLTAM 和 FLTBM 控制 位选择。 每个故障引脚都可以通过软件手工控制。 15.13 PWM 更新锁定 对于复杂的 PWM 应用,用户可能需要在给定时间写入 最 多 四 个 占 空 比 寄 存 器 和 PWM 时 基 周 期 寄存器 (PTPER)。 在某些应用中,在装载模块将要使用的新 的占空比和周期值之前写入所有缓冲寄存器非常重要。 可通过将 PWMCON2 SFR 中的 UDIS 控制位置 1 使能 PWM 更新锁定功能。UDIS 位将影响所有占空比缓冲寄 存器以及 PWM 时基周期寄存器 (PTPER)。当 UDIS = 1 时,占空比更改或周期值更改不会生效。 如果 IUE 位置 1,则对占空比寄存器的任何更改都将立 即更新,而与 UDIS 位的状态无关。PWM 周期寄存器 (PTPER)的更新不受 IUE 控制位的影响。 dsPIC33F 15.14 PWM 特殊事件触发器 PWM 模块有一个特殊事件触发器,可以使 A/D 转换与 PWM 时基同步。可以将 A/D 采样和转换时间编程为在 PWM 周期中的任何时间发生。特殊事件触发器可以使 用户将采集 A/D 转换结果的时间与占空比值更新的时间 之间的延迟减到最小。 PWM 特殊事件触发器有一个名为 SEVTCMP 的 SFR 和 五个用来控制其工作的控制位。产生特殊事件触发信号 的 PTMR 值被装入 SEVTCMP 寄存器。当 PWM 时基 处于向上 / 向下计数模式时,还需要一个控制位用来指 定特殊事件触发器的计数方向。该计数方向是通过使用 SEVTCMP SFR 中的 SEVTDIR 控制位选择的。如果 SEVTDIR 位清零,则特殊事件触发信号将在 PWM 时 基的向上计数周期产生。如果 SEVTDIR 位置 1,则特 殊事件触发信号将在 PWM 时基的向下计数周期产生。 除非 PWM 时基配置为向上 / 向下计数模式,否则 SEVTDIR 控制位不起作用。 15.14.1 特殊事件触发器后分频器 PWM特殊事件触发器有一个允许后分频比为1:1到1:16 的后分频器。通过写入 PWMCON2 SFR 中的 SEVOPS<3:0> 控制位可配置该后分频器。 特殊事件输出后分频器在下列事件发生时清零: • 对 SEVTCMP 寄存器的任何写入 • 任何器件复位 15.15 CPU 休眠模式下的 PWM 操作 故障 A 和故障 B 输入引脚具有将 CPU 从休眠模式唤醒 的功能。 如果在休眠时任一个故障引脚被驱动为低电 平,则 PWM 模块将产生中断。 15.16 CPU 空闲模式下的 PWM 操作 PTCON SFR 包含一个 PTSIDL 控制位。此位决定当器 件进入空闲模式时 PWM 模块是继续工作还是停止工 作。 如果 PTSIDL = 0,则模块将继续工作。 如果 PTSIDL = 1,则只要 CPU 保持空闲模式,模块就将停 止工作。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 183 页 dsPIC33F 寄存器 15-1: PTCON:PWM 时基控制寄存器 R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0 PTEN - PTSIDL - - - - - bit 15 bit 8 R/W-0 bit 7 R/W-0 R/W-0 PTOPS<3:0> R/W-0 R/W-0 R/W-0 PTCKPS<1:0> R/W-0 R/W-0 PTMOD<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12-8 bit 7-4 bit 3-2 bit 1-0 PTEN:PWM 时基定时器使能位 1 = 使能 PWM 时基 0 = 禁止 PWM 时基 未实现:读为 0 PTSIDL:PWM 时基在空闲模式下停止位 1 = PWM 时基在 CPU 空闲模式下停止工作 0 = PWM 时基在 CPU 空闲模式继续工作 未实现:读为 0 PTOPS<3:0>:PWM 时基输出后分频比选择位 1111 = 1:16 后分频 • • 0001 = 1:2 后分频 0000 = 1:1 后分频 PTCKPS<1:0>:PWM 时基输入时钟预分频比选择位 11 = PWM 时基输入时钟周期为 64 TCY (1:64 预分频) 10 = PWM 时基输入时钟周期为 16 TCY (1:16 预分频) 01 = PWM 时基输入时钟周期为 4 TCY (1:4 预分频) 00 = PWM 时基输入时钟周期为 1 TCY (1:1 预分频) PTMOD<1:0>:PWM 时基模式选择位 11 = PWM 时基在带双 PWM 更新中断的连续向上 / 向下模式 下工作 10 = PWM 时基在连续向上 / 向下计数模式下工作 01 = PWM 时基在单事件模式下工作 00 = PWM 时基在自由运行模式下工作 DS70165D_CN 第 184 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-2: R-0 PTDIR bit 15 PTMR:PWM 定时器计数值寄存器 R/W-0 R/W-0 R/W-0 R/W-0 PTMR <14:8> R/W-0 R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PTMR <7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15 bit 14-0 PTDIR:PWM 时基计数方向状态位 (只读) 1 = PWM 时基向下计数 0 = PWM 时基向上计数 PTMR <14:0>:PWM 时基寄存器计数值位 R/W-0 bit 8 R/W-0 bit 0 寄存器 15-3: U-0 - bit 15 PTPER:PWM 时基周期寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PTPER <14:8> R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PTPER <7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U= 未实现位,读为 0 0= 清零 x= 未知 bit 15 bit 14-0 未实现:读为 0 PTPER<14:0>:PWM 时基周期值位 R/W-0 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 185 页 dsPIC33F 寄存器 15-4: R/W-0 SEVTDIR(1) bit 15 SEVTCMP:特殊事件比较寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SEVTCMP<14:8>(2) R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 SEVTCMP<7:0>(2) R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 bit 15 bit 14-0 SEVTDIR:特殊事件触发器时基方向位 (1) 1 = 当 PWM 时基向下计数时产生特殊事件触发信号 0 = 当 PWM 时基向上计数时产生特殊事件触发信号 SEVTCMP <14:0>:特殊事件比较值位 (2) 注 1: SEVTDIR 与 PTDIR (PTMR<15>)比较以产生特殊事件触发信号。 2: SEVTCMP<14:0> 与 PTMR<14:0> 比较以产生特殊事件触发信号。 x = 未知 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第 186 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-5: U-0 - bit 15 PWMCON1:PWM 控制寄存器 1 U-0 U-0 U-0 R/W-0 - - - PMOD4 R/W-0 PMOD3 R/W-0 PMOD2 R/W-0 PMOD1 bit 8 R/W-1 PEN4H(1) bit 7 R/W-1 PEN3H(1) R/W-1 PEN2H(1) R/W-1 PEN1H(1) R/W-1 PEN4L(1) R/W-1 PEN3L(1) R/W-1 PEN2L(1) R/W-1 PEN1L(1) bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3-0 未实现:读为 0 PMOD<4:1>:PWM I/O 对模式位 1 = PWM I/O 引脚对处于独立 PWM 输出模式 0 = PWM I/O 引脚对处于互补输出模式 PEN4H:PEN1H:PWMxH I/O 使能位 (1) 1 = PWMxH 引脚被使能为 PWM 输出 0 = 禁止 PWMxH 引脚, I/O 引脚成为通用 I/O PEN4L:PEN1L:PWMxL I/O 使能位 (1) 1 = PWMxL 引脚被使能为 PWM 输出 0 = 禁止 PWMxL 引脚, I/O 引脚成为通用 I/O 注 1: PENxH 和 PENxL 位的复位状态取决于 FPOR 配置寄存器中 PWMPIN 配置位的值。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 187 页 dsPIC33F 寄存器 15-6: U-0 - bit 15 PWMCON2:PWM 控制寄存器 2 U-0 U-0 U-0 R/W-0 - - - R/W-0 R/W-0 SEVOPS<3:0> U-0 - bit 7 U-0 U-0 U-0 U-0 R/W-0 R/W-0 - - - - IUE OSYNC 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-3 bit 2 bit 1 bit 0 未实现:读为 0 SEVOPS<3:0>:PWM 特殊事件触发器输出后分频比选择位 1111 = 1:16 后分频 • • 0001 = 1:2 后分频 0000 = 1:1 后分频 未实现:读为 0 IUE:立即更新使能位 1 = 立即对有效 PDC 寄存器进行更新 0 = 对有效 PDC 寄存器的更新与 PMW 时基同步 OSYNC:输出改写同步位 1 = 通过设置 OVDCON 寄存器,使得输出改写与 PWM 时基同步 0 = 通过设置 OVDCON 寄存器,使得输出改写在下一个 TCY 边界发生 UDIS:PWM 更新禁止位 1 = 禁止从占空比缓冲寄存器和周期缓冲寄存器进行更新 0 = 允许从占空比缓冲寄存器和周期缓冲寄存器进行更新 R/W-0 bit 8 R/W-0 UDIS bit 0 DS70165D_CN 第 188 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-7: DTCON1:死区时间控制寄存器 1 R/W-0 R/W-0 DTBPS<1:0> bit 15 R/W-0 R/W-0 R/W-0 R/W-0 DTB<5:0> R/W-0 R/W-0 R/W-0 DTAPS<1:0> bit 7 R/W-0 R/W-0 R/W-0 R/W-0 DTA<5:0> R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13-8 bit 7-6 bit 5-0 DTBPS<1:0>:死区时间单元 B 预分频选择位 11 = 死区时间单元 B 的时钟周期为 8 TCY 10 = 死区时间单元 B 的时钟周期为 4 TCY 01 = 死区时间单元 B 的时钟周期为 2 TCY 00 = 死区时间单元 B 的时钟周期为 TCY DTB<5:0>:死区时间单元 B 的无符号 6 位死区时间值位 DTAPS<1:0>:死区时间单元 A 预分频选择位 11 = 死区时间单元 A 的时钟周期为 8 TCY 10 = 死区时间单元 A 的时钟周期为 4 TCY 01 = 死区时间单元 A 的时钟周期为 2 TCY 00 = 死区时间单元 A 的时钟周期为 TCY DTA<5:0>:死区时间单元 A 的无符号 6 位死区时间值位 R/W-0 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 189 页 dsPIC33F 寄存器 15-8: DTCON2:死区时间控制寄存器 2 U-0 U-0 U-0 U-0 U-0 U-0 U-0 - - - - - - - bit 15 R/W-0 DTS4A bit 7 R/W-0 DTS4I R/W-0 DTS3A R/W-0 DTS3I R/W-0 DTS2A R/W-0 DTS2I R/W-0 DTS1A 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 DTS4A:PWM4 信号变为有效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS4I:PWM4 信号变为无效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS3A:PWM3 信号变为有效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS3I:PWM3 信号变为无效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS2A:PWM2 信号变为有效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS2I:PWM2 信号变为无效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS1A:PWM1 信号变为有效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 DTS1I:PWM1 信号变为无效的死区时间选择位 1 = 由单元 B 提供死区时间 0 = 由单元 A 提供死区时间 U-0 - bit 8 R/W-0 DTS1I bit 0 DS70165D_CN 第 190 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-9: FLTACON:故障 A 控制寄存器 R/W-0 FAOV4H bit 15 R/W-0 FAOV4L R/W-0 FAOV3H R/W-0 FAOV3L R/W-0 FAOV2H R/W-0 FAOV2L R/W-0 FAOV1H R/W-0 U-0 FLTAM - bit 7 U-0 U-0 R/W-0 R/W-0 R/W-0 - - FAEN4 FAEN3 FAEN2 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6-4 bit 3 bit 2 bit 1 bit 0 FAOVxH<4:1>:FAOVxL<4:1>:故障输入 A PWM 改写值位 1 = PWM 输出引脚在发生外部故障输入事件时驱动为有效 0 = PWM 输出引脚在发生外部故障输入事件时驱动为无效 FLTAM:故障 A 模式位 1 = 在逐周期模式下,故障 A 输入引脚起作用 0 = 故障 A 输入引脚将所有控制引脚闩锁为在 FLTACON<15:8> 中编程的状态 未实现:读为 0 FAEN4:故障输入 A 使能位 1 = PWM4H/PWM4L 引脚对由故障输入 A 控制 0 = PWM4H/PWM4L 引脚对不受故障输入 A 控制 FAEN3:故障输入 A 使能位 1 = PWM3H/PWM3L 引脚对由故障输入 A 控制 0 = PWM3H/PWM3L 引脚对不受故障输入 A 控制 FAEN2:故障输入 A 使能位 1 = PWM2H/PWM2L 引脚对由故障输入 A 控制 0 = PWM2H/PWM2L 引脚对不受故障输入 A 控制 FAEN1:故障输入 A 使能位 1 = PWM1H/PWM1L 引脚对由故障输入 A 控制 0 = PWM1H/PWM1L 引脚对不受故障输入 A 控制 R/W-0 FAOV1L bit 8 R/W-0 FAEN1 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 191 页 dsPIC33F 寄存器 15-10: FLTBCON:故障 B 控制寄存器 R/W-0 FBOV4H bit 15 R/W-0 FBOV4L R/W-0 FBOV3H R/W-0 FBOV3L R/W-0 FBOV2H R/W-0 FBOV2L R/W-0 FBOV1H R/W-0 FBOV1L bit 8 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 FLTBM - - - FBEN4(1) FBEN3(1) FBEN2(1) FBEN1(1) bit 7 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6-4 bit 3 bit 2 bit 1 bit 0 FAOVxH<4:1>:FAOVxL<4:1>:故障输入 B PWM 改写值位 1 = PWM 输出引脚在发生外部故障输入事件时驱动为有效 0 = PWM 输出引脚在发生外部故障输入事件时驱动为无效 FLTBM:故障 B 模式位 1 = 在逐周期模式中,故障 B 输入引脚起作用 0 = 故障 B 输入引脚将所有控制引脚闩锁为在 FLTBCON<15:8> 中编程的状态 未实现:读为 0 FAEN4:故障输入 B 使能位 (1) 1 = PWM4H/PWM4L 引脚对由故障输入 B 控制 0 = PWM4H/PWM4L 引脚对不受故障输入 B 控制 FAEN3:故障输入 B 使能位 (1) 1 = PWM3H/PWM3L 引脚对由故障输入 B 控制 0 = PWM3H/PWM3L 引脚对不受故障输入 B 控制 FAEN2:故障输入 B 使能位 (1) 1 = PWM2H/PWM2L 引脚对由故障输入 B 控制 0 = PWM2H/PWM2L 引脚对不受故障输入 B 控制 FAEN1:故障输入 B 使能位 (1) 1 = PWM1H/PWM1L 引脚对由故障输入 B 控制 0 = PWM1H/PWM1L 引脚对不受故障输入 B 控制 注 1: 如果故障 A 引脚和故障 B 引脚同时使能,则前者的优先级高于后者。 DS70165D_CN 第 192 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-11: OVDCON:改写控制寄存器 R/W-1 POVD4H bit 15 R/W-1 POVD4L R/W-1 POVD3H R/W-1 POVD3L R/W-1 POVD2H R/W-1 POVD2L R/W-1 POVD1H R/W-1 POVD1L bit 8 R/W-0 POUT4H bit 7 R/W-0 POUT4L R/W-0 POUT3H R/W-0 POUT3L R/W-0 POUT2H R/W-0 POUT2L R/W-0 POUT1H R/W-0 POUT1L bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7-0 POVDxH<4:1>:POVDxL<4:1>:PWM 输出改写位 1 = PWMxx I/O 引脚的输出由 PWM 发生器控制 0 = PWMxx I/O 引脚的输出由相应的 POUTxH:POUTxL 位中的值控制 POUTxH<4:1>:POUTxL<4:1>:PWM 手动输出位 1 = PWMx I/O 引脚在相应的 POVDxH:POVDxL 位清零时驱动为有效 0 = PWMx I/O 引脚在相应的 POVDxH:POVDxL 位清零时驱动为无效  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 193 页 dsPIC33F 寄存器 15-12: PDC1:PWM 占空比寄存器 1 R/W-0 bit 15 R/W-0 R/W-0 R/W-0 R/W-0 PDC1<15:8> R/W-0 R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PDC1<7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 PDC1<15:0>:PWM 占空比 1 值位 R/W-0 bit 8 R/W-0 bit 0 寄存器 15-13: PDC2:PWM 占空比寄存器 2 R/W-0 bit 15 R/W-0 R/W-0 R/W-0 R/W-0 PDC2<15:8> R/W-0 R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PDC2<7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 PDC2<15:0>:PWM 占空比 2 值位 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第 194 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 15-14: PDC3:PWM 占空比寄存器 3 R/W-0 bit 15 R/W-0 R/W-0 R/W-0 R/W-0 PDC3<15:8> R/W-0 R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PDC3<7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 PDC3<15:0>:PWM 占空比 3 值位 R/W-0 bit 8 R/W-0 bit 0 寄存器 15-15: PDC4:PWM 占空比寄存器 4 R/W-0 bit 15 R/W-0 R/W-0 R/W-0 R/W-0 PDC4<15:8> R/W-0 R/W-0 R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 PDC4<7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15-0 PDC4<15:0>:PWM 占空比 4 值位 R/W-0 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 195 页 dsPIC33F 注: DS70165D_CN 第 196 页 初稿  2007 Microchip Technology Inc. dsPIC33F 16.0 正交编码器接口 (QEI)模块 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。 如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 本章描述正交编码器接口 (QEI)模块及其相关的工作 模式。QEI 模块提供了与增量式编码器的接口,可用来 获取机械位置数据。 图 16-1: 正交编码器接口框图 QEI 的工作特性如下: • 三个输入通道,即两个相信号和一个索引脉冲 • 16 位向上 / 向下位置计数器 • 计数方向状态 • 位置测量 (x2 和 x4)模式 • 输入端上的可编程数字噪声滤波器 • 备用 16 位定时器 / 计数器模式 • 正交编码器接口中断 可通过设置 QEIM<2:0> 位 (QEICON<10:8>)来选择 这些工作模式。图 16-1 给出了正交编码器接口的框图。 休眠输入 TQCS 同步 检测 TCY 0 1 1 QEIM<2:0> 0 TQCKPS<1:0> 2 预分频器 1, 8, 64, 256 TQGATE DQ CK Q QEIIF 事件 标志 QEA QEB 可编程 数字滤波器 UPDN_SRC 0 QEICON<11> 1 可编程 数字滤波器 2 正交 解码器 接口逻辑 3 QEIM<2:0> 模式选择 16 位向上 / 向下计数器 (POSCNT) 复位 比较器 / 零检测 相等 最大计数寄存器 (MAXCNT) INDX UPDN 0 可编程 数字滤波器 3 PCDOUT 现有引脚逻辑 上/下 1  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第197 页 dsPIC33F 16.1 正交编码器接口逻辑 典型的增量式(亦称光电式)编码器有三个输出:A 相、 B 相和索引脉冲。这些信号很有用,在 ACIM 和 SR 电 机的位置和速度控制应用中经常需要用到。 两个通道, A 相 (QEA)和 B 相 (QEB)间的关系是 惟一的。如果 A 相超前 B 相,那么旋转方向被认为是正 向的(符号为正)。如果 A 相落后 B 相,那么旋转方向 则被认为是反向的 (符号为负)。 第三个通道称为索引脉冲,每转一圈产生一个脉冲,作 为基准用来确定绝对位置。索引脉冲与 A 相和 B 相一 致,都是低电平。 16.2 16 位向上 / 向下位置 计数器模式 16 位向上 / 向下计数器对 A 相和 B 相输入信号之差产 生的每个计数脉冲进行向上或向下计数。此时计数器充 当积分器,其计数值与位置成比例。计数的方向由正交 编码器接口逻辑产生的 UPDN 信号决定。 16.2.1 位置计数器错误检查 QEI 模 块提 供 了 位 置 计数 器 错 误 检 查功 能,并 通过 CNTERR 位 (QEICON<15>)指示错误状态。只有将 位置计数器配置为由索引脉冲复位模式(QEIM<2:0> = 110 或 100)时,才应用错误检测功能。 在这些模式 中, POSCNT 寄 存 器 的 内 容 会 与 值 (0xFFFF 或 MAXCNT + 1,取决于方向)做比较。如果检测到这些 值,那么通过将 CNTERR 位置 1 产生一个错误条件, 并 产 生 一 个 QEI 计 数 器 错 误 中 断。通 过 将 CEID 位(DFLTCON<8>)置 1 禁止 QEI 计数器错误中断。在 检测到错误之后,位置计数器继续对编码器脉冲边沿进 行计数。POSCNT 寄存器继续向上 / 向下计数,直到自 然计满返回或下溢。自然计满返回或下溢事件不会产生 中断。 CNTERR 位是可读写的位并由用户在软件中复 位。 16.2.2 位置计数器复位 位置计数器复位使能位 POSRES (QEI<2>)控制当检 测到索引脉冲时位置计数器是否复位。仅当 QEIM<2:0> = 100 或 110 时,该位才适用。 如果 POSRES 位置 1,那么当检测到索引脉冲时位置计 数器复位。如果 POSRES 位清 0,那么当检测到索引 脉冲时位置计数器不复位。位置计数器将继续向上或向 下计数,并在计满返回或下溢情况发生时复位。 在检测到索引脉冲时仍将产生中断,但在位置计数器上 溢 / 下溢时不产生中断。 16.2.3 计数方向状态 正如前面的小节提到的那样,QEI 逻辑根据 A 相与 B 相 之间的关系产生 UPDN 信号。内部 UPDN 信号的状态 除了提供给输出引脚外,还被提供给一个 SFR 位 UPDN (QEICON<11>)(只读位) 。要将该信号的状态输出 到 I/O 引脚上,SFR 位 PCDOUT(QEICON<6>)必须 置 1。 16.3 位置测量模式 支持两种测量模式,分别称为 x2 和 x4 模式。这些模式 由位于 SFR QEICON<10:8> 中的 QEIM<2:0> 模式选择 位选择。 当控制位 QEIM<2:0> = 100 或 101 时,选择 x2 测量模 式并且 QEI 逻辑仅观察 A 相输入来获得位置计数器的递 增速率。A 相信号的每个上升沿和下降沿都会使位置计 数器递增或递减。x4 测量模式中,还要使用 B 相信号来 确定计数器的方向。 在 x2 测量模式中,位置计数器有两种复位方式: 1. 在 检 测 到 索 引 脉 冲 时 复 位 位 置 计 数 器, QEIM<2:0> = 100。 2. 当计数器的值与 MAXCNT 匹配时复位位置计数 器, QEIM<2:0> = 101。 当控制位 QEIM<2:0> = 110 或 111 时,选择 x4 测量模 式并且 QEI 逻辑观察 A 相和 B 相输入信号的边沿。每 个信号的每个边沿都会使位置计数器递增或递减。 在 x4 测量模式中,位置计数器有两种复位方式: 1. 在 检 测 到 索 引 脉 冲 时 复 位 位 置 计 数 器, QEIM<2:0> = 110。 2. 当计数器的值与 MAXCNT 匹配时复位位置计数 器, QEIM<2:0> = 111。 x4 测量模式提供分辨率更高的数据(更多位置计数)来 确定电机位置。 DS70165D_CN 第198 页 初稿  2007 Microchip Technology Inc. dsPIC33F 16.4 可编程数字噪声滤波器 数字噪声滤波器部分负责滤除输入捕捉或正交信号中的 噪声。施密特触发器输入和有三个时钟周期延迟的滤波 器配合使用,用以滤除低电平噪声和通常在易产生噪声 的应用 (如电机系统应用)中出现的幅度大而短时间持 续的尖脉冲噪声。 该滤波器可以确保在三个连续的时钟周期内都获得同一 个稳定值之后,才允许经过滤波的输出信号发生变化。 对于 QEA、 QEB 和 INDX 引脚,数字滤波器的时钟分 频频率由 QECK<2:0> 位(DFLTCON<6:4>)设定,并 由基本指令周期 TCY 产生。 要使能 QEA、QEB 和 INDX 通道的滤波器输出,QEOUT 位必须置 1。在 POR 时所有通道上的滤波器网络都被禁 止。 16.5 备用 16 位定时器 / 计数器 若没有将QEI模块配置为QEI模式,QEIM<2:0> = 001, 那么该模块就可以被配置为一个简单的 16 位定时器 / 计 数器。 这一辅助定时器的设置和控制可通过 QEICON SFR 寄存器实现。该定时器的功能与 Timer1 的功能一 致。QEA 引脚用作定时器时钟输入引脚。 当配置为定时器时,POSCNT 寄存器充当定时器计数寄 存器,MAXCNT 寄存器充当周期寄存器。当定时器 / 周 期寄存器发生匹配时, QEIF 中断标志位置 1。 通用定时器与该定时器惟一的区别就在于该定时器具有 外部向上 / 向下输入选择特性。当 UPDN 引脚被置为高 电平时,定时器递增。当 UPDN 引脚被置为低电平时, 定时器递减。 注: 改变工作模式 (即,从 QEI 改变为定时器 或从定时器改变为 QEI)将不会影响定时器 / 位置计数寄存器的内容。 UPDN 控制 / 状态位(QEICON<11>)可用于选择定时 器寄存器的计数方向状态。当 UPDN = 1 时,定时器将 向上计数。当 UPDN = 0 时,定时器将向下计数。 此外,控制位 UPDN_SRC (QEICON<0>)决定定时 器计数方向状态是基于写入 UPDN 控制 / 状态位 (QEICON<11>)的逻辑状态,还是基于 QEB 引脚状 态。当 UPDN_SRC = 1 时,定时器计数方向由 QEB 引 脚控制。同样,当 UPDN_SRC = 0 时,定时器计数方 向由 UPDN 位控制。 注: 该定时器不支持外部异步计数器工作模 式。 如果使用外部时钟源,时钟将自动与 内部指令周期同步。 16.6 CPU 休眠模式期间 QEI 模块的工作 16.6.1 CPU 休眠模式期间的 QEI 工作 CPU 休眠模式期间 QEI 模块将停止工作。 16.6.2 CPU 休眠模式期间的定时器工作 CPU 休眠模式期间,由于内部时钟被禁止,定时器将不 工作。 16.7 CPU 空闲模式期间 QEI 模块的工作 因为 QEI 模块可作为正交编码器接口或 16 位定时器使 用,下列小节描述了这两种模式下该模块的工作。 16.7.1 CPU 空闲模式期间的 QEI 工作 当 CPU 进入空闲模式后,如果 QEISIDL (QEICON<13>)= 0,QEI 模块将继续工作。执行 POR 时该位默认为逻辑 0。要在 CPU 空闲模式期间停止 QEI 模块, QEISIDL 应该被设置为 1。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第199 页 dsPIC33F 16.7.2 在 CPU 空闲模式期间的定时器工作 当 CPU 进入空闲模式后,并且将 QEI 模块配置为工作 在 16 位定时器模式下,如果 QEISIDL(QEICON<13>) = 0,16 位定时器将继续工作。执行 POR 时该位默认为 逻辑 0。 要在 CPU 空闲模式期间停止定时器模块, QEISIDL 应该被设置为 1。 如果 QEISIDL 位清零,定时器将正常工作,如同未进入 CPU 空闲模式一样。 16.8 正交编码器接口中断 正交编码器接口能够在发生以下事件时产生中断: • 16 位向上 / 向下位置计数器计满返回 / 下溢时中断 • 检测到合格的索引脉冲或者 CNTERR 位置 1 • 定时器周期匹配事件 (上溢 / 下溢) • 门控累加事件 QEI 中断标志位 QEIIF 在发生上述任一事件时置 1。 QEIIF 位必须用软件清零,它位于 IFS3 寄存器中。 通过相应的允许位 QEIIE 允许中断。QEIIE 位位于 IEC3 寄存器中。 16.9 控制和状态寄存器 QEI 模块具有 4 个用户可访问的寄存器。可按照字节模 式或字模式访问这些寄存器。这些寄存器包括: • 控制 / 状态寄存器 (QEICON)——该寄存器控制 QEI 操作且包含指示模块状态的状态标志。 • 数字滤波器控制寄存器 (DFLTCON)——该寄存 器控制数字输入滤波器的操作。 • 位置计数寄存器 (POSCNT)——该存储单元允 许读写 16 位位置计数器。 • 最大计数寄存器 (MAXCNT)——MAXCNT 寄存 器保存在某些操作中将与 POSCNT 寄存器相比较 的值 。 注: 允许对 POSCNT 寄存器进行字节访问,但 以字节模式读取该寄存器可能导致读取时 部分更新寄存器中的值。因此要以字模式 读写该寄存器或在确保在字节操作模式下 计数器不计数。 DS70165D_CN 第200 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 16-1: R/W-0 CNTERR bit 15 QEICON:QEI 控制寄存器 U-0 R/W-0 R-0 — QEISIDL INDEX R/W-0 UPDN R/W-0 R/W-0 QEIM<2:0> R/W-0 bit 8 R/W-0 SWPAB bit 7 R/W-0 PCDOUT R/W-0 TQGATE R/W-0 R/W-0 TQCKPS<1:0> R/W-0 POSRES R/W-0 TQCS R/W-0 UPDN_SRC bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10-8 bit 7 bit 6 bit 5 CNTERR:计数错误状态标志位 1 = 发生位置计数错误 0 = 未发生位置计数错误 (CNTERR 标志仅适用于 QEIM<2:0> =110 或 100 情况) 未实现:读为 0 QEISIDL:空闲模式下停止位 1 = 当器件进入空闲模式时模块停止工作 0 = 在空闲模式下模块继续工作 INDEX:索引引脚电平状态位 (只读) 1 = 索引引脚为高电平 0 = 索引引脚为低电平 UPDN:位置计数器方向状态位 1 = 位置计数器方向为正 (+) 0 = 位置计数器方向为负 (-) (当 QEIM<2:0> = 1XX 时为只读位) (当 QEIM<2:0> = 001 时为可读 / 写位) QEIM<2:0>:正交编码器接口模式选择位 111 = 正交编码器接口使能 (x4 模式),通过与 (MAXCNT)匹配将位置计数器复位 110 = 正交编码器接口使能 (x4 模式),通过索引脉冲将位置计数器复位 101 = 正交编码器接口使能 (x2 模式),通过与 (MAXCNT)匹配将位置计数器复位 100 = 正交编码器接口使能 (x2 模式),通过索引脉冲将位置计数器复位 011 = 未使用 (模块禁止) 010 = 未使用 (模块禁止) 001 = 启动 16 位定时器 000 = 正交编码器接口 / 定时器关闭 SWPAB:A 相和 B 相输入交换选择位 1= A 相和 B 相输入已交换 0= A 相和 B 相输入未交换 PCDOUT:位置计数器方向状态输出使能位 1= 位置计数器方向状态输出使能 (QEI 逻辑控制 I/O 引脚的状态) 0= 位置计数器方向状态输出禁止 (正常的 I/O 引脚操作) TQGATE:定时器门控时间累加使能位 1= 定时器门控时间累加使能 0= 定时器门控时间累加禁止  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第201 页 dsPIC33F 寄存器 16-1: QEICON:QEI 控制寄存器 (续) bit 4-3 bit 2 bit 1 bit 0 TQCKPS<1:0>:定时器输入时钟预分频比选择位 11= 预分频比为 1:256 10= 预分频比为 1:64 01= 预分频比为 1:8 00= 预分频比为 1:1 (预分频器仅用于 16 位定时器模式) POSRES:位置计数器复位使能位 1= 索引脉冲使位置计数器复位 0= 索引脉冲不使位置计数器复位 (该位仅适用于 QEIM<2:0>=100 或 110 情况) TQCS:定时器时钟源选择位 1= 来自 QEA 引脚的外部时钟 (上升沿) 0= 内部时钟 (TCY) UDSRC:位置计数器方向选择控制位 1= QEB 引脚状态定义位置计数器方向 0= 控制 / 状态位 UPDN (QEICON<11>)定义定时器计数器 (POSCNT)方向 注: 当配置为 QEI 模式时,此控制位是 “无关位”。 DS70165D_CN 第202 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 16-2: U-0 — bit 15 DFLTCON:数字滤波器控制寄存器 U-0 U-0 U-0 U-0 — — — — R/W-0 R/W-0 IMV<2:0> R/W-0 CEID bit 8 R/W-0 QEOUT bit 7 R/W-0 QECK<2:0> U-0 U-0 U-0 U-0 — — — — bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15-11 bit 10-9 bit 8 bit 7 bit 6-4 bit 3-0 未实现:读为 0 IMV<1:0>:索引匹配值位——这些位允许用户指定当采用由索引脉冲复位 POSCNT 寄存器时 QEA 和 QEB 输入引脚的状态。 在 4X 正交计数模式下: IMV1= 索引脉冲匹配所要求的 B 相输入信号的状态 IMV0= 索引脉冲匹配所要求的 A 相输入信号的状态 在 2X 正交计数模式下: IMV1= 为索引状态匹配选择相输入信号 (0=A 相, 1=B 相) IMV0= 索引脉冲匹配所要求的所选相输入信号的状态 CEID:计数错误中断禁止位 1= 禁止位置计数错误产生中断 0= 使能位置计数错误产生中断 QEOUT:QEA/QEB/INDX 引脚数字滤波器输出使能位 1= 数字滤波器输出使能 0= 数字滤波器输出禁止 (正常的引脚操作) QECK<2:0>:QEA/QEB/INDX 数字滤波器时钟分频比选择位 111= 时钟分频比为 1:256 110= 时钟分频比为 1:128 101= 时钟分频比为 1:64 100= 时钟分频比为 1:32 011= 时钟分频比为 1:16 010= 时钟分频比为 1:4 001= 时钟分频比为 1:2 000= 时钟分频比为 1:1 未实现:读为 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第203 页 dsPIC33F 注: DS70165D_CN 第204 页 初稿  2007 Microchip Technology Inc. 17.0 串行外设接口 (SPI) 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 串行外设接口(SPI)模块是用于同其他外设或单片机器 件 进 行 通 信 的 同 步 串 行 接 口。这 些 外 设 可 以 是 串 行 EEPROM、移位寄存器、显示驱动器和 ADC 等。SPI 模 块与 Motorola® 的 SPI 和 SIOP 兼容。 注: 在本章中, SPI 模块统称为 SPIx,或分别 称为 SPI1 和 SPI2。特殊功能寄存器也使 用类似的符号表示。例如, SPIxCON 指 SPI1 或 SPI2 模块的控制寄存器。 每一个 SPI 模块都包含一个用于将数据移入和移出的 16 位移位寄存器 SPIxSR( 此处 x = 1 或 2)和一个缓冲寄 存器 SPIxBUF。控制寄存器 SPIxCON 配置此模块。另 外,状态寄存器 SPIxSTAT 表明各种状态条件。 串行接口由 4 个引脚组成:SDIx (串行数据输入) 、 SDOx(串行数据输出)、SCKx(移位时钟输入或输出) 和 SSx (低电平有效从动选择)。 在主模式下工作时, SCK 是时钟输出,但在从模式时, SCK 是时钟输入。 一组 8 或 16 个时钟脉冲将数据从 SPIxSR 移出到 SDOx 引脚,同时,将 SDIx 引脚上的数据移入。当传输完成时 产生一个中断,并且将相应的中断标志位 (SPI1IF 或 SPI2IF)置 1。通过中断允许位 (SPI1IE 或 SPI2IE)可 以禁止该中断。 接收操作是双重缓冲的。当接收完一个完整的字节后, 将此字节从 SPIxSR 传送到 SPIxBUF。 当一个新的数据从 SPIxSR 传送到 SPIxBUF 时,如果接 收缓冲器已满,模块会将 SPIROV 位置 1,表明发生溢 出情况。从 SPIxSR 到 SPIxBUF 的数据传输将不会完成 并且会将新数据丢弃。当 SPIROV 位为 1 时,模块将不 会对 SCL 引脚上电平的跳变做出响应,事实上在用户软 件读取 SPIxBUF 之前模块始终是禁止的。 发送的写操作也是双重缓冲的。用户写入 SPIxBUF。当 主控或从动传输结束时,移位寄存器 (SPIxSR)的内容 dsPIC33F 移入接收缓冲器。只要有待发送数据写入缓冲寄存器, 发送缓冲器的内容就会移入 SPIxSR,从而使得接收到的 数据可以存放到 SPIxBUF 中,而 SPIxSR 中的数据则准 备在随后的传输中发送。 注: 发 送 缓 冲 器 (SPIxTXB)和 接 收 缓 冲 器 (SPIxRXB)都映射到相同的寄存器地址 SPIxBUF。请勿对 SPIxBUF 寄存器执行 读 - 修改 - 写操作 (例如位操作类指令)。 遵循以下步骤,将 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 工作。 SPI 模块会产生一个中断表明字节或字传输完成,还会 为所有的 SPI 错误条件产生单独的中断。 注: SPI1 和 SPI2 都能触发 DMA 数据传输。如 果 SPI1 或 SPI2 被选作 DMA IRQ 源,在 由于 SPI1 或 SPI2 字节或字传输导致 SPI1IF 或 SPI2IF 位置 1 时,会发生 DMA 传输。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第205 页 dsPIC33F 图 17-1: SCKx SSx SDOx SDIx SPI 模块框图 同步 控制 控制 时钟 移位控制 选择 边沿 bit 0 SPIxSR 传输 传输 SPIxRXB SPIxTXB 1:1 到 1:8 辅助 预分频器 1:1/4/16/64 主 FCY 预分频器 SPIxCON1<1:0> SPIxCON1<4:2> 使能 主时钟 SPIxBUF 读 SPIxBUF 写 SPIxBUF 16 内部数据总线 DS70165D_CN 第206 页 初稿  2007 Microchip Technology Inc. 图 17-2: SPI 主 / 从连接 处理器 1(SPI 主器件) 串行接收缓冲器 (SPIxRXB) SDOx dsPIC33F 处理器 2(SPI 从器件) SDIx 串行接收缓冲器 (SPIxRXB) 移位寄存器 (SPIxSR) MSb LSb SDIx SDOx 移位寄存器 (SPIxSR) MSb LSb 串行发送缓冲器 (SPIxTXB) 串行发送缓冲器 (SPIxTXB) SPI 缓冲器 (SPIxBUF)(2) SCKx 串行时钟 SCKx SSx(1) SPI 缓冲器 (SPIxBUF)(2) (MSTEN(SPIxCON1<5>)= 1) (SSEN (SPIxCON1<7>)= 1 且 MSTEN(SPIxCON1<5>)= 0) 注 1: 可选择在从模式使用 SSx 引脚。 2: 用户必须向 SPIxBUF 写入发送数据,或从 SPIxBUF 读取接收数据。 SPIxTXB 和 SPIxRXB 寄存器被存储器映射到 SPIxBUF。 图 17-3: SPI 主控 - 帧主控模式连接图 dsPIC33F (SPI 主器件,帧主控) SDOx SDIx SCKx SSx 串行时钟 帧同步 脉冲 SDIx SDOx SCKx SSx 处理器 2 图 17-4: SPI 主控 - 帧从动模式连接图 dsPIC33F (SPI 主器件,帧从动) SDOx SDIx SCKx SSx 串行时钟 帧同步 脉冲 SDIx SDOx SCKx SSx 处理器 2  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第207 页 dsPIC33F 图 17-5: SPI 从动 - 帧主控模式连接图 dsPIC33F (SPI 从器件,帧主控) SDOx SDIx SDIx SCKx SSx 串行时钟 帧同步 脉冲 SDOx SCKx SSx 处理器 2 图 17-6: SPI 从动 - 帧从动模式连接图 dsPIC33F (SPI 从器件,帧从动) SDOx SDIx SDIx SCKx SSx 串行时钟 帧同步 脉冲 SDOx SCKx SSx 处理器 2 公式 17-1: 器件工作频率和 SPI 时钟速度之间的关系 FSCK = FCY 主预分频比 * 辅助预分频比 表 17-1: SCKx 频率示例 FCY = 40 MHz 主预分频比设置 1:1 4:1 16:1 64:1 FCY = 5 MHz 主预分频比设置 1:1 4:1 16:1 64:1 注: 表中 SCKx 频率的单位为 kHz。 1:1 无效 10000 2500 625 5000 1250 313 78 辅助预分频比设置 2:1 4:1 6:1 无效 5000 1250 312.5 10000 2500 625 156.25 6666.67 1666.67 416.67 104.17 8:1 5000 1250 312.50 78.125 2500 1250 833 625 625 313 208 156 156 78 52 39 39 20 13 10 DS70165D_CN 第208 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 17-1: SPIxSTAT:SPIx 状态和控制寄存器 R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0 SPIEN - SPISIDL - - - - - bit 15 bit 8 U-0 R/C-0 U-0 U-0 U-0 - SPIROV - - - bit 7 U-0 R-0 R-0 - SPITBF SPIRBF bit 0 图注: R = 可读位 -n = 上电复位时的值 C = 可清零位 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15 bit 14 bit 13 bit 12-7 bit 6 bit 5-2 bit 1 bit 0 SPIEN:SPIx 使能位 1 = 使能模块并将 SCKx、 SDOx、 SDIx 和 SSx 配置为串行端口引脚 0 = 禁止模块 未实现:读为 0 SPISIDL:在空闲模式停止位 1 = 当器件进入空闲模式时,模块停止工作 0 = 在空闲模式下模块继续工作 未实现:读为 0 SPIROV:接收溢出标志位 1 = 一个新字节 / 字已完全接收并丢弃。用户软件没有读先前保存在 SPIxBUF 寄存器中的数据。 0 = 未发生溢出 未实现:读为 0 SPITBF:SPIx 发送缓冲器满状态位 1 = 发送还未开始, SPIxTXB 为满 0 = 发送已开始, SPIxTXB 为空 当 CPU 写 SPIxBUF 存储单元并装载 SPIxTXB 时,该位由硬件自动置 1。 当 SPIx 模块将数据从 SPIxTXB 传输到 SPIxSR 时,该位由硬件自动清零。 SPIRBF:SPIx 接收缓冲器满状态位 1 = 接收完成, SPIxRXB 为满 0 = 接收未完成, SPIxRXB 为空 当 SPIx 将数据从 SPIxSR 传输到 SPIxRXB 时,该位由硬件自动置 1。 当内核通过读 SPIxBUF 存储单元读 SPIxRXB 时,该位由硬件自动清零。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第209 页 dsPIC33F 寄存器 17-2: U-0 - bit 15 SPIXCON1:SPIx 控制寄存器 1 U-0 U-0 R/W-0 - - DISSCK R/W-0 DISSDO R/W-0 MODE16 R/W-0 SMP R/W-0 CKE(1) bit 8 R/W-0 SSEN bit 7 R/W-0 CKP R/W-0 MSTEN R/W-0 R/W-0 SPRE<2:0> R/W-0 R/W-0 R/W-0 PPRE<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15-13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4-2 bit 1-0 未实现:读为 0 DISSCK:禁止 SCKx 引脚位 (仅限 SPI 主模式) 1 = 禁止内部 SPI 时钟,引脚作为 I/O 口使用 0 = 使能内部 SPI 时钟 DISSDO:SDOx 引脚禁止位 1 = SDOx 引脚不由模块使用;引脚作为 I/O 口使用 0 = SDOx 引脚由模块控制 MODE16:字 / 字节通信选择位 1 = 通信为字宽 (16 位) 0 = 通信为字节宽 (8 位) SMP:SPIx 数据输入采样相位位 主模式: 1 = 输入数据在数据输出时间末尾采样 0 = 输入数据在数据输出时间中间采样 从模式: 当在从模式下使用 SPIx 时,必须将 SMP 清零。 CKE:SPIx 时钟边沿选择位 (1) 1 = 串行输出数据在时钟从工作状态转变为空闲状态时变化 (见 bit 6) 0 = 串行输出数据在时钟从空闲状态转变为工作状态时变化 (见 bit 6) SSEN:从动选择使能 (从模式)位 1 = SSx 引脚用于从模式 0 = SSx 引脚不被模块使用。引脚由端口功能控制。 CKP:时钟极性选择位 1= 空闲状态时钟信号为高电平;工作状态为低电平 0= 空闲状态时钟信号为低电平;工作状态为高电平 MSTEN: 主模式使能位 1 = 主模式 0 = 从模式 SPRE<2:0>:辅助预分频比 (主模式)位 111 = 辅助预分频比 1:1 110 = 辅助预分频比 2:1 ... 000 = 辅助预分频比 8:1 PPRE<1:0>:主预分频比 (主模式)位 11 = 主预分频比 1:1 10 = 主预分频比 4:1 01 = 主预分频比 16:1 00 = 主预分频比 64:1 注 1: 在帧 SPI 模式下不使用 CKE 位。在帧 SPI 模式 (FRMEN = 1)下,用户应该将该位编程为 0。 DS70165D_CN 第210 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 17-3: SPIxCON2:SPIx 控制寄存器 2 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 FRMEN SPIFSD FRMPOL - - - bit 15 U-0 U-0 U-0 U-0 U-0 U-0 - - - - - - bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 bit 15 bit 14 bit 13 bit 12-2 bit 1 bit 0 FRMEN:帧 SPIx 支持位 1 = 使能帧 SPIx 支持 (SSx 引脚用作帧同步脉冲输入 / 输出) 0 = 禁止帧 SPIx 支持 SPIFSD:帧同步脉冲方向控制位 1 = 帧同步脉冲输入 (从器件) 0 = 帧同步脉冲输出 (主器件) FRMPOL:帧同步脉冲极性位 1 = 帧同步脉冲为高电平有效 0 = 帧同步脉冲为低电平有效 未实现:读为 0 FRMDLY: 帧同步脉冲边沿选择位 1 = 帧同步脉冲与第一个位时钟一致 0 = 帧同步脉冲比第一个位时钟提前 未实现:禁止使用用户应用程序将该位置 1。 U-0 - R/W-0 FRMDLY x = 未知 U-0 - bit 8 U-0 - bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第211 页 dsPIC33F 注: DS70165D_CN 第212 页 初稿  2007 Microchip Technology Inc. 18.0 I2C™ 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 I2C 模块为 I2C 串行通信标准的从模式和多主机模式提 供全部硬件支持,具有一个 16 位接口。 dsPIC33F 器件具有两个 I2C 接口模块,分别用 I2C1 和 I2C2 表示。每个 I2C 模块具有一个 2 引脚接口:两个引 脚分别是时钟引脚 SCLx 和数据引脚 SDAx。 每个 I2C 模块 “x”(x = 1 或 2)提供下列主要特性: • I2C 接口同时支持主控操作和从动操作。 • I2C 从模式支持 7 位和 10 位地址。 • I2C 主模式支持 7 位和 10 位地址。 • I2C 端口允许在主器件和从器件间进行双向传输。 • I2C 端口的串行时钟同步可作为握手机制,暂停和 恢复串行传输 (SCLREL 控制)。 • I2C 支持多主机操作;检测总线冲突并执行相应仲 裁。 18.1 工作模式 硬件完全实现了符合 I2C 标准和快速模式规范的所有的 主控和从动功能,以及 7 位和 10 位寻址功能。 I2C 模块在 I2C 总线上既可作为从器件,也可作为主器 件。 支持下列类型的 I2C 操作: • 7 位地址的 I2C 从动操作 • 10 位地址的 I2C 从动操作 • 7 位或 10 位地址的 I2C 主控操作 如 需 了 解 每 种 模 式 通 信 时 序 的 详 细 信 息,请 参 见 《dsPIC30F 系列参考手册》。 dsPIC33F 18.2 I2C™ 寄存器 I2CxCON 和 I2CxSTAT 分别是控制和状态寄存器。 I2CxCON 是可读写的寄存器。I2CxSTAT 的低 6 位为只 读位。余下的位可被读写。 I2CxRSR 是用于移动数据的移位寄存器,而 I2CxRCV 是从 / 向其中读写数据字节的缓冲寄存器。I2CxRCV 是 接收缓冲器。I2CxTRN 是发送寄存器,在发送操作中数 据字节写入该寄存器。 I2CxADD 寄存器保存从器件的地址。 ADD10 状态位表 示 10 位地址模式。I2CxBRG 作为波特率发生器(BRG) 的重载值。 在接收操作中,I2CxRSR 和 I2CxRCV 一起构成一个双 重缓冲接收器。I2CxRSR 在接收到一个完整的字节时, 将字节传输到 I2CxRCV 并产生一个中断脉冲。 18.3 I2C™ 中断 I2C 模块产生两个中断标志,MI2CxIF(I2C 主控事件中 断标志)和 SI2CxIF (I2C 从动事件中断标志)。在所 有 I2C 错误条件下都会产生一个单独的中断。 18.4 波特率发生器 在 I2C 主模式下,BRG 的重载值存储在 I2CxBRG 寄存 器中。当 BRG 载入该值后, BRG 递减计数至 0,随后 停止,直到有新值重载入。例如,如果发生时钟仲裁, 当 SCLx 引脚采样为高电平时 BRG 被重新载入。 根据 I2C 标准,FSCL 可以是 100 kHz 或 400 kHz。但用 户可以指定任何小于或等于 1 MHz 的波特率。I2CxBRG 的值为 0 或 1 是非法的。 公式 18-1: 串行时钟速率 ( ) I2CxBRG = FCY FSCL – FCY 1,111,111 –1  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 213 页 dsPIC33F 图 18-1: I2C™ 框图 (X = 1 或 2) SCLx SDAx 移位 时钟 I2CxRCV I2CxRSR LSb 匹配检测 地址匹配 I2CxADD 启动位和停止 位检测 启动位和停止 位产生 冲突 检测 应答 产生 时钟 延长 移位时钟 I2CxTRN LSb 重载 控制 BRG 递减计数器 TCY/2 控制逻辑 内部 数据总线 读 写 I2CxMSK 写 读 读 写 I2CxSTAT 读 写 I2CxCON 读 写 读 写 I2CxBRG 读 DS70165D_CN 第 214 页 初稿  2007 Microchip Technology Inc. 18.5 I2C™ 模块地址 I2CxADD 寄存器包含从模式的地址。该寄存器是一个 10 位寄存器。 如果 A10M 位 (I2CxCON<10>)是 0,模块将地址译 为 7 位地址。当接收到一个地址时,将它与 I2CxADD 寄存器的低 7 位比较。 如果 A10M 位是 1,则认为该地址是 10 位地址。当接 收到一个地址时,将它与二进制值 11110 A9 A8 比较 (其中 A9 和 A8 是 I2CxADD 的高两位)。如果匹配,按 10 位寻址协议的规定,下一地址将同 I2CxADD 的低 8 位比较。 表 18-1: 0x00 0x01-0x03 0x04-0x07 0x08-0x77 0x78-0x7b 0x7c-0x7f dsPIC33F 支持的 7 位 I2C™ 从 动地址 广播呼叫地址或起始字节 保留 Hs 模式的主机码 有效的 7 位地址 有效的 10 位地址 (低 7 位) 保留 18.6 从动地址掩码 I2CxMSK 寄存器 (见寄存器 18-3)将 7 位和 10 位地 址 模 式 下 地 址 中 的 某 些 位 指 定 为 “无 关 位” 。 将 I2CxMSK 寄存器中某个特定位置 1 (= 1),不论相应 的地址位的值是 0 还是 1,工作在从模式下的模块都会 做出响应。例如,当将 I2CxMSK 设置为 00100000 时, 工作在从模式下的模块将检测两个地址 0000000 和 00100000。 为 了 使 能 地 址 掩 码,必 须 通 过 将 IPMIEN 位 (I2CxCON<11>)清 零 来 禁 止 智 能 外 设 管 理 接 口 (Intelligent Peripheral Management Interface, IPMI)。 18.7 IPMI 支持 通过控制位 IPMIEN 使能模块支持智能外设管理接口 (IPMI)。当将该位置 1 时,模块接受并响应所有地址。 dsPIC33F 18.8 广播呼叫地址支持 广播呼叫地址能寻址所有器件。 当使用这个地址时, 理论上所有器件都应发送一个应答响应。 广播呼叫地址是 I2C 协议为特定用途保留的 8 个地址之 一。此地址的所有位都是 0 且 R_W 也为 0。 广播呼叫地址使能 (GCEN)位置 1 时 (I2CxCON<7> = 1),即可识别广播呼叫地址。当中断得到响应时,通 过读取 I2CxRCV 的内容可以检测中断源,从而判断该地 址是特定器件的还是广播呼叫地址。 18.9 自动时钟延长 在从模式下,模块可通过时钟延长来让缓冲器读写与主 器件同步。 18.9.1 发送时钟延长 10 位和 7 位发送模式下都通过在第 9 个时钟的下降沿后 将 SCLREL 位拉低来实现时钟延长。如果 TBF 位被清 零,表明缓冲器为空。 在从发送模式下,始终执行时钟延长,而与 STREN 位 的设置无关。用户 ISR 必须将 SCLREL 位置 1 才能继 续进行发送。通过保持 SCLx 线为低电平,用户在主器 件启动另一发送序列前有时间执行 ISR 并装载 I2CxTRN 的内容。 18.9.2 接收时钟延长 可使用 I2CxCON 寄存器的 STREN 位来使能从接收模 式下的时钟延长。当将 STREN 位置 1 时,在每个数据 接收序列结束时保持 SCLx 引脚为低电平。 在允许继续接收前,用户 ISR 必须将 SCLREL 位置 1。 通过保持 SCLx 线为低电平,用户在主器件启动另一接 收序列前有时间执行 ISR 和读 I2CxRCV 中的内容。这 将阻止缓冲器发生溢出。 18.10 软件控制的时钟延长 (STREN = 1) 当 STREN 位为 1 时,使用软件将 SCLREL 位清零以允 许用软件来控制时钟延长。 如果 STREN 位为 0,对 SCLREL 位的软件写操作无效, 不会对 SCLREL 位的值产生任何影响。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 215 页 dsPIC33F 18.11 斜率控制 I2C 标准需要对快速模式 (400 kHz)下的 SDAx 和 SCLx 信号进行斜率控制。控制位 DISSLW 让用户按要 求禁止斜率控制。在 1 MHz 模式下必须禁止斜率控制。 18.12 时钟仲裁 在任何接收、发送或重复启动 / 停止条件下 , 主器件拉 高 SCLx 引脚 (允许 SCLx 引脚悬空为高电平),就会 发生时钟仲裁。如果允许 SCLx 引脚悬空为高电平,波 特率发生器 (BRG)将暂停计数直到实际采样到 SCLx 引脚为高电平。当 SCLx 引脚采样为高电平时,波特率 发生器被重新装入 I2CxBRG 的内容并开始计数。 这可 以保证在外部器件将时钟拉低时, SCLx 始终至少保持 一个 BRG 计满回零周期的高电平时间。 18.13 多主机通信、总线冲突和总线仲裁 多主机模式支持是通过总线仲裁来实现的。当主器件输 出地址 / 数据位到 SDAx 引脚时,如果主器件通过将 SDAx 悬空为高电平来在 SDAx 上输出一个 1,而另一 个主器件输出 0,就会发生总线仲裁。当 SCLx 引脚悬 空为高电平时,数据应保持稳定。如果 SDAx 引脚上的 期望数据是1,而实际采样到SDAx 引脚上的数据为 0, 则发生总线冲突。主器件将 I2C 主控事件中断标志位置 1,并将主器件的 I2C 端口复位到空闲状态。 DS70165D_CN 第 216 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 18-1: R/W-0 I2CEN bit 15 I2CxCON:I2Cx 控制寄存器 U-0 R/W-0 R/W-1 HC - I2CSIDL SCLREL R/W-0 IPMIEN R/W-0 A10M R/W-0 DISSLW R/W-0 SMEN bit 8 R/W-0 GCEN bit 7 R/W-0 STREN R/W-0 ACKDT R/W-0 HC R/W-0 HC ACKEN RCEN R/W-0 HC PEN R/W-0 HC RSEN R/W-0 HC SEN bit 0 图注: R = 可读位 -n = 上电复位时的值 U = 未实现位,读为 0 W = 可写位 1 =置1 HS = 由硬件置 1 0 = 清零 HC = 由硬件清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 I2CEN:发送使能位 1 = 使能 I2Cx 模块并将 SDAx 和 SCLx 引脚配置为串行端口引脚 0 = 禁止 I2Cx 模块。所有 I2C 引脚由端口功能控制。 未实现:读为 0 I2CSIDL:空闲模式下的停止位 1 = 当器件进入空闲模式时,模块停止工作 0 = 模块在空闲模式下继续工作 SCLREL:SCLx 释放控制位 (作为 I2C 从器件工作时) 1 = 释放 SCLx 时钟 0 = 保持 SCLx 时钟为低电平 (时钟低电平时间延长) 如果 STREN = 1: 该位可读可写 (即软件可写入 0 来启动时钟延长或写入 1 来释放时钟)。在从器件发送开始或接收结 束时由硬件清零。 如果 STREN = 0: 该位可读且可被置 1 (即软件只能写入 1 来释放时钟)。在从器件发送开始时由硬件清零。 IPMIEN:智能外设管理接口 (IPMI)使能位 1 = 使能 IPMI 模式;应答所有地址 0 = 禁止 IPMI 模式 A10M:10 位从器件地址位 1 = I2CxADD 是一个 10 位从动地址 0 = I2CxADD 是一个 7 位从动地址 DISSLW: 禁止斜率控制位 1 = 禁止斜率控制 0 = 使能斜率控制 SMEN:SMBus 输入电平位 1 = 使能符合 SMBus 规范的 I/O 引脚门限值 0 = 禁止 SMBus 输入门限值 GCEN:广播呼叫使能位 (作为 I2C 从器件工作时) 1 = 允许在 I2CxRSR 接收到广播呼叫地址时产生中断 (已使能模块接收) 0 = 禁止广播呼叫地址 STREN:SCLx 时钟延长使能位 (作为 I2C 从器件工作时) 与 SCLREL 位配合使用。 1 = 使能软件或接收时钟延长 0 = 禁止软件或接收时钟延长  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 217 页 dsPIC33F 寄存器 18-1: I2CxCON:I2Cx 控制寄存器 (续) bit 5 ACKDT:应答数据位 (作为 I2C 主器件工作时,适用于主器件接收过程) 当软件启动应答序列时将发送的值。 1 = 在应答时发送 NACK 0 = 在应答时发送 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 = 启动条件不在进行中 DS70165D_CN 第 218 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 18-2: I2CxSTAT:I2Cx 状态寄存器 R-0 HSC R-0 HSC U-0 U-0 U-0 R/C-0 HS R-0 HSC R-0 HSC ACKSTAT TRSTAT - - - BCL GCSTAT ADD10 bit 15 bit 8 R/C-0 HS IWCOL bit 7 R/C-0 HS I2COV R-0 HSC D_A R/C-0 HS P R/C-0 HS S R-0 HSC R_W R-0 HSC RBF R-0 HSC TBF bit 0 图注: R = 可读位 -n = 上电复位时的值 U = 未实现位,读为 0 W = 可写位 1 =置1 HS = 由硬件置 1 0 = 清零 HSC = 由硬件置 1/ 清零 x= 未知 bit 15 bit 14 bit 13-11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 ACKSTAT:应答状态位 (作为 I2C 主器件工作时,适用于主器件发送操作) 1 = 接收到来自从器件的 NACK 0 = 接收到来自从器件的 ACK 在从器件应答结束时由硬件置 1 或清零 TRSTAT:发送状态位 (作为 I2C 主器件工作时,适用于主器件发送操作) 1 = 主器件正在进行发送 (8 位 + ACK) 0 = 主器件不在进行发送 在主器件发送开始时由硬件置 1。在从器件应答结束时由硬件清零。 未实现:读为 0 BCL: 主器件总线冲突检测位 1 = 主器件工作期间检测到了总线冲突 0 = 未发生冲突 检测到总线冲突时由硬件置 1。 GCSTAT:广播呼叫状态位 1 = 接收到广播呼叫地址 0 = 未接收到广播呼叫地址 当地址与广播呼叫地址匹配时由硬件置 1。当检测到停止条件时由硬件清零。 ADD10:10 位地址状态位 1 = 10 位地址匹配 0 = 10 位地址不匹配 当与匹配的 10 位地址的第 2 个字节匹配时由硬件置 1。当检测到停止条件时由硬件清零。 IWCOL: 写冲突检测位 1 = 因为 I2C 模块忙,尝试写 I2CxTRN 寄存器失败。 0 = 未发生冲突 当总线忙时写 I2CxTRN 会使硬件将该位置 1 (由软件清零)。 I2COV: 接收溢出标志位 1 = 当 I2CxRCV 寄存器仍然保存原先的字节时接收到了新字节 0 = 未溢出 尝试将数据从 I2CxRSR 传输到 I2CxRCV 时由硬件置 1 (由软件清零)。 D_A:数据 / 地址位 (作为 I2C 从器件工作时) 1 = 表示上次接收的字节为数据 0 = 表示上次接收的字节为器件地址 器件地址匹配时由硬件清零。在作为从器件接收到数据字节时由硬件置 1。 P:停止位 1 = 表示上次检测到停止位 0 = 表示上次未检测到停止位 当检测到启动、重复启动或停止条件时由硬件置 1 或清零。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 219 页 dsPIC33F 寄存器 18-2: I2CxSTAT:I2Cx 状态寄存器 (续) 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。数据发送完成时由硬件清零。 DS70165D_CN 第 220 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 18-3: U-0 - bit 15 I2CxMSK:I2Cx 从模式地址掩码寄存器 U-0 U-0 U-0 U-0 - - - - U-0 R/W-0 - AMSK9 R/W-0 AMSK7 bit 7 R/W-0 AMSK6 R/W-0 AMSK5 R/W-0 AMSK4 R/W-0 AMSK3 R/W-0 AMSK2 R/W-0 AMSK1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-10 bit 9-0 未实现:读为 0 AMSKx:地址位 x 的掩码选择位 1 = 使能输入报文的地址中位 x 的掩码;在此位置上不需要位匹配 0 = 禁止位 x 的掩码;此位需要位匹配 R/W-0 AMSK8 bit 8 R/W-0 AMSK0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 221 页 dsPIC33F 注: DS70165D_CN 第 222 页 初稿  2007 Microchip Technology Inc. 19.0 通用异步收发器 (UART) 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。 如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 通 用 异 步 收 发 器 (Universal Synchronous Receiver Transmitter, UART)模块是 dsPIC33F 系列器件提供 的串行 I/O 模块之一。UART 是可以和外设 (例如个人 电脑、LIN、RS-232 和 RS-485 接口)通信的全双工异 步系统。UART 模块还通过 UxCTS 和 UxRTS 引脚支持 硬件流控制选项,其中还包括 IrDA® 编码器和解码器。 UART 模块的主要特性有: • 通过 UxTX 和 UxRX 引脚进行全双工 8 位或 9 位 数据传输 • 偶校验、奇校验或无奇偶校验选项 (对于 8 位数 据) • 一个或两个停止位 • 通过 UxCTS 和 UxRTS 引脚实现硬件流控制 dsPIC33F • 完全集成的具有 16 位预分频器的波特率发生器 • 当器件工作在 16 MIPS 时,波特率范围从 15 bps 到 1 Mbps • 4 级深度先进先出 (First-In-First-Out , FIFO)发 送数据缓冲器 • 4 级深度 FIFO 接收数据缓冲器 • 奇偶、帧和缓冲器溢出错误检测 • 支持带地址检测的 9 位模式 (第 9 位 = 1) • 发送和接收中断 • 所有 UART 错误条件下可分别产生中断 • 用于支持诊断的环回模式 • 支持同步和间隔字符 • 支持自动波特率检测 • IrDA 编码器和解码器逻辑 • 用于 IrDA 支持的 16 倍频波特率时钟输出 图 19-1 显示了 UART 的简化框图。UART 模块由以下 至关重要的硬件元件组成: • 波特率发生器 • 异步发送器 • 异步接收器 图 19-1: UART 简化框图 波特率发生器 IrDA® 硬件流控制 UART 接收器 UART 发送器 BCLK UxRTS UxCTS UxRX UxTX 注 1: UART1 和 UART2 都能触发 DMA 数据传输。如果 U1TX、U1RX、U2TX 或 U2RX 被选作 DMA IRQ 源, 当因 UART1 或 UART2 的发送和接收而引起 U1TXIF、U1RXIF、U2TXIF 或 U2RXIF 位被置 1 时,将会发 生一次 DMA 传输。 2: 如果需要 DMA 传输,必须将 UART TX/RX FIFO 缓冲器的大小设置为 1 字节 / 字(即 UTXISEL<1:0> = 00 且 URXISEL<1:0> = 00)。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第223 页 dsPIC33F 19.1 UART 波特率发生器 (BRG) UART 模块包含一个专用的 16 位波特率发生器。BRGx 寄存器控制一个自由运行的 16 位定时器的周期。公式 19-1 给出了 BRGH = 0 时计算波特率的公式。 公式 19-1: UART 波特率 (BRGH = 0) 波特率 = FCY 16 • (BRGx + 1) 注: BRGx = FCY 16 • 波特率 –1 FCY 表示指令周期时钟频率 (FOSC/2)。 例 19-1 给出了如下条件下的波特率误差计算: • FCY = 4 MHz • 目标波特率 = 9600 最大可能波特率(BRGH = 0)是 FCY/16(当 BRGx = 0 时),最小可能波特率是 FCY/(16 * 65536)。 例 19-1: 波特率误差计算 (BRGH = 0) 目标波特率 = FCY/(16 (BRGx + 1)) BRGx 值的计算方法 BRGx BRGx BRGx = ((FCY/ 目标波特率 )/16) – 1 = ((4000000/9600)/16) – 1 = 25 计算波特率 = 4000000/(16 (25 + 1)) = 9615 误差 = ( 计算波特率 – 目标波特率 ) 目标波特率 = (9615 – 9600)/9600 = 0.16% 公式 19-2 给出了 BRGH = 1 时计算波特率的公式。 公式 19-2: UART 波特率 (BRGH = 1) 波特率 = FCY 4 • (BRGx + 1) BRGx = FCY 4 • 波特率 –1 注: FCY 表示指令周期时钟频率 (FOSC/2)。 最大波特率(BRGH = 1)可能是 FCY/4(当 BRGx = 0 时),最小波特率可能是 FCY/(4 * 65536)。 向 BRGx 寄存器中写入新值会导致 BRG 定时器复位(清 零)。这保证了BRG在产生新的波特率之前不需要等待 定时器溢出。 DS70165D_CN 第224 页 初稿  2007 Microchip Technology Inc. 19.2 在 8 位数据模式下发送 1. 设置 UART: a) 将适当的值写入数据位、奇偶校验位和停止 位。 b) 将适当的波特率值写入 BRGx 寄存器。 c) 设置发送和接收中断允许位和优先级位。 2. 使能 UART。 3. 将 UTXEN 位置 1 (产生发送中断) 4. 将数据字节写入 UxTXREG 字的低字节。该数据 字节将被立即传输给发送移位寄存器 (TSR)且 在波特时钟的下一个上升沿开始移出串行比特 流。 5. 或者,当 UTXEN = 0 时,数据字节也可以被发 送,且随后用户可将 UTXEN 置 1。由于波特时 钟将从清零状态启动,这将立即开始发送串行比 特流。 6. 中断控制位 UTXISEL<1:0> 决定何时产生一个发 送中断。 19.3 在 9 位数据模式下发送 1. 设置 UART (如第 19.2 节 “在 8 位数据模式下 发送”所描述的那样)。 2. 使能 UART。 3. 将 UTXEN 位置 1 (产生发送中断) 4. 仅向 UxTXREG 写入一个 16 位的值。 5. 向 UxTXREG 写入一个字可触发 9 位数据向 TSR 的传输。串行比特流将会在波特率时钟的第一个 上升沿开始移出。 6. 中断控制位 UTXISEL<1:0> 的设置决定何时产生 发送中断。 19.4 间隔或同步发送过程 下面的过程将发送一个由间隔字符组成的报文帧头,其 后紧跟一个自动波特率同步字节。 1. 将 UARTG 配置为所需的模式。 2. 将 UTXEN 和 UTXBRK 置 1——设置间隔字符。 3. 将一个“虚拟”字符装入 UxTXREG 寄存器中以 启动发送 (值被忽略)。 4. 向 UxTXREG 写入 0x55——将同步字符装载到 发送 FIFO 中。 5. 当间隔字符发送完成后,由硬件将 UTXBRK 位 复位。然后开始发送同步字符。 dsPIC33F 19.5 在 8 位或 9 位数据模式下接收 1. 设置 UART (如第 19.2 节 “在 8 位数据模式下 发送”所描述的那样)。 2. 使能 UART。 3. 当接收到一个或多个数据字符时,将会根据中断 控制位 URXISEL<1:0> 的设置产生接收中断。 4. 读 OERR 位以确定是否发生了溢出错误。必须在 软件中将 OERR 位复位。 5. 读 UxRXREG。 读取 UxRXREG 字符的行为会将下一个字符传送到接收 FIFO 的顶部,其中包含一组新的 PERR 和 FERR 值。 19.6 使用 UxCTS 和 UxRTS 引脚的流控 制 UARTx 允许发送 (UxCTS)和 UARTx 请求发送 (UxRTS)是两个与 UART 模块有关、由硬件控制的低 电平有效引脚。这两个引脚允许 UART 运行在单工模式 和流控制模式下。这两个引脚控制在 UART 模块和数据 终端设备 ( Data Terminal Equipment, DTE)之间的 数据发送和接收。通过 UxMODE 寄存器的 UEN<1:0> 位来配置两个引脚。 19.7 红外支持 UART 模块提供两种类型的 UART 红外支持: • IrDA 时钟输出支持外部 IrDA 编码器和解码器 (传 统模块支持) • 内部完全实现了 IrDA 编码器和解码器 19.7.1 外部 IrDA 支持——IrDA 时钟输出 为了支持外部 IrDA 编码器和解码器,可将 BCLK 引脚 (与 UxRTS 引脚相同)配置为产生 16 倍频的波特率时 钟。当使能了 UART 模块且 UEN<1:0> = 11 时,BCLK 引脚将输出 16 倍频的波特率时钟,用于支持 IrDA 编解 码器芯片。 19.7.2 内置 IrDA 编码器和解码器 UART模块在其内部完全实现了IrDA 编码器和解码器的 功能。内置 IrDA 编码器和解码器的功能可通过 IREN 位 (UxMODE<12>)来使能。当使能(即 IREN = 1)时, 接收引脚 (UxRX)可作为红外接收器的输入引脚。发 送引脚 (UxTX)可作为红外发送器的输出引脚。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第225 页 dsPIC33F 寄存器 19-1: UxMODE:UARTx 模式寄存器 R/W-0 U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0(2) R/W-0(2) UARTEN — USIDL IREN(1) RTSMD — UEN<1:0> bit 15 bit 8 R/W-0 HC WAKE bit 7 R/W-0 LPBACK R/W-0 HC ABAUD R/W-0 URXINV R/W-0 BRGH R/W-0 R/W-0 PDSEL<1:0> R/W-0 STSEL bit 0 图注: R = 可读位 -n = 上电复位时的值 HC = 由硬件清零 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9-8 bit 7 bit 6 bit 5 bit 4 UARTEN:UARTx 使能位 1 = 使能 UARTx ; UARTx 根据 UEN<1:0> 的定义控制所有 UARTx 引脚 0 = 禁止 UARTx ;由端口锁存器控制所有 UARTx 引脚; UARTx 的功耗最小 未实现:读为 0 USIDL:在空闲模式停止位 1 = 当器件进入空闲模式时,模块停止工作 0 = 在空闲模式下模块继续工作 IREN:IrDA 编码器和解码器使能位 (1) 1 = 使能 IrDA 编码器和解码器 0 = 禁止 IrDA 编码器和解码器 RTSMD:UxRTS 引脚的模式选择位 1 = UxRTS 引脚处于单工模式 0 = UxRTS 引脚处于流控制模式 未实现:读为 0 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 引脚由端口锁存器控制 WAKE:在休眠模式下检测到启动位唤醒使能位 1 = UARTx 将继续采样 UxRX 引脚;在出现下降沿时产生中断;在出现上升沿时由硬件将该位清零 0 = 禁止唤醒 LPBACK:UARTx 环回模式选择位 1 = 使能环回模式 0 = 禁止环回模式 ABAUD:自动波特率使能位 1 = 使能对下一个字符的波特率测量——需要接收到同步字段 (55h); 完成时由硬件清零 0 = 禁止或已完成波特率测量 URXINV: 接收极性翻转位 1 = UxRX 的空闲状态是 0 0 = UxRX 的空闲状态是 1 注 1: 此功能只能在 16 倍频 BRG 模式 (BRGH = 0)下使用。 2: 位的可用性取决于引脚的可用性。 DS70165D_CN 第226 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 19-1: UxMODE:UARTx 模式寄存器 (续) bit 3 bit 2-1 bit 0 BRGH:高波特率使能位 1 = BRG 在每个位周期内产生 4 个时钟信号 (4 倍频波特率时钟,高速模式) 0 = BRG 在每个位周期内产生 16 个时钟信号 (16 倍频波特率时钟,标准模式) PDSEL<1:0>: 奇偶校验和数据选择位 11 = 9 位数据,无奇偶检验 10 = 8 位数据,奇检验 01 = 8 位数据,偶检验 00 = 8 位数据,无奇偶检验 STSEL:停止位选择位 1 = 2 个停止位 0 = 1 个停止位 注 1: 此功能只能在 16 倍频 BRG 模式 (BRGH = 0)下使用。 2: 位的可用性取决于引脚的可用性。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第227 页 dsPIC33F 寄存器 19-2: UxSTA:UARTx 状态和控制寄存器 R/W-0 R/W-0 R/W-0 U-0 R/W-0 HC UTXISEL1 UTXINV(1) UTXISEL0 — UTXBRK bit 15 R/W-0 UTXEN R-0 UTXBF R-1 TRMT bit 8 R/W-0 R/W-0 URXISEL<1:0> bit 7 R/W-0 ADDEN R-1 RIDLE R-0 PERR R-0 FERR R/C-0 OERR R-0 URXDA bit 0 图注: R = 可读位 -n = 上电复位时的值 HC = 由硬件清零 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15,13 bit 14 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7-6 bit 5 UTXISEL<1:0>: 发送中断模式选择位 11 = 保留;不要使用 10 = 当一个字符被传输到发送移位寄存器导致发送缓冲器为空时,产生中断 01 = 当最后一个字符被移出发送移位寄存器;所有发送操作执行完毕时产生中断 10 = 当一个字符被传输到发送移位寄存器 (暗指发送缓冲器中至少还有一个字符)时产生中断 UTXINV:IrDA 编码器发送极性翻转位 (1) 1 = IrDA 编码的 UxTX 空闲状态为 1 0 = IrDA 编码的 UxTX 空闲状态为 0 未实现:读为 0 UTXBRK:发送间隔位 1 = 在下次发送时发出同步间隔字符——启动位,后跟 12 个 0 位,然后是停止位;完成时由硬件清零 0 = 禁止或已完成同步间隔字符的发送 UTXEN:发送使能位 1 = 使能发送, UARTx 控制 UxTX 引脚。 0 = 禁止发送,中止所有等待的发送,缓冲器复位。由端口控制 UxTX 引脚。 UTXBF:发送缓冲器满状态位 (只读) 1 = 发送缓冲器满 0 = 发送缓冲器未满,至少还可写入一个或多个字符 TRMT:发送移位寄存器空位 (只读) 1 = 发送移位寄存器为空,同时发送缓冲器为空 (上一次发送已完成) 0 = 发送移位寄存器非空,发送在进行中或在发送缓冲器中排队 URXISEL<1:0>: 接收中断模式选择位 11 = 当 UxRSR 传输使接收缓冲器为满时 (即,有 4 个数据字符),中断标志位置 1 10 = 当 UxRSR 传输使接收缓冲器 3/4 满时 (即,有 3 个数据字符),中断标志位置 1 0x = 当接收到一个字符时,中断标志位置 1 ;且 UxRSR 的内容被传输给接收缓冲器。接收缓冲器有一 个或多个字符 ADDEN:地址字符检测位 (接收数据的第 8 位 = 1) 1 = 使能地址检测模式。如果没有选择 9 位模式,这个控制位将无效。 0 = 禁止地址检测模式 注 1: 仅当使能了 IrDA 编码器 (IREN = 1)时,该位的值才影响模块的发送属性。 DS70165D_CN 第228 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 19-2: UxSTA:UARTx 状态和控制寄存器 (续) 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 = 接收缓冲器为空 注 1: 仅当使能了 IrDA 编码器 (IREN = 1)时,该位的值才影响模块的发送属性。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第229 页 dsPIC33F 注: DS70165D_CN 第230 页 初稿  2007 Microchip Technology Inc. 20.0 增强型 CAN 模块 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 20.1 概述 增强型控制器局域网 (ECAN™) 模块是一个串行接 口,用于同其他 CAN 模块或单片机器件进行通信。此 接 口 协 议 是 针 对 允 许 在 噪 声 环 境 下 通 信 而 设 计 的。 dsPIC33F 器件最多带 2 个 ECAN 模块。 ECAN模块是一个通信控制器,实现了BOSCH规范中定 义的 CAN 2.0A 或 CAN 2.0B 协议。该模块将支持 CAN 1.2、CAN 2.0A、CAN 2.0B Passive 和 CAN 2.0B Active 版本的协议。该模块实现了一种完整的 CAN 系 统。但是本数据手册不讨论 CAN 规范。更多详细信息请 参见 BOSCH CAN 规范。 该模块具有以下特性: • 实现了 CAN 协议 CAN 1.2、 CAN 2.0A 和 CAN 2.0B • 支持标准和扩展数据帧 • 0-8 字节数据长度 • 高达 1 Mb/s 的可编程比特率 • 自动响应远程发送请求 • 最多 8 个发送缓冲器,可由应用程序指定优先级 和中止功能 (每个缓冲器最多包含 8 个字节的数 据) • 最多 32 个接收缓冲器 (每个缓冲器最多包含 8 个 字节的数据) • 最多 16 个完全 (标准 / 扩展标识符)的接收过滤 器 • 3 个完全接收过滤屏蔽寄存器 • 支持 DeviceNet™ 寻址 • 集成了低通滤波器的可编程唤醒功能 • 支持自检操作的可编程环回模式 • 通过中断功能在出现所有的 CAN 接收器和发送器 错误条件时发出信号 • 可编程时钟源 • 与输入捕捉模块的可编程连接 (CAN1 和 CAN2 的 IC2),以进行时间标记和网络同步 • 低功耗休眠和空闲模式 dsPIC33F CAN 总线模块由协议引擎以及报文缓冲和控制模块组 成。CAN 协议引擎处理在 CAN 总线上接收和发送报文 的所有功能。 通过首先装载相应的数据寄存器发送报 文。通过读取相应的寄存器可以检测状态和错误。将对 在 CAN 总线上检测到的任何报文进行错误检测,并随 后将其与过滤器进行比较以判断是否要将其接收并存储 到接收寄存器之一中。 20.2 帧类型 CAN 模块支持包括数据报文或由用户发出的远程发送 请求在内的各种类型的帧,以及自动产生用于控制的其 他帧。支持下列帧类型: • 标准数据帧: 当节点要发送数据时会产生一个标准数据帧。它包 含一个 11 位的标准标识符 (SID),而不是 18 位 的扩展标识符 (EID)。 • 扩展数据帧: 扩展数据帧与标准数据帧相似,但包含一个扩展标 识符。 • 远程帧: 也可能发生目标节点向源节点请求发送数据的情 况。要做到这一点,目标节点必须发送一个其标识 符与所需的数据帧匹配的远程帧。随后相应的数据 源节点会发送一个数据帧作为对这个远程请求的 响应。 • 错误帧: 错误帧是由检测到总线错误的任一节点产生的。错 误帧包含 2 个字段:错误标志字段和错误定界符字 段。 • 过载帧: 节点在两种条件下会产生过载帧:第一,节点在帧 间间隔内检测到一个显性位,这是一种非法的情 况。第二,由于内部原因,节点尚无法开始接收下 一条报文。节点最多可产生两个连续过载帧来延迟 下一条报文的接收。 • 帧间间隔: 帧间间隔将前一个帧(无论何种类型)与其后的数 据帧或远程帧分隔开来。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第231 页 dsPIC33F 图 20-1: ECAN™ 模块的框图 DMA 控制器 TRB7 发送 / 接收缓冲控制寄存器 TRB6 发送 / 接收缓冲控制寄存器 TRB5 发送 / 接收缓冲控制寄存器 TRB4 发送 / 接收缓冲控制寄存器 TRB3 发送 / 接收缓冲控制寄存器 TRB2 发送 / 接收缓冲控制寄存器 TRB1 发送 / 接收缓冲控制寄存器 TRB0 发送 / 接收缓冲控制寄存器 RXF15 过滤器 RXF14 过滤器 RXF13 过滤器 RXF12 过滤器 RXF11 过滤器 RXF10 过滤器 RXF9 过滤器 RXF8 过滤器 RXF7 过滤器 RXF6 过滤器 RXF5 过滤器 RXF4 过滤器 RXF3 过滤器 RXF2 过滤器 RXF1 过滤器 RXF0 过滤器 RXM2 屏蔽寄存器 RXM1 屏蔽寄存器 RXM0 屏蔽寄存器 发送字节 排序器 报文组合 缓冲器 CAN 协议 引擎 CiTX(1) CiRX(1) 注 1:i = 1 或 2 指某个 ECAN 模块(ECAN1 或 ECAN2)。 控制 配置 逻辑 CPU 总线 中断 DS70165D_CN 第232 页 初稿  2007 Microchip Technology Inc. dsPIC33F 20.3 工作模式 用户可以选择 CAN 模块在以下几种工作模式之一工作。 这些模式包括: • 初始化模式 • 禁止模式 • 正常工作模式 • 监听模式 • 监听所有报文模式 • 环回模式 通过设置 REQOP<2:0> 位 (CiCTRL1<10:8>)可选择 所 需 模 式。通 过 监 视 OPMODE<2:0> 位 (CiCTRL1<7:5>)可以确定进入的模式。通常在总线上 检测到至少 11 位连续的隐性位表明总线空闲时才允许 改 变 模 式,在 此 之 前 不 会 改 变 模 块 的 工 作 模 式 和 OPMODE 位。 20.3.1 初始化模式 在初始化模式下,模块将不进行发送或接收。错误计数 器被清零且中断标志位保持不变。编程人员可以访问在 其他模式下不可访问的配置寄存器。模块会防止用户因 为编程错误而意外违反 CAN 协议。当模块在线时,所 有控制模块配置的寄存器都不能被修改。当进行发送的 时候,不允许 CAN 模块进入配置模式。配置模式会作 为锁来保护以下寄存器: • 所有模块的控制寄存器 • 波特率和中断配置寄存器 • 总线时序寄存器 • 标识符接收过滤寄存器 • 标识符接收屏蔽寄存器 20.3.2 禁止模式 在禁止模式下,模块不会进行发送或接收。由于总线活 动,模块能够将 WAKIF 位置 1,但是,等待处理的中断 将继续等待,且错误计数器的值也将保持不变。 如果 REQOP<2:0> 位(CiCTRL1<10:8>)= 001,模块 将进入模块禁止模式。如果模块处于工作状态,它将等 待 CAN 总线上出现 11 个隐性位,表明总线空闲,然后 才能执行模块禁止命令。当 OPMODE<2:0> 位 (CiCTRL1<7:5>) = 001 时,表明模块成功进入了禁止 模式。当模块处于禁止模式时,I/O 引脚将恢复为普通 I/ O 功能。 当模块或 CPU 处于休眠模式时,通过对模块进行编程 可以在 CiRX 输入线中应用低通滤波器功能。 WAKFIL 位 (CiCFG2<14>)使能或禁止该滤波器。 注: 通常,如果允许 CAN 模块在某种工作模式 下发送,并且在 CAN 模块进入该模式后立 即被要求发送,则模块将在开始发送前等 待总线上出现 11 个连续隐性位。如果用户 在此 11 个隐性位期间切换到禁止模式,则 发送会被中止,同时相应的 TXABT 位置 1, TXREQ 位清零。 20.3.3 正常工作模式 当 REQOP<2:0> = 000 时选择正常工作模式。在这个 模式下,模块被激活, I/O 引脚将承担 CAN 总线功能。 模块将通过 CiTX 和 CiRX 引脚发送和接收 CAN 总线报 文。 20.3.4 监听模式 如果激活监听模式,CAN 总线上的模块处于被动状态。 发送缓冲器恢复为端口 I/O 功能。接收引脚保持在输入 状态。对于接收器,不发出错误标志或应答信号。该状 态下,错误计数器不再工作。监听模式可用来检测 CAN 总线上的波特率。要使用它,必须有 2 个以上可以互相 通信的节点。 20.3.5 监听所有报文模式 该模块能够设置为忽略所有错误并接收所有报文。通过 将 REQOP<2:0> 设置为 111 可激活监听所有报文模 式。在该模式下,报文组合缓冲器中的数据将被复制到 接收缓冲器并可通过 CPU 接口读取,直到出现错误。 20.3.6 环回模式 如果激活环回模式,模块将在模块边界将内部发送信号 连接到内部接收信号。发送和接收引脚将恢复为端口 I/O 功能。 20.4 报文接收 20.4.1 接收缓冲器 CAN 总线模块具有最多 32 个接收缓冲器,位于 DMA RAM 中。需要通过清零 CiTRmnCON 寄存器中的发送 / 接收缓冲器选择 (TXENn)位将前 8 个缓冲器配置为 接收缓冲器。用户可以通过定义 DMABS<2:0> 位 (CiFCTRL<15:13>)来选择 DMA RAM 中 CAN 缓冲区 的总大小,前 16 个缓冲器可以分配给接收过滤器,其 余的仅用作 FIFO 缓冲器。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第233 页 dsPIC33F 另有一个缓冲器始终监视进入总线的报文。该缓冲器被 称为报文组合缓冲器 (MAB)。 MAB 组合所有的输入报文。 只有满足相应接收过滤条 件的报文才能被传输到相应的接收缓冲器中。当接收到 报文时, RBIF 标志 (CiINTF<1>)位置 1。这时用户需 要检查 CiVEC 与 / 或 CiRXFUL1 寄存器来判定导致中断 产生的过滤器和缓冲器。只有接收到报文时模块才将 RBIF 置 1。用户处理完缓冲器中的报文后将该位清零。 如果 RBIE 位置 1,在接收到报文时将产生中断。 20.4.2 FIFO 缓冲器模式 如果过滤器的缓冲器指针的值为 1111,那么 ECAN 模 块提供 FIFO 缓冲功能。在该模式下,满足缓冲器要求 的结果将写入 FIFO 中下一个可用的缓冲单元。 CiFCTRL 寄存器定义 FIFO 的大小。该寄存器中的 FSA<4:0> 位定义 FIFO 缓冲器的起始位置。如果使能 DMA, FIFO 的结束位置由 DMABS<2:0> 位定义。所 以, FIFO 最多支持 32 个缓冲器。 20.4.3 报文接收过滤器 报文接收过滤器和屏蔽寄存器用于决定报文组合缓冲器 中的报文是否应该被装入某个接收缓冲器中。一旦一条 有效的报文被接收到 MAB,报文的标识符字段就会与过 滤值进行比较。 如果匹配的话,该报文就会被装入相应 的 接 收 缓 冲 器。每 个 过 滤 器 都 与 一 个 缓 冲 器 指 针 (FnBP<3:0>)相关联,该指针用来将过滤器与 16 个接 收缓冲器中的一个相关联。 接收过滤器通过检查进入报文中的 IDE 位 (CiTRBnSID<0>)以决定如何比较标识符。如果 IDE 位 清 零,报 文 是 标准 帧,则 只 与 EXIDE 位 (CiRXFnSID<3>)清零的过滤器比较。如果 IDE 位置 1,报文是扩展帧,则只与 EXIDE 位置 1 的过滤器比较。 20.4.4 报文接收过滤器屏蔽寄存器 屏蔽位主要决定将对哪些位应用过滤器。如果任何屏蔽 位被设置为零,无论过滤位为何值该位都会被自动接 收。有三个与接收缓冲器相关的可编程接收过滤屏蔽寄 存器。通 过 设 置 相 应 CiFMSKSELn 寄 存 器 中的 FnMSK<1:0> 位来选择所需的屏蔽寄存器,可以将这三 个屏蔽寄存器中的任意一个与每个过滤器关联。 20.4.5 接收错误 CAN 模块将会检测以下接收错误: • 循环冗余校验 (CRC)错误 • 位填充错误 • 无效报文接收错误 这些接收错误不会产生中断。然而,当发生上述错误之 一时,接收错误计数器会递增 1。 RXWAR 位 (CiINTF<9>)表明接收错误计数器已经达到 CPU 警告 的上限值 96,并由此产生中断。 20.4.6 接收中断 接收中断主要分为 3 组,每组包含各种产生中断的条件: • 接收中断: 报文已被成功接收并被装入其中一个接收缓冲器。 接收到帧结束 (EOF)字段后立即激活中断。读 RXnIF 标志可知哪个接收缓冲器引起了中断。 • 唤醒中断: CAN 模块从禁止模式唤醒,或器件从休眠模式中 唤醒。 • 接收错误中断: 接收错误中断由 ERRIF 位表示。该位表示有错误 条件发生。通过检查 CAN 中断标志寄存器 CiINTF 中的相应位,就可以确定错误源。 - 收到无效报文: 如果在接收上一个报文期间发生了任何类型的错 误, IVRIF 位都将指出有错误发生。 - 接收器溢出: RBOVIF 位(CiINTF<2>)表明有溢出情况发生。 - 接收器警告: RXWAR 位表明接收错误计数器 (RERRCNT<7:0>)已经达到 CPU 警告的上限 值 96。 - 接收器错误被动: RXEP 位表明接收错误计数器已经超过了错误被 动的上限值 127,且该模块已经进入错误被动状 态。 DS70165D_CN 第234 页 初稿  2007 Microchip Technology Inc. dsPIC33F 20.5 报文发送 20.5.1 发送缓冲器 CAN 模块最多有 8 个发送缓冲器,位于 DMA RAM 中。 需要通过将 CiTRmnCON 寄存器中相应的发送 / 接收缓 冲器选择(TXENn 或 TXENm)位置 1,将这 8 个缓冲 器配置为发送缓冲器。用户可以通过定义 DMABS<2:0> 位 (CiFCTRL<15:13>)来选择 DMA RAM 中 CAN 缓 冲区的总大小。 每个发送缓冲器占用 16 个数据字节。其中的 8 个字节 用于存放发送的报文 (最大 8 个字节)。另外 5 个字节 用来存放标准或扩展报文标识符和其他报文仲裁信息。 最后一个字节不使用。 20.5.2 发送报文优先级 发送优先级指在各个节点内待发送报文的优先级。发送 优 先 级 有 4 级。如 果 一 个 指 定 报 文 缓冲器的 TXnPRI<1:0> 位(在 CiTRmnCON 中)被设置为 11, 那么该缓冲器拥有最高优先级。如果一个指定报文缓 冲器的 TXnPRI<1:0> 位被置为 10 或 01,那么该缓冲 器 拥 有 中 等 优 先 级。如 果 一 个 指 定 报 文 缓 冲 器 的 TXnPRI<1:0> 位被设置为 00,那么该缓冲器拥有最低 优先级。如果两个或更多等待发送的报文拥有相同优先 级,报文以缓冲器编号递减的顺序发送。 20.5.3 发送过程 必须将 TXREQn 位 (在 CiTRmnCON 中)置 1 开始发 送报文。CAN 总线模块解决了置 1 TXREQn 位和帧起始 (SOF)之间的时序冲突,确保当优先级改变时,能在 SOF 产生之前正确解决时序冲突。当 TXREQn 位置 1 时, TXABTn、 TXLARBn 和 TXERRn 标志位被自动清零。 将 TXREQn 标志位置 1 标志报文缓冲器正在排序等待 发送。当模块检测到总线可用时,模块开始发送设定为 具有最高优先级的报文。 如果第一次尝试就成功发送了报文,TXREQn 位将自动 清零。如果 TXnIE 置 1,会产生一个中断。 如 果 报 文 发 送失 败,错 误 条 件 标 志 位 之 一 将置 1, TXREQn 位将保持置 1,表示该报文仍然等待发送。如 果报文在尝试发送过程中遇到错误,TXERRn 位将被置 1,错误条件会产生一个中断。如果报文在尝试发送过 程中仲裁失败,TXLARBn 位将被置 1。在仲裁失败时不 会产生中断。 20.5.4 远程发送请求的自动处理 如果指定发送缓冲器的 RTRENn 位 (在 CiTRmnCON 寄存器中)被置 1,硬件自动发送在该缓冲器中的数据, 以响应与指向该特定缓冲器的过滤器相匹配的远程发送 请求。在这种情况下,用户不需要手动开始发送。 20.5.5 中止报文发送 通过清零与各个报文缓冲器相关的 TXREQ 位,系统能 中止报文发送。将 ABAT 位 (CiCTRL1<12>)置 1 将 请求中止所有等待发送的报文。如果报文还未开始发送 或者报文已开始发送但由于仲裁失败或错误而被中断, 那么将会执行中止。当模块将 TXABT 位置 1 且 TXnIF 标志位未自动置 1 时,表明发生了中止。 20.5.6 发送错误 CAN 模块将会检测到以下发送错误: • 应答错误 • 格式错误 • 位错误 这些发送错误不一定会产生中断,但是发送错误计数器 中会显示有错误发生。并且,每个错误都会引起错误计 数器的值递增 1。一旦错误计数器的值超过 96,ERRIF (CiINTF<5>)和 TXWAR 位 (CiINTF<10>)将被置 1。一旦错误计数器的值超过 96,就会产生中断,且中 断标志寄存器中的 TXWAR 位被置 1。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第235 页 dsPIC33F 20.5.7 发送中断 发送中断主要分为 2组,每组包括各种产生中断的条件: • 发送中断: 三个发送缓冲器中至少有一个为空(未预定)并且 可以装入按照预定时间发送的报文。读 TXnIF 标志 位可知哪个发送缓冲器可用及哪个发送缓冲器引 起了中断。 • 发送错误中断: 发送错误中断由 ERRIF 标志位表示。该标志位表 示有错误情况发生。通过检查 CAN 中断标志寄存 器 CiINTF 中的错误标志,就可以确定错误源。该 寄存器中的标志与接收和发送错误有关。 - 发送器警告中断: TXWAR 位表明发送错误计数器已经达到 CPU 警 告的上限值 96。 - 发送器错误被动: TXEP 位 (CiINTF<12>)用来表示发送错误计 数器已经超过了错误被动的上限值 127,且该模 块已经进入了错误被动状态。 - 总线关闭: TXBO 位 (CiINTF<13>)表示发送错误计数器 的值已经超过了 255,且该模块已经进入总线关 闭状态。 注: ECAN1 和 ECAN2 都能触发 DMA 数据传 输。如果选择 C1TX、 C1RX、 C2TX 或 C2RX 作为 DMA IRQ 源, DMA 传输将在 由于 ECAN1 或 ECAN2 发送或接收而使 C1TXIF、C1RXIF、C2TXIF 或 C2RXIF 位 置 1 时开始。 图 20-2: 输入信号 ECAN™ 模块的位时序 20.6 波特率设置 任何特定 CAN 总线上的所有节点必须具有相同的标称 比特率。为了设置波特率,必须对以下参数进行初始化: • 同步跳转宽度 • 波特率预分频比 • 相位段 • 相位段 2 的长度确定 • 采样点 • 传播时间段位 20.6.1 位时序 CAN 总线上的所有控制器必须使用相同的波特率和位 长度。然而,并不要求所有的控制器具有相同的主振荡 器时钟频率。由于各个控制器的时钟频率不同,必须通 过调节各段的时间份额数来调整波特率。 可以认为,标称位时间可划分成几个互不重叠的时间 段。这些段如图 20-2 所示。 • 同步段 (Sync Seg) • 传播时间段 (Prop Seg) • 相位缓冲段 1 (Phase1 Seg) • 相位缓冲段 2 (Phase2 Seg) 时间段以及标称位时间由整数个时间单元组成,这些单 元称作时间份额或 TQ。根据定义,标称位时间最少由 8 个 TQ 组成,最多由 25 个 TQ 组成。同样根据定义,最 小标称位时间是 1 µs,对应最大 1 Mb/s 的比特率。 同步 传播 时间段 TQ 相位 缓冲段 1 采样点 相位 缓冲段 2 同步 DS70165D_CN 第236 页 初稿  2007 Microchip Technology Inc. 20.6.2 预分频比设置 模块带有一个可编程预分频器,其整数预分频值范围为 1 至 64,除对时钟进行固定的二分频外还可提供其他时 钟选项。时间份额(TQ)是源自振荡器周期的固定时间 单元,如公式 20-1 所示。 注: FCAN 不能超出 40 MHz。如果 CANCKS = 0,那么FCY不能超出20 MHz。 公式 20-1: 时钟发生的时间份额 TQ = 2 (BRP<5:0> + 1)/FCAN 20.6.3 传播时间段 这部分位时间用来补偿网络内的物理延时。这些延迟时 间包括总线线路上的信号传播时间以及节点的内部延迟 时间。 通过设置 PRSEG<2:0> 位 (CiCFG2<2:0>), 传播时间段长度可以编程为 1 TQ 到 8 TQ 。 20.6.4 相位缓冲段 相位缓冲段用于将接收到位的采样点放置在发送位时间 内的最佳位置。采样点在相位段 1 和相位段 2 之间。这 些段可通过重新同步延长或缩短。相位段 1 的末尾决定 一个位周期内的采样点。相位段 1 的持续时间可编程为 1 TQ 到 8 TQ。相位段 2 提供在发送下一数据前的延时, 其持续时间也可被编程为 1 TQ 到 8 TQ 或是定义为与相 位段 1 和信息处理时间 (2 TQ)两者中的较大者相等。 将 SEG1PH<2:0>(CiCFG2<5:3>)位置 1 初始化相位 段 1,将 SEG2PH<2:0> (CiCFG2<10:8>)置 1 初始 化相位 2 段。 在设置相位段长度时,必须符合下列要求: 传播时间段 + 相位段 1≥ 相位段 2 20.6.5 采样点 采样点是读总线电平并确定接收位的值的一个时间点。 采样点发生在相位段 1 的末尾。若位时序较慢而且包含 很多 TQ,可以在采样点对总线线路进行多次采样。由 CAN 总线确定接收位的值为采样到的三个值中出现次 数最多的那个值。在采样点进行多次采样,且前两次采 样的时刻相隔 TQ/2。通过将 SAM 位(CiCFG2<6>)置 1 或清零,CAN 模块允许用户选择同一点采样三次或一 次。 dsPIC33F 通常,位采样应当发生在位时间的 60 - 70% 左右,取 决于系统参数。 20.6.6 同步 为了补偿总线上各节点间振荡频率的相移,每个 CAN 控 制器必须能够与输入信号的相关信号沿同步。当检测到 发送数据中的一个沿时,逻辑电路会将该沿的位置与预 期时间(同步段)比较。电路将随后调整相位段 1 和相 位段 2 的值。有两种同步机制。 20.6.6.1 硬同步 硬同步仅当总线空闲期间有一个从隐性转变到显性的沿 时,才被执行,它指示报文传输的开始。 硬同步后,位 时间计数器从同步段重新开始计数。硬同步强制引起硬 同步的沿处于重新开始的位时间的同步段之内。如果产 生硬同步,则在相应的位时间内不能再有重新同步。 20.6.6.2 重新同步 重新同步可能使相位缓冲段 1 延长或使相位缓冲段 2 缩 短。相位缓冲段延长或缩短量的上限由同步跳转宽度给 出 (由 SJW<1:0> 位 (CiCFG1<7:6>)指定)。同步 跳转宽度值将加到相位段 1 或从相位段 2 中减去。重新 同步跳转宽度可以编程为 1 TQ 到 4 TQ。 在设置 SJW<1:0> 位时,必须符合下列要求: 相位段 2 > 同步跳转宽度 注: 在下面的寄存器说明中,寄存器标识符中 的 ‘i’表示特定的 ECAN 模块 (ECAN1 或 ECAN2)。 寄存器标识符中的 ‘n’表示缓冲器、过滤 器或屏蔽寄存器的编号。 寄存器标识符中的‘m’表示特定 CAN 数 据字段中的字数。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第237 页 dsPIC33F 寄存器 20-1: U-0 — bit 15 CiCTRL1:ECAN 控制寄存器 1 U-0 R/W-0 R/W-0 R/W-0 — CSIDL ABAT CANCKS R/W-1 R/W-0 REQOP<2:0> R/W-0 bit 8 R-1 R-0 R-0 OPMODE<2:0> bit 7 U-0 R/W-0 U-0 — CANCAP — U-0 R/W-0 — WIN bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13 bit 12 bit 11 bit 10-8 bit 7-5 bit 4 bit 3 bit 2-1 bit 0 未实现:读为 0 CSIDL:空闲模式停止位 1 = 当器件进入空闲模式时模块停止工作 0 = 模块在空闲模式下继续工作 ABAT:中止所有等待处理的发送位 通知所有发送缓冲器中止发送。模块将在所有发送中止时清零该位。 CANCKS:CAN 主时钟选择位 1 = CAN FCAN 时钟为 FCY 0 = CAN FCAN 时钟为 FOSC REQOP<2:0>:请求工作模式位 000 = 设置正常工作模式 001 = 设置禁止模式 010 = 设置环回模式 011 = 设置监听模式 100 = 设置配置模式 101 = 保留—不要使用 110 = 保留—不要使用 111 = 设置监听所有报文模式 OPMODE<2:0>: 工作模式位 000 = 模块工作在正常工作模式下 001 = 模块工作在禁止模式下 010 = 模块工作在环回模式下 011 = 模块工作在监听模式下 100 = 模块工作在配置模式下 101 = 保留 110 = 保留 111 = 模块工作在监听所有报文模式下 未实现:读为 0 CANCAP:CAN 报文接收定时器捕捉事件使能位 1 = 使能基于 CAN 报文接收的输入捕捉 0 = 禁止 CAN 捕捉 未实现:读为 0 WIN:SFR 映射窗口选择位 1 = 使用过滤器窗口 0 = 使用缓冲器窗口 DS70165D_CN 第238 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-2: CiCTRL2:ECAN 控制寄存器 2 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 U-0 — bit 7 U-0 U-0 R-0 R-0 R-0 R-0 — — DNCNT<4:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-5 bit 4-0 未实现:读为 0 DNCNT<4:0>:DeviceNet™ 过滤器位编号位 10010-11111 = 无效选择 10001 = 最多可将数据字节 3 的 bit 6 与 EID<17> 做比较 .... 00001 = 最多可将数据字节 1 的 bit 7 与 EID<17> 做比较 00000 = 不比较数据字节 U-0 — bit 8 R-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第239 页 dsPIC33F 寄存器 20-3: CiVEC:ECAN 中断编码寄存器 U-0 — bit 15 U-0 U-0 R-0 R-0 — — R-0 R-0 FILHIT<4:0> U-0 R-1 R-0 R-0 R-0 R-0 R-0 — ICODE<6:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-13 bit 12-8 bit 7 bit 6-0 未实现:读为 0 FILHIT<4:0>:选中的过滤器编号位 10000-11111 = 保留 01111 = 过滤器 15 .... 00001 = 过滤器 1 00000 = 过滤器 0 未实现:读为 0 ICODE<6:0>:中断标志编码位 1000101-1111111 = 保留 1000100 = FIFO 几乎满中断 1000011 = 接收器溢出中断 1000010 = 唤醒中断 1000001 = 错误中断 1000000 = 无中断 0100000-0111111 = 保留 0001111 = RB15 缓冲器中断 .... 0001001 = RB9 缓冲器中断 0001000 = RB8 缓冲器中断 0000111 = TRB7 缓冲器中断 0000110 = TRB6 缓冲器中断 0000101 = TRB5 缓冲器中断 0000100 = TRB4 缓冲器中断 0000011 = TRB3 缓冲器中断 0000010 = TRB2 缓冲器中断 0000001 = TRB1 缓冲器中断 0000000 = TRB0 缓冲器中断 R-0 bit 8 R-0 bit 0 DS70165D_CN 第240 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-4: CiFCTRL:ECAN FIFO 控制寄存器 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 DMABS<2:0> — — — — bit 15 U-0 — bit 7 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 — — FSA<4:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-13 bit 12-5 bit 4-0 DMABS<2:0>:DMA 缓冲器大小位 111 = 保留 110 = DMA RAM 中的 32 个缓冲器 101 = DMA RAM 中的 24 个缓冲器 100 = DMA RAM 中的 16 个缓冲器 011 = DMA RAM 中的 12 个缓冲器 010 = DMA RAM 中的 8 个缓冲器 001 = DMA RAM 中的 6 个缓冲器 000 = DMA RAM 中的 4 个缓冲器 未实现:读为 0 FSA<4:0>:FIFO 区域从哪个缓冲器开始位 11111 = RB31 缓冲器 11110 = RB30 缓冲器 .... 00001 = TRB1 缓冲器 00000 = TRB0 缓冲器 U-0 — bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第241 页 dsPIC33F 寄存器 20-5: U-0 — bit 15 CiFIFO:ECAN FIFO 状态寄存器 U-0 R-0 R-0 — R-0 R-0 FBP<5:0> U-0 — bit 7 U-0 R-0 R-0 R-0 R-0 — FNRB<5:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 bit 15-14 bit 13-8 bit 7-6 bit 5-0 未实现:读为 0 FBP<5:0>:FIFO 写缓冲器指针位 011111 = RB31 缓冲器 011110 = RB30 缓冲器 .... 000001 = TRB1 缓冲器 000000 = TRB0 缓冲器 未实现:读为 0 FNRB<5:0>:FIFO 下一个读缓冲器指针位 011111 = RB31 缓冲器 011110 = RB30 缓冲器 .... 000001 = TRB1 缓冲器 000000 = TRB0 缓冲器 R-0 R-0 x = 未知 R-0 bit 8 R-0 bit 0 DS70165D_CN 第242 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-6: U-0 — bit 15 CiINTF:ECAN 中断标志寄存器 U-0 R-0 R-0 — TXBO TXBP R-0 RXBP R-0 TXWAR R-0 RXWAR R/C-0 IVRIF bit 7 R/C-0 WAKIF R/C-0 ERRIF U-0 R/C-0 R/C-0 R/C-0 — FIFOIF RBOVIF RBIF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 TXBO:发送器位于错误状态总线关闭位 TXBP:发送器处于错误状态总线被动位 RXBP:接收器处于错误状态总线被动位 TXWAR:发送器处于错误状态警告位 RXWAR:接收器处于错误状态警告位 EWARN:发送器或接收器处于错误状态警告位 IVRIF: 收到无效报文中断标志位 WAKIF:总线唤醒中断标志位 ERRIF:错误中断标志位 ( CiINTF<13:8> 寄存器中的多个中断源) 未实现:读为 0 FIFOIF:FIFO 几乎满中断标志位 RBOVIF:接收缓冲器溢出中断标志位 RBIF:接收缓冲器中断标志位 TBIF:发送缓冲器中断标志位 R-0 EWARN bit 8 R/C-0 TBIF bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第243 页 dsPIC33F 寄存器 20-7: CiINTE:ECAN 中断允许寄存器 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 R/W-0 IVRIE bit 7 R/W-0 WAKIE R/W-0 ERRIE R/W-0 — R/W-0 FIFOIE R/W-0 RBOVIE R/W-0 RBIE 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 未实现:读为 0 IVRIE:收到无效报文中断允许位 WAKIE:总线唤醒活动中断允许位 ERRIE:错误中断允许位 未实现:读为 0 FIFOIE:FIFO 几乎满中断允许位 RBOVIE:接收缓冲器溢出中断允许位 RBIE:接收缓冲器中断允许位 TBIE:发送缓冲器中断允许位 U-0 — bit 8 R/W-0 TBIE bit 0 DS70165D_CN 第244 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-8: CiEC:ECAN 发送 / 接收错误计数寄存器 R-0 R-0 R-0 R-0 R-0 R-0 TERRCNT<7:0> bit 15 R-0 R-0 R-0 R-0 R-0 R-0 RERRCNT<7:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 bit 15-8 bit 7-0 TERRCNT<7:0>: 发送错误计数位 RERRCNT<7:0>: 接收错误计数位 R-0 R-0 x = 未知 R-0 bit 8 R-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第245 页 dsPIC33F 寄存器 20-9: CiCFG1:ECAN 波特率配置寄存器 1 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — bit 15 R/W-0 R/W-0 SJW<1:0> bit 7 R/W-0 R/W-0 R/W-0 R/W-0 BRP<5:0> R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7-6 bit 5-0 未实现:读为 0 SJW<1:0>:同步跳转宽度位 11 = 长度为 4 x TQ 10 = 长度为 3 x TQ 01 = 长度为 2 x TQ 00 = 长度为 1 x TQ BRP<5:0>: 波特率预分频比位 11 1111 = TQ = 2 x 64 x 1/FCAN 00 0010 = TA = 2 x 3 x 1/FCAN 00 0001 = TA = 2 x 2 x 1/FCAN 00 0000 = TQ = 2 x 1 x 1/FCAN U-0 — bit 8 R/W-0 bit 0 DS70165D_CN 第246 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-10: CiCFG2:ECAN 波特率配置寄存器 2 U-0 R/W-x U-0 U-0 U-0 — WAKFIL — — — bit 15 R/W-x R/W-x SEG2PH<2:0> R/W-x bit 8 R/W-x SEG2PHTS bit 7 R/W-x SAM R/W-x R/W-x R/W-x SEG1PH<2:0> R/W-x R/W-x PRSEG<2:0> R/W-x bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13-11 bit 10-8 bit 7 bit 6 bit 5-3 bit 2-0 未实现:读为 0 WAKFIL: 选择是否使用 CAN 总线过滤器唤醒位 1 = 使用 CAN 总线过滤器唤醒 0 = 不使用 CAN 总线过滤器唤醒 未实现:读为 0 SEG2PH<2:0>:相位缓冲段 2 位 111 = 长度为 8 x TQ 000 = 长度为 1 x TQ SEG2PHTS: 相位缓冲段 2 时间选择位 1 = 可自由编程 0 = SEG1PH 位的最大值或信息处理时间 (IPT)中的较大者 SAM: CAN 总线采样位 1 = 总线在采样点被采样三次 0 = 总线在采样点被采样一次 SEG1PH<2:0>:相位缓冲段 1 位 111 = 长度为 8 x TQ 000 = 长度为 1 x TQ PRSEG<2:0>: 传播时间段位 111 = 长度为 8 x TQ 000 = 长度为 1 x TQ  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第247 页 dsPIC33F 寄存器 20-11: CiFEN1:ECAN 接收过滤器使能寄存器 R/W-0 FLTEN15 bit 15 R/W-0 FLTEN14 R/W-0 FLTEN13 R/W-0 FLTEN12 R/W-0 FLTEN11 R/W-0 FLTEN10 R/W-0 FLTEN9 R/W-0 FLTEN7 bit 7 R/W-0 FLTEN6 R/W-1 FLTEN5 R/W-1 FLTEN4 R/W-1 FLTEN3 R/W-1 FLTEN2 R/W-1 FLTEN1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 FLTENn: 使能过滤器 n 接收报文位 1 = 使能过滤器 n 0 = 禁止过滤器 n R/W-0 FLTEN8 bit 8 R/W-1 FLTEN0 bit 0 寄存器 20-12: CiBUFPNT1:ECAN 过滤器 0-3 缓冲器指针寄存器 R/W-0 bit 15 R/W-0 R/W-0 F3BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F2BP<3:0> R/W-0 bit 7 R/W-0 R/W-0 F1BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F0BP<3:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3-0 F3BP<3:0>:当满足过滤器 3 的过滤条件时写接收缓冲器的位 F2BP<3:0>:当满足过滤器 2 的过滤条件时写接收缓冲器的位 F1BP<3:0>:当满足过滤器 1 的过滤条件时写接收缓冲器的位 F0BP<3:0>:当满足过滤器 0 的过滤条件时写接收缓冲器的位 1111 = 满足过滤条件的数据被接收到接收 FIFO 缓冲器中 1110 = 满足过滤条件的数据被接收到接收缓冲器 14 中 .... 0001 = 满足过滤条件的数据被接收到接收缓冲器 1 中 0000 = 满足过滤条件的数据被接收到接收缓冲器 0 中 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第248 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-13: CiBUFPNT2:ECAN 过滤器 4-7 缓冲器指针寄存器 R/W-0 bit 15 R/W-0 R/W-0 F7BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F6BP<3:0> R/W-0 bit 7 R/W-0 R/W-0 F5BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F4BP<3:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3-0 F7BP<3:0>:当满足过滤器 7 的过滤条件时写接收缓冲器的位 F6BP<3:0>:当满足过滤器 6 的过滤条件时写接收缓冲器的位 F5BP<3:0>:当满足过滤器 5 的过滤条件时写接收缓冲器的位 F4BP<3:0>:当满足过滤器 4 的过滤条件时写接收缓冲器的位 R/W-0 bit 8 R/W-0 bit 0 寄存器 20-14: CiBUFPNT3:ECAN 过滤器 8-11 缓冲器指针寄存器 R/W-0 bit 15 R/W-0 R/W-0 F11BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F10BP<3:0> R/W-0 bit 7 R/W-0 R/W-0 F9BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F8BP<3:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3-0 F11BP<3:0>:当满足过滤器 11 的过滤条件时写接收缓冲器的位 F10BP<3:0>:当满足过滤器 10 的过滤条件时写接收缓冲器的位 F9BP<3:0>:当满足过滤器 9 的过滤条件时写接收缓冲器的位 F8BP<3:0>:当满足过滤器 8 的过滤条件时写接收缓冲器的位 R/W-0 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第249 页 dsPIC33F 寄存器 20-15: CiBUFPNT4:ECAN 过滤器 12-15 缓冲器指针寄存器 R/W-0 bit 15 R/W-0 R/W-0 F15BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F14BP<3:0> R/W-0 bit 7 R/W-0 R/W-0 F13BP<3:0> R/W-0 R/W-0 R/W-0 R/W-0 F12BP<3:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3-0 F15BP<3:0>:当满足过滤器 15 的过滤条件时写接收缓冲器的位 F14BP<3:0>:当满足过滤器 14 的过滤条件时写接收缓冲器的位 F13BP<3:0>:当满足过滤器 13 的过滤条件时写接收缓冲器的位 F12BP<3:0>:当满足过滤器 12 的过滤条件时写接收缓冲器的位 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第250 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-16: R/W-x SID10 bit 15 CiRXFnSID:ECAN 接收过滤器 n 标准标识符 (n = 0, 1, ..., 15) R/W-x SID9 R/W-x SID8 R/W-x SID7 R/W-x SID6 R/W-x SID5 R/W-x SID4 R/W-x R/W-x R/W-x U-0 R/W-x U-0 SID2 SID1 SID0 — EXIDE — bit 7 R/W-x EID17 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-5 bit 4 bit 3 bit 2 bit 1-0 SID<10:0>: 标准标识符位 1 = 报文地址位 SIDx 必须为 1 才能与过滤器匹配 0 = 报文地址位 SIDx 必须为 0 才能与过滤器匹配 未实现:读为 0 EXIDE: 扩展标识符使能位 如果 MIDE = 1 : 1 = 只与带有扩展标识符地址的报文匹配 0 = 只与带有标准标识符地址的报文匹配 如果 MIDE = 0 : 忽略 EXIDE 位。 未实现:读为 0 EID<17:16>:扩展标识符位 1 = 报文地址位 EIDx 必须为 1 才能与过滤器匹配 0 = 报文地址位 EIDx 必须为 0 才能与过滤器匹配 R/W-x SID3 bit 8 R/W-x EID16 bit 0 寄存器 20-17: R/W-x EID15 bit 15 CiRXFnEID:ECAN 接收过滤器 n 扩展标识符 (n = 0, 1, ..., 15) R/W-x EID14 R/W-x EID13 R/W-x EID12 R/W-x EID11 R/W-x EID10 R/W-x EID9 R/W-x EID7 bit 7 R/W-x EID6 R/W-x EID5 R/W-x EID4 R/W-x EID3 R/W-x EID2 R/W-x EID1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 EID<15:0>:扩展标识符位 1 = 报文地址位 EIDx 必须为 1 才能与过滤器匹配 0 = 报文地址位 EIDx 必须为 0 才能与过滤器匹配 R/W-x EID8 bit 8 R/W-x EID0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第251 页 dsPIC33F 寄存器 20-18: CiFMSKSEL1:ECAN 过滤器 7-0 屏蔽选择寄存器 R/W-0 R/W-0 F7MSK<1:0> bit 15 R/W-0 R/W-0 F6MSK<1:0> R/W-0 R/W-0 F5MSK<1:0> R/W-0 R/W-0 F4MSK<1:0> bit 8 R/W-0 R/W-0 F3MSK<1:0> bit 7 R/W-0 R/W-0 F2MSK<1:0> R/W-0 R/W-0 F1MSK<1:0> R/W-0 R/W-0 F0MSK<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-14 bit 13-12 bit 11-10 bit 9-8 bit 7-6 bit 5-4 bit 3-2 bit 1-0 F7MSK<1:0>:过滤器 7 的屏蔽器源位 F6MSK<1:0>:过滤器 6 的屏蔽器源位 F5MSK<1:0>:过滤器 5 的屏蔽器源位 F4MSK<1:0>:过滤器 4 的屏蔽器源位 F3MSK<1:0>:过滤器 3 的屏蔽器源位 F2MSK<1:0>:过滤器 2 的屏蔽器源位 F1MSK<1:0>:过滤器 1 的屏蔽器源位 F0MSK<1:0>:过滤器 0 的屏蔽器源位 11 = 无屏蔽 10 = 接收屏蔽寄存器 2 包含屏蔽值 01 = 接收屏蔽寄存器 1 包含屏蔽值 00 = 接收屏蔽寄存器 0 包含屏蔽值 DS70165D_CN 第252 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-19: CiRXMnSID:ECAN 接收过滤器屏蔽器 n 标准标识符 R/W-x SID10 bit 15 R/W-x SID9 R/W-x SID8 R/W-x SID7 R/W-x SID6 R/W-x SID5 R/W-x SID4 R/W-x R/W-x R/W-x U-0 R/W-x U-0 R/W-x SID2 SID1 SID0 — MIDE — EID17 bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-5 bit 4 bit 3 bit 2 bit 1-0 SID<10:0>: 标准标识符位 1 = 过滤器比较操作包含 SIDx 位 0 = 过滤器比较操作与 SIDx 位无关 未实现:读为 0 MIDE: 标识符接收模式位 1 = 只匹配与过滤器中 EXIDE 位对应的报文类型 (标准或扩展地址) 0 = 如果过滤器匹配则与标准或扩展地址报文匹配 (即,如果 (过滤器 SID = 报文 SID)或 (过滤器 SID/EID = 报文 SID/EID)) 未实现:读为 0 EID<17:16>:扩展标识符位 1 = 过滤器比较操作包含 EIDx 位 0 = 过滤器比较操作与 EIDx 位无关 R/W-x SID3 bit 8 R/W-x EID16 bit 0 寄存器 20-20: CiRXMnEID:ECAN 接收过滤器屏蔽器 n 扩展标识符 R/W-x EID15 bit 15 R/W-x EID14 R/W-x EID13 R/W-x EID12 R/W-x EID11 R/W-x EID10 R/W-x EID9 R/W-x EID7 bit 7 R/W-x EID6 R/W-x EID5 R/W-x EID4 R/W-x EID3 R/W-x EID2 R/W-x EID1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 EID<15:0>:扩展标识符位 1 = 过滤器比较操作包含 EIDx 位 0 = 过滤器比较操作与 EIDx 位无关 R/W-x EID8 bit 8 R/W-x EID0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第253 页 dsPIC33F 寄存器 20-21: CiRXFUL1:ECAN 接收缓冲器满寄存器 1 R/C-0 RXFUL15 bit 15 R/C-0 RXFUL14 R/C-0 RXFUL13 R/C-0 R/C-0 RXFUL12 RXFUL11 R/C-0 RXFUL10 R/C-0 RXFUL9 R/C-0 RXFUL7 bit 7 R/C-0 RXFUL6 R/C-0 RXFUL5 R/C-0 RXFUL4 R/C-0 RXFUL3 R/C-0 RXFUL2 R/C-0 RXFUL1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 RXFUL<15:0>:接收缓冲器 n 满位 1 = 缓冲器为满 (由模块置 1) 0 = 缓冲器为空 (由应用软件清零) R/C-0 RXFUL8 bit 8 R/C-0 RXFUL0 bit 0 寄存器 20-22: CiRXFUL2:ECAN 接收缓冲器满寄存器 2 R/C-0 RXFUL31 bit 15 R/C-0 RXFUL30 R/C-0 RXFUL29 R/C-0 R/C-0 RXFUL28 RXFUL27 R/C-0 RXFUL26 R/C-0 RXFUL25 R/C-0 RXFUL24 bit 8 R/C-0 RXFUL23 bit 7 R/C-0 RXFUL22 R/C-0 RXFUL21 R/C-0 R/C-0 RXFUL20 RXFUL19 R/C-0 RXFUL18 R/C-0 RXFUL17 R/C-0 RXFUL16 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 RXFUL<31:16>:接收缓冲器 n 满位 1 = 缓冲器为满 (由模块置 1) 0 = 缓冲器为空 (由应用软件清零) DS70165D_CN 第254 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-23: CiRXOVF1:ECAN 接收缓冲器溢出寄存器 1 R/C-0 RXOVF15 bit 15 R/C-0 RXOVF14 R/C-0 R/C-0 R/C-0 RXOVF13 RXOVF12 RXOVF11 R/C-0 RXOVF10 R/C-0 RXOVF9 R/C-0 RXOVF8 bit 8 R/C-0 RXOVF7 bit 7 R/C-0 RXOVF6 R/C-0 RXOVF5 R/C-0 RXOVF4 R/C-0 RXOVF3 R/C-0 RXOVF2 R/C-0 RXOVF1 R/C-0 RXOVF0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 RXOVF<15:0>:接收缓冲器 n 溢出位 1 = 模块对一个已满的缓冲器执行了写操作 (由模块置 1) 0 = 溢出条件被清除 (由应用软件清零) 寄存器 20-24: CiRXOVF2:ECAN 接收缓冲器溢出寄存器 2 R/C-0 RXOVF31 bit 15 R/C-0 RXOVF30 R/C-0 R/C-0 R/C-0 RXOVF29 RXOVF28 RXOVF27 R/C-0 RXOVF26 R/C-0 RXOVF25 R/C-0 RXOVF24 bit 8 R/C-0 RXOVF23 bit 7 R/C-0 RXOVF22 R/C-0 R/C-0 R/C-0 RXOVF21 RXOVF20 RXOVF19 R/C-0 RXOVF18 R/C-0 RXOVF17 R/C-0 RXOVF16 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 RXOVF<31:16>:接收缓冲器 n 溢出位 1 = 模块对一个已满的缓冲器执行了写操作 (由模块置 1) 0 = 溢出条件被清除 (由应用软件清零)  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第255 页 dsPIC33F 寄存器 20-25: CiTRmnCON:ECAN 发送 / 接收缓冲器 m 控制寄存器 (m = 0,2,4,6 ; n = 1,3,5,7) R/W-0 TXENn bit 15 R-0 TXABTn R-0 TXLARBn R-0 TXERRn R/W-0 TXREQn R/W-0 RTRENn R/W-0 R/W-0 TXnPRI<1:0> bit 8 R/W-0 TXENm bit 7 R-0 R-0 R-0 R/W-0 TXABTm(1) TXLARBm(1) TXERRm(1) TXREQm R/W-0 RTRENm R/W-0 R/W-0 TXmPRI<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1-0 参见控制缓冲器 n 中 bit 7-0 的定义 TXENm:发送 / 接收缓冲器选择位 1 = 缓冲器 TRBn 是发送缓冲器 0 = 缓冲器 TRBn 是接收缓冲器 TXABTm:报文中止位 (1) 1 = 中止报文 0 = 成功完成报文发送 TXLARBm:报文仲裁失败位 (1) 1 = 报文在发送过程中仲裁失败 0 = 报文在发送过程中没有仲裁失败 TXERRm:在发送过程中检测到错误位 (1) 1 = 报文发送时发生总线错误 0 = 报文发送时未发生总线错误 TXREQm:报文发送请求位 将该位置 1 请求发送报文。当报文发送成功后,此位会自动清零。在该位置 1 的情况下清零该位 (= 0)将请求中止报文。 RTRENm:自动远程发送使能位 1 = 当接收到远程发送时,将 TXREQ 置 1 0 = 当接收到远程发送时, TXREQ 不受影响 TXmPRI<1:0>:报文发送优先级位 11 = 最高报文优先级 10 = 中高报文优先级 01 = 中低报文优先级 00 = 最低报文优先级 注 1: 当 TXREQ 置 1 时可将此位清零。 DS70165D_CN 第256 页 初稿  2007 Microchip Technology Inc. dsPIC33F 注: 缓冲器、 SID、 EID、 DLC、数据字段和接收状态寄存器位于 DMA RAM 中。 寄存器 20-26: U-0 — bit 15 CiTRBnSID:ECAN 缓冲器 n 标准标识符 (n = 0, 1, ..., 31) U-0 U-0 R/W-x R/W-x R/W-x R/W-x — — SID10 SID9 SID8 SID7 R/W-x SID5 bit 7 R/W-x SID4 R/W-x SID3 R/W-x SID2 R/W-x SID1 R/W-x SID0 R/W-x SRR 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-13 bit 12-2 bit 1 bit 0 未实现:读为 0 SID<10:0>: 标准标识符位 SRR: 替代远程请求位 1 = 报文将请求远程发送 0 = 正常报文 IDE: 扩展标识符位 1 = 报文将发送扩展标识符 0 = 报文将发送标准标识符 R/W-x SID6 bit 8 R/W-x IDE bit 0 寄存器 20-27: U-0 — bit 15 CiTRBnEID:ECAN 缓冲器 n 扩展标识符 (n = 0, 1, ..., 31) U-0 U-0 U-0 R/W-x R/W-x R/W-x — — — EID17 EID16 EID15 R/W-x EID13 bit 7 R/W-x EID12 R/W-x EID11 R/W-x EID10 R/W-x EID9 R/W-x EID8 R/W-x EID7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-0 未实现:读为 0 EID<17:6>:扩展标识符位 R/W-x EID14 bit 8 R/W-x EID6 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第257 页 dsPIC33F 寄存器 20-28: CiTRBnDLC:ECAN 缓冲器 n 数据长度控制 (n = 0, 1, ..., 31) R/W-x EID5 bit 15 R/W-x EID4 R/W-x EID3 R/W-x EID2 R/W-x EID1 R/W-x EID0 R/W-x RTR U-0 — bit 7 U-0 U-0 R/W-x R/W-x R/W-x R/W-x — — RB0 DLC3 DLC2 DLC1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-10 bit 9 bit 8 bit 7-5 bit 4 bit 3-0 EID<5:0>:扩展标识符位 RTR: 远程发送请求位 1 = 报文将请求远程发送 0 = 正常报文 RB1:保留的 Bit 1 用户必须按 CAN 协议将该位设置为 0。 未实现:读为 0 RB0: 保留的 Bit 0 用户必须按 CAN 协议将该位设置为 0。 DLC<3:0>: 数据长度编码位 R/W-x RB1 bit 8 R/W-x DLC0 bit 0 寄存器 20-29: CiTRBnDm:ECAN 缓冲器 n 数据字段字节 m (n = 0, 1, ..., 31 ; m = 0, 1, ..., 7) (1) R/W-x TRBnDm7 bit 7 R/W-x TRBnDm6 R/W-x TRBnDm5 R/W-x R/W-x TRBnDm4 TRBnDm3 R/W-x TRBnDm2 R/W-x TRBnDm1 R/W-x TRBnDm0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 7-0 TRnDm<7:0>:数据字段缓冲器 n 字节 m 位 注 1: 最高字节包含缓冲器的 (m + 1) 字节。 DS70165D_CN 第258 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 20-30: U-0 — bit 15 CiTRBnSTAT:ECAN 接收缓冲器 n 状态寄存器 (n = 0, 1, ..., 31) U-0 U-0 R/W-x R/W-x R/W-x R/W-x — — FILHIT4 FILHIT3 FILHIT2 FILHIT1 R/W-x FILHIT0 bit 8 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — bit 7 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-13 bit 12-8 bit 7-0 未实现:读为 0 FILHIT<4:0>:选中的过滤器编码位 (模块只能针对接收缓冲器执行写操作,不用于发送缓冲器) 对导致写入此缓冲器的过滤器的编号进行编码。 未实现:读为 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第259 页 dsPIC33F 注: DS70165D_CN 第260 页 初稿  2007 Microchip Technology Inc. 21.0 数据转换器接口 (DCI)模块 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 21.1 模块简介 dsPIC33F 数据转换器接口(Data Converter Interface, DCI)模块允许与如下器件的简单接口:音频编码器 / 解 码器(编解码器,Codec)、A/D 转换器和 D/A 转换器。 支持以下接口: • 帧同步串行传输 (单通道或多通道) • Inter-IC Sound (I2S)接口 • AC-Link 兼容模式 DCI 模块提供下列通用特性: • 可设置的字长度,最大为 16 位 • 支持最大 16 个时隙,帧最长为 256 位 • 为最多 4 次采样缓冲数据,无 CPU 开销 21.2 模块 I/O 引脚 有四个 I/O 引脚与 DCI 模块相关。当使能时,模块控制 这四个引脚的数据方向。 21.2.1 CSCK 引脚 CSCK 引脚为 DCI 模块提供串行时钟。使用 DCICON1 SFR 中的 CSCKD 控制位,可以将 CSCK 引脚配置为 输入或输出。当配置为输出时,由 dsPIC33F 提供串行 时钟。 当配置为输入时,则必须由外部器件提供串行时 钟。 21.2.2 CSDO 引脚 当模块使能时,串行数据输出 (CSDO)引脚被配置为 只能输出的引脚。只要发送数据,CSDO 引脚就会驱动 串行总线。 在不发送数据的 CSCK 周期内 CSDO 引脚 根据 CSDOM 控制位的状态处于三态或驱动为 0。这 样,其他器件就能在 DCI 模块不使用的发送周期内,把 数据放置到串行总线上去。 dsPIC33F 21.2.3 CSDI 引脚 当模块使能时,串行数据输入 (CSDI)引脚被配置为 只能输入的引脚。 21.2.3.1 COFS 引脚 编解码器帧同步 (COFS)引脚用于同步发生在 CSDO 和 CSDI 引脚上的数据传输。COFS 引脚可以配置为输 入或输出引脚。DCICON1 寄存器中的 COFSD 控制位 控制 COFS 引脚的数据方向。 当 CPU 在访问存储器映射的缓冲寄存器时, DCI 模块 访问影子寄存器。 21.2.4 缓冲器数据对齐 数据值在缓冲器中总是以左对齐方式存储,因为大多数 编解码器数据是用有符号二进制补码小数表示的。如果 接收到的字长度小于 16 位,则接收缓冲寄存器中未使 用的低位会被模块置为 0。如果发送字长小于 16 位,模 块将忽略发送缓冲寄存器中未使用的低位。本文档的后 续小节将说明字长的设置。 21.2.5 发送 / 接收移位寄存器 DCI 模块具备一个 16 位移位寄存器,用来把串行数据 移入和移出模块。数据首先移入 / 移出移位寄存器的 MSb,因为音频 PCM 数据是以有符号二进制补码格式 发送的。 21.2.6 DCI 缓冲器控制 DCI 模块包含一个缓冲器控制单元,用于在影子缓冲存 储区和串行移位寄存器间传输数据。缓冲器控制单元是 一个简单的 2 位地址计数器,指向影子缓冲存储器中的 字存储单元。对于接收存储空间(DCI 缓冲存储器的高 地址部分),地址计数器的值与一个为 0 的 MSb 位连在 一起形成一个 3 位宽的地址。对于发送存储空间 (DCI 缓冲存储区的高地址部分),地址计数器的值与一个为 1 的 MSb 位相连。 注: DCI 缓冲器控制单元始终访问发送和接收 缓冲器中相对地址相同的单元,所以模块 只提供了一个地址计数器。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 261 页 dsPIC33F 图 21-1: DCI 模块框图 16 位数据总线 FOSC/4 字长选择位 帧长选择位 DCI 模式选择位 接收缓冲寄存器 (有影子寄存器) 发送缓冲寄存器 (有影子寄存器) BCG 控制位 采样速率 发生器 帧同步 发生器 SCKD FSD DCI 缓冲器 控制单元 15 0 DCI 移位寄存器 CSCK COFS CSDI CSDO DS70165D_CN 第 262 页 初稿  2007 Microchip Technology Inc. dsPIC33F 21.3 DCI 模块的工作 21.3.1 模块使能 通过将 DCICON1 SFR 的 DCIEN 控制位置 1 或清零可 以使能或禁止 DCI 模块。将 DCIEN 控制位清零将复位 模块。 尤其是,与 CSCK 发生、帧同步和 DCI 缓冲器 控制单元相关的所有计数器都将复位。 当 DCIEN 位清零时, DCI 时钟关闭。 当 DCI 使能时,它控制与模块相关的四个 I/O 引脚的数 据方向。当 DCIEN 位置 1 时,这些 I/O 引脚的 PORT、 LAT 和 TRIS 寄存器的值都会被 DCI 模块改写。 当使能了位时钟发生器时,单独改写 CSCK 引脚的上述 寄存器值也是允许的。这可以无需使能 DCI 模块的其余 部分,就能让位时钟发生器工作。 21.3.2 字长选择位 DCICON2 SFR 中的 WS<3:0> 字长选择位决定每个 DCI 数据字的位数。本质上, WS<3:0> 位决定 4 位计数器 的计数周期 (计数器时钟来自 CSCK 信号)。 可以选择任何长度的数据字长,字长最大 16 位。装入 到 WS<3:0> 位中的值,要比期望的字长小 1。例如,如 果 WS<3:0> = 1111,则选择 16 位数据字长。 注: WS<3:0> 控制位仅用在多通道和 I2S 模式 中。这些位对 AC-Link 模式没有影响,因为 该协议规定数据间隙的大小固定不变。 21.3.3 帧同步发生器 帧同步发生器 (COFSG)是一个 4 位计数器,它设置 数据字中的帧长度。 每次字长计数器复位时,帧同步发 生器就递增一次(见第 21.3.2 节 “字长选择位”)。通 过写 DCICON2 SFR 中的 COFSG<3:0> 控制位,来设 置帧同步发生器的周期。以时钟周期表示的 COFSG 周 期由以下公式决定: 公式 21-1: COFSG 周期 帧长 = 字长 •(FSG 值 + 1) 可以选择的帧长度最大为 16 个数据字。以 CSCK 周期 表示的帧长度会随选择的字长而变化,最大可以为 256。 注: COFSG 控制位在 AC-Link 模式中不起作 用,因为该协议已经将帧长度设置为 256 个 CSCK 周期。 21.3.4 帧同步模式控制位 使用 DCICON1 SFR 内的帧同步模式控 制位 (COFSM<1:0>) ,来选择帧同步信号类型。可选择以 下工作模式: • 多通道模式 • I2S 模式 • AC-Link 模式 (16 位) • AC-Link 模式 (20 位) COFSM 控制位的操作,取决于 DCI 模块是作为主器件 产生帧同步信号,还是作为从器件接收帧同步信号。 DSP/ 编解码器对中的主器件,是产生帧同步信号的器 件。帧同步信号启动 CSDI 和 CSDO 引脚上的数据传 输,通常与数据采样速率 (COFS)具有相同的频率。 如果 COFSD 控制位清零, DCI 模块是帧同步主器件, 如果 COFSD 控制位置 1,则 DCI 模块为帧同步从器件。 21.3.5 主器件帧同步操作 当 DCI 模块作为帧同步主器件(COFSD = 0)工作时, COFSM 模式位决定帧同步脉冲的类型;帧同步脉冲由 帧同步发生器逻辑产生。 当帧同步发生器复位至 0 时,将产生新的 COFS 信号。 在 多 通道 模 式 下,帧 同步 脉 冲被 驱动 为 高 电 平一 个 CSCK 周期,从而启动数据传输。相继帧同步脉冲之间 的 CSCK 周期数,取决于字长和帧同步发生器控制位。 多通道模式下帧同步信号的时序图如图 21-2 所示。 在 AC-Link 工作模式下,帧同步信号有固定的周期和占 空比。 AC-Link 帧同步信号维持 16 个 CSCK 周期的高 电平和 240 个 CSCK 周期的低电平。图 21-3 给出了时 序图和 AC-Link 帧起始的时序细节。 在 I2S 模式下,产生占空比为 50% 的帧同步信号。 I2S 帧同步信号的周期 (表示为多少 CSCK 周期)由字长 和帧同步发生器控制位决定。COFS 引脚上电平从高至 低或从低至高的跳变沿,标记出了新 I2S 数据传输的边 界。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 263 页 dsPIC33F 21.3.6 从器件帧同步操作 当 DCI 模块作为帧同步从器件(COFSD = 1)工作时, 数据传输由与 DCI 模块相连的编解码器控制。 COFSM 控制位控制 DCI 模块如何响应进入的 COFS 信号。 在多通道模式下,在 COFS 引脚采样到高电平一个 CSCK 周期后,将会开始新的数据帧传输(见图 21-2)。 COFS 引脚上的脉冲会复位帧同步发生器逻辑。 在 I2S 模式下,在 COFS 引脚上采样到从低到高或从高 到低的电平跳变一个 CSCK 周期后,会传输新的数据 字。COFS 引脚的上升或下降沿将复位帧同步发生器逻 辑。 图 21-2: 帧同步时序,多通道模式 CSCK COFS CSDI/CSDO MSb 在 AC-Link 模式下,在 COFS 引脚采样到高电平一个 CSCK 周期后,将传输下一个帧的标记间隙和接下来的 数据间隙。 当模块工作在从模式时,必须配置 COFSG 和 WS 位, 提供恰当的帧长度。一旦模块在 COFS 引脚上采样到了 有效的帧同步脉冲,就会发生一个完整的数据帧传输。 在当前数据帧传输完成之前模块都不会响应其他帧同步 脉冲。 LSb 图 21-3: 帧同步时序, AC-LINK 帧起始 BIT_CLK CSDO 或 CSDI SYNC S12 S12 S12 标记 标记 标记 bit 2 bit 1 LSb MSb bit 14 bit 13 图 21-4: I2S 接口帧同步时序 CSCK CSDI 或 CSDO MSb LSb MSb LSb WS 注: 为便于说明,此处显示了 5 位传输。 I2S 协议没有规定字长,字长取决于系统。 DS70165D_CN 第 264 页 初稿  2007 Microchip Technology Inc. dsPIC33F 21.3.7 位时钟发生器 DCI 模块有一个专用的 12 位时基,用来产生位时钟。通 过 写 一 个 非 零 的 12 位 值 到 DCICON3 SFR 中的 BCG<11:0> 控制位,设置位时钟的速率 (周期)。 当 BCG<11:0> 位设置为零时,位时钟将禁止。如果把 BCG<11:0> 设置成非零值,位时钟发生器被使能。如果 DCI 的串行时钟来自外部器件,这些位应该被设置为 0, 且 CSCKD 位应设置为 1。 公式 21-2 给出了位时钟频率的计算公式。 公式 21-2: 位时钟频率 FBCK = FCY 2 • (BCG + 1) 所需的位时钟频率将取决于系统采样速率和帧大小。根 据数据转换器和使用的通信协议,典型的位时钟频率范 围在 16 倍到 512 倍转换器采样速率之间。 为了获得与常见音频采样速率相关的位时钟频率,用户 需要选择的晶振频率应该是 “偶数”二进制值。表 21-1 列出了这类晶振频率的示例。 表 21-1: 用于常见编解码器 CSCK 频率的器件频率 FS (kHz) FCSCK/FS FCSCK (MHz) (1) FOSC (MHZ) PLL FCY (MIPS) BCG(2) 8 256 2.048 8.192 4 8.192 1 12 256 3.072 6.144 8 12.288 1 32 32 1.024 8.192 8 16.384 7 44.1 32 1.4112 5.6448 8 11.2896 3 48 64 3.072 6.144 16 24.576 3 注 1: 当 CSCK 信号来自外部 (CSCKD = 1)时,外部时钟的高电平和低电平时间必须符合器件时序要求。 2: 当 CSCK 信号来自外部 (CSCKD = 1)时, BCG<11:0> 位对 DCI 模块的工作不产生影响。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 265 页 dsPIC33F 21.3.8 采样时钟边沿控制位 采样时钟沿 (CSCKE)控制位决定 CSCK 信号的采样 沿。如果 CSCKE 位清零 (默认),将在 CSCK 信号的 下降沿采样数据。 AC-Link 协议和大部分多通道格式要 求在 CSCK 信号的下降沿采样数据。 如果 CSCK 位置 1,将在 CSCK 的上升沿采样数据。 I2S 协议要求在 CSCK 信号的上升沿采样数据。 21.3.9 数据对齐控制位 在大多数应用中,当 COFS 信号采样为高电平时,将在 一个 CSCK 周期后开始数据传输。这是 DCI 模块的默认 配置。通过将 DCICON1 SFR 中的 DJST 控制位置 1 可 以选择另一种数据对齐方式。 当 DJST = 1 时,如果 COFS 信号采样为高,将在当前 CSCK 周期中开始数据 传输。 21.3.10 发送时隙使能位 TSCON SFR 具有的控制位可用于使能最多 16 个发送 时隙。 这些控制位是 TSE<15:0> 位。每个时隙的大小 由 WS<3:0> 字长选择位决定,最大可以为 16 位。 如果通过一个 TSE 位 (TSEx = 1)使能发送时隙,当 前发送影子缓冲器单元中的内容就会被装入 DCI 移位寄 存器,同时 DCI 缓冲器控制单元将递增,指向下一个单 元。 在未用的发送时隙中,CSDO 引脚将驱动为 0,或者在 所有被禁止的时隙中呈现三态,这取决于 DCICON1 SFR 中 CSDOM 位的状态。 数据帧长度 (按位计),由所选的数据字长、帧中数据 字的个数决定。如果帧中数据字的个数少于 16,则多出 的时隙使能位没有作用。 每个发送数据字以左对齐的方式写入 16 位发送缓冲器 中。 如果所选字长小于 16 位,发送缓冲存储区的低位 对发送数据没有作用。用户应该向每个发送缓冲器单元 中未使用的低位写入 0。 21.3.11 接收时隙使能位 RSCON SFR 具有的控制位可用于使能最多 16 个接收 时隙。这些控制位为 RSE<15:0> 位。每个接收时隙的 大小由 WS<3:0> 字长选择位决定,大小可以从 1 位到 16 位。 如果通过某个 RSE 位 (RSEx = 1)使能了接收时隙, DCI 移位寄存器的内容将被写入当前 DCI 接收影子缓冲 单元中,同时缓冲器控制单元将递增以指向下一个缓冲 单元。 如果所选的字长小于 16 位,数据在接收存储器缓冲单 元中不被打包。每个接收时隙数据字都存储在一个单独 的 16 位缓冲单元中。数据总是以左对齐的格式存储在 接收存储缓冲器中。 21.3.12 帧同步时时隙使能位的操作 TSE 和 RSE 控制位与 DCI 帧同步发生器协同工作。在 主模式下,一旦帧同步发生器复位,就将产生 COFS 信 号。在从模式下,一旦接收到 COFS 脉冲,帧同步发生 器就将复位。 TSE 和 RSE 控制位允许使能最多 16 个连续的发送或接 收时隙。在最后一个使能的时隙发送 / 接收之后, DCI 模块将停止缓冲数据,直到下一次 COFS 脉冲产生。 21.3.13 同步数据传输 一旦使能了给定的发送或接收时隙,DCI 缓冲器控制单 元将递增一个字单元。 大多数情况下,数据输入和输出 传输是同步的,这就是说,对于给定通道,数据采样的 接收与发送是同时进行的。于是,当产生 DCI 中断时, 发送和接收缓冲器中将装入相同数量的数据。 在一些情况下,一个数据帧内发送、接收的数据量可能 不相等。 例如,假设使用的是双字数据帧。 此外,假设 仅在 slot #0 中接收数据,但在 slot #0 和 slot #1 中发送 数据。在这种情况下,在数据帧传输过程中,缓冲器控 制单元计数器将递增两次,但只有一个接收寄存器单元 将装入数据。 DS70165D_CN 第 266 页 初稿  2007 Microchip Technology Inc. 21.3.14 缓冲器长度控制 两次中断之间缓冲的数据量,由 DCICON2 SFR 中的缓 冲器长度 (BLEN<1:0>)控制位决定。使用 BLEN 控 制位,可以设置发送和接收缓冲器的长度为 1 至 4 个数 据字。BLEN 控制位将与 DCI 缓冲器控制单元地址计数 器的当前值进行比较。当 DCI 地址计数器的最低两位与 BLEN<1:0> 的值匹配时,缓冲器控制单元将复位为 0。 此外,接收影子寄存器的内容将传送到接收缓冲寄存器 中,发送缓冲寄存器的内容将传送到发送影子寄存器 中。 注 1: DCI 能触发 DMA 数据传输。如果选择 DCI 作为 DMA 中断请求源,那么由于 DCI 发 送或接收导致 DCIIF 位置 1 时,将开始 DMA 传输。 2: 如果需要 DMA 传输,DCI 发送 / 接收缓冲 器必 须 设 置 为 1 个 字 的 大 小 (即 BLEN<1:0> = 00)。 21.3.15 缓冲器与数据帧对齐 AGU 地址指针位置与数据帧边界之间没有直接的对应 关系。 这意味着,每个发送和接收缓冲器存在隐含的分 配,这与 BLEN 控制位和使能的时隙数量(使能的时隙 数量通过 TSE 和 RSE 控制位来设置)有关。 例如,假设选择了 4 字长的数据帧,我们打算在帧中的 全部四个时隙都进行发送。通过设置 TSCON SFR 中的 TSE0、 TSE1、 TSE2 和 TSE3 控制位,可以得到这个 配置。这样设置好模块后,TXBUF0 寄存器很自然地就 会被分配给 slot #0,TXBUF1 寄存器很自然地就会被分 配给 slot #1,依此类推。 注: 如果在一个数据帧中,有多于 4 个时隙有 效,用户代码必须跟踪在每次中断时读 / 写 的时隙。在一些情况下,发送 / 接收缓冲器 与对应时隙分配之间的对齐关系可能会丢 失。 仿真断点或硬件陷阱就是这样的例 子。 在这些情况下,用户应该查询 SLOT 状态位,决定在缓冲寄存器中装入什么数 据,从而使软件与 DCI 模块重新同步。 dsPIC33F 21.3.16 发送状态位 在特殊功能寄存器 DCISTAT 中有两个发送状态位。 当发送缓冲寄存器内容被传送到发送影子寄存器中时, TMPTY 位置 1。可以用软件查询 TMPTY 位以确定发送 缓冲寄存器被写入的时间。如果对四个发送缓冲器之一 进行了写入,硬件将自动清零 TMPTY 位。 TUNF 位是只读的,它表明:正在使用的发送缓冲寄存 器中至少有一个发生了下溢。发送缓冲寄存器的内容被 传送到发送影子寄存器时,TUNF 位就将置 1。当 CPU 对下溢的缓冲寄存器进行了写入时,将自动清零 TUNF 状态位。 注: 发送状态位,仅用来指明模块所使用的缓 冲单元的状态。例如,如果设置的缓冲器 长度小于四个字,则未使用的缓冲单元将 不会影响发送状态位。 21.3.17 接收状态位 在特殊功能寄存器 DCISTAT 中有两个接收状态位。 RFUL 状态位是只读的,它表明在接收缓冲器中是否有 新数据。在 CPU 读取正在使用的全部接收缓冲器后, RFUL 位自动清零。 ROV 状态位是只读的,它表明:接收缓冲单元中至少有 一个产生了接收溢出。如果在新数据从影子寄存器送到 缓冲器单元之前,CPU 没有读取缓冲单元,就将产生接 收溢出。如果CPU读取了造成溢出的缓冲寄存器,ROV 状态位将自动清零。 对于特定的缓冲单元,当发生接收溢出时,缓冲器中的 原有内容将被改写。 注: 接收状态位仅用来指明模块所使用的缓冲 单元的状态。例如,如果设置的缓冲器长 度小于四个字,则未使用的缓冲单元将不 会影响接收状态位。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 267 页 dsPIC33F 21.3.18 SLOT 状态位 DCISTAT SFR 中的 SLOT<3:0> 状态位,指明当前有效 时隙。 这些位与帧同步发生器的计数器值相对应。当产 生 DCI 中断时,用户可以在软件中查询这些状态位,从 而确定哪个时隙数据是最后接收到的以及哪个时隙数据 应该被装入 TXBUF 寄存器。 21.3.19 CSDO 模式位 CSDOM 控制位控制 CSDO 引脚在未使用发送时隙中的 状态。 如果某个发送时隙在 TSCON SFR 中相应的 TSEx 位被清零,此发送时隙就是未使用的。 如果 CSDOM 位被清零 (默认),在未使用时隙周期 中,CSDO 引脚将为低电平。此模式用在仅有两个器件 连接到串行总线时。 如果 CSDOM 位置 1,CSDO 引脚在未使用的时隙周期 中将呈现三态。 在多通道应用中,此模式允许多个器件 共用同一根 CSDO 线。 此时应将 CSDO 线上的每个器 件配置为只在特定时隙内发送数据。不允许有两个器件 在同一时隙发送数据。 21.3.20 数字环回模式 通过将 DCICON1 SFR 中的 DLOOP 控制位置 1 使能数 字环回模式。当 DLOOP 位置 1 时,模块将在内部将 CSDO 信号连入 CSDI 引脚。在数字环回模式中将忽略 CSDI I/O 引脚上实际输入的数据。 21.3.21 下溢模式控制位 当发 生 下 溢 时,根 据 DCICON1 SFR 中 下 溢 模式 (UNFM)控制位的状态,模块会执行两种操作之一。 如果 UNFM 位清零(默认),在缓冲器单元有效时隙期 间,模块将在 CSDO 引脚上发送 0。在此工作模式中, 连接到 DCI 模块的编解码器件将仅输入数字 “静音”。 如果 UNFM 控制位置 1,模块将发送上一次写入缓冲单 元的数据。该工作模式允许用户发送连续的数据到编解 码器件,而不需 CPU 开销。 21.4 DCI 模块中断 DCI 模块中断的频率取决于 DCICON2 特殊功能寄存器 中的 BLEN<1:0> 控制位。每当达到设定的缓冲器长度 且发生影子寄存器数据传送时,就会产生中断传递给 CPU。影子寄存器传送的定义是:上一次写入 TXBUF 的值被传送至发送影子寄存器,而接收影子寄存器中新 接收的值被传送至 RXBUF 寄存器。 21.5 CPU 休眠和空闲模式期间 DCI 模块 的工作 21.5.1 CPU 休眠期间 DCI 模块的工作 当 CSCK 信号由外部器件提供(CSCKD = 1)时,DCI 模块在 CPU 处于休眠模式时能够工作并能唤醒 CPU。 当 DCI 缓冲器传送完成且 CPU 处于休眠模式时, DCI 模块将产生一个异步中断。 21.5.2 CPU 空闲期间 DCI 模块的操作 如果 DCISIDL 控制位清零(默认),则模块将在空闲模 式下继续正常工作。如果 DCISIDL 位置 1,当 CPU 进 入空闲模式时,模块将停止工作。 21.6 AC-Link 模式操作 AC-Link 协议数据帧是 256 位的,它可以被分成一个 16 位的数据时隙和其后的 12 个 20 位的数据时隙。DCI 模 块有两个针对AC-Link协议的工作模式。使用DCICON1 特殊功能寄存器中的 COFSM<1:0> 控制位来选择这两 个工作模式。第一种 AC-Link 模式称为“16 位 AC-Link 模式”并通过设置 COFSM<1:0> = 10 选定。第二种 ACLink 模式称为 “20 位 AC-Link 模式”并通过设置 COFSM<1:0> = 11 选定。 21.6.1 16 位 AC-LINK 模式 在 16 位 AC-Link 模式下,数据字长度被限制为 16 位。 注意此限制仅影响 AC-Link 协议的 20 位数据时隙。对 于接收时隙,输入数据将被简单地截取为 16 位。对于 输出时隙,模块将数据字的最低 4 位设置为 0。时隙的 这种截取,使得 ADC 和 DAC 数据被限制为 16 位,但 允许 TXBUF 和 RXBUF 寄存器中恰当的数据对齐。每 个 RXBUF 和 TXBUF 寄存器都将存放一个数据时隙值。 DS70165D_CN 第 268 页 初稿  2007 Microchip Technology Inc. 21.6.2 20 位 AC-LINK 模式 20 位 AC-Link 模式允许发送和接收数据时隙中的所有 位,但不会保持 TXBUF 和 RXBUF 寄存器中的数据对 齐。 除了帧同步信号的占空比不同之外,20 位 AC-Link 模式 的工作方式类似于 DCI 模块的多通道模式。AC-Link 帧 同步信号应该保持 16 个 CSCK 周期的高电平并在接着 的 240 个时钟周期内保持低电平。 20 位模式把每个 256 位的 AC-Link 帧当作 16 个 16 位 时 隙 处 理。在 20 位 AC-Link 模 式 下,该 模 块像在 COFSG<3:0> = 1111 且 WS<3:0> = 1111 的条件下工 作。 20 位数据间隙的数据对齐无效。 例如,通过将 TSCON 和 RSCON SFR 中的所有位置 1,整个 AC-Link 数据帧能够以打包的方式发送和接收。由于可用缓冲器 的总长度为 64 位,所以传输该 AC-Link 帧需要经过四 次连续的中断。应用软件必须跟踪当前 AC-Link 帧段。 21.7 I2S 模式的操作 通过将值 01 写入 DCICON1 SFR 中的 COFSM<1:0> 控制位,将 DCI 模块配置为 I2S 模式。在 I2S 模式下工 作时,DCI 模块将产生占空比为 50%的帧同步信号。帧 同步信号的每个边沿都将标记着一个新数据字传输的边 界。 用户必须使用 DCICON2 SFR 中的 COFSG 和 WS 控制 位选择帧长度和数据字长度。 dsPIC33F 21.7.1 I2S 帧和数据字长度选择 设置 WS 和 COFSG 控制位,以便产生与 I2S 数据帧长 度的一半相等的周期。即帧长是左对齐或右对齐数据字 传输所需要的总的 CSCK 周期数。 必须设置 BLEN 位,从而得到所需的缓冲器长度。设置 BLEN<1:0> = 01 将产生 CPU 中断,每 I2S 帧产生一次 中断。 21.7.2 I2S 数据对齐 根据 I2S 规范,在默认情况下,将在 WS 信号跳变后过 一个 CSCK 周期开始数据字的传输。可以使用 DCICON2 SFR 中的 DJST 控制位选择“最高有效位左 对齐”选项。 如果 DJST = 1,则 I2S 数据传输为最高有效位左对齐。 数据字的最高有效位将在同一个 CSCK 周期内作为 COFS 信号的上升沿或下降沿出现在 CSDO 引脚上。在 发送完数据字后, CSDO 引脚处于三态。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 269 页 dsPIC33F 寄存器 21-1: R/W-0 DCIEN bit 15 DCICON1:DCI 控制寄存器 1 U-0 R/W-0 U-0 - DCISIDL - R/W-0 DLOOP R/W-0 CSCKD R/W-0 CSCKE R/W-0 COFSD bit 8 R/W-0 R/W-0 R/W-0 U-0 U-0 UNFM CSDOM DJST - - bit 7 U-0 R/W-0 R/W-0 - COFSM<1:0> bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4-2 bit 1-0 DCIEN:DCI 模块使能位 1 = 使能模块 0 = 禁止模块 保留:读为 0 DCISIDL:DCI 在空闲时停止控制位 1 = 模块在 CPU 空闲模式下将停止工作 0 = 模块在 CPU 空闲模式下将继续工作 保留:读为 0 DLOOP:数字环回模式控制位 1 = 使能数字环回模式, CSDI 和 CSDO 引脚在内部连接在一起。 0 = 禁止数字环回模式 CSCKD:采样时钟方向控制位 1 = 当 DCI 模块使能时, CSCK 是输入引脚 0 = 当 DCI 模块使能时, CSCK 是输出引脚 CSCKE:采样时钟边沿控制位 1 = 在串行时钟下降沿改变数据,在串行时钟上升沿采样数据。 0 = 在串行时钟上升沿改变数据,在串行时钟下降沿采样数据。 COFSD:帧同步方向控制位 1 = 当 DCI 模块使能时, COFS 是输入引脚 0 = 当 DCI 模块使能时, COFS 是输出引脚 UNFM:下溢模式位 1 = 在发送下溢时,发送最后写入发送寄存器的值 0 = 在发送下溢时,发送 “0” CSDOM:串行数据输出模式位 1 = 当发送时隙被禁止时, CSDO 引脚为三态 0 = 在发送时隙被禁止时, CSDO 引脚驱动为 0 DJST:DCI 数据对齐控制位 1 = 在与帧同步脉冲相同的串行时钟周期内开始发送 / 接收数据 0 = 在帧同步脉冲的后一个串行时钟周期开始发送 / 接收数据 保留:读为 0 COFSM<1:0>:帧同步模式位 11 = 20 位 AC-Link 模式 10 = 16 位 AC-Link 模式 01 = I2S 帧同步模式 00 = 多通道帧同步模式 DS70165D_CN 第 270 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 21-2: DCICON2:DCI 控制寄存器 2 U-0 - bit 15 U-0 U-0 U-0 R/W-0 R/W-0 U-0 - - - BLEN<1:0> - R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 COFSG<2:0> - WS<3:0> bit 7 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-10 bit 9 bit 8-5 bit 4 bit 3-0 保留:读为 0 BLEN<1:0>:缓冲器长度控制位 11 = 在中断之间将缓冲四个数据字 10 = 在中断之间将缓冲三个数据字 01 = 在中断之间将缓冲两个数据字 00 = 在中断之间将缓冲一个数据字 保留:读为 0 COFSG<3:0>:帧同步发生器控制位 1111 = 数据帧有 16 个字 ••• 0010 = 数据帧有 3 个字 0001 = 数据帧有 2 个字 0000 = 数据帧有 1 个字 保留:读为 0 WS<3:0>:DCI 数据字长度位 1111 = 数据字长度为 16 位 ••• 0100 = 数据字长度为 5 位 0011 = 数据字长度为 4 位 0010 = 无效选择。请勿使用。否则可能会产生无法预料的结果。 0001 = 无效选择。请勿使用。否则可能会产生无法预料的结果。 0000 = 无效选择。请勿使用。否则可能会产生无法预料的结果。 R/W-0 COFSG3 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 271 页 dsPIC33F 寄存器 21-3: U-0 - bit 15 DCICON3:DCI 控制寄存器 3 U-0 U-0 U-0 - - - R/W-0 R/W-0 R/W-0 BCG<11:8> R/W-0 bit 7 R/W-0 R/W-0 R/W-0 R/W-0 BCG<7:0> R/W-0 R/W-0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-0 保留:读为 0 BCG<11:0>:DCI 位时钟发生器控制位 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第 272 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 21-4: DCISTAT:DCI 状态寄存器 U-0 - bit 15 U-0 U-0 U-0 R-0 - - - R-0 R-0 SLOT<3:0> U-0 - bit 7 U-0 U-0 U-0 R-0 R-0 R-0 - - - ROV RFUL TUNF 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-12 bit 11-8 bit 7-4 bit 3 bit 2 bit 1 bit 0 保留:读为 0 SLOT<3:0>:DCI 时隙状态位 1111 = Slot #15 目前有效 ••• 0010 = Slot #2 目前有效 0001 = Slot #1 目前有效 0000 = Slot #0 目前有效 保留:读为 0 ROV:接收溢出状态位 1 = 至少一个接收寄存器发生了接收溢出 0 = 没有发生接收溢出 RFUL:接收缓冲器满标志位 1 = 在接收寄存器中有新数据 0 = 接收寄存器中为旧数据 TUNF:发送缓冲器下溢状态位 1 = 至少一个发送寄存器发生了发送下溢 0 = 没有发生发送下溢 TMPTY:发送缓冲器空状态位 1 = 发送寄存器为空 0 = 发送寄存器非空 R-0 bit 8 R-0 TMPTY bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 273 页 dsPIC33F 寄存器 21-5: R/W-0 RSE15 bit 15 RSCON:DCI 接收时隙控制寄存器 R/W-0 RSE14 R/W-0 RSE13 R/W-0 RSE12 R/W-0 RSE11 R/W-0 RSE10 R/W-0 RSE9 R/W-0 RSE7 bit 7 R/W-0 RSE6 R/W-0 RSE5 R/W-0 RSE4 R/W-0 RSE3 R/W-0 RSE2 R/W-0 RSE1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 RSE<15:0>:接收时隙使能位 1 = 在相应的时隙 n 内接收 CSDI 数据 0 = 在相应的时隙 n 内忽略 CSDI 数据 R/W-0 RSE8 bit 8 R/W-0 RSE0 bit 0 寄存器 21-6: R/W-0 TSE15 bit 15 TSCON:DCI 发送时隙控制寄存器 R/W-0 TSE14 R/W-0 TSE13 R/W-0 TSE12 R/W-0 TSE11 R/W-0 TSE10 R/W-0 TSE9 R/W-0 TSE7 bit 7 R/W-0 TSE6 R/W-0 TSE5 R/W-0 TSE4 R/W-0 TSE3 R/W-0 TSE2 R/W-0 TSE1 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 =置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 TSE<15:0>:发送时隙使能控制位 1 = 在相应的时隙 n 内发送缓冲器中的内容 0 = 根据 CSDOM 位的状态,在单个时隙内 CSDO 引脚呈现三态或驱动为逻辑 0 R/W-0 TSE8 bit 8 R/W-0 TSE0 bit 0 DS70165D_CN 第 274 页 初稿  2007 Microchip Technology Inc. 22.0 10 位 /12 位模 / 数转换器 (ADC) 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 器件具有最多 32 个 ADC 输入通道。这些器 件最多具有 2 个 ADC 模块 (ADCx,其中 x = 1 或 2) 每个模块都有一组特殊功能寄存器。 AD12B 位 (ADxCON1<10>)允许用户对每个 ADC 模 块进行配置,可以配置为 10 位,4 采样 / 保持 ADC(默 认配置)或是 12 位, 1 采样 / 保持 ADC。 注: 在修改 AD12B 位前需要禁止 ADC 模块。 22.1 主要特性 10 位 ADC 配置具有如下主要特性: • 逐次逼近 (Successive Approximation, SAR)转 换 • 转换速度最高为 1.1 Msps • 最多 32 个模拟输入引脚 • 外部参考电压输入引脚 • 可同时采用最多四个模拟输入引脚 • 自动通道扫描模式 • 可选转换触发源 • 可选缓冲器填充模式 • 四种结果对齐选项 (有符号 / 无符号,小数 / 整 数) • 可在 CPU 休眠和空闲模式下继续工作 12 位 ADC 配置支持所有上述特性,但以下情况除外: • 在 12 位配置中,支持最大 500 ksps 的转换速度 • 在 12 位配置中只有 1 个采样 / 保持放大器,因此 不支持多通道同时采样。 根据特定器件的引脚配置,ADC 最多有 32 个模拟输入 引脚,指定为 AN0 到 AN31。此外,有两个可用于外部 参考电压连接的模拟输入引脚。这些参考电压输入可以 和其他模拟输入引脚复用。实际的模拟输入引脚数和外 部参考电压输入配置取决于具体的器件。更多详细信息 请参见器件的数据手册。 图 22-1 为 ADC 的框图。 dsPIC33F 22.2 ADC 初始化 应执行以下配置步骤: 1. 配置 ADC 模块: a) 选 择 端 口 引 脚 作 为 模 拟 输 入 引 脚 (ADxPCFGH<15:0> 或 ADxPCFGL<15:0>) b) 选择参考电压源以匹配模拟输入的预期范围 (ADxCON2<15:13>) c) 选择模拟转换时钟以便使期望的数据速率与 处理器时钟匹配 (ADxCON3<5:0>) d) 确定使用多少个采样 / 保持通道 (ADxCON2<9:8> 和 ADxPCFGH<15:0> 或 ADxPCFGL<15:0>) e) 选择适当的采样 / 转换序列 (ADxCON1<7:5> 和 ADxCON3<12:8>) f) 选 择 转 换 结 果 在 缓 冲 器 中 的 存 储 方 式 (ADxCON1<9:8>) g) 启动 ADC 模块 (ADxCON1<15>) 2. 配置 ADC 中断 (如果需要): a) 清零 ADxIF 位。 b) 选择 ADC 中断优先级 22.3 ADC 和 DMA 如果在触发一个中断之前,有多个转换结果需要被缓 冲,就可使用 DMA 数据传输。 ADC1 和 ADC2 都能触 发 DMA 数据传输功能。如果将 ADC1 或 ADC2 选择为 DMA IRQ 源,当 AD1IF 或 AD2IF 位由于 ADC1 或 ADC2 采样转换序列被置 1 时,发生 DMA 传输。 SMPI<3:0> 位(ADxCON2<5:2>)用来选择 DMA RAM 缓冲器指针增加的频率。 ADDMABM 位 (ADxCON1<12>)决定转换结果填充 到 ADC 使用的 DMA RAM 缓冲器中的方式。如果该位 置 1,则将数据以转换的顺序写入 DMA 缓冲器。模块 将为 DMA 通道提供一个与非 DMA 独立缓冲器使用的地 址相同的地址。如果 ADDMABM 位清零,那么 DMA 缓 冲器以分散 / 集中模式写入数据。依据模拟输入的编号 和 DMA 缓冲器的大小,模块为 DMA 通道提供分散 / 集 中地址。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 275 页 数据格式 总线接口 dsPIC33F 图 22-1: VREF+(1) VREF-(1) AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 ADC1 模块框图 AVDD AVSS AN0 AN3 AN6 AN9 VREFAN1 AN4 AN7 AN10 VREFAN2 AN5 AN8 AN11 VREF- 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 + S/H - CH1(2) + S/H - CH2(2) + S/H - CH3(2) 采样 ADC1 转换 结果 转换逻辑 16 位 ADC 输出 缓冲器 CH1,CH2, CH3,CH0 采样 / 序列 控制 输入 开关 输入 MUX 控制 AN30 AN31 11110 11111 VREFAN1 + S/H - CH0 注 1: VREF+ 和 VREF- 输入可以与其他模拟输入复用。详细信息请参见器件的数据手册。 2: 通道 1、 2 和 3 不适用于 12 位工作模式。 DS70165D_CN 第 276 页 初稿  2007 Microchip Technology Inc. 图 22-2: VREF+(2) VREF-(2) AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 ADC2 模块框图 (1) AVDD AVDD dsPIC33F 数据格式 总线接口 AN0 AN3 AN6 AN9 VREFAN1 AN4 AN7 AN10 VREFAN2 AN5 AN8 AN11 VREF- 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 + S/H - CH1(3) + S/H - CH2(3) + S/H - CH3(3) 采样 ADC2 转换 结果 转换逻辑 16 位 ADC 输出 缓冲器 CH1,CH2, CH3,CH0 采样 / 序列 控制 输入 开关 输入 MUX 控制 AN14 AN15 11110 11111 VREFAN1 + S/H - CH0 注 1: 对于具有 2 个 ADC 模块的器件, AN0-AN15 可以由 ADC1、 ADC2 或两者同时进行读取。 2: VREF+ 和 VREF- 输入可以与其他模拟输入复用。详细信息请参见器件的数据手册。 3: 通道 1、 2 和 3 不适用于 12 位工作模式。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 277 页 dsPIC33F 公式 22-1: ADC 转换时钟周期 TAD = TCY(ADCS + 1) ADCS = TAD TCY –1 图 22-3: ADC 传递函数 (以 10 位 ADC 为例) 输出编码 11 1111 1111 (= 1023) 11 1111 1110 (= 1022) 10 0000 0011 (= 515) 10 0000 0010 (= 514) 10 0000 0001 (= 513) 10 0000 0000 (= 512) 01 1111 1111 (= 511) 01 1111 1110 (= 510) 01 1111 1101 (= 509) 00 0000 0001 (= 1) 00 0000 0000 (= 0) VREFL VREFH – VREFL VREFL + 1024 VREFL + 512 * (VREFH – VREFL) 1024 VREFL + 1023 * (VREFH – VREFL) VREFH 1024 (VINH – VINL) 图 22-4: ADC 转换器时钟周期框图 ADxCON3<15> ADC 内部 RC 时钟 ADxCON3<5:0> 0 TAD 1 6 TOSC(1) X2 TCY ADC 转换 时钟倍频器 1, 2, 3, 4, 5,..., 64 1. 当使能 PLL 时,参见图 8-2 获取 FOSC。 如果没有使用 PLL,FOSC 与时钟源频率相等。Tosc = 1/Fosc。 DS70165D_CN 第 278 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 22-1: R/W-0 ADON bit 15 ADxCON1:ADCx 控制寄存器 1(其中 x = 1 或 2) U-0 R/W-0 R/W-0 U-0 R/W-0 - ADSIDL ADDMABM - AD12B R/W-0 R/W-0 FORM<1:0> bit 8 R/W-0 bit 7 R/W-0 SSRC<2:0> R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/C-0 HC,HS HC, HS - SIMSAM ASAM SAMP DONE bit 0 图注: R = 可读位 -n = 上电复位时的值 HC = 由硬件清零 W = 可写位 1 = 置1 HS = 由硬件置 1 U = 未实现位,读为0 0 = 清零 x = 未知 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9-8 bit 7-5 bit 4 ADON:ADC 工作模式位 1 = ADC 模块正在工作 0 = ADC 模块关闭 未实现:读为 0 ADSIDL:空闲模式停止位 1 = 当器件进入空闲模式时,模块停止工作。 0 = 模块在空闲模式下继续工作 ADDMABM:DMA 缓冲器构建模式位 1 = DMA 缓冲器以转换的顺序写入。模块将为 DMA 通道提供一个与非 DMA 独立缓冲器使用的地址相 同的地址。 0 = DMA 缓冲器以分散 / 集中模式写入。依据模拟输入的编号和 DMA 缓冲器的大小,模块为 DMA 通道 提供分散 / 集中地址。 未实现:读为 0 AD12B:10 位或 12 位工作模式位 1 = 12 位 1 通道 ADC 工作 0 = 10 位 4 通道 ADC 工作 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) SSRC<2:0>:采样时钟源选择位 111 = 由内部计数器结束采样并启动转换 (自动转换) 110 = 保留 101 = 保留 100 = 保留 011 = 由 MPWM 间隔结束采样并启动转换 010 = GP 定时器 (ADC1 采用 Timer3, ADC2 采用 Timer5 )比较结束采样并启动转换 001 = 由 INTx 引脚的有效跳变沿结束采样并启动转换 000 = 由清零采样位结束采样并启动转换 未实现:读为 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 279 页 dsPIC33F 寄存器 22-1: ADxCON1:ADCx 控制寄存器 1 (续)(其中 x = 1 或 2) bit 3 SIMSAM:同步采样选择位 (仅当 CHPS<1:0> = 01 或 1x 时适用) 当 AD12B = 1 时, SIMSAM 为 U-0,未实现,读为 0 1 = 同时采样 CH0、 CH1、 CH2 和 CH3 (当 CHPS<1:0> = 1x 时);或 同时采样 CH0 和 CH1 (当 CHPS<1:0> = 01 时) 0 = 按顺序依次采样多路通道 bit 2 ASAM:ADC 采样自动开始位 1 = 最后一次转换结束后立即开始采样。 SAMP 位自动置 1。 0 = 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)。 将此位清零不会影响进行中的任何操作。在新的转换开始时由硬件自动清零。 DS70165D_CN 第 280 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 22-2: ADxCON2:ADCx 控制寄存器 2 (其中 x = 1 或 2) R/W-0 R/W-0 R/W-0 U-0 VCFG<2:0> - bit 15 U-0 R/W-0 - CSCNA R/W-0 R/W-0 CHPS<1:0> bit 8 R-0 BUFS bit 7 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 - SMPI<3:0> BUFM ALTS bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为0 0 = 清零 x= 未知 bit 15-13 bit 12-11 bit 10 bit 9-8 bit 7 bit 6 bit 5-2 bit 1 VCFG<2:0>: 转换器参考电压配置位 ADREF+ ADREF- 000 AVDD 001 外部 VREF+ 010 AVDD 011 外部 VREF+ 1xx AVDD AVSS AVSS 外部 VREF外部 VREFAvss 未实现:读为 0 CSCNA:选择是否在使用采样多路开关 A 时扫描 CH0+ 输入的位 1 = 扫描输入 0 = 不扫描输入 CHPS<1:0>: 选择通道使用的位 当 AD12B = 1 时, CHPS<1:0> 为:U-0,未实现 , 读为 0 1x = 转换 CH0、 CH1、 CH2 和 CH3 01 = 转换 CH0 和 CH1 00 = 转换 CH0 BUFS:缓冲器填充状态位 (只在 BUFM = 1 时有效) 1 = ADC 当前在填充缓冲器 0x8-0xF,用户应该访问 0x0-0x7 中的数据 0 = ADC 当前在填充缓冲器 0x0-0x7,用户应该访问 0x8-0xF 中的数据 未实现:读为 0 SMPI<3:0>:选择 DMA 地址的递增速率或每次中断的采样 / 转换操作数的位 1111 = 每完成 16 个采样 / 转换操作将 DMA 地址递增 1 或产生中断 1110 = 每完成 15 个采样 / 转换操作将 DMA 地址递增 1 或产生中断 ••• 0001 = 每完成 2 个采样 / 转换操作将 DMA 地址递增 1 或产生中断 0000 = 每完成 1 个采样 / 转换操作将 DMA 地址递增 1 或产生中断 BUFM: 缓冲器填充模式选择位 1 = 在第一次中断发生时从地址 0x0 开始填充缓冲器,而在下一次中断发生时从地址 0x8 开始填充 0 = 总是从地址 0x0 开始填充缓冲器  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 281 页 dsPIC33F 寄存器 22-2: ADxCON2:ADCx 控制寄存器 2 (续) (其中 x = 1 或 2) bit 0 ALTS: 备用输入采样模式选择位 1 = 在第一次采样时使用采样多路开关A选择的输入通道而下一次采样时使用采样多路开关B选择的输 入通道 0 = 总是使用采样多路开关 A 选择的输入通道 DS70165D_CN 第 282 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 22-3: R/W-0 ADRC bit 15 ADxCON3:ADCx 控制寄存器 3 U-0 U-0 R/W-0 - - R/W-0 R/W-0 SAMC<4:0> R/W-0 U-0 - bit 7 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 - ADCS<5:0> 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15 bit 14-13 bit 12-8 bit 7-6 bit 5-0 ADRC:ADC 转换时钟源位 1 = ADC 的内部 RC 时钟 0 = 时钟由系统时钟产生 未实现:读为 0 SAMC<4:0>: 自动采样时间位 11111 = 31 TAD ••• 00001 = 1 TAD 00000 = 0 TAD 未实现:读为 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 = TAD 000000 = TCY · (ADCS<7:0> + 1) = 1 · TCY = TAD R/W-0 bit 8 R/W-0 bit 0  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 283 页 dsPIC33F 寄存器 22-4: ADxCON4:ADCx 控制寄存器 4 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 - - - - - - - - bit 15 bit 8 U-0 - bit 7 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 - - - - DMABL<2:0> bit 0 图注: R= 可读位 -n = 上电复位时的值 W = 可写位 1= 置 1 U = 未实现位,读为 0 0= 清零 x= 未知 bit 15-3 bit 2-0 未实现:读为 0 DMABL<2:0>:选择每路模拟输入的 DMA 缓冲单元数量的位 111 = 给每路模拟输入分配 128 字的缓冲区 110 = 给每路模拟输入分配 64 字缓冲区 101 = 给每路模拟输入分配 32 字缓冲区 100 = 给每路模拟输入分配 16 字缓冲区 011 = 给每路模拟输入分配 8 字的缓冲区 010 = 给每路模拟输入分配 4 字的缓冲区 001 = 给每路模拟输入分配 2 字的缓冲区 000 = 给每路模拟输入分配 1 字的缓冲区 DS70165D_CN 第 284 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 22-5: U-0 - bit 15 ADxCHS123:ADCx 输入通道 1、 2 和 3 选择寄存器 U-0 U-0 U-0 U-0 R/W-0 R/W-0 - - - - CH123NB<1:0> R/W-0 CH123SB bit 8 U-0 - bit 7 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 - - - - CH123NA<1:0> CH123SA bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-11 bit 10-9 bit 8 bit 7-3 bit 2-1 bit 0 未实现:读为 0 CH123NB<1:0>:采样多路开关 B 的通道 1、 2 和 3 的反相输入选择位 当 AD12B = 1 时 , CHxNB 为:U-0,未实现,读为 0 11 = CH1 的反相输入为 AN9, CH2 的反相输入为 AN10,CH3 的反相输入为 AN11 10 = CH1 的反相输入为 AN6, CH2 的反相输入为 AN7, CH3 的反相输入为 AN8 0x = CH1、 CH2 和 CH3 的反相输入都为 VREF- CH123SB:采样多路开关 B 的通道 1、 2 和 3 的同相输入选择位 当 AD12B = 1 时,CHxSA 为:U-0,未实现,读为 0 1 = CH1 的同相输入为 AN3, CH2 的同相输入为 AN4, CH3 的同相输入为 AN5 0 = CH1 的同相输入为 AN0, CH2 的同相输入为 AN1, CH3 的同相输入为 AN2 未实现:读为 0 CH123NA<1:0>:采样多路开关 A 的通道 1、 2 和 3 的反相输入选择位 当 AD12B = 1 时, CHxNA 为:U-0,未实现,读为 0 11 = CH1 的反相输入为 AN9, CH2 的反相输入为 AN10,CH3 的反相输入为 AN11 10 = CH1 的反相输入为 AN6, CH2 的反相输入为 AN7, CH3 的反相输入为 AN8 0x = CH1、 CH2 和 CH3 的反向输入都为 VREF- CH123SA:采样多路开关 A 的通道 1、 2 和 3 的同相输入选择位 当 AD12B = 1 时,CHxSA 为:U-0,未实现,读为 0 1 = CH1 的同相输入为 AN3, CH2 的同相输入为 AN4, CH3 的同相输入为 AN5 0 = CH1 的同相输入为 AN0, CH2 的同相输入为 AN1, CH3 的同相输入为 AN2  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 285 页 dsPIC33F 寄存器 22-6: R/W-0 CH0NB bit 15 ADxCHS0:ADCx 输入通道 0 选择寄存器 U-0 U-0 R/W-0 R/W-0 - - R/W-0 CH0SB<4:0> R/W-0 R/W-0 U-0 CH0NA - bit 7 U-0 R/W-0 R/W-0 R/W-0 R/W-0 - CH0SA<4:0> 图注: R= 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为0 0 = 清零 x= 未知 bit 15 bit 14-13 bit 12-8 bit 7 bit 6-5 bit 4-0 CH0NB:采样多路开关 B 的通道 0 反相输入选择位 与 bit 7 定义相同。 未实现:读为 0 CH0SB<4:0>:采样多路开关 B 的通道 0 同相输入选择位 与 bit<4:0> 定义相同。 CH0NA:采样多路开关 A 的通道 0 反相输入选择位 1 = 通道 0 的反相输入为 AN1 0 = 通道 0 的反相输入为 VREF- 未实现:读为 0 CH0SA<4:0>:采样多路开关 A 的通道 0 同相输入选择位 11111 = 通道 0 的同相输入为 AN31 11110 = 通道 0 的同相输入为 AN30 ••• 00010 = 通道 0 的同相输入为 AN2 00001 = 通道 0 的同相输入为 AN1 00000 = 通道 0 的同相输入为 AN0 R/W-0 bit 8 R/W-0 bit 0 DS70165D_CN 第 286 页 初稿  2007 Microchip Technology Inc. dsPIC33F 寄存器 22-7: R/W-0 CSS31 bit 15 ADxCSSH:ADCx 输入扫描选择寄存器的高位字 (1) R/W-0 CSS30 R/W-0 CSS29 R/W-0 CSS28 R/W-0 CSS27 R/W-0 CSS26 R/W-0 CSS25 R/W-0 CSS24 bit 8 R/W-0 CSS23 bit 7 R/W-0 CSS22 R/W-0 CSS21 R/W-0 CSS20 R/W-0 CSS19 R/W-0 CSS18 R/W-0 CSS17 R/W-0 CSS16 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x = 未知 bit 15-0 CSS<31:16>:ADC 输入扫描选择位 1 = 选择对 ANx 进行输入扫描 0 = 输入扫描时跳过 ANx 注 1: 对于没有 32 路模拟输入的器件,用户可以选择所有的 ADxCSSL 位。但是,如果器件上没有选择为进行 扫描的相应输入,则将转换 ADREF-。 寄存器 22-8: R/W-0 CSS15 bit 15 ADxCSSL:ADCx 输入扫描选择寄存器的低位字 (1) R/W-0 CSS14 R/W-0 CSS13 R/W-0 CSS12 R/W-0 CSS11 R/W-0 CSS10 R/W-0 CSS9 R/W-0 CSS8 bit 8 R/W-0 CSS7 bit 7 R/W-0 CSS6 R/W-0 CSS5 R/W-0 CSS4 R/W-0 CSS3 R/W-0 CSS2 R/W-0 CSS1 R/W-0 CSS0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为0 0 = 清零 x = 未知 bit 15-0 CSS<15:0>:ADC 输入扫描选择位 1 = 选择对 ANx 进行输入扫描 0 = 输入扫描时跳过 ANx 注 1: 对于没有 16 路模拟输入的器件,用户可以选择所有的 ADxCSSL 位。但是,如果器件上没有选择为进行 扫描的相应输入,则将转换 ADREF-。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 287 页 dsPIC33F 寄存器 22-9: AD1PCFGH:ADC1 端口配置寄存器的高位字 (1,2) R/W-0 PCFG31 bit 15 R/W-0 PCFG30 R/W-0 PCFG29 R/W-0 PCFG28 R/W-0 PCFG27 R/W-0 PCFG26 R/W-0 PCFG25 R/W-0 PCFG24 bit 8 R/W-0 PCFG23 bit 7 R/W-0 PCFG22 R/W-0 PCFG21 R/W-0 PCFG20 R/W-0 PCFG19 R/W-0 PCFG18 R/W-0 PCFG17 R/W-0 PCFG16 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为0 0 = 清零 x= 未知 bit 15-0 PCFG<31:16>:ADC 端口配置控制位 1 = 端口引脚处于数字模式,使能端口读输入, ADC 输入多路开关连接到 AVSS 0 = 端口引脚处于模拟模式,禁止端口读输入, ADC 对引脚电压进行采样 注 1: 对于没有 32 路模拟输入的器件,所有 PCFG 位都由用户读 / 写。但是,如果器件上不含相应的输入, PCFG 位被忽略。 2: ADC2 仅支持模拟输入 AN0-AN15 ;因此,不存在 ADC2 端口配置寄存器。 寄存器 22-10: ADxPCFGL:ADCx 端口配置寄存器的低位字 (1,2) R/W-0 PCFG15 bit 15 R/W-0 PCFG14 R/W-0 PCFG13 R/W-0 PCFG12 R/W-0 PCFG11 R/W-0 PCFG10 R/W-0 PCFG9 R/W-0 PCFG8 bit 8 R/W-0 PCFG7 bit 7 R/W-0 PCFG6 R/W-0 PCFG5 R/W-0 PCFG4 R/W-0 PCFG3 R/W-0 PCFG2 R/W-0 PCFG1 R/W-0 PCFG0 bit 0 图注: R = 可读位 -n = 上电复位时的值 W = 可写位 1 = 置1 U = 未实现位,读为 0 0 = 清零 x= 未知 bit 15-0 PCFG<15:0>:ADC 端口配置控制位 1 = 端口引脚处于数字模式,使能端口读输入, ADC 输入多路开关连接到 AVSS 0 = 端口引脚处于模拟模式,禁止端口读输入, ADC 对引脚电压进行采样 注 1: 对于没有 16 路模拟输入的器件,所有 PCFG 位都由用户读 / 写。但是,如果器件上不含相应的输入, PCFG 位被忽略。 2: 对于具有 2 个模 / 数转换模块的器件, AD1PCFGL 和 AD2PCFGL 都会影响与 AN0-AN15 复用的端口引脚 的配置。 DS70165D_CN 第 288 页 初稿  2007 Microchip Technology Inc. dsPIC33F 23.0 特殊功能 注: 本数据手册总结了dsPIC33F系列器件的功 能。 但是不应把本手册当作无所不包的参 考手册来使用。如需了解本数据手册的补 充信息,请参见 《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 系列器件包含的几个特殊功能旨在最大限度 地提高系统的灵活性和可靠性,并通过减少外部元件将 成本降至最低。提供的特殊功能包括: • 灵活的配置 • 看门狗定时器 (WDT) • 代码保护和 CodeGuard™ 安全性 • JTAG 边界扫描接口 • 在线串行编程 (ICSP™) • 在线仿真 23.1 配置位 可以通过对配置位编程 (读为 0)或不编程 (读为 1) 来选择不同的器件配置。这些配置位被映射到程序存储 器中从 0xF80000 开始的单元中。 器件配置寄存器的映射如表 23-1 所示。 表 23-2 给出了 FBS、FSS、FGS、FOSCSEL、FOSC、 FWDT、FPOR 和 FICD 配置寄存器中各个配置位的说 明。 注意,地址 0xF80000h 超出了用户程序存储空间。实际 上,它属于只能使用表读和表写访问的配置存储空间 (0x800000-0xFFFFFF)。 所有器件配置寄存器的高字节应该总为 1111 1111。 这使得当极少事件意外执行这些存储单元时将其作为 NOP 指令来执行。由于没有在相应的存储单元内实现这 些配置位,因此向这些存储单元写入 1 不会影响器件工 作。 为了避免在代码执行期间配置被意外改变,所有的可编 程配置位只可被写入一次。在上电周期内对位进行初始 编程之后就不能再次写入该位了。改变器件的配置需要 对器件重复上电。 表 23-1: 器件配置寄存器的映射 地址 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0xF8000 FBS RBS<1:0> — — BSS<2:0> BWRP 0xF8002 FSS RSS<1:0> — — SSS<2:0> SWRP 0xF8004 FGS — — — — — GSS1 GSS0 GWRP 0xF8006 FOSCSEL IESO — TEMP — 0xF8008 FOSC FCKSM<1:0> — — — OSCIOFNC POSCMD<1:0> 0xF800A FWDT FWDTEN WINDIS — WDTPRE WDTPOST<3:0> 0xF800C FPOR PWMPIN(1) HPOL(1) LPOL(1) — — FPWRT<2:0> 0xF800E Reserved3 保留 (2) 0xF8010 FUID0 用户部件 ID 字节 0 0xF8012 FUID1 用户部件 ID 字节 1 0xF8014 FUID2 用户部件 ID 字节 2 0xF8016 FUID3 用户部件 ID 字节 3 注 1: 在 dsPIC33F 通用系列器件 (dsPIC33FJXXXGPXXX)上,这些位被保留 (读为 1 并且必须被编程为 1)。 2: 这些保留的位读为 1 并且必须被编程为 1。 3: 未实现位,读为 0。 4: 该保留位是 GCP 的只读副本。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第289 页 dsPIC33F 表 23-2: dsPIC33F 配置位的说明 位域 寄存器 说明 BWRP BSS<2:0> FBS 引导段程序闪存写保护 1 = 引导段可写 0 = 引导段被写保护 FBS 引导段程序闪存代码保护大小 X11 = 无引导程序闪存段 引导空间为 1K 指令字减去 VS 大小 110 = 标准安全性;引导程序闪存段开始于 VS 末端,结束于 0007FEh 010 = 高安全性;引导程序闪存段开始于 VS 末端,结束于 0007FEh 引导空间为 4K 指令字减去 VS 大小 101 = 标准安全性;引导程序闪存段开始于 VS 末端,结束于 001FFEh 001 = 高安全性;引导程序闪存段开始于 VS 末端,结束于 001FFEh RBS<1:0> SWRP 引导空间为 8K 指令字减去 VS 大小 100 = 标准安全性;引导程序闪存段开始于 VS 末端,结束于 003FFEh 000 = 高安全性;引导程序闪存段开始于 VS 末端,结束于 003FFEh FBS 引导段 RAM 代码保护 10 = 未定义引导 RAM 10 = 引导 RAM 为 128 字节 01 = 引导 RAM 为 256 字节 00 = 引导 RAM 为 1024 字节 FSS 安全段程序闪存写保护 1 = 安全段可写 0 = 安全段被写保护 DS70165D_CN 第290 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 23-2: dsPIC33F 配置位的说明 (续) 位域 寄存器 说明 SSS<2:0> FSS 安全段程序闪存代码保护大小 (对于 128K 及 256K 器件) X11 = 无安全程序闪存段 安全空间为 8K 指令字减去 BS 大小 110 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 0x003FFE 010 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 0x003FFE 安全空间为 16K 指令字减去 BS 大小 101 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 0x007FFE 001 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 0x007FFE 安全空间为 32K 指令字减去 BS 大小 100 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 0x00FFFE 000 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 0x00FFFE (对于 64K 器件) X11 = 无安全程序闪存段 安全空间为 4K 指令字减去 BS 大小 110 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 0x001FFE 010 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 安全空间为 8K 指令字减去 BS 大小 101 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 0x003FFE 001 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 0x003FFE RSS<1:0> GSS<1:0> FSS FGS 安全空间为 16K 指令字减去 BS 大小 100 = 标准安全性;安全程序闪存段开始于 BS 末端,结束于 007FFEh 000 = 高安全性;安全程序闪存段开始于 BS 末端,结束于 0x007FFE 安全段 RAM 代码保护 10 = 未定义安全 RAM 10 = 安全 RAM 为 256 字节减去 BS RAM 大小 01 = 安全 RAM 为 2048 字节减去 BS RAM 大小 00 = 安全 RAM 为 4096 字节减去 BS RAM 大小 通用段代码保护位 11 = 用户程序存储区不被代码保护 10 = 标准安全性;通用程序闪存段开始于 SS 末端,结束于 EOM 0x = 高安全性;通用程序闪存段开始于 SS 末端,结束于 EOM  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第291 页 dsPIC33F 表 23-2: dsPIC33F 配置位的说明 (续) 位域 寄存器 说明 GCP GWRP IESO TEMP FNOSC<2:0> FCKSM<1:0> OSCIOFNC POSCMD<1:0> FWDTEN WINDIS WDTPRE WDTPOST FGS FGS FOSCSEL FOSCSEL FOSCSEL FOSC FOSC FOSC FWDT FWDT FWDT FWDT 通用段代码保护位 1 = 用户程序存储区不被代码保护 0 = 用户程序存储区被代码保护 通用段写保护位 1 = 用户程序存储器不被写保护 0 = 用户程序存储器被写保护 双速振荡器启动使能位 1 = 使用 FRC 启动器件,然后自动切换到就绪的用户选择振荡器源 0 = 使用用户选择的振荡器源启动器件 温度保护使能位 1 = 禁止温度保护 0 = 使能温度保护 初始振荡器源选择位 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 振荡器 时钟切换模式位 1x = 禁止时钟切换,禁止故障保护时钟监视器 01 = 使能时钟切换,禁止故障保护时钟监视器 00 = 使能时钟切换,使能故障保护时钟监视器 OSC2 引脚功能位 (XT 和 HS 模式除外) 1 = OSC2 为时钟输出 0 = OSC2 为通用数字 I/O 引脚 主振荡器模式选择位 11 = 禁止主振荡器 10 = HS 晶振模式 01 = XT 晶振模式 00 = EC (外部时钟)模式 看门狗定时器使能位 1 = 始终使能看门狗定时器(不能禁止 LPRC 振荡器。将 RCON 寄存器中 的 SWDTEN 位清零不会产生任何影响)。 0 = 通过用户软件使能/禁止看门狗定时器(可通过清零RCON寄存器中 的 SWDTEN 位来禁止 LPRC)。 看门狗定时器窗口使能位 1 = 非窗口模式下的看门狗定时器 0 = 窗口模式下的看门狗定时器 看门狗定时器预分频比位 1 = 1:128 0 = 1:32 看门狗定时器后分频比位 1111 = 1:32,768 1110 = 1:16,384 . . . 0001 = 1:2 0000 = 1:1 DS70165D_CN 第292 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 23-2: dsPIC33F 配置位的说明 (续) 位域 寄存器 说明 PWMPIN HPOL FPOR FPOR 电机控制 PWM 模块引脚模式位 1 = 器件复位时, PWM 模块引脚由 PORT 寄存器控制 (三态) 0 = 器件复位时, PWM 模块引脚由 PWM 模块控制(配置为输出引脚) 电机控制 PWM 高端极性位 1 = PWM 模块高端输出引脚的输出极性为高电平有效状态 0 = PWM 模块高端输出引脚的输出极性为低电平有效状态 LPOL FPWRT<2:0> 保留 FPOR FPOR RESERVED3, FPOR 电机控制 PWM 低端极性位 1 = PWM 模块低端输出引脚的输出极性为高电平有效状态 0 = PWM 模块低端输出引脚的输出极性为低电平有效状态 上电复位定时器值选择位 111 = PWRT = 128 ms 110 = PWRT = 64 ms 101 = PWRT = 32 ms 100 = PWRT = 16 ms 011 = PWRT = 8 ms 010 = PWRT = 4 ms 001 = PWRT = 2 ms 000 = PWRT = 禁止 保留 (读为 1 和写为 1,或读为 0 和写为 0) — FGS, FOSCSEL, 未实现 (读为 0,写为 0) FOSC, FWDT, FPOR 23.2 片内稳压器 所有 dsPIC33F 器件使用标称的 2.5V 电压为其内核数字 逻辑供电。对于需要工作在一个更高的典型电压值如 3.3V 的设计中,这可能会引起问题。为简化系统设计, dsPIC33F 系列中的所有器件均包含一个片内稳压器, 可使器件内核逻辑在 VDD 下工作。 稳压器通过其他 VDD 引脚向内核供电。当使能了稳压器 时,必须将一个低 ESR (小于 5 欧姆)电容 (如钽电 容或陶瓷电容)连接到 VDDCORE/VCAP 引脚(图23-1)。 这可帮助维持稳压器的稳定性。滤波电容的推荐值在第 26.1 节 “直流特性”中的 26.1 “直流特性”中提供。 在 POR 时,片内稳压器需要约 20 µs 的时间产生输出 电压。这段时间被称为 TSTARTUP,在这期间禁止代码执 行。在每次掉电后器件恢复工作的过程中都将有一段 TSTARTUP 时间。 图 23-1: 片内稳压器的连接 (1) 3.3V dsPIC33F VDD VDDCORE/VCAP CF VSS 注 1: 这些为典型的工作电压。有关 VDD 和 VDDCORE 的全部工作电压范围请参见第 26.1 节 “直流特性”中的表 26-12:“内 部稳压器规范”。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第293 页 dsPIC33F 23.3 看门狗定时器 (WDT) 对于 dsPIC33F 器件, WDT 由 LPRC 振荡器驱动。当 使能 WDT 时,时钟源也将使能。 由 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 指令时 如果使能 WDT,它将在休眠或空闲模式下继续运行。当 发生 WDT 超时时,将唤醒器件并且代码将继续从 PWRSAV 指令处开始执行。当器件唤醒后,需要用软件将相应 的 SLEEP 或 IDLE 位 (RCON<3,2>)清零。 WDT 标志位 WDTO (RCON<4>)不会在 WDT 超时后 自动清零。要检测后面的 WDT 事件,必须用软件将该标 志位清零。 注: 执行 CLRWDT 和 PWRSAV 指令会将预分频 器和后分频器的计数值清零。 WDT 的使能或禁止由 FWDT 配置寄存器中 的 FWDTEN 配置位控制。当 FWDTEN 配置位置 1 时, WDT 始终是使能的。 当 FWDTEN 配置位被编程为 0 后,可以选择用软件控 制 WDT。通过将 SWDTEN 控制位 (RCON<5>)置 1 用软件使能 WDT。任何器件复位都会使 SWDTEN 控制 位清零。软件 WDT 选项允许用户在关键代码段使能 WDT 并在非关键代码段禁止 WDT,以最大限度地降低 功耗。 注: 如果 WINDIS 位 (FWDT<6>)清零, CLRWDT指令应仅在WDT周期的最后 1/4中 被应用软件执行。该 CLRWDT 窗口可通过使 用 定 时 器 确 定。如 果 在 该 窗 口 之 前 执 行 CLRWDT 指令,将会使 WDT 复位。 图 23-2: WDT 框图 SWDTEN FWDTEN LPRC 控制 WDTPRE LPRC 输入 32.768 kHz 预分频器 WDT 计数器 1 ms/4 ms WDTPOST<3:0> 后分频器 从休眠中唤醒 WDT 溢出 复位 所有器件复位 转换到 新的时钟源 退出休眠或 空闲模式 CLRWDT 指令 PWRSAV 指令 休眠或空闲模式 DS70165D_CN 第294 页 初稿  2007 Microchip Technology Inc. 23.4 JTAG 接口 dsPIC33F 器件实现了一个 JTAG 接口,该接口支持边 界扫描器件测试以及在线编程。关于该接口的详细信息 将会在以后的文档版本中提供。 23.5 代码保护和 CodeGuard™ 安全性 dsPIC33F 系列产品提供了 CodeGuard™ 安全性的高级 实现。 CodeGuard 安全性允许多方安全地共用单个芯 片上的资源 (存储器、中断和外设)。这一功能有助于 在协同系统设计中保护各方的知识产权 (Intelligent Property, IP)。 CodeGuard™ 安全性与软件加密函数库配合使用时,即 使在单个芯片上存在多个知识产权 (IP) ,也可使用 CodeGuard™ 安全性来安全地更新闪存。代码保护功能 随所实现的实际 dsPIC33F 的不同而有所不同。后续章 节将对这些功能进行概述。 代码保护功能由配置寄存器 FBS、 FSS 和 FGS 控制。 注: 请参阅 GodeGuard Security Reference Manual(DS70180)获得有关 CodeGuard 安 全性 使 用、配置 和 操 作方 面 的更 多 信 息。 23.6 在线串行编程 可以在最终应用电路中对 dsPIC33F 系列数字信号控制 器进行串行编程。只需要 5 根线即可完成这一操作,其 中时钟线、数据线各一根,其余 3 根分别是电源线、接 地线和编程电压线。这允许用户使用未编程器件生产电 路板,而仅在产品交付前才对数字信号控制器进行编 程,从而可以使用最新版本的固件或者定制固件进行编 程。请 参 见 《dsPIC33F/PIC24H 闪 存 编 程 规范》 (DS70152C_CN)文档了解有关 ICSP 的详细信息。 可使用 3 对编程时钟 / 数据引脚中的任意一对: • PGC1/EMUC1 和 PGD1/EMUD1 • PGC2/EMUC2 和 PGD2/EMUD2 • PGC3/EMUC3 和 PGD3/EMUD3 dsPIC33F 23.7 在线调试器 当选择 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. 初稿 DS70165D_CN 第295 页 dsPIC33F 注: DS70165D_CN 第296 页 初稿  2007 Microchip Technology Inc. 24.0 指令集综述 注: 本数据手册总结了 dsPIC33F 系列器件的 功能。 但是不应把本手册当作无所不包的 参考手册来使用。如需了解本数据手册的 补充信息,请参见《dsPIC30F 系列参考手 册》(DS70046E_CN)。 dsPIC33F 系列器件的指令集与 dsPIC30F 系列器件的 指令集相同。 大多数指令占用一个程序存储字(24 位)。只有 3 条指 令需要两个程序存储单元。 每条单字指令都是一个 24 位字,由一个 8 位的操作码 (指定指令类型)和一个或多个操作数 (进一步指定指 令操作)组成。 整个指令集具有高度的正交性,分为以下5种基本类型: • 字或字节操作类指令 • 位操作类指令 • 立即数操作类指令 • DSP 操作类指令 • 控制操作类指令 表 24-1 给出了在说明指令时使用的通用符号。 表 24-2 为 dsPIC33F 指令集的汇总,它列出了所有指 令,以及每条指令影响的状态标志位。 大部分字或字节 W 寄存器指令 (包括桶形移位指令) 具有三个操作数: • 第一个源操作数通常为寄存器 Wb,不带地址修改 符 • 第二个源操作数通常为寄存器 Ws,带或不带地址 修改符 • 保存结果的目的寄存器,通常为寄存器 Wd,带或 不带地址修改符 但是,字或字节文件寄存器指令只具有两个操作数: • 文件寄存器,由 f 指定 • 目的寄存器,可为文件寄存器 f 或 W0 寄存器, W0 寄存器也称为 WREG 寄存器 dsPIC33F 大部分位操作类指令 (包含简单循环 / 移位指令)都有 两个操作数: • 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 或立即数值指定移位的位数 控制操作类指令可以使用下列部分操作数: • 程序存储器地址 • 表读和表写指令的模式  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 297 页 dsPIC33F 除了某些指令为双字指令外,其他所有指令都是单字指 令。双字指令之所以为双字长的(48 位),是为了要用 48 位来保存所需信息。第二个字的高 8 位全为 0。如果 第二个字作为一条指令执行,它会执行为 NOP 指令。 除非条件测试结果为 “真”或者指令执行改变了程序计 数器的值,否则执行大部分单字指令都只需要一个指令 周期。对于上述两种特殊情况,执行指令需要两个指令 周期,第二个指令周期执行一条 NOP 指令。值得注意的 是:BRA (无条件 / 计算转移)、间接 CALL/GOTO、所 有表读和表写以及 RETURN/RETFIE 指令都是单字指 令,但是却需要两个或三个指令周期来执行。 对于那些 涉及跳过后续指令的某些指令,如果执行了跳过,则需 要两个到三个指令周期,具体取决于被跳过的指令是单 字指令还是双字指令。 此外,双字传送指令需要两个指 令周期。 双字指令执行需两个指令周期。 注: 欲知有关指令集的更多详细信息,请参见 《dsPIC30F/33F 程 序 员 参 考 手 册》 (DS70157B_CN)。 表 24-1: 操作码说明中使用的符号 字段 说明 #text (text) [text] {} .b .d .S .w Acc AWB bit4 C, DC, N, OV, Z Expr f lit1 lit4 lit5 lit8 lit10 lit14 lit16 lit23 None OA, OB, SA, SB PC Slit10 Slit16 Slit6 Wb Wd Wdo Wm,Wn 表示由 “text”定义的立即数 表示 “text 的内容” 表示 “地址为 text 的存储单元” 可选字段或操作 寄存器位域 字节模式选择 双字模式选择 影子寄存器选择 字模式选择 (默认情况) 累加器 A 或累加器B 累加器回写目的地址寄存器 ∈{W13, [W13]+ = 2} 4 位位选择字段 (用于字寻址指令) ∈ {0...15} MCU 状态位:进位、半进位、负、溢出和全零标志位 绝对地址、标号或表达式 (由链接器解析) 文件寄存器地址 ∈ {0x0000...0x1FFF} 1 位无符号立即数 ∈ {0,1} 4 位无符号立即数 ∈ {0...15} 5 位无符号立即数 ∈ {0...31} 8 位无符号立即数 ∈ {0...255} 10 位无符号立即数,字节模式下 ∈ {0...255},字模式下 ∈{0:1023} 14 位无符号立即数 ∈ {0...16384} 16 位无符号立即数 ∈ {0...65535} 23 位无符号立即数 ∈ {0...8388608} ; LSb 必须为 0 不需要内容,可为空白 DSP 状态位:AccA 溢出、 AccB 溢出、 AccA 饱和和 AccB 饱和 程序计数器 10 位有符号立即数 ∈ {-512...511} 16 位有符号立即数 ∈ {-32768...32767} 6 位有符号立即数 ∈ {-16...16} 基准 W 寄存器 ∈ {W0..W15} 目的 W 寄存器 ∈ { Wd, [Wd], [Wd++], [Wd--], [++Wd], [--Wd] } 目的 W 寄存器 ∈ { Wnd, [Wnd], [Wnd++], [Wnd--], [++Wnd], [--Wnd], [Wnd+Wb] } 被除数 / 除数工作寄存器对 (直接寻址) DS70165D_CN 第 298 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 24-1: 操作码说明中使用的符号 (续) 字段 说明 Wm*Wm Wm*Wn Wn Wnd Wns WREG Ws Wso Wx Wxd Wy Wyd 平方指令中的被乘数和乘数工作寄存器对 ∈ {W4 * W4,W5 * W5,W6 * W6,W7 * W7} DSP 指令中的被乘数和乘数工作寄存器对 ∈ {W4 * W5,W4 * W6,W4 * W7,W5 * W6,W5 * W7,W6 * W7} 16 个工作寄存器之一 ∈ {W0..W15} 16 个目的工作寄存器之一 ∈ {W0..W15} 16 个源工作寄存器之一 ∈ {W0..W15} W0 (文件寄存器指令中使用的工作寄存器) 源 W 寄存器 ∈ { Ws, [Ws], [Ws++], [Ws--], [++Ws], [--Ws] } 源 W 寄存器 ∈ { Wns, [Wns], [Wns++], [Wns--], [++Wns], [--Wns], [Wns+Wb] } 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], 无 } DSP 指令中用于 X 数据空间预取操作的目的寄存器 ∈ {W4..W7} DSP 指令中用于 Y 数据空间预取操作的地址寄存器 ∈ {[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], 无 } DSP 指令中用于 Y 数据空间预取操作的目的寄存器 ∈ {W4..W7}  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 299 页 dsPIC33F 表 24-2: 基本 指令 编号 汇编 助记符 1 ADD 2 ADDC 3 AND 4 ASR 5 BCLR 6 BRA 7 BSET 8 BSW 9 BTG 指令集汇总 汇编语法 ADD ADD ADD ADD ADD ADD ADD ADDC ADDC ADDC ADDC ADDC AND AND AND AND AND ASR ASR ASR ASR ASR BCLR BCLR BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BRA BSET BSET BSW.C BSW.Z BTG BTG Acc f f,WREG #lit10,Wn Wb,Ws,Wd Wb,#lit5,Wd Wso,#Slit4,Acc f f,WREG #lit10,Wn Wb,Ws,Wd Wb,#lit5,Wd f f,WREG #lit10,Wn Wb,Ws,Wd Wb,#lit5,Wd f f,WREG Ws,Wd Wb,Wns,Wnd Wb,#lit5,Wnd f,#bit4 Ws,#bit4 C,Expr GE,Expr GEU,Expr GT,Expr GTU,Expr LE,Expr LEU,Expr LT,Expr LTU,Expr N,Expr NC,Expr NN,Expr NOV,Expr NZ,Expr OA,Expr OB,Expr OV,Expr SA,Expr SB,Expr Expr Z,Expr Wn f,#bit4 Ws,#bit4 Ws,Wb Ws,Wb f,#bit4 Ws,#bit4 DS70165D_CN 第 300 页 说明 累加器相加 f = f + WREG WREG = f + WREG Wd = lit10 + Wd Wd = Wb + Ws Wd = Wb + lit5 将 16 位有符号立即数加到累加器 f = f + WREG + (C) WREG = f + WREG + (C) Wd = lit10 + Wd + (C) Wd = Wb + Ws + (C) Wd = Wb + lit5 + (C) f = f .AND. WREG WREG = f .AND. WREG Wd = lit10 .AND. Wd Wd = Wb .AND. Ws Wd = Wb .AND. lit5 f = 算术右移 f WREG = 算术右移 f Wd = 算术右移 Ws Wnd = 将 Wb 算术右移 Wns 位 Wnd = 将 Wb 算术右移 lit5 位 将 f 中的指定位清零 将 Ws 中的指定位清零 如果进位位为 1 则转移 如果有符号大于或等于则转移 如果无符号大于或等于则转移 如果有符号大于则转移 如果无符号大于则转移 如果有符号小于或等于则转移 如果无符号小于或等于则转移 如果有符号小于则转移 如果无符号小于则转移 如果为负则转移 如果进位位为 0 则转移 如果非负则转移 如果未溢出则转移 如果非零则转移 如果累加器 A 溢出则转移 如果累加器 B 溢出则转移 如果溢出则转移 如果累加器 A 饱和则转移 如果累加器 B 饱和则转移 无条件转移 如果为零则转移 计算转移 将 f 中的指定位置 1 将 Ws 中的指定位置 1 将 C 位内容写入 Ws 将 Z 位内容写入 Ws 将 f 中的指定位翻转 将 Ws 中的指定位翻转 初稿 指令 字数 周期数 受影响的 状态标志位 1 1 OA,OB,SA,SB 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 OA,OB,SA,SB 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 N,Z 1 1 N,Z 1 1 无 1 1 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 1 (2) 无 1 2 无 1 1 (2) 无 1 2 无 1 1 无 1 1 无 1 1 无 1 1 无 1 1 无 1 1 无  2007 Microchip Technology Inc. 表 24-2: 基本 指令 编号 汇编 助记符 10 BTSC 指令集汇总 (续) 汇编语法 BTSC f,#bit4 BTSC Ws,#bit4 11 BTSS BTSS f,#bit4 BTSS Ws,#bit4 12 BTST 13 BTSTS BTST f,#bit4 BTST.C Ws,#bit4 BTST.Z Ws,#bit4 BTST.C Ws,Wb BTST.Z Ws,Wb BTSTS f,#bit4 BTSTS.C Ws,#bit4 BTSTS.Z Ws,#bit4 14 CALL CALL lit23 CALL Wn 15 CLR CLR f CLR WREG CLR Ws CLR Acc,Wx,Wxd,Wy,Wyd,AWB 16 CLRWDT CLRWDT 17 COM COM f COM f,WREG COM Ws,Wd 18 CP CP f CP Wb,#lit5 CP Wb,Ws 19 CP0 CP0 f CP0 Ws 20 CPB CPB f CPB Wb,#lit5 CPB Wb,Ws 21 CPSEQ CPSEQ Wb, Wn 22 CPSGT CPSGT Wb, Wn 23 CPSLT CPSLT Wb, Wn 24 CPSNE CPSNE Wb, Wn 25 DAW 26 DEC 27 DEC2 28 DISI DAW DEC DEC DEC DEC2 DEC2 DEC2 DISI Wn f f,WREG Ws,Wd f f,WREG Ws,Wd #lit14 dsPIC33F 说明 指令 字数 周期数 受影响的 状态标志位 对 f 中的指定位进行测试,如果为零则跳过 1 1 无 (2 或 3) 对 Ws 中的指定位进行测试,如果为零则跳过 1 1 无 (2 或 3) 对 f 中的指定位进行测试,如为 1 则跳过 1 1 无 (2 或 3) 对 Ws 中的指定位进行测试,如为 1 则跳过 1 1 无 (2 或 3) 对 f 中的指定位进行测试 1 1 Z 对 Ws 中的指定位进行测试,并将其值存储到 C 1 1 C 对 Ws 中的指定位进行测试,并将其反码存储到 Z 1 1 Z 对 Ws 位进行测试,并将其值存储到 C 1 1 C 对 Ws 位进行测试,并将其反码存储到 Z 1 1 Z 对 f 中的指定位进行测试,并将 f 中的该位置 1 1 1 Z 对 Ws 中的指定位进行测试,并将其值存储到 C, 1 1 C 然后将 Ws 中的该位置 1 对 Ws 中的指定位进行测试,并将其反码存储到 1 1 Z Z,然后将 Ws 中的该位置 1 调用子程序 2 2 无 间接调用子程序 1 2 无 f = 0x0000 1 1 无 WREG = 0x0000 1 1 无 Ws = 0x0000 1 1 无 将累加器清零 1 1 OA,OB,SA,SB 将看门狗定时器清零 1 1 WDTO,Sleep f=f 1 1 N,Z WREG = f 1 1 N,Z Wd = Ws 1 1 N,Z 比较 f 和 WREG 比较 Wb 和 lit5 比较 Wb 和 Ws (Wb – Ws) 比较 f 和 0x0000 比较 Ws 和 0x0000 带借位比较 f 和 WREG 带借位比较 Wb 和 lit5 带借位比较 Wb 和 Ws (Wb – Ws – C) 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 比较 Wb 和 Wn,如果相等则跳过 比较 Wb 和 Wn,如果大于则跳过 比较 Wb 和 Wn,如果小于则跳过 比较 Wb 和 Wn,如果不相等则跳过 Wn = 十进制调整 Wn f=f–1 1 1 无 (2 或 3) 1 1 无 (2 或 3) 1 1 无 (2 或 3) 1 1 无 (2 或 3) 1 1 C 1 1 C,DC,N,OV,Z WREG = f – 1 1 1 C,DC,N,OV,Z Wd = Ws – 1 1 1 C,DC,N,OV,Z f=f– 2 1 1 C,DC,N,OV,Z WREG = f – 2 1 1 C,DC,N,OV,Z Wd = Ws – 2 1 1 C,DC,N,OV,Z 在 k 个指令周期内禁止中断 1 1 无  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 301 页 dsPIC33F 表 24-2: 基本 指令 编号 汇编 助记符 29 DIV 30 DIVF 31 DO 指令集汇总 (续) 汇编语法 DIV.S DIV.SD DIV.U DIV.UD DIVF DO Wm,Wn Wm,Wn Wm,Wn Wm,Wn Wm,Wn #lit14,Expr DO Wn,Expr 32 ED ED Wm*Wm,Acc,Wx,Wy,Wxd 说明 有符号 16/16 位整数除法 有符号 32/16 位整数除法 无符号 16/16 位整数除法 无符号 32/16 位整数除法 有符号 16/16 位小数除法 执行 Do 循环代码到 PC + Expr,执行次数为 (lit14 + 1) 次 执行 Do 循环代码到 PC + Expr,执行次数为 (Wn)+1 次 欧几里德距离 (无累加) 33 EDAC EDAC Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离的内容 34 EXCH 35 FBCL 36 FF1L 37 FF1R 38 GOTO 39 INC 40 INC2 41 IOR 42 LAC EXCH FBCL FF1L FF1R GOTO GOTO INC INC INC INC2 INC2 INC2 IOR IOR IOR IOR IOR LAC Wns,Wnd Ws,Wnd Ws,Wnd Ws,Wnd Expr Wn f f,WREG Ws,Wd f f,WREG Ws,Wd f f,WREG #lit10,Wn Wb,Ws,Wd Wb,#lit5,Wd Wso,#Slit4,Acc 交换 Wns 和 Wnd 从左边 (MSb)查找第一个位变化 从左边 (MSb)查找第一个 1 从右边 (MSb)查找第一个 1 转移到地址 间接转移到地址 f=f+1 WREG = f + 1 Wd = Ws + 1 f = f +2 WREG = f +2 Wd = Ws +2 f = f .IOR. WREG WREG = f .IOR. WREG Wd = lit10 .IOR. Wd Wd = Wb .IOR. Ws Wd = Wb .IOR. lit5 装载累加器 43 LNK 44 LSR 45 MAC LNK LSR LSR LSR LSR LSR MAC #lit14 f f,WREG Ws,Wd Wb,Wns,Wnd Wb,#lit5,Wnd Wm*Wn,Acc,Wx,Wxd,Wy,Wyd,AWB 分配堆栈帧 f = 逻辑右移 f WREG = 逻辑右移 f Wd = 逻辑右移 Ws Wnd = 将 Wb 逻辑右移 Wns 位 Wnd = 将 Wb 逻辑右移 lit5 位 相乘并累加 MAC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd 平方并累加 46 MOV MOV f,Wn MOV f MOV f,WREG MOV #lit10,Wn MOV.b #lit8,Wn MOV Wn,f MOV Wso,Wdo MOV WREG,f MOV.D Wns,Wd MOV.D Wns,Wd 47 MOVSAC MOVSAC Acc,Wx,Wxd,Wy,Wyd,AWB 将 f 中的内容送入 Wn 将 f 中的内容送入目的寄存器 将 f 中的内容送入 WREG 将 16 位立即数送入 Wn 将 8 位立即数送入 Wn 将 Wn 中的内容送入 f 将 Ws 中的内容送入 Wd 将 WREG 中的内容送入 f 将 W(ns):W(ns + 1) 中的双字内容送入 Wd 将 Ws 中的双字内容送入 W(nd + 1):W(nd) 预取操作数并保存累加器 指令 字数 周期数 受影响的 状态标志位 1 18 1 18 1 18 1 18 1 18 2 2 N,Z,C,OV N,Z,C,OV N,Z,C,OV N,Z,C,OV N,Z,C,OV 无 2 2 无 1 1 OA,OB,OAB, SA,SB,SAB 1 1 OA,OB,OAB, SA,SB,SAB 1 1 无 1 1 C 1 1 C 1 1 C 2 2 无 1 2 无 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 OA,OB,OAB, SA,SB,SAB 1 1 无 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 N,Z 1 1 N,Z 1 1 OA,OB,OAB, SA,SB,SAB 1 1 OA,OB,OAB, SA,SB,SAB 1 1 无 1 1 N,Z 1 1 N,Z 1 1 无 1 1 无 1 1 无 1 1 无 1 1 N,Z 1 2 无 1 2 无 1 1 无 DS70165D_CN 第 302 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 24-2: 基本 指令 编号 汇编 助记符 指令集汇总 (续) 汇编语法 说明 指令 字数 周期数 受影响的 状态标志位 48 MPY MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd Wm 与 Wn 相乘,结果存入累加器 1 MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd Wm 平方,结果存入累加器 1 49 MPY.N MPY.N Wm*Wn,Acc,Wx,Wxd,Wy,Wyd Wm 与 Wn 相乘并取反,结果存入累加器 1 50 MSC MSC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd,AWB 相乘再从累加器中减去 1 51 MUL 52 NEG MUL.SS MUL.SU MUL.US MUL.UU MUL.SU MUL.UU MUL NEG Wb,Ws,Wnd Wb,Ws,Wnd Wb,Ws,Wnd Wb,Ws,Wnd Wb,#lit5,Wnd Wb,#lit5,Wnd f Acc {Wnd + 1, Wnd} = signed(Wb) * signed(Ws) 1 {Wnd + 1, Wnd} = signed(Wb) * unsigned(Ws) 1 {Wnd + 1, Wnd} = unsigned(Wb) * signed(Ws) 1 {Wnd + 1, Wnd} = unsigned(Wb) * unsigned(Ws) 1 {Wnd + 1, Wnd} = signed(Wb) * unsigned(lit5) 1 {Wnd + 1, Wnd} = unsigned(Wb) * unsigned(lit5) 1 W3:W2 = f * WREG 1 将累加器内容求补 1 NEG f f=f+1 1 NEG f,WREG WREG = f + 1 1 1 OA,OB,OAB, SA,SB,SAB 1 OA,OB,OAB, SA,SB,SAB 1 无 1 OA,OB,OAB, SA,SB,SAB 1 无 1 无 1 无 1 无 1 无 1 无 1 无 1 OA,OB,OAB, SA,SB,SAB 1 C,DC,N,OV,Z 1 C,DC,N,OV,Z NEG Ws,Wd 53 NOP NOP NOPR 54 POP POP f POP Wdo POP.D Wnd POP.S 55 PUSH PUSH f PUSH Wso PUSH.D Wns PUSH.S 56 PWRSAV PWRSAV #lit1 57 RCALL RCALL Expr RCALL Wn 58 REPEAT REPEAT #lit14 REPEAT Wn 59 RESET RESET 60 RETFIE RETFIE 61 RETLW RETLW #lit10,Wn 62 RETURN RETURN 63 RLC RLC f RLC f,WREG RLC Ws,Wd 64 RLNC RLNC f RLNC f,WREG RLNC Ws,Wd 65 RRC RRC f RRC f,WREG RRC Ws,Wd 66 RRNC RRNC f RRNC f,WREG RRNC Ws,Wd Wd = Ws + 1 空操作 空操作 将栈顶 (TOS)的内容弹出到 f 将栈顶 (TOS)的内容弹出到 Wdo 从栈顶 (TOS)弹出双字到 W(nd):W(nd + 1) 将影子寄存器的内容弹出到主寄存器 将 f 的内容压人栈顶 (TOS) 将 Wso 的内容压人栈顶 (TOS) 将 W(ns):W(ns +1) 中的双字内容压入栈顶 (TOS) 将主寄存器中的双字内容压入影子寄存器 进入休眠或空闲模式 相对调用 计算调用 将下一条指令重复执行 lit14 + 1 次 将下一条指令重复执行 (Wn) + 1 次 软件器件复位 从中断返回 返回并将立即数存入 Wn 从子程序返回 f = 对 f 执行带进位的循环左移 WREG = 对 f 执行带进位的循环左移 WREG = 对 Ws 执行带进位的循环左移 f = 循环左移 f (不带进位) WREG = 循环左移 f (不带进位) Wd = 循环左移 Ws (不带进位) f = 对 f 执行带进位的循环右移 WREG = 对 f 执行带进位的循环右移 WREG = 对 Ws 执行带进位的循环右移 f = 循环右移 f (不带进位) WREG = 循环右移 f (不带进位) Wd = 循环右移 Ws (不带进位) 1 1 C,DC,N,OV,Z 1 1 无 1 1 无 1 1 无 1 1 无 1 2 无 1 1 全部 1 1 无 1 1 无 1 2 无 1 1 无 1 1 WDTO,Sleep 1 2 无 1 2 无 1 1 无 1 1 无 1 1 无 1 3 (2) 无 1 3 (2) 无 1 3 (2) 无 1 1 C,N,Z 1 1 C,N,Z 1 1 C,N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 C,N,Z 1 1 C,N,Z 1 1 C,N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 303 页 dsPIC33F 表 24-2: 基本 指令 编号 汇编 助记符 67 SAC 68 SE 69 SETM 70 SFTAC 指令集汇总 (续) 汇编语法 SAC SAC.R SE SETM SETM SETM SFTAC Acc,#Slit4,Wdo Acc,#Slit4,Wdo Ws,Wnd f WREG Ws Acc,Wn SFTAC Acc,#Slit6 71 SL 72 SUB SL SL SL SL SL SUB f f,WREG Ws,Wd Wb,Wns,Wnd Wb,#lit5,Wnd Acc SUB f SUB f,WREG SUB #lit10,Wn SUB Wb,Ws,Wd SUB Wb,#lit5,Wd 73 SUBB SUBB f SUBB f,WREG SUBB #lit10,Wn SUBB Wb,Ws,Wd SUBB Wb,#lit5,Wd 74 SUBR SUBR f SUBR f,WREG SUBR Wb,Ws,Wd SUBR Wb,#lit5,Wd 75 SUBBR SUBBR f SUBBR f,WREG SUBBR Wb,Ws,Wd SUBBR Wb,#lit5,Wd 76 SWAP SWAP.b Wn SWAP Wn 77 TBLRDH TBLRDH Ws,Wd 78 TBLRDL TBLRDL Ws,Wd 79 TBLWTH TBLWTH Ws,Wd 80 TBLWTL TBLWTL Ws,Wd 81 ULNK ULNK 82 XOR XOR f XOR f,WREG XOR #lit10,Wn XOR Wb,Ws,Wd XOR Wb,#lit5,Wd 83 ZE ZE Ws,Wnd 说明 保存累加器内容 保存舍入后的累加器内容 Wnd = 对 Ws 进行符号扩展 f = 0xFFFF WREG = 0xFFFF Ws = 0xFFFF 对累加器算术移位 (Wn)次 对累加器算术移位 Slit6 次 f = 左移 f WREG = 左移 f Wd = 左移 Ws Wnd = 将 Wb 左移 Wns 位 Wnd = 将 Wb 左移 lit5 位 累加器相减 f = f – WREG WREG = f – WREG Wn = Wn – lit10 Wd = Wb – Ws Wd = Wb – lit5 f = f – WREG – (C) WREG = f – WREG – (C) Wn = Wn – lit10 – (C) Wd = Wb – Ws – (C) Wd = Wb – lit5 – (C) f = WREG – f WREG = WREG – f Wd = Ws – Wb Wd = lit5 – Wb f = WREG –f – (C) WREG = WREG – f – (C) Wd = Ws – Wb – (C) Wd = lit5 – Wb – (C) Wn = 半字节交换 Wn 内容 Wn = 将 Wn 的两个字节相交换 将程序存储单元的 <23:16> 读入 Wd<7:0> 将程序存储单元的 <15:0> 读入 Wd 将 Ws<7:0> 写入程序存储单元的 <23:16> 将 Ws 写入程序存储单元的 <15:0> 释放堆栈帧 f = f .XOR. WREG WREG = f .XOR. WREG Wd = lit10 .XOR. Wd Wd = Wb .XOR. Ws Wd = Wb .XOR. lit5 Wnd = 对 Ws 进行零扩展 指令 字数 周期数 受影响的 状态标志位 1 1 无 1 1 1 1 无 C,N,Z 1 1 无 1 1 无 1 1 无 1 1 OA,OB,OAB, SA,SB,SAB 1 1 OA,OB,OAB, SA,SB,SAB 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 C,N,OV,Z 1 1 N,Z 1 1 N,Z 1 1 OA,OB,OAB, SA,SB,SAB 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1 C,DC,N,OV,Z 1 1无 1 1无 1 2无 1 2无 1 2无 1 2无 1 1无 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 N,Z 1 1 C,Z,N DS70165D_CN 第 304 页 初稿  2007 Microchip Technology Inc. 25.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 开发编程器 • 低成本演示和开发板及评估工具包 dsPIC33F 25.1 MPLAB 集成开发环境软件 MPLAB IDE 软件为 8/16 位单片机市场提供了前所未有 的易于使用的软件开发平台。 MPLAB IDE 是基于 Windows® 操作系统的应用软件,包括: • 一个包含所有调试工具的图形界面 - 模拟器 - 编程器 (单独销售) - 仿真器 (单独销售) - 在线调试器 (单独销售) • 具有彩色上下文代码显示的全功能编辑器 • 多项目管理器 • 内容可直接编辑的可定制式数据窗口 • 高级源代码调试 • 可视化器件初始化程序,便于进行寄存器的初始化 • 鼠标停留在变量上进行查看的功能 • 通过拖放把变量从源代码窗口拉到观察窗口 • 丰富的在线帮助 • 集成了可选的第三方工具,如 HI-TECH 软件 C 编 译器和 IAR C 编译器 MPLAB IDE 可以让您: • 编辑源文件 (汇编语言或 C 语言) • 点击一次即可完成汇编 (或编译)并将代码下载 到 PIC MCU 仿真器和模拟器工具中 (自动更新所 有项目信息) • 可使用如下各项进行调试: - 源文件 (汇编语言或 C 语言) - 混合汇编语言和 C 语言 - 机器码 MPLAB IDE 在单个开发范例中支持使用多种调试工 具,包括从成本效益高的模拟器到低成本的在线调试 器,再到全功能的仿真器。这样缩短了用户升级到更加 灵活而功能更强大的工具时的学习时间。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 305 页 dsPIC33F 25.2 MPASM 汇编器 MPASM 汇编器是全功能通用宏汇编器,适用于所有的 PIC MCU。 MPASM 汇编器可生成用于 MPLINK 目标链接器的可重 定位目标文件、Intel® 标准 HEX 文件、详细描述存储器 使用状况和符号参考的 MAP 文件、包含源代码行及生 成机器码的绝对 LST 文件以及用于调试的 COFF 文件。 MPASM 汇编器具有如下特征: • 集成在 MPLAB IDE 项目中 • 用户定义的宏可简化汇编代码 • 对多用途源文件进行条件汇编 • 允许完全控制汇编过程的指令 25.3 MPLAB C18 和 MPLAB C30 C 编译器 MPLAB C18 和 MPLAB C30 代码开发系统是完全的 ANSI C 编译器,分别适用于 Microchip 的 PIC18 和 PIC24 系列单片机及 dsPIC30F 和 dsPIC33 系列数字信 号控制器。这些编译器可提供其他编译器并不具备的强 大的集成功能和出众的代码优化能力,且使用方便。 为便于源代码调试,编译器提供了针对 MPLAB IDE 调 试器的优化符号信息。 25.4 MPLINK 目标链接器 / MPLIB 目标库管理器 MPLINK 目标链接器包含了由 MPASM 汇编器、MPLAB C18 C 编译器产生的可重定位目标。通过使用链接器脚 本中的指令,它还可链接预编译库中的可重定位目标。 MPLIB目标库管理器管理预编译代码库文件的创建和修 改。当从源文件调用库中的一段子程序时,只有包含此 子程序的模块被链接到应用中。这样可使大型库在许多 不同应用中被高效地利用。 目标链接器 / 库管理器具有如下特征: • 高效地连接单个的库而不是许多小文件 • 通过将相关的模块组合在一起来增强代码的可维护 性 • 只要列出、替换、删除和抽取模块,便可灵活地创 建库 25.5 MPLAB ASM30 汇编器、 链接器和库管理器 MPLAB ASM30 汇编器为 dsPIC30F 器件提供转换自符 号汇编语言的可重定位机器码。 MPLAB C30 C 编译器 使用该汇编器生成目标文件。汇编器产生可重定位目标 文件之后,可将这些目标文件存档,或与其他可重定位 目标文件和存档链接以生成可执行文件。该汇编器有如 下显著特征: • 支持整个 dsPIC30F 指令集 • 支持定点数据和浮点数据 • 命令行界面 • 丰富的指令集 • 灵活的宏语言 • MPLAB IDE 兼容性 25.6 MPLAB SIM 软件模拟器 MPLAB SIM软件模拟器在指令级对PIC MCU和dsPIC® DSC 进行模拟,使得用户可以在 PC 主机的环境下进行 代码开发。对于任何给定的指令,用户均可对数据区进 行检查或修改,并通过各种触发机制来产生激励。可以 将各寄存器的情况记录在文件中,以便进行进一步地运 行时分析。跟踪缓冲器和逻辑分析器的显示使模拟器还 能记录和跟踪程序的执行、 I/O 的动作、大部分的外设 及内部寄存器的状况。 MPLAB SIM 软件模拟器完全支持使用 MPLAB C18 和 MPLAB C30 C 编译器以及MPASM和MAPLAB ASM30 汇编器的符号调试。该软件模拟器可用于在硬件实验室 环境外灵活地开发和调试代码,是一款完美且经济的软 件开发工具。 DS70165D_CN 第 306 页 初稿  2007 Microchip Technology Inc. 25.7 MPLAB ICE 2000 高性能在线仿真器 MPLAB ICE 2000 在线仿真器旨在为产品开发工程师提 供一整套用于 PIC 单片机的设计工具。 MPLAB ICE 2000 在线仿真器的软件控制由 MPLAB 集成开发环境平 台提供,它允许在单一环境下进行编辑、编译、下载以 及源代码调试。 MPLAB ICE 2000 是全功能仿真器系统,它具有增强的 跟踪、触发和数据监控功能。处理器模块可插拔,使系 统可轻松进行重新配置以适应各种不同处理器的仿真需 要。MPLAB ICE 2000 在线仿真器的架构允许对其进行 扩展以支持新的 PIC 单片机。 MPLAB ICE 2000 在线仿真器系统设计为一款实时仿真 系统,该仿真系统具备通常只有昂贵的开发工具中才有 的高级功能。选择 PC 平台和 Microsoft® Windows® 32 位操作系统可使这些功能在一个简单而统一的应用中得 到很好的利用。 25.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 下载将来版本的固件,对 MPLAB REAL ICE 进行现场升级。在即将推出的 MPLAB IDE 版 本中,会支持许多新器件,还将增加一些新特性,如软 件断点和汇编代码跟踪等。在同类仿真器中, MPLAB REAL ICE 的优势十分明显:低成本、高速仿真、实时变 量监视、跟踪分析、复杂断点、耐用的探针接口及较长 (长达 3 米)的互连电缆。 dsPIC33F 25.9 MPLAB ICD 2 在线调试器 Microchip 的在线调试器 MPLAB ICD 2 是一款功能强大 而成本低廉的运行时开发工具,通过 RS-232 或高速 USB 接口与 PC 主机相连。该工具基于闪存 PIC MCU, 可用于开发本系列及其他 PIC MCU 和 dsPIC DSC。 MPLAB ICD 2使用了闪存器件中内建的在线调试功能。 该功能结合 Microchip 的在线串行编程(In-Circuit Serial ProgrammingTM, ICSPTM)协议,可在 MPLAB 集成开 发环境的图形用户界面上提供成本效益很高的在线闪存 调试。这使设计人员可通过设置断点、单步运行以及对 变量、CPU 状态以及外设寄存器进行监视的方法实现源 代码的开发和调试。其全速运行特性可对硬件和应用进 行实时测试。 MPLAB ICD 2 还可用作某些 PIC 器件的 开发编程器。 25.10 MPLAB PM3 器件编程器 MPLAB PM3 器件编程器是一款通用的、符合 CE 规范 的器件编程器,其可编程电压设置在 VDDMIN 和 VDDMAX 之间时可靠性最高。它有一个用来显示菜单和错误信息 的大 LCD 显示器(128 x 64),以及一个支持各种封装 类型的可拆卸模块化插槽装置。编程器标准配置中带有 一根 ICSPTM 电缆。在单机模式下, MPLAB PM3 器件 编程器不必与 PC 相连即可对 PIC 器件进行读取、验证 和编程。在该模式下它还可设置代码保护。 MPLAB PM3 通过 RS-232 或 USB 电缆连接到 PC 主机上。 MPLAB PM3 具备高速通信能力以及优化算法,可对存 储器很大的器件进行快速编程,它还采用 SD/MMC 卡 用作文件存储及数据安全应用。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 307 页 dsPIC33F 25.11 PICSTART Plus 开发编程器 PICSTART Plus开发编程器是一款易于使用而成本低廉 的原型编程器。它通过 COM (RS-232)端口与 PC 相 连。 MPLAB 集成开发环境软件使得该编程器的使用简 便、高效。PICSTART Plus 开发编程器支持采用 DIP 封 装的大部分 PIC 器件,其引脚数最多可达 40 个。引脚 数更多的器件,如 PIC16C92X 和 PIC17C76X,可通过 连接一个转接插槽来获得支持。PICSTART Plus 开发编 程器符合 CE 规范。 25.12 PICkit 2 开发编程器 PICkit™ 2 开发编程器是一个低成本编程器;对于某些 选定闪存器件,它也是一个调试器,通过其易于使用的 接口可对众多 Microchip 的低档、中档和 PIC18F 系列 闪存单片机进行编程。 PICkit 2 入门工具包中包含一个 有实验布线区的开发板、十二堂系列课程、软件和 HITECH 的 PICC™ Lite C 编译器,有助于用户快速掌握 PIC® 单片机的使用。这一工具包为使用 Microchip 功能 强大的中档闪存系列单片机进行编程、评估和应用开 发,提供了所需的一切。 25.13 演示、开发和评估板 有许多演示、开发和评估板可用于各种 PIC MCU 和 dsPIC DSC,实现对全功能系统的快速应用开发。大多 数的演示、开发和评估板都有实验布线区,供用户添加 定制电路;还有应用固件和源代码,用于测试和修改。 这些板支持多种功能部件,包括 LED、温度传感器、开 关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附 加 EEPROM 存储器。 演示和开发板可用于教学环境,在实验布线区设计定制 电路,从而掌握各种单片机应用。 除了 PICDEM™ 和 dsPICDEM™ 演示 / 开发板系列电路 外, Microchip 还有一系列评估工具包和演示软件,适 用于模拟滤波器设计、 KEELOQ® 数据安全产品 IC、 CAN、IrDA®、PowerSmart 电池管理、SEEVAL® 评估 系统、 Σ−∆ ADC、流速传感器,等等。 有 关 演 示、开 发 和 评 估 工 具 包 的 完 整 列 表,请 查 阅 Microchip 公司网页 (www.microchip.com)。 DS70165D_CN 第 308 页 初稿  2007 Microchip Technology Inc. dsPIC33F 26.0 电气特性 本章提供了 dsPIC33F 系列电气特性的概述。在本文档的后续版本中还将提供更多信息。 下面列出了 dsPIC33F 系列器件的绝对最大值。器件长时间工作在最大值条件下,其可靠性会受到影响。上述值仅为运 行条件极大值,我们不建议器件在该规范规定的范围以外运行。 绝对最大值 ( 注 1) 环境温度................................................................................................................................................... -40°C 至 +85°C 储存温度................................................................................................................................................ -65°C 至 +150°C VDD 引脚相对于 VSS 的电压...................................................................................................................... -0.3V 至 +4.0V 任一模拟 / 数字引脚和 MCLR 引脚相对于 VSS 的电压 ................................................................-0.3V 至 (VDD + 0.3V) 任一只能用作数字的引脚相对于 VSS 的电压............................................................................................. -0.3V 至 +5.6V VDDCORE 引脚相对于 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: 最大允许电流与器件最大功耗 (见表 26-2)有关。 3: CLKOUT 引脚例外,其灌 / 拉电流为 25 mA,另外 VREF+、 VREF-、 SCLx、 SDAx、 PGCx 和 PGDx 引脚 的灌 / 拉电流为 12 mA。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第309 页 dsPIC33F 26.1 直流特性 表 26-1: 工作速度 (MIPS)与电压 特性 VDD 范围 (单位:V) 温度范围 (单位: °C) DC5 3.0-3.6V -40°C 至 +85°C 最大 MIPS dsPIC33F 40 表 26-2: 热工作条件 参数 dsPIC33F 工作结温范围 工作环境温度范围 功耗: 芯片的内部功耗: PINT = VDD x (IDD - Σ IOH) I/O 引脚的功耗: I/O = Σ ({VDD - VOH} x IOH) + Σ (VOL x IOL) 允许的最大功耗 符号 最小值 典型值 最大值 单位 TJ -40 — +125 °C TA -40 — +85 °C PD PINT + PI/O W PDMAX (TJ – TA)/θJA W 表 26-3: 热封装特性 特性 封装热阻, 100 引脚 TQFP (14x14x1 mm) 封装热阻, 100 引脚 TQFP (12x12x1 mm) 封装热阻, 80 引脚 TQFP (12x12x1 mm) 封装热阻, 64 引脚 TQFP (10x10x1 mm) 注 1: 结点到环境的热阻,可通过封装模拟来获得 θJA 的值。 符号 θJA θJA θJA θJA 典型值 48.4 52.3 38.7 38.3 最大值 — — — — 单位 °C/W °C/W °C/W °C/W 注释 1 1 1 1 表 26-4: 直流特性 直流温度和电压规范 参数编号 符号 特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 最小值 典型值 (1) 最大值 单位 条件 工作电压 DC10 电源电压 VDD 3.0 — 3.6 V DC12 VDR RAM 数据保持电压 (2) — 2.8 — V DC16 VPOR VDD 启动电压 — 确保能够产生内部上电复位信号 VSS — V DC17 SVDD VDD 上升率 确保能够产生内部上电复位信号 0.05 — — V/ms 在 0.1s 内可从 0V 上 升到 3.3V 在 60 ms 内可从 0V 上 升到 2.5V 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测试。 2: 该电压是在不丢失 RAM 数据前提下的最小 VDD。 DS70165D_CN 第310 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-5: 直流特性 直流特性:工作电流 (IDD) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数编号 典型值 (1) 最大值 单位 条件 工作电流 (IDD) (2) DC20a 27 — mA DC20b 26 — mA +25°C +85°C 3.3V 10 MIPS DC21a DC21b 33 — mA 32 — mA +25°C +85°C 3.3V 16 MIPS DC22a DC22b 44 — mA 43 — mA +25°C +85°C 3.3V 20 MIPS DC23a DC23b 60 — mA 58 — mA +25°C +85°C 3.3V 30 MIPS DC24a DC24b 74 — mA 72 — mA +25°C +85°C 3.3V 40 MIPS 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 2: 供电电流主要是由工作电压和频率决定的。其他因素,如 I/O 引脚负载和开关频率、振荡器类型、内部代 码执行模式和温度也会影响电流消耗。所有 IDD 测量的测试条件如下:OSC1 由满幅外部方波驱动。所有 I/O 引脚均被配置为输入引脚,拉至 VSS。 MCLR = VDD, WDT 和 FSCM 被禁止。 CPU、SRAM、程序存 储器和数据存储器均处于工作状态。外设模块均不工作;但是,仍为每个外设提供时钟 (PMD 的所有位 均为零)。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第311 页 dsPIC33F 表 26-6: 直流特性 直流特性:空闲电流 (IIDLE) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数编号 典型值 (1) 最大值 单位 条件 空闲电流 (IIDLE):内核停止工作而时钟有效时的基本电流 (2) DC40a TBD — mA +25°C DC40b TBD — mA +85°C 3.3V 10 MIPS DC41a DC41b TBD — mA TBD — mA +25°C +85°C 3.3V 16 MIPS DC42a DC42b TBD — mA TBD — mA +25°C +85°C 3.3V 20 MIPS DC43a DC43b TBD — mA TBD — mA +25°C +85°C 3.3V 30 MIPS DC44a DC44b 16.5 — mA 16 — mA +25°C +85°C 3.3V 40 MIPS 图注: TBD = 待定 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 2: 基本 IIDLE 是在内核停止工作但时钟有效并且所有模块均关闭时测得的。外设模块禁止 SFR 寄存器为全 零。所有 I/O 引脚被配置为输入引脚并拉至 VSS。 表 26-7: 直流特性 直流特性:掉电电流 (IPD) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数编号 典型值 (1) 最大值 单位 条件 掉电电流 (IPD) (2) DC60a DC60b 200 — TBD — µA +25°C 3.3V 基本掉电电流 (3,4) µA +85°C DC61a DC61b TBD — TBD — µA µA +25°C +85°C 3.3V 看门狗定时器电流:∆IWDT(3) 图注: TBD = 待定 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 2: 在关闭所有外设和时钟时测量基本 IPD。所有 I/O 引脚均被配置为输入并拉至 VSS。 WDT 等外设也都被关 闭。 3: ∆ 电流是使能模块时额外消耗的电流。总电流消耗是这一电流与基本 IPD 电流之和。 4: 这些电流是针对该系列中存储容量最大的器件测量得到的。 DS70165D_CN 第312 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-8: 直流特性 直流特性:打盹电流 (IDOZE) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数编号 典型值 (1) 最大值 打盹模式时 钟分频比 单位 条件 DC70a 42 DC70f 26 DC70g 25 DC71a 41 DC71f 25 DC71g 24 — 1:2 — 1:64 mA 25°C — 1:128 — 1:2 — 1:64 mA 85°C — 1:128 3.3V 40 MIPS 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第313 页 dsPIC33F 表 26-9: 直流特性 直流特性:I/O 引脚输入规范 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 VIL 输入低电压 DI10 I/O 引脚 VSS — 0.2 VDD V DI15 MCLR VSS — 0.2 VDD V DI16 DI17 DI18 DI19 VIH OSC1 (XT 模式) OSC1 (HS 模式) SDAx 和 SCLx SDAx 和 SCLx 输入高电压 VSS — 0.2 VDD V VSS — 0.2 VDD V VSS — 0.3 VDD V 禁止 SMBus VSS — 0.2 VDD V 使能 SMBus DI20 I/O 引脚: 带模拟功能 仅数字功能 0.8 VDD — 0.8 VDD — VDD V 5.5 V DI25 MCLR 0.8 VDD — VDD V DI26 OSC1 (XT 模式) 0.7 VDD — VDD V DI27 DI28 DI29 DI30 ICNPU IIL OSC1 (HS 模式) SDAx 和 SCLx SDAx 和 SCLx CNx 上拉电流 输入泄漏电流 (2)(3) 0.7 VDD — 0.7 VDD — 0.8 VDD — 50 250 VDD V VDD V 禁止 SMBus VDD V 使能 SMBus 400 µA VDD = 3.3V,VPIN = VSS DI50 I/O 端口 — TBD TBD µA VSS ≤ VPIN ≤ VDD, 引脚处于高阻态 DI51 模拟输入引脚 — TBD TBD µA VSS ≤ VPIN ≤ VDD, 引脚处于高阻态。 DI55 MCLR — TBD TBD µA VSS ≤ VPIN ≤ VDD DI56 OSC1 — TBD TBD µA VSS ≤ VPIN ≤ VDD, XT 和 HS 模式 图注: TBD = 待定 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 2: MCLR 引脚上的泄漏电流主要由施加在该引脚上的电平决定。规定电平为正常工作条件下的电平。在不同 的输入电压下可测得更高的泄漏电流。 3: 负电流定义为引脚的拉电流。 DS70165D_CN 第314 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-10: 直流特性 直流特性:I/O 引脚输出规范 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 VOL 输出低电压 DO10 I/O 端口 — — 0.4 V IOL = TBD, VDD = 3.3V DO16 OSC2/CLKO — — 0.4 V IOL = TBD, VDD = 3.3V VOH 输出高电压 DO20 I/O 端口 2.4 — — V IOH = -3.0 mA, VDD = 3.3V DO26 OSC2/CLKO 2.4 — — V IOH = -3.0 mA,VDD = 3.3V 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 表 26-11: 直流特性 直流特性:程序存储器 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 闪存程序存储器 D130 EP 单元耐擦写能力 100 1000 — E/W D131 VPR 用于读的 VDD VMIN — 3.6 V D132B VPEW 用于自定时写的 VDD VMIN — 3.6 V D133A TIW 自定时写周期时间 — 1.5 — ms D134 TRETD 特性保持时间 20 — — 年 D135 IDDP 编程时的供电电流 — 10 — mA D136 TRW 行写入时间 — 1.6 — ms D137 TPE 页擦除时间 — 20 — ms D138 Tww 字写周期时间 20 — 40 ms 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。 -40°C 至 +85°C VMIN = 最小工作电压 VMIN = 最小工作电压 假如没有违反其他规范 表 26-12: 内部稳压器规范 工作条件:-40°C < TA < +85°C (除非另外声明) 参数 编号 符号 特性 CEFC 外部滤波器电容值 最小值 典型值 最大值 1 10 — 单位 µF 备注 电容必须与一个低阻值的电 阻 (< 5 欧姆)串联  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第315 页 dsPIC33F 26.2 交流特性和时序参数 本节定义了 dsPIC33F 的交流特性和时序参数。 表 26-13: 温度和电压规范-交流 交流规范 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 工作电压 VDD 范围如第 26.0 节 “电气特性”所示。 图 26-1: 器件时序规范的负载条件 负载条件 1 -适用于除 OSC2 之外的所有引脚 VDD/2 负载条件 2 -适用于 OSC2 引脚 RL CL VSS 引脚 CL VSS RL = 464Ω CL = 50 pF (适用于除 OSC2 外的所 有引脚) 15 pF (适用于 OSC2 输出) 表 26-14: 输出引脚上的容性负载要求 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 DO50 COSC2 OSC2/SOSC2 引脚 — — 15 pF 当采用外部时钟驱动 OSC1 时,处于 XT 和 HS 模式 DO56 CIO 所有 I/O 引脚和 OSC2 — — 50 pF EC 模式 DO58 CB SDAx 和 SCLx — — 400 pF 在 I2C™ 模式下 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 DS70165D_CN 第316 页 初稿  2007 Microchip Technology Inc. 图 26-2: OSC1 CLKO dsPIC33F 外部时钟时序 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OS20 OS41 OS30 OS30 OS25 OS31 OS31 OS40 表 26-15: 交流规范 外部时钟时序要求 标准工作条件:2.5V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 OS10 FIN 外部 CLKI 频率 0.8 (只允许在 EC 和 ECPLL 模式 4 下使用外部时钟) — 64 MHz EC — 8 MHz ECPLL 晶振频率 3 — 10 MHz XT 3 — 10 MHz XTPLL 10 — 40 MHz HS 10 — 40 MHz HSPLL — 33 kHz SOSC OS20 TOSC TOSC = 1/FOSC 12.5 — DC ns OS25 TCY 指令周期时间 (2) 25 — DC ns OS30 TosL、 (OSC1)上外部时钟的高电平 0.625 x TOSC — TosH 或低电平时间 — ns EC OS31 TosR、 (OSC1)上外部时钟的上升或 — TosF 下降时间 — TBD ns EC OS40 OS41 TckR TckF CLKO 上升时间 (3) CLKO 下降时间 (3) — 6 TBD ns — 6 TBD ns 图注: TBD = 待定 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测 试。 2: 指令周期时间 (TCY)等于输入振荡器时基周期的 2 倍。所有规定值均为基于标准工作条件下器件执行代 码时对应特定振荡器类型的特征数据。超过规定值可能导致振荡器运行不稳定和 / 或电流消耗超出预期值。 所有器件在测试 “最小值”时,都在 OSC1/CLKI 引脚连接了外部时钟。当使用了外部时钟输入时,所有 器件的 “最大”周期时间极限为 “DC”(没有时钟)。 3: 在 EC 模式下进行测量。测量 OSC2 引脚上的 CLKO 信号。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第317 页 dsPIC33F 表 26-16: 交流规范 PLL 时钟时序规范 (VDD = 3.0V 至 3.6V) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 OS50 FPLLI PLL 压控振荡器 (VCO)的 0.8 — 输入频率范围 (2) 8 MHz ECPLL、HSPLL 和 XTPLL 模式 OS51 FSYS 片上 VCO 系统频率 100 — 200 MHz OS52 TLOC PLL 起振时间 (锁定时间) TBD 100 TBD µs OS53 DCLK CLKO 稳定性 (抗抖动性) TBD 1 TBD % 在 100ms 时间段内测量 图注: TBD = 待定 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。这些参数仅供设计参考,未经测试。 表 26-17: 交流特性 交流特性:内部 RC 精度 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 特性 最小值 典型值 最大值 单位 条件 频率为 7.3728 MHz 时的内部 FRC 精度 (1) F20 FRC TBD — TBD % +25°C TBD — TBD % -40°C ≤ TA ≤ +85°C 图注: TBD = 待定 注 1: 频率校准的条件为 25°C 和 3.3V。 TUN 位可用于补偿温度漂移。 VDD = 3.0-3.6V VDD = 3.0-3.6V 表 26-18: 交流特性 内部 RC 精度 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C (工业级) 参数 编号 特性 最小值 典型值 最大值 单位 条件 频率为 32.768 kHz 时的 LPRC(1) F21 TBD — TBD % +25°C VDD = 3.0-3.6V TBD — TBD % -40°C ≤ TA ≤ +85°C VDD = 3.0-3.6V 图注: TBD = 待定 注 1: LPRC 频率随 VDD 的改变而改变。 DS70165D_CN 第318 页 初稿  2007 Microchip Technology Inc. 图 26-3: CLKO 和 I/O 时序特性 dsPIC33F I/O 引脚 (输入) I/O 引脚 (输出) 旧值 注:请参见图 26-1 了解负载条件。 DI35 DI40 DO31 DO32 新值 表 26-19: 交流特性 CLKO 和 I/O 时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 --40°C ≤ TA ≤ +85°C (工业级) 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 DO31 TIOR 端口输出上升时间 — 10 DO32 TIOR 端口输出下降时间 — 10 DI35 TINP INTx 引脚高电平或低电平时间 (输出) 20 — DI40 TRBP CNx 高电平或低电平时间 (输入) 2 — 注 1: 除非另外声明,否则 “典型值”栏中的数据均为 3.3V, 25°C 下的值。 25 ns 25 ns — ns — TCY 条件 — — — —  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第319 页 dsPIC33F 图 26-4: 复位、看门狗定时器、振荡器起振定时器和上电延时定时器的时序特性 VDD MCLR 内部 POR PWRT 延时 OSC 延时 内部 复位 看门狗 定时器 复位 SY12 SY11 SY30 I/O 引脚 FSCM 延时 SY35 注:请参见图 26-1 了解负载条件。 SY10 SY13 SY20 SY13 DS70165D_CN 第320 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-20: 交流特性 复位、看门狗定时器、振荡器起振定时器、上电延时定时器和欠压复位时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SY10 TMCL MCLR 脉冲宽度 (低电平) 2 — — µs -40°C 至 +85°C SY11 TPWRT 上电延时定时器周期 0.75 1 1.25 ms -40°C 至 +85°C 1.5 2 2.5 可由用户编程 3 4 5 6 8 10 12 16 20 24 32 40 48 64 80 96 128 160 SY12 TPOR 上电复位延时 3 10 30 µs -40°C 至 +85°C SY13 TIOZ 自 MCLR 低电平或看门狗定时器 — 复位起 I/O 处于高阻态的时间 0.8 1.0 µs SY20 TWDT1 看门狗定时器超时周期 (无预分频器) 1.8 2.0 2.2 ms VDD = 5V,-40°C 至 +85°C TWDT2 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 下的值。 3: 特征值,仅供设计参考,未经测试。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第321 页 dsPIC33F 图 26-5: TIMER1、 TIMER2、 TIMER3、TIMER4、 TIMER5、 TIMER6、 TIMER7、 TIMER8 和 TIMER9 外部时钟时序特性 TxCK TMRx Tx10 Tx11 Tx15 OS60 Tx20 注:请参见图 26-1 了解负载条件。 表 26-21: 交流特性 TIMER1 外部时钟时序要求 (1) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 TA10 TTXH TxCK 高电平时间 同步, 0.5 TCY + 20 — — ns 还必须满足参数 无预分频器 TA15 同步, 有预分频器 10 — — ns 异步 10 — — ns TA11 TTXL TxCK 低电平时间 同步, 0.5 TCY + 20 — — ns 还必须满足参数 无预分频器 TA15 同步, 有预分频器 10 — — ns 异步 10 — — ns TA15 TTXP TxCK 输入周期 同步, 无预分频器 TWDT+10 — — ns 同步, 有预分频器 取 20 ns 或 — (TCY + 40)/N 中的较大值 — — N = 预分频值 (1, 8, 64, 256) 异步 20 — — ns OS60 Ft1 SOSC1/T1CK 振荡器输入频率范围 DC (通过将 TCS 位 (T1CON<1>)置 1 来使能振荡器) — 50 kHz TA20 TCKEXTMRL 从出现外部 TxCK 时钟边沿到定时器 递增的延时 0.5 TCY 1.5 TCY — 注 1: Timer1 属于 A 类定时器。 DS70165D_CN 第322 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-22: 交流特性 TIMER2、 TIMER4、 TIMER6 和 TIMER8 的外部时钟时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 TB10 TB11 TB15 TB20 TtxH TxCK 高电平时间 同步, 无预分频器 0.5 TCY + 20 — 同步, 有预分频器 10 — TtxL TxCK 低电平时间 同步, 0.5 TCY + 20 — 无预分频器 同步, 有预分频器 10 — TtxP TxCK 输入周期 同步, 无预分频器 TWDT+10 — 同步, 有预分频器 取 20 ns 或 (TCY + 40)/N 中的较大值 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递 0.5 TCY — 增的延时 — — — — — 1.5 TCY ns 还必须满足参数 TB15 ns ns 还必须满足参数 TB15 ns ns N = 预分频值 (1, 8, 64, 256) — 表 26-23: 交流特性 TIMER3、 TIMER5、 TIMER7 和 TIMER9 的外部时钟时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 TC10 TtxH TxCK 高电平时间 同步 0.5 TCY + 20 — — ns 还必须满足参数 TC15 TC11 TtxL TxCK 低电平时间 同步 0.5 TCY + 20 — — ns 还必须满足参数 TC15 TC15 TtxP TxCK 输入周期 同步, 无预分频器 TWDT+10 — — ns N = 预分频值 (1, 8, 64, 256) 同步, 有预分频器 取 20 ns 或 (TCY + 40)/N 中的较大值 TC20 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递增 的延时 0.5 TCY — 1.5 TCY —  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第323 页 dsPIC33F 图 26-6: TIMERQ (QEI 模块)外部时钟的时序特性 QEB POSCNT TQ10 TQ11 TQ15 TQ20 表 26-24: 交流特性 QEI 模块的外部时钟时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 最大值 单位 条件 TQ10 TtQH TQCK 高电平时间 同步, 有预分频器 TQ11 TtQL TQCK 低电平时间 同步, 有预分频器 TQ15 TtQP TQCP 输入周期 同步, 有预分频器 TQ20 TCKEXTMRL 从外部 TxCK 时钟边沿到定时器递 增的延时 注 1: 参数仅为特征值,在生产时未经测试。 TWDT+20 TWDT+20 2 * TCY + 40 0.5 TCY — ns 还必须满足 参数 TQ15 — ns 还必须满足 参数 TQ15 — ns — 1.5 TCY — — DS70165D_CN 第324 页 初稿  2007 Microchip Technology Inc. 图 26-7: 输入捕捉 (CAPx)时序特性 ICx dsPIC33F IC10 IC15 IC11 注:请参见图 26-1 了解负载条件。 表 26-25: 交流特性 输入捕捉时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 最大值 IC10 TccL IC11 TccH IC15 TccP ICx 输入低电平时间 ICx 输入高电平时间 ICx 输入周期 无预分频器 有预分频器 无预分频器 有预分频器 0.5 TCY + 20 — 10 — 0.5 TCY + 20 — 10 — (2 TCY + 40)/N — 注 1: 参数仅为特征值,在生产时未经测试。 单位 条件 ns ns ns ns ns N = 预分频值 (1, 4, 16) 图 26-8: 输出比较模块 (OCx)时序特性 OCx (输出比较 或 PWM 模式) OC11 OC10 注:请参见图 26-1 了解负载条件。 表 26-26: 交流特性 输出比较模块时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 OC10 TccF OCx 输出下降时间 — — — ns 见参数 D032 OC11 TccR OCx 输出上升时间 — — — ns 见参数 D031 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第325 页 dsPIC33F 图 26-9: OC/PWM 模块时序特性 OCFA/OCFB OCx OC20 OC15 表 26-27: 交流特性 简单 OC/PWM 模式时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 OC15 TFD 故障输入到 PWM I/O 改变状 — — 50 ns — 态的时间 OC20 TFLT 故障输入脉冲宽度 50 — — ns — 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25 ℃下的值。这些参数仅供设计参考,未经测试。 DS70165D_CN 第326 页 初稿  2007 Microchip Technology Inc. 图 26-10: 电机控制 PWM 模块故障时序特性 FLTA/B PWMx MP30 MP20 dsPIC33F 图 26-11: 电机控制 PWM 模块时序特性 MP11 MP10 PWMx 注:请参见图 26-1 了解负载条件。 表 26-28: 交流特性 电机控制 PWM 模块时序特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 MP10 TFPWM PWM 输出下降时间 — — — ns 见参数 D032 MP11 TRPWM PWM 输出上升时间 — — — ns 见参数 D031 MP20 TFD 故障输入 ↓ 到 PWM I/O 改变 — 状态的时间 — 50 ns — MP30 TFH 最小脉冲宽度 50 — — ns — 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第327 页 dsPIC33F 图 26-12: QEA/QEB 输入特性 TQ36 QEA (输入) TQ31 TQ30 TQ35 QEB (输入) TQ41 TQ40 QEB 内部 TQ31 TQ30 TQ35 表 26-29: 交流特性 正交解码器时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 典型值 (2) 最大值 单位 条件 TQ30 TTXL 正交输入低电平时间 6 TCY — ns — TQ31 TQUH 正交输入高电平时间 6 TCY — ns — TQ35 TQUIN 正交输入周期 12 TCY — ns — TQ36 TQUP 正交相位周期 3 TCY — ns — TQ40 TQUFL 数字滤波器识别低电平的时间 3 * N * TCY — ns N = 1, 2, 4, 16, 32, 64, 128 和 256 (注 3) TQ41 TQUFH 数字滤波器识别高电平的时间 3 * N * TCY — ns N = 1, 2, 4, 16, 32, 64, 128 和 256 (注 3) 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,“典型值”栏中的数据均为 5V, 25 ℃下的值。这些参数仅供设计参考,未经测试。 3: N = 索引通道数字滤波器时钟分频选择位。请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)中的第 16 章 “正交编码器接口 (QEI)”。 DS70165D_CN 第328 页 初稿  2007 Microchip Technology Inc. 图 26-13: QEA (输入) QEI 模块索引脉冲时序特性 QEB (输入) 未经门控的索引 TQ51 内部索引 位置计数器复位 TQ55 TQ50 dsPIC33F 表 26-30: 交流特性 QEI 索引脉冲时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 最大值 单位 条件 TQ50 TqIL 数字滤波器识别低电平的时间 3 * N * TCY — ns N = 1, 2, 4, 16, 32, 64, 128 和 256 (注 2) TQ51 TqiH 数字滤波器识别高电平的时间 3 * N * TCY — ns N = 1, 2, 4, 16, 32, 64, 128 和 256 (注 2) TQ55 Tqidxr 从识别到索引脉冲到位置 3 TCY — ns — 计数器复位 (无门控索引)的时间 注 1: 参数仅为特征值,在生产时未经测试。 2: 显示 QEA 和 QEB 与索引脉冲的对齐线只是为了说明位置计数器的复位时序。只显示了正向 (QEA 领先 于 QEB)时序。反向 (QEA 滞后于 QEB)的时序与此相同,但是索引脉冲识别发生在下降沿。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第329 页 dsPIC33F 图 26-14: SCKx (CKP = 0) SCKx (CKP = 1) SDOx SDIx SPIx 模块主模式 (CKE = 0)时序特性 SP11 SP10 SP21 SP20 SP35 MSb SP31 MSb 输入 SP40 SP41 SP20 SP21 Bit 14 - - - - - -1 LSb Bit 14 - - -1 SP30 LSb 输入 注:请参见图 26-1 了解负载条件。 表 26-31: 交流特性 SPIx 主模式 (CKE = 0)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP10 SP11 SP20 SP21 SP30 SP31 TscL TscH TscF TscR TdoF TdoR SCKx 输出低电平时间 (3) SCKx 输出高电平时间 (3) SCKx 输出下降时间 (4) SCKx 输出上升时间 (4) SDOx 数据输出下降时间 (4) SDOx 数据输出上升时间 (4) TCY/2 — TCY/2 — — — — — — — — — — ns — — ns — — ns 见参数 D032 — ns 见参数 D031 — ns 见参数 D032 — ns 见参数 D031 SP35 TscH2doV, SCKx 边沿后 SDOx 数据输出有 — — 30 ns — TscL2doV 效的时间 SP40 TdoV2scH, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TdiV2scL 建立时间 SP41 TscH2diL, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TscL2diL 保持时间 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: SCKx 信号的最小时钟周期为 100 ns。因此,在主模式下产生的时钟不能违反这一规范。 4: 假设所有 SPIx 引脚的负载均为 50 pF。 DS70165D_CN 第330 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 26-15: SCKX (CKP = 0) SPIx 模块主模式 (CKE = 1)时序特性 SP36 SP11 SP10 SP21 SP20 SCKX (CKP = 1) SP35 SP20 SP21 SDOX SDIX MSb Bit 14 - - - - - -1 SP40 SP30,SP31 MSb 输入 SP41 Bit 14 - - - -1 注:请参见图 26-1 了解负载条件。 LSb LSb 输入 表 26-32: 交流特性 SPIx 模块的主模式 (CKE = 1)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP10 SP11 SP20 SP21 SP30 SP31 TscL TscH TscF TscR TdoF TdoR SCKx 输出低电平时间 (3) TCY/2 — SCKx 输出高电平时间 (3) TCY/2 — SCKx 输出下降时间 (4) — — SCKx 输出上升时间 (4) — — SDOx 数据输出下降时间 (4) — — SDOx 数据输出上升时间 (4) — — — ns — — ns — — ns 见参数 D032 — ns 见参数 D031 — ns 见参数 D032 — ns 见参数 D031 SP35 TscH2doV, SCKx 边沿后 SDOx 数据输出 — — — ns — TscL2doV 有效的时间 SP36 TdoV2sc, SDOx 数据输出建立到出现第 30 — — ns — TdoV2scL 一个 SCKx 边沿的时间 SP40 TdiV2scH,T 从 SDIx 数据输入到 SCKx 边 20 — — ns — diV2scL 沿的建立时间 SP41 TscH2diL, SDIx 数据输入到 SCKx 边沿 20 — — ns — TscL2diL 的保持时间 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: SCKx 信号的最小时钟周期为 100 ns。因此,在主模式下产生的时钟不能违反这一规范。 4: 假设所有 SPIx 引脚的负载均为 50 pF。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第331 页 dsPIC33F 图 26-16: SPIx 模块从模式 (CKE = 0)时序特性 SSX SCKX (CKP = 0) SP50 SP71 SP70 SP52 SP73 SP72 SCKX (CKP = 1) SP35 SP72 SP73 SDOX MSb Bit 14 - - - - - -1 SDIX SP30,SP31 MSb 输入 Bit 14 - - - -1 SP41 SP40 注:请参见图 26-1 了解负载条件。 LSb SP51 LSb 输入 表 26-33: 交流特性 SPIx 模块从模式 (CKE = 0)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP70 TscL SCKx 输入低电平时间 30 SP71 TscH SCKx 输入高电平时间 30 SP72 TscF SCKx 输入下降时间 (3) — SP73 TscR SCKx 输入上升时间 (3) — SP30 TdoF SDOx 数据输出下降时间 (3) — SP31 TdoR SDOx 数据输出上升时间 (3) — SP35 TscH2doV, SCKx 边沿后的 SDOx 数据输出 — TscL2doV 有效时间 — — ns — — — ns — 10 25 ns — 10 25 ns — — — ns 见参数 D032 — — ns 见参数 D031 — 30 ns — SP40 TdiV2scH, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TdiV2scL 建立时间 SP41 TscH2diL, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TscL2diL 保持时间 SP50 TssL2scH, SSx ↓ 到 SCKx↑ 或 SCKx 输入 120 — — ns — TssL2scL 的时间 SP51 TssH2doZ SSx ↑ 到 SDOx 输出高阻态的时 10 — 50 ns — 间 (3) 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: 假设所有 SPIx 引脚的负载均为 50 pF。 DS70165D_CN 第332 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-33: 交流特性 SPIx 模块从模式 (CKE = 0)时序要求 (续) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP52 TscH2doV, 在 SCKx 边沿后 SSx 有效的时 1.5 TCY +40 — — ns — TscL2ssH 间 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: 假设所有 SPIx 引脚的负载均为 50 pF。 图 26-17: SSx SCKx (CKP = 0) SPIx 模块从模式 (CKE = 1)时序特性 SP60 SP50 SP52 SCKx (CKP = 1) SDOx SP71 SP70 SP73 SP72 MSb SP52 SP35 SP72 Bit 14 - - - - - -1 LSb SP73 SDIx SP30,SP31 MSb 输入 SP41 SP40 Bit 14 - - - -1 LSb 输入 SP51 注:请参见图 26-1 了解负载条件。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第333 页 dsPIC33F 表 26-34: 交流特性 SPIx 模块从模式 (CKE = 1)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP70 TscL SCKx 输入低电平时间 30 SP71 TscH SCKx 输入高电平时间 30 SP72 TscF SCKx 输入下降时间 (3) — SP73 TscR SCKx 输入上升时间 (3) — SP30 TdoF SDOx 数据输出下降时间 (3) — SP31 TdoR SDOx 数据输出上升时间 (3) — SP35 TscH2doV, SCKx 边沿后 SDOx 数据输出有 — TscL2doV 效的时间 — — ns — — — ns — 10 25 ns — 10 25 ns — — — ns 见参数 D032 — — ns 见参数 D031 — 30 ns — SP40 TdiV2scH, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TdiV2scL 建立时间 SP41 TscH2diL, SDIx 数据输入到 SCKx 边沿的 20 — — ns — TscL2diL 保持时间 SP50 TssL2scH, SSx ↓ 到 SCKx ↓ 或 SCKx ↑ 输 120 — — ns — TssL2scL 入的时间 SP51 TssH2doZ SSx↑ 到 SDOX 输出高阻态的时 10 — 50 ns — 间 (4) SP52 TscH2ssH SCKx 边沿后 SSx ↑ 有效的时间 1.5 TCY +40 — — ns — TscL2ssH SP60 TssL2doV SSx 边沿后 SDOx 数据输出有效 — — 50 ns — 的时间 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: SCKx 信号的最小时钟周期为 100 ns。因此,在主模式下产生的时钟不能违反这一规范。 4: 假设所有 SPIx 引脚的负载均为 50 pF。 DS70165D_CN 第334 页 初稿  2007 Microchip Technology Inc. 图 26-18: I2Cx 总线启动 / 停止位时序特性 (主模式) SCLx SDAx IM30 IM31 启动 条件 注:请参见图 26-1 了解负载条件。 图 26-19: SCLx SDAx 输入 SDAx 输出 I2Cx 总线数据时序特性 (主模式) IM20 IM11 IM10 IM11 IM10 IM26 IM25 IM40 IM40 注:请参见图 26-1 了解负载条件。 dsPIC33F IM33 IM34 停止 条件 IM21 IM33 IM45  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第335 页 dsPIC33F 表 26-35: 交流规范 I2Cx 总线数据时序要求 (主模式) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°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 模式 下降时间 400 kHz 模式 — 20 + 0.1 CB 300 ns 规定 CB 的值介于 10 300 ns 至 400 pF 1 MHz 模式 (2) — 100 ns IM21 TF:SCL SDAx 和 SCLx 100 kHz 模式 上升时间 400 kHz 模式 — 20 + 0.1 CB 1000 300 ns 规定 CB 的值介于 10 ns 至 400 pF 1 MHz 模式 (2) — 300 ns IM25 TSU:DAT 数据输入 100 kHz 模式 250 — ns — 建立时间 400 kHz 模式 100 — ns 1 MHz 模式 (2) TBD — ns IM26 THD:DAT 数据输入 100 kHz 模式 0 — ns — 保持时间 400 kHz 模式 0 0.9 µs 1 MHz 模式 (2) TBD — ns IM30 TSU:STA 启动条件 建立时间 100 kHz 模式 TCY/2 (BRG + 1) — 400 kHz 模式 TCY/2 (BRG + 1) — µs 仅与重复启动条件相关 µs 1 MHz 模式 (2) TCY/2 (BRG + 1) — µs IM31 THD:STA 启动条件 保持时间 100 kHz 模式 TCY/2 (BRG + 1) — 400 kHz 模式 TCY/2 (BRG + 1) — 1 MHz 模式 (2) TCY/2 (BRG + 1) — µs 此周期后产生 µs 第一个时钟脉冲 µs IM33 TSU:STO 停止条件 100 kHz 模式 TCY/2 (BRG + 1) — µs — 建立时间 400 kHz 模式 TCY/2 (BRG + 1) — µs 1 MHz 模式 (2) TCY/2 (BRG + 1) — µs IM34 THD:STO 停止条件 100 kHz 模式 TCY/2 (BRG + 1) — ns — 保持时间 400 kHz 模式 TCY/2 (BRG + 1) — ns 1 MHz 模式 (2) TCY/2 (BRG + 1) — ns IM40 TAA:SCL 时钟边沿到输出 100 kHz 模式 — 3500 ns — 有效时间 400 kHz 模式 — 1000 ns — 1 MHz 模式 (2) — — ns — IM45 TBF:SDA 总线空闲时间 100 kHz 模式 400 kHz 模式 1 MHz 模式 (2) 4.7 1.3 TBD — µs 在开始新的发送之前 — µs 总线必须处于空闲的时 — µs 间 IM50 CB 总线的容性负载 — 400 pF 图注: TBD = 待定 注 1: BRG 是 I2C 波特率发生器的值。请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)中的第 21 章 “I2C™”。 2: 所有 I2Cx 引脚的最大电容值 = 10 pF (仅适用于频率为 1 MHz 的模式)。 DS70165D_CN 第336 页 初稿  2007 Microchip Technology Inc. 图 26-20: I2Cx 总线启动 / 停止位时序特性 (从模式) SCLx SDAx IS30 IS31 启动 条件 图 26-21: SCLx SDAx 输入 SDAx 输出 I2Cx 总线数据时序特性 (从模式) IS20 IS30 IS31 IS11 IS10 IS26 IS25 IS40 IS40 dsPIC33F IS33 IS34 停止 条件 IS21 IS33 IS45  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第337 页 dsPIC33F 表 26-36: I2Cx 总线数据时序要求 (从模式) 交流特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 最大值 单位 条件 IS10 TLO:SCL 时钟低电平时间 100 kHz 模式 4.7 — µs 400 kHz 模式 1.3 — µs 1 MHz 模式 (1) 0.5 — µs IS11 THI:SCL 时钟高电平时间 100 kHz 模式 4.0 — µs 400 kHz 模式 0.6 — µs 1 MHz 模式 (1) 0.5 — µs IS20 TF:SCL SDAx 和 SCLx 的 100 kHz 模式 — 300 ns 下降时间 400 kHz 模式 20 + 0.1 CB 300 ns 1 MHz 模式 (1) — 100 ns IS21 TR:SCL SDAx 和 SCLx 的 100 kHz 模式 上升时间 400 kHz 模式 — 1000 ns 20 + 0.1 CB 300 ns 1 MHz 模式 (1) — 300 ns IS25 TSU:DAT 数据输入 建立时间 100 kHz 模式 250 — ns 400 kHz 模式 100 — ns 1 MHz 模式 (1) 100 — ns IS26 THD:DAT 数据输入 保持时间 100 kHz 模式 400 kHz 模式 0 — ns 0 0.9 µs 1 MHz 模式 (1) 0 0.3 µs IS30 TSU:STA 启动条件 建立时间 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 4.7 0.6 0.25 — µs — µs — µs IS31 THD:STA 启动条件 保持时间 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 4.0 0.6 0.25 — µs — µs µs IS33 TSU:STO 停止条件 建立时间 100 kHz 模式 400 kHz 模式 4.7 — µs 0.6 — µs 1 MHz 模式 (1) 0.6 — µs IS34 THD:STO 停止条件 保持时间 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 4000 600 250 — ns — ns ns IS40 TAA:SCL 时钟边沿到输出有 100 kHz 模式 效时间 400 kHz 模式 1 MHz 模式 (1) 0 3500 ns 0 1000 ns 0 350 ns IS45 TBF:SDA 总线空闲时间 100 kHz 模式 4.7 — µs 400 kHz 模式 1.3 — µs 1 MHz 模式 (1) 0.5 — µs IS50 CB 总线的容性负载 — 400 pF 注 1: 所有 I2Cx 引脚的最大电容值 = 10 pF (仅适用于频率为 1 MHz 的模式)。 器件的工作频率不得低于 1.5 MHz 器件的工作频率不得低于 10 MHz — 器件的工作频率不得低于 1.5 MHz 器件的工作频率不得低于 10 MHz — 规定 CB 值介于 10 到 400 pF 规定 CB 值介于 10 到 400 pF — — 仅与重复启动条件相关 这个周期后产生第一个时钟脉冲 — — — 在开始新的发送之前 总线必须处于空闲的时间 — DS70165D_CN 第338 页 初稿  2007 Microchip Technology Inc. 图 26-22: DCI 模块 (多通道,I2S 模式)时序特性 dsPIC33F CSCK (SCKE = 0) CSCK (SCKE = 1) CS11 CS10 COFS CSDO CSDI CS55 CS56 CS35 CS51 CS50 高阻态 MSb MSb 输入 CS30 CS40 CS41 注:请参见图 26-1 了解负载条件。 CS21 CS20 CS20 CS21 LSb CS31 LSb 输入 70 高阻态  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第339 页 dsPIC33F 表 26-37: 交流特性 DCI 模块 (多通道,I2S 模式)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 CS10 TCSCKL CSCK 输入低电平时间 TCY/2 + 20 — — ns — (CSCK 引脚为输入引脚) CSCK 输出低电平时间 (3) (CSCK 引脚为输出引脚) 30 — — ns — CS11 TCSCKH CSCK 输入高电平时间 TCY/2 + 20 — — ns — (CSCK 引脚为输入引脚) CSCK 输出高电平时间 (3) (CSCK 引脚为输出引脚) 30 — — ns — CS20 TCSCKF CSCK 输出下降时间 (4) (CSCK 引脚为输出引脚) — 10 25 ns — CS21 TCSCKR CSCK 输出上升时间 (4) (CSCK 引脚为输出引脚) — 10 25 ns — CS30 TCSDOF CSDO 数据输出下降时间 (4) — 10 25 ns — CS31 TCSDOR CSDO 数据输出上升时间 (4) — 10 25 ns — CS35 TDV 从时钟边沿到 CSDO 数据有效的 — — 10 ns — 时间 CS36 TDIV 从时钟边沿到 CSDO 呈现三态的 10 — 20 ns — 时间 CS40 TCSDI 从 CSDI 数据输入到 CSCK 边沿 20 — — ns — 的建立时间 (CSCK 引脚为输入引脚或输出引 脚) CS41 THCSDI 从 CSDI 数据输入到 CSCK 边沿 20 — — ns — 的保持时间 (CSC 引脚为输入引脚或输出引 脚) CS50 TCOFSF COFS 下降时间 (COFS 引脚为输出引脚) — 10 25 ns 注 1 CS51 TCOFSR COFS 上升时间 (COFS 引脚为输出引脚) — 10 25 ns 注 1 CS55 TSCOFS 从 COFS 数据输入到 CSCK 边沿 20 — — ns — 的建立时间 (COFS 引脚为输入 引脚) CS56 THCOFS 从 COFS 数据输入到 CSCK 边沿 20 — — ns — 的保持时间 (COFS 引脚为输入 引脚) 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 3: CSCK 信号的最小时钟周期为 100 ns。因此,在主模式下产生的时钟不能违反这一规范。 4: 假设所有 DCI 引脚的负载均为 50 pF。 DS70165D_CN 第340 页 初稿  2007 Microchip Technology Inc. 图 26-23: BIT_CLK (CSCK) DCI 模块 (AC-LINK 模式)时序特性 CS61 CS60 CS62 SYNC (COFS) CS80 LSb SDOx (CSDO) MSb SDIx (CSDI) MSb 输入 CS65 CS66 CS71 CS72 CS76 dsPIC33F CS21 CS20 CS70 CS76 CS75 CS75 LSb  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第341 页 dsPIC33F 表 26-38: 交流特性 DCI 模块 (AC-LINK 模式)时序特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 (1,2) 最小值 典型值 (3) 最大值 单位 条件 CS60 TBCLKL BIT_CLK 低电平时间 36 40.7 45 ns — CS61 TBCLKH BIT_CLK 高电平时间 36 40.7 45 ns — CS62 TBCLK BIT_CLK 周期 — 81.4 — ns 输入位时钟 CS65 TSACL 输入建立到 BIT_CLK 下降沿的时 — — 10 ns — 间 CS66 THACL 自 BIT_CLK 下降沿后输入保持的 — — 10 ns — 时间 CS70 TSYNCLO 同步数据输出低电平时间 — 19.5 — µs 注 1 CS71 TSYNCHI 同步数据输出高电平时间 — 1.3 — µs 注 1 CS72 TSYNC 同步数据输出周期 — 20.8 — µs 注 1 CS75 TRACL SYNC 和 SDATA_OUT 上升时间 — 10 25 ns CLOAD = 50 pF,VDD = 5V CS76 TFACL SYNC 和 SDATA_OUT 下降时间 — 10 25 ns CLOAD = 50 pF,VDD = 5V CS77 TRACL SYNC 和 SDATA_OUT 上升时间 — TBD TBD ns CLOAD = 50 pF,VDD = 3V CS78 TFACL SYNC 和 SDATA_OUT 下降时间 — TBD TBD ns CLOAD = 50 pF,VDD = 3V CS80 TOVDACL 从出现 BIT_CLK 上升沿到输出有 — — 15 ns — 效的延时 图注: TBD = 待定 注 1: 参数仅为特征值,在生产时未经测试。 2: 这些值是在假定 BIT_CLK 频率为 12.288 MHz 情况下的值。 3: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25 ℃下的值。这些参数仅供设计参考,未经测试。 DS70165D_CN 第342 页 初稿  2007 Microchip Technology Inc. 图 26-24: CiTx 引脚 (输出) CiRx 引脚 (输入) CAN 模块 I/O 时序特性 旧值 CA10 CA11 CA20 dsPIC33F 新值 表 26-39: 交流特性 CAN 模块 I/O 时序要求 参数 编号 符号 特性 (1) 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 最小值 典型值 (2) 最大值 单位 条件 CA10 TioF 端口输出下降时间 — — — ns 见参数 D032 CA11 TioR 端口输出上升时间 — — — ns 见参数 D031 CA20 Tcwf 触发 CAN 唤醒过滤器的 500 脉冲宽度 ns — 注 1: 参数仅为特征值,在生产时未经测试。 2: 除非另外声明,否则 “典型值”栏中的数据均为 5V, 25°C 下的值。这些参数仅供设计参考,未经测试。 表 26-40: ADC 模块规范 交流特性 参数 编号 符号 特性 AD01 AVDD 模块电源 VDD AD02 AVSS 模块电源 VSS AD05 VREFH 参考电压高电压 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 最小值 典型值 最大值 单位 器件供电电压 取 VDD - — 取 VDD + V 0.3 或 3.0 中 0.3 或 3.6 中 的较大值 的较小值 VSS – 0.3 — VSS + 0.3 V 参考输入 AVSS + 1.7 — AVDD V 图注: TBD = 待定 注 1: A/D 转换结果不会因输入电压的增加而减小,并且不会丢失编码。 2: 测量是在将外部 VREF+ 和 VREF- 用作 ADC 参考电压时进行的。 条件 — — —  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第343 页 dsPIC33F 表 26-40: ADC 模块规范 (续) 交流特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 AD06 VREFL 参考电压低电压 AVSS — AVDD - 1.7 V — AD07 VREF 绝对参考电压 AVSS - 0.3 — AVDD + 0.3 V — AD08 IREF 消耗电流 — 150 200 µA ADC 正在工作 .001 1 µA ADC 关闭 模拟输入 AD10 VINH- 满量程输入范围 VINL VREFL VREFH V 见注 AD11 VIN 绝对输入电压 AVSS - 0.3 AVDD + 0.3 V — AD12 — 泄漏电流 AD13 — 泄漏电流 AD17 VIN 建议的模拟电压源阻抗 — ±0.001 ±0.610 — ±0.001 ±0.610 — — 1K 2.5K ADC 精度 (12 位模式) µA VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V 信号源阻抗 =2.5 KΩ µA VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V 信号源阻抗 =2.5 KΩ Ω 10 位 Ω 12 位 AD20a Nr AD21a INL 分辨率 积分非线性误差 (2) 12 个数据位 — — <±2 位 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD22a DNL 微分非线性误差 (2) — — <±1 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD23a GERR 增益误差 (2) TBD TBD ±3 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD24a EOFF 失调误差 (2) TBD TBD ±2 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD25a — 单调性 (1) — — — — 保证 动态性能 (12 位模式) AD30a THD 总谐波失真 — TBD — dB — AD31a SINAD 信噪比和失真 — TBD — dB — AD32a SFDR 无杂散动态范围 — TBD — dB — AD33a FNYQ 输入信号带宽 — — 250 kHz — AD34a ENOB 有效位数 — TBD — 位 — ADC 精度 ( 10 位模式) AD20b Nr 分辨率 10 个数据位 位 AD21b INL 积分非线性 — TBD <±2 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V 图注: TBD = 待定 注 1: A/D 转换结果不会因输入电压的增加而减小,并且不会丢失编码。 2: 测量是在将外部 VREF+ 和 VREF- 用作 ADC 参考电压时进行的。 DS70165D_CN 第344 页 初稿  2007 Microchip Technology Inc. dsPIC33F 表 26-40: ADC 模块规范 (续) 交流特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 AD22b DNL 微分非线性误差 — TBD <±1 AD23b GERR 增益误差 TBD TBD ±3 AD24b EOFF 失调误差 TBD TBD ±2 AD25b — 单调性 (1) — — — 动态性能 (10 位模式) AD30b THD 总谐波失真 — TBD — AD31b SINAD 信噪比和失真 — TBD — AD32b SFDR 无杂散动态范围 — TBD — AD33b FNYQ 输入信号带宽 — — 550 AD34b ENOB 有效位数 TBD TBD — 图注: TBD = 待定 注 1: A/D 转换结果不会因输入电压的增加而减小,并且不会丢失编码。 2: 测量是在将外部 VREF+ 和 VREF- 用作 ADC 参考电压时进行的。 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V — 保证 dB — dB — dB — kHz — 位 —  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第345 页 dsPIC33F 图 26-25: ADC 转换 (10 位模式)时序特性 (CHPS<1:0> = 01,SIMSAM = 0,ASAM = 0, SSRC<2:0> = 000) AD50 ADCLK 指令 执行 将 SAMP 置 1 SAMP 将 SAMP 清零 ch0_dischrg ch0_samp ch1_dischrg ch1_samp eoc AD61 CONV AD60 TSAMP AD55 AD55 ADxIF Buffer(0) Buffer(1) 12 34 5 6 78 56 78 1 – 用软件将 ADxCON.SAMP 置 1 来启动采样。 2 – 放电周期结束后开始采样。《dsPIC30F 系列参考手册》中的第 17 章中对 TSAMP 做了介绍。 3 – 用软件将 ADxCON.SAMP 清零,开始转换。 4 – 采样结束,转换序列开始。 5 – 转换 bit 9。 6 – 转换 bit 8。 7 – 转换 bit 0。 8 – 转换结束的一个 TAD。 DS70165D_CN 第346 页 初稿  2007 Microchip Technology Inc. dsPIC33F 图 26-26: ADC 转换 (10 位模式)时序特性 (CHPS<1:0> = 01, SIMSAM = 0, ASAM = 1, SSRC<2:0> = 111, SAMC<4:0> = 00001) AD50 ADCLK 指令 执行 将 ADON 置 1 SAMP ch0_dischrg ch0_samp ch1_dischrg ch1_samp eoc CONV ADxIF Buffer(0) Buffer(1) TSAMP AD55 AD55 TSAMP TCONV 12 34 56734 56 8 34 1 – 用软件将 ADxCON.ADON 置 1 启动 AD。 2 – 放电周期结束后开始采样。 在《dsPIC30F 系列参考手册》的第 17 章中 对 TSAMP 作了介绍。 3 – 转换 bit 9。 4 – 转换 bit 8。 5 – 转换 bit 0。 6 – 转换结束的一个 TAD。 7 – 开始下个通道的转换。 8 – 由 SAMC<4:0> 指定的采样时间。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第347 页 dsPIC33F 表 26-41: 交流特性 ADC 转换 (10 位模式)时序要求 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 时钟参数 AD50 TAD ADC 时钟周期 70 — — ns TCY = 70ns,ADxCON3 处于默认状态 AD51 tRC ADC 内部 RC 振荡器周期 — 250 — ns 转换率 AD55 tCONV 转换时间 — 12 TAD — — AD56 FCNV 吞吐率 — — 1.1 Msps AD57 TSAMP 采样时间 — 1 TAD — — 时序参数 AD60 tPCS 从触发采样到启动转换的时间 (3) — 1.0 TAD — — 没有选择自动转换触发 (SSRC<2:0> = 111) AD61 tPSS 从采样 (SAMP)位置 1 到开始采样 0.5 TAD — 1.5 TAD — — 的时间 AD62 tCSS 转换完成到下一次采样开始 (ASAM = 1)的时间 (3) — 0.5 TAD — — — AD63 tDPU 从 ADC 关闭到 ADC 开启,用于稳定 — 20 — µs — 模拟级的时间 (3) 注 1: 参数仅为特征值,在生产时未经测试。 2: 因为这些采样电容最终会释放电荷,低于 10 kHz 的时钟速率会影响线性性能,尤其是在温度上升的情况下。 3: 特征值,仅供设计参考,未经测试。 DS70165D_CN 第348 页 初稿  2007 Microchip Technology Inc. 图 26-27: ADC 转换 (12 位模式)时序特性 (ASAM = 0, SSRC<2:0> = 000) AD50 ADCLK 指令 执行 将 SAMP 置 1 SAMP ch0_dischrg ch0_samp eoc AD61 CONV ADxIF Buffer(0) 将 SAMP 清零 AD60 TSAMP 12 34 5 6 1 – 用软件将 ADxCON.SAMP 置 1 来启动采样。 2 – 放电周期结束后开始采样。 在《dsPIC30F 系列参考手册》的第 17 章中对 TSAMP 作了介绍。 3 – 用软件将 ADxCON.SAMP 清零来启动转换。 4 – 采样结束,转换序列开始。 5 – 转换 bit 11。 6 – 转换 bit 10。 7 – 转换 bit 1。 8 – 转换 bit 0。 9 – 转换结束的一个 TAD。 AD55 dsPIC33F 789  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第349 页 dsPIC33F 表 26-42: 交流特性 ADC 转换 (12 位模式)时序特性 标准工作条件:3.0V 至 3.6V (除非另外声明) 工作温度 -40°C ≤ TA ≤ +85°C 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 时钟参数 AD50 TAD ADC 时钟周期 133 — — ns TCY = 133ns, ADxCON3 处于默认状 态 AD51 tRC ADC 内部 RC 振荡器周期 — 250 — ns 转换率 AD55 tCONV 转换时间 — 14 TAD ns AD56 FCNV 吞吐率 — — 500 ksps AD57 TSAMP 采样时间 — 1 TAD — ns 时序参数 AD60 tPCS 从触发采样到启动转换的时间 — 1.0 TAD — ns — AD61 tPSS 从采样 (SAMP)位置 1 到开始 0.5 TAD — 1.5 TAD ns — 采样的时间 AD62 tCSS 转换完成到下一次采样开始 — — — ns — (ASAM = 1)的时间 AD63 tDPU 从 ADC 关闭到 ADC 启动,用于 — 20 — µs — 稳定模拟级的时间 图注: TBD = 待定 注 1: 因为这些采样电容最终会释放电荷,低于 10 kHz 的时钟速率会影响线性性能,尤其是在温度上升的情况 下。 DS70165D_CN 第350 页 初稿  2007 Microchip Technology Inc. 27.0 27.1 封装信息 封装标识信息 64 引脚 TQFP(10x10x1 mm) XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX YYWWNNN 80 引脚 TQFP(12x12x1 mm) XXXXXXXXXXXX XXXXXXXXXXXX YYWWNNN 100 引脚 TQFP(12x12x1 mm) XXXXXXXXXXXX XXXXXXXXXXXX YYWWNNN 100 引脚 TQFP(14x14x1mm) dsPIC33F 示例 dsPIC33FJ 256GP706 -I/PT e3 0510017 示例 dsPIC33FJ128 GP708-I/PT e3 0510017 示例 dsPIC33FJ256 GP710-I/PT e3 0510017 100 引脚 TQFP(14x14x1mm) XXXXXXXXXXXX XXXXXXXXXXXX YYWWNNN dsPIC33FJ256 GP710-I/PF e3 0510017 图注: XX...X Y YY WW NNN e3 * 客户信息 年份代码 (日历年的最后一位数字) 年份代码 (日历年的最后两位数字) 星期代码 (一月一日的星期代码为 “01”) 以字母数字排序的追踪代码 雾锡 (Matte Tin, Sn)的 JEDEC 无铅标志 表示无铅封装。 JEDEC 无铅标志 (e3 )标示于此种封装的外包装 上。 注: Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制 表示客户信息的字符数。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第351 页 dsPIC33F 27.2 封装详细信息 以下章节将介绍各种封装的技术细节。 64 引脚塑封薄型正方扁平封装 (PT)主体 10x10x1 mm, 1.0/0.10 mm 引脚形式 (TQFP) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E E1 引脚数 =n1 p D1 D 2 1 B n CH x 45° α A c φ β L A1 A2 F 单位 英寸 毫米 * 尺寸范围 最小 正常 最大 最小 正常 最大 引脚数 引脚间距 n 64 p .020 64 0.50 每侧引脚数 n1 16 16 总高度 A .039 .043 .047 1.00 1.10 1.20 塑模封装厚度 A2 .037 .039 .041 0.95 1.00 1.05 悬空间隙 A1 .002 .006 .010 0.05 0.15 0.25 底脚长度 L .018 .024 .030 0.45 0.60 0.75 底脚占位 底脚倾角 F .039 REF. 1.00 REF. φ 0 3.5 7 0 3.5 7 总宽度 E .463 .472 .482 11.75 12.00 12.25 总长度 D .463 .472 .482 11.75 12.00 12.25 塑模封装宽度 E1 .390 .394 .398 9.90 10.00 10.10 塑模封装长度 D1 .390 .394 .398 9.90 10.00 10.10 引脚厚度 c .005 .007 .009 0.13 0.18 0.23 引脚宽度 B .007 .009 .011 0.17 0.22 0.27 引脚 1 处角斜面 CH .025 .035 .045 0.64 0.89 1.14 塑模顶部锥度 a 5 10 15 5 10 15 塑模底部锥度 b 5 10 15 5 10 15 * 控制参数 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254 毫米)。 REF: 参考尺寸,通常无公差,仅供参考。 参见 ASME Y14.5M 等同于 JEDEC 号: MS-026 图号 :C04-085 修订于 05-07-22 DS70165D_CN 第352 页 初稿  2007 Microchip Technology Inc. dsPIC33F 80 引脚塑封薄型正方扁平封装 (PT)主体 12x12x1 mm, 1.0/0.10 mm 引脚形式 (TQFP) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E E1 引脚数 =n1 p D1 D 2 B 1 n CH x 45° α A c β φ A1 A2 L F 单位 英寸 毫米 * 尺寸范围 最小 正常 最大 最小 正常 最大 引脚数 引脚间距 n 80 p .020 BSC 80 .50 BSC 每侧引脚数 n1 20 20 总高度 A .039 .043 .047 1.00 1.10 1.20 塑模封装厚度 A2 .037 .039 .041 0.95 1.00 1.05 悬空间隙 A1 .002 .004 .006 0.05 0.10 0.15 底脚长度 L .018 .024 .030 0.45 0.60 0.75 底脚占位 底脚倾角 F .039 REF. 1.00 REF. φ 0° 3.5° 7° 0° 3.5° 7° 总宽度 E .551 BSC 14.00 BSC 总长度 D .551 BSC 14.00 BSC 塑模封装宽度 E1 .472 BSC 12.00 BSC 塑模封装长度 D1 .472 BSC 12.00 BSC 引脚厚度 c .004 .006 .008 0.09 0.15 0.20 引脚宽度 B .007 .009 .011 0.17 0.22 0.27 引脚 1 处角斜面 CH .025 .035 .045 0.64 0.89 1.14 塑模顶部锥度 α 5° 10° 15° 5° 10° 15° 塑模底部锥度 β 5° 10° 15° 5° 10° 15° * 控制参数 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254 毫米)。 BSC : 基本尺寸。显示的是没有公差的理论精确值。 参见 ASME Y14.5M REF : 参考尺寸, 通常无公差,仅供参考。 参见 ASME Y14.5M 等同于 JEDEC 号:MS-026 图号 :C04-092 修订于 05-07-22  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第353 页 dsPIC33F 100 引脚塑封薄型正方扁平封装 (PT)主体 12x12x1 mm, 1.0/0.10 mm 引脚形式 (TQFP) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E E1 引脚数 =n1 p D1 D 2 1 B n CH x 45° α c A φ A1 β L F A2 单位 英寸 毫米 * 尺寸范围 最小 正常 最大 最小 正常 最大 引脚数 引脚间距 n 100 p .016 BSC 100 0.40 BSC 每侧引脚数 n1 25 25 总高度 A .039 .043 .047 1.00 1.10 1.20 塑模封装厚度 A2 .037 .039 .041 0.95 1.00 1.05 悬空间隙 A1 .002 .004 .006 0.05 0.10 0.15 底脚长度 L .018 .024 .030 0.45 0.60 0.75 底脚占位(参考) 底脚倾角 F .039 REF. 1.00 REF. φ 0° 3.5° 7° 0° 3.5° 7° 总宽度 E .551 BSC 14.00 BSC 总长度 D .551 BSC 14.00 BSC 塑模封装宽度 E1 .472 BSC 12.00 BSC 塑模封装长度 D1 .472 BSC 12.00 BSC 引脚厚度 c .004 .006 .008 0.09 0.15 0.20 引脚宽度 B .005 .007 .009 0.13 0.18 0.23 塑模顶端锥度 α 5° 10° 15° 5° 10° 15° 塑模底端锥度 β 5° 10° 15° 5° 10° 15° * 控制参数 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254 毫米)。 BSC : 基本尺寸。显示的是没有公差的理论精确值。 参见 ASME Y14.5M REF : 参考尺寸,通常无公差,仅供参考。 参见 ASME Y14.5M 等同于 JEDEC 号:MS-026 图号 :C04-100 修订于 05-07-22 DS70165D_CN 第354 页 初稿  2007 Microchip Technology Inc. dsPIC33F 100 引脚塑封薄型正方扁平封装 (PT)主体 14x14x1 mm, 1.0/0.10 mm 引脚形式 (TQFP) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E E1 引脚数 =n1 p D1 D B 2 1 α n A c b f A2 A1 L F 单位 英寸 毫米 * 尺寸范围 最小 正常 最大 最小 正常 最大 引脚数 n 100 100 引脚间距 p .020 BSC .50 BSC 每侧引脚数 n1 25 25 总高度 A .047 1.20 塑模封装厚度 A2 .037 .039 .041 0.95 1.00 1.05 悬空间隙 A1 .002 .006 0.05 0.15 底脚长度 L .018 .024 .030 0.45 0.60 0.75 底脚占位 底脚倾角 F .039 REF 1.00 REF φ 0° 3.5° 7° 0° 3.5° 7° 总宽度 E .630 BSC 16.00 BSC 总长度 D .630 BSC 16.00 BSC 塑模封装宽度 E1 .551 BSC 14.00 BSC 塑模封装长度 D1 .551 BSC 14.00 BSC 引脚厚度 c .004 .008 0.09 0.20 引脚宽度 B .007 .009 .011 0.17 0.22 0.27 塑模顶部锥度 α 11° 12° 13° 11° 12° 13° 塑模底部锥度 β 11° 12° 13° 11° 12° 13° * 控制参数 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254 毫米)。 BSC : 基本尺寸。显示的是没有公差的理论精确值。 参见 ASME Y14.5M REF : 参考尺寸,通常无公差,仅供参考。 参见 ASME Y14.5M 等同于 JEDEC 号: MS-026 图号 :C04-110 修订于 05-07-22  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第355 页 dsPIC33F 注: DS70165D_CN 第356 页 初稿  2007 Microchip Technology Inc. 附录 A: 版本历史 版本 A (2005 年 10 月) • 本文档的初始版本 版本 B (2006 年 2 月) • 更新了寄存器说明和存储器映射 • 修改了振荡器章节 • 更新了 ADC 特性 • 更新了热封装特性 版本 C (2006 年 3 月) • 删除了与样机样片有关的信息 • 更新了闪存特性 • 删除了对于 SPI FIFO 缓冲器的错误引用 dsPIC33F 系列不支持这些缓冲器 • 更新了 DC 特性 • 更新了器件配置寄存器 版本 D (2006 年 7 月) • 添加了 FBS 和 FSS 器件配置寄存器 (见表 23-1) 及其相应位域 (见表 23-2)的描述。这些添加的 寄存器替代原先的 RESERVED1 和 RESERVED2 寄存器 • 添加了 INTTREG 中断控制和状态寄存器 (见第 6.3 节 “中断控制和状态寄存器”及寄存器 6-33) • 添加了内核寄存器 BSRAM 和 SSRAM(见第 3.2.8 节 “数据 RAM 保护功能”)。 • 进一步阐明了故障保护时钟监视器操作 (见第 8.3 节 “故障保护时钟监视器 (FSCM)”) • 更新了 OSCCON 寄存器中 COSC<2:0> 和 NOSC<2:0> 位的配置 (见寄存器 8-1) • 更新了 CLKDIV 寄存器位的配置 (见寄存器 8-2) • 向程序闪存中添加了字写周期时间参数 (TWW) (见表 26-11) • 添加了对 I/O 引脚输出电流绝对最大额定值例外情 况的注释 (见第 26.0 节 “电气特性”) • 添加了 Timer4/5 的 ADC2 事件触发器(见第 12.0 节 “Timer2/3、 Timer4/5、 Timer6/7 和 Timer8/ 9”) • 改正了 I2C2STAT 寄存器中 I2COV 位的输入错误 (见表 3-10) • 添加了 QEI 寄存器描述 (见寄存器 16-1 和寄存器 16-2) • 改正了 PWMCON 寄存器中 PMOD<4:1> 位域的输 入错误 (见寄存器 15-5) • 改正了 QEICON 寄存器中 UPDN_SRC 位的输入错 误 (见寄存器 16-1) dsPIC33F • 改正了 I2CxCON 寄存器中 I2COV 位的输入错误 (见寄存器 18-2) • 去掉了表 26-40 中的 AD26a、 AD27a、 AD28a、 AD26b、 AD27b 和 AD28b 参数 (ADC 模块)  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第357 页 dsPIC33F 注: DS70165D_CN 第 358 页 初稿  2007 Microchip Technology Inc. dsPIC33F 索引 A A/D 转换器 ....................................................................... 275 初始化 ...................................................................... 275 DMA ......................................................................... 275 主要特性................................................................... 275 AC-Link 模式操作 ............................................................. 268 AC-Link 模式工作 16 位模式 ................................................................. 268 20 位模式 ................................................................. 269 ADC 模块 ADC1 寄存器映射 ...................................................... 55 ADC2 寄存器映射 ...................................................... 55 B 备用向量表 (AIVT).......................................................... 87 变更通知客户服务 ............................................................ 365 C C 编译器 MPLAB C18 ............................................................. 306 MPLAB C30 ............................................................. 306 CPU 控制寄存器 ................................................................. 30 CPU 的特殊功能............................................................... 289 CPU 时钟系统 .................................................................. 150 选项.......................................................................... 150 选择.......................................................................... 150 程序存储器 构成............................................................................ 40 中断向量..................................................................... 40 程序地址空间 ..................................................................... 39 表读指令 TBLRDL ............................................................. 74 表写指令 TBLRDH ............................................................ 74 存储器映射 ................................................................. 39 地址构成..................................................................... 72 可视性操作 ................................................................. 75 使用表指令访问程序存储器中的数据 ......................... 74 使用程序空间可视性访问程序存储器中的数据 ........... 75 数据访问和地址生成................................................... 73 程序与数据存储空间接口 ................................................... 72 串行外设接口 (SPI)...................................................... 205 存储器构成 ......................................................................... 39 D DCI CPU 空闲模式下的操作............................................ 268 CPU 休眠模式下的操作............................................ 268 CSDO 模式位........................................................... 268 采样时钟边沿控制位................................................. 266 从器件帧同步操作 .................................................... 264 发送 / 接收移位寄存器.............................................. 261 发送时隙使能位........................................................ 266 发送状态位 ............................................................... 267 工作.......................................................................... 263 缓冲器长度控制........................................................ 267 缓冲器控制 ............................................................... 261 缓冲器数据对齐........................................................ 261 缓冲器与数据帧的对齐 ............................................. 267 简介.......................................................................... 261 接收时隙使能位........................................................ 266 接收状态位 ............................................................... 267 模块使能 .................................................................. 263 SLOT 状态位 ........................................................... 268 数据对齐控制位 ....................................................... 266 数字环回模式 ........................................................... 268 同步数据传输 ........................................................... 266 位时钟发生器 ........................................................... 265 下溢模式控制位 ....................................................... 268 用于常见编解码器 CSCK 频率的器件频率 (表).... 265 帧同步发生器 ........................................................... 263 帧同步模式控制位.................................................... 263 帧同步时时隙使能位的操作 ..................................... 266 中断 ......................................................................... 268 主器件帧同步操作.................................................... 263 字长选择位............................................................... 263 DCI I/O 引脚..................................................................... 261 COFS....................................................................... 261 CSCK....................................................................... 261 CSDI ........................................................................ 261 CSDO ...................................................................... 261 DCI 模块 寄存器映射................................................................. 64 DMA 请求源选择............................................................... 138 中断和陷阱............................................................... 138 DMAC 工作模式............................................................... 136 连续数据块或单数据块............................................. 138 乒乓 ......................................................................... 138 手动传输 .................................................................. 138 寻址 ......................................................................... 137 字节或字传输 ........................................................... 137 DMAC 寄存器 .................................................................. 136 DMAxCNT ............................................................... 136 DMAxCON............................................................... 136 DMAxPAD ............................................................... 136 DMAxREQ ............................................................... 136 DMAxSTA................................................................ 136 DMAxSTB................................................................ 136 DMA 模块 DMA 寄存器映射........................................................ 56 DSP 引擎 ........................................................................... 33 乘法器........................................................................ 35 打盹模式 .......................................................................... 158 代码保护 .................................................................. 289, 295 代码示例 擦除程序存储器页...................................................... 80 DMA 采样初始化方法............................................... 139 端口写 / 读 ............................................................... 160 PWRSAV 指令语法.................................................. 157 启动编程序列 ............................................................. 81 装载写缓冲器 ............................................................. 81 电机控制 PWM................................................................. 175 电机控制 PWM 模块 8 输出寄存器映射 ...................................................... 52 电气特性 .......................................................................... 309 AC............................................................................ 316 读者反馈表....................................................................... 366  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 359 页 dsPIC33F E ECAN 模块 报文发送................................................................... 235 报文接收................................................................... 233 波特率设置 ............................................................... 236 ECAN1 寄存器映射 (C1CTRL1.WIN = 0 或 1)....... 58 ECAN1 寄存器映射 (C1CTRL1.WIN = 0)............... 58 ECAN1 寄存器映射 (C1CTRL1.WIN = 1)............... 59 ECAN2 寄存器映射 (C2CTRL1.WIN = 0 或 1)....... 61 ECAN2 寄存器映射 (C2CTRL1.WIN = 0)............... 61 ECAN2 寄存器映射 (C2CTRL1.WIN = 1)............... 62 概述 .......................................................................... 231 工作模式................................................................... 233 同步 重新.................................................................. 237 硬 ..................................................................... 237 帧类型 ...................................................................... 231 F FSCM 晶振和 PLL 时钟源延时 .............................................. 86 器件复位..................................................................... 86 封装 .................................................................................. 351 标识 .......................................................................... 351 详细信息................................................................... 352 复位 .................................................................................... 83 时间 ............................................................................ 85 时钟源选择 ................................................................. 85 特殊功能寄存器复位状态 ........................................... 86 复位时序............................................................................. 87 G 公式 A/D 转换时钟周期..................................................... 278 COFSG 周期 ............................................................ 263 串行时钟速率 ........................................................... 213 计算 PWM 周期 ........................................................ 172 计算最大 PWM 分辨率 ............................................. 172 PWM 分辨率............................................................. 178 PWM 周期 ................................................................ 178 器件工作频率 ........................................................... 150 器件速率和 SPI 时钟速度之间的关系 ....................... 208 时钟发生器的时间份额 ............................................. 237 UART 波特率 (BRGH = 0).................................... 224 UART 波特率 (BRGH = 1).................................... 224 位时钟频率 ............................................................... 265 工作模式 初始化 ...................................................................... 233 环回 .......................................................................... 233 监听 .......................................................................... 233 监听所有报文 ........................................................... 233 禁止 .......................................................................... 233 正常工作................................................................... 233 故障保护时钟监视器......................................................... 156 H 红外线支持 内置 IrDA 编码器和解码器........................................ 225 外部 IrDA 支持——IrDA 时钟输出 ............................ 225 汇编器 MPASM 汇编器 ........................................................ 306 I I/O 端口 ............................................................................ 159 并行 I/O (PIO)...................................................... 159 写 / 读时序 ............................................................... 160 I2C 波特率发生器 ........................................................... 213 从动地址掩码 ........................................................... 215 地址 ......................................................................... 215 工作模式 .................................................................. 213 广播呼叫地址支持 .................................................... 215 寄存器 ...................................................................... 213 IPMI 支持 ................................................................. 215 软件控制的时钟延长 (STREN = 1)....................... 215 斜率控制 .................................................................. 216 中断 ......................................................................... 213 主控模式操作 多主机通信、总线冲突和总线仲裁................... 216 时钟仲裁 .......................................................... 216 I2C 模块 I2C1 寄存器映射 ........................................................ 53 I2C2 寄存器映射 ........................................................ 53 I2S 模式的操作 ................................................................. 269 数据对齐 .................................................................. 269 帧和数据字长度选择 ................................................ 269 J 寄存器 ADxCHS0 (ADCx 输入通道 0 选择寄存器 ).............. 286 ADxCHS123 (ADCx 输入通道 1、 2 和 3 选择 寄存器)........................................................... 285 ADxCON1 (ADCx 控制寄存器 1)......................... 279 ADxCON2 (ADCx 控制寄存器 2) ............................. 281 ADxCON3 (ADCx 控制寄存器 3) ............................. 283 ADxCON4 (ADCx 控制寄存器 4) ............................. 284 ADxCSSH (ADCx 输入扫描选择寄存器的高字节 )... 287 ADxCSSL (ADCx 输入扫描选择寄存器的低字节 ) ... 287 ADxPCFGH (ADCx 端口配置寄存器的高字节).... 288 ADxPCFGL (ADCx 端口配置寄存器的低字节 )........ 288 CiBUFPNT1 (ECAN 滤波器 0-3 缓冲器指针 寄存器)........................................................... 248 CiBUFPNT2 (ECAN 滤波器 4-7 缓冲器指针 寄存器)........................................................... 249 CiBUFPNT3 (ECAN 滤波器 8-11 缓冲器指针 寄存器)........................................................... 249 CiBUFPNT4 (ECAN 滤波器 12-15 缓冲器指针 寄存器)........................................................... 250 CiCFG1 (ECAN 波特率配置寄存器 1).................. 246 CiCTRL1 (ECAN 控制寄存器 1)........................... 238 CiCTRL2 (ECAN 控制寄存器 2)........................... 239 CiEC (ECAN 发送 / 接收错误计数寄存器)............ 245 CiFCTRL (ECAN FIFO 控制寄存器).................... 241 CiFEN1 (ECAN 接收过滤器使能寄存器).............. 248 CiFIFO (ECAN FIFO 状态寄存器)........................ 242 CiFMSKSEL1 (ECAN 过滤器 7-0 屏蔽选择 寄存器)........................................................... 252 CiINTE (ECAN 中断允许寄存器).......................... 244 CiINTF (ECAN 中断标志寄存器).......................... 243 CiRXFnSID (ECAN 接收过滤器 n 标准标识符 寄存器)........................................................... 251 CiRXFUL1 (ECAN 接收缓冲器满寄存器 1)............ 254 CiRXOVF2 (ECAN 接收缓冲器溢出寄存器 2) ....... 255 CiTRBnDLC (ECAN 缓冲器 n 数据长度控制 寄存器)........................................................... 258 CiTRBnDm (ECAN 缓冲器 n 数据字段字节 m 寄存器)........................................................... 258 DS70165D_CN 第 360 页 初稿  2007 Microchip Technology Inc. dsPIC33F CiTRBnSID (ECAN 缓冲器 n 标准标识符寄存器). 257 CiTRBnSTAT (ECAN 接收缓冲器 n 状态寄存器). 259 CiVEC (ECAN 中断编码寄存器)........................... 240 CLKDIV (时钟分频寄存器).................................... 153 CORCON (内核控制寄存器)............................. 32, 92 DCICON1 (DCI 控制寄存器 1).............................. 270 DCICON2 (DCI 控制寄存器 2).............................. 271 DCICON3 (DCI 控制寄存器 3).............................. 272 DCISTAT (DCI 状态寄存器)................................. 273 DFLTCON 数字滤波器控制 ...................................... 203 DFLTCON (QEI 控制).......................................... 203 DMACS0 (DMA 控制器状态寄存器 0).................. 144 DMACS1 (DMA 控制器状态寄存器 1).................. 146 DMAxCNT (DMA 通道 x 传输计数寄存器)............ 143 DMAxCON (DMA 通道 x 控制寄存器).................. 140 DMAxPAD (DMA 通道 x 外设地址寄存器)............ 143 DMAxREQ (DMA 通道 xIRQ 选择寄存器)............ 141 DMAxSTA (DMA 通道 x RAM 起始地址寄存器 A) 142 DSADR (最近的 DMA RAM 地址)........................ 147 DTCON1 (死区时间控制寄存器 1)........................ 189 DTCON2 (死区时间控制寄存器 2)........................ 190 FLTACON (故障 A 控制寄存器)............................ 191 FLTBCON (故障 B 控制寄存器)............................ 192 I2CxCON (I2Cx 控制寄存器 ) ................................... 217 I2CxMSK (I2Cx 从动模式地址掩码寄存器 ).............. 221 I2CxSTAT (I2Cx 状态寄存器)............................... 219 ICxCON (输入捕捉 x 控制寄存器)........................ 170 IEC0 (中断允许控制寄存器 0).............................. 105 IEC1 (中断允许控制寄存器 1).............................. 107 IEC2 (中断允许控制寄存器 2).............................. 109 IEC3 (中断允许控制寄存器 3)............................. 111 IEC4 (中断允许控制寄存器 4).............................. 113 IFS0 (中断标志状态寄存器 0)................................. 96 IFS1 (中断标志状态寄存器 1)................................. 98 IFS2 (中断标志状态寄存器 2)............................... 100 IFS3 (中断标志状态寄存器 3)............................... 102 IFS4 (中断标志状态寄存器 4).............................. 104 INTCON1 (中断控制寄存器 1)................................ 93 INTCON2 (中断控制寄存器 2)................................ 95 IPC0 (中断优先级控制寄存器 0)........................... 114 IPC10 (中断优先级控制寄存器 10)....................... 124 IPC11 (中断优先级控制寄存器 11)...................... 125 IPC12 (中断优先级控制寄存器 12)....................... 126 IPC14 (中断优先级控制寄存器 14)....................... 128 IPC15 (中断优先级控制寄存器 15)....................... 129 IPC16 (中断优先级控制寄存器 16)....................... 130 IPC17 (中断优先级控制寄存器 17)....................... 131 IPC1 (中断优先级控制寄存器 1)........................... 115 IPC2 (中断优先级控制寄存器 2)........................... 116 IPC3 (中断优先级控制寄存器 3)........................... 117 IPC4 (中断优先级控制寄存器 4).......................... 118 IPC5 (中断优先级控制寄存器 5)........................... 119 IPC6 (中断优先级控制寄存器 6).......................... 120 IPC7 (中断优先级控制寄存器 7)........................... 121 IPC8 (中断优先级控制寄存器 8).......................... 122 IPC9 (中断优先级控制寄存器 9)........................... 123 NVMCON (闪存控制寄存器)................................... 79 OCxCON (输出比较 x 控制寄存器)....................... 174 OSCCON (振荡器控制寄存器)............................. 152 OSCTUN (FRC 振荡器调节寄存器)..................... 155 OVDCON (改写控制寄存器)................................. 193 PDC1 (PWM 占空比寄存器 1).............................. 194 PDC2 (PWM 占空比寄存器 2).............................. 194 PDC3 (PWM 占空比寄存器 3).............................. 195 PDC4 (PWM 占空比寄存器 4).............................. 195 PLLFBD (PLL 反馈分频比寄存器)........................ 154 PTCON (PWM 时基控制寄存器).......................... 184 PTMR (PWM 定时器计数值寄存器)..................... 185 PTPER (PWM 时基周期寄存器)........................... 185 PWMCON1 (PWM 控制寄存器 1)........................ 187 PWMCON2 (PWM 控制寄存器 2)........................ 188 QEICON (QEI 控制)............................................. 201 RCON (复位控制寄存器)........................................ 84 RSCON (DCI 接收时隙控制寄存器)..................... 274 SEVTCMP (特殊事件比较寄存器)........................ 186 SPIxCON1 (SPIx 控制寄存器 1).......................... 210 SPIxCON2 (SPIx 控制寄存器 2).......................... 211 SPIxSTAT (SPIx 状态和控制寄存器)................... 209 SR (CPU 状态寄存器)............................................ 92 SR (CPU 状态寄存器)............................................ 30 T1CON (Timer1 控制寄存器)............................... 162 TSCON (DCI 发送时隙控制寄存器)..................... 274 TxCON (T2CON、 T4CON、 T6CON 或 T8CON 控制寄存器).................................................... 166 TyCON (T3CON、 T5CON、 T7CON 或 T9CON 控制寄存器).................................................... 167 UxMODE (UARTx 模式寄存器)............................ 226 UxSTA (UARTx 状态和控制寄存器)..................... 228 JTAG 边界扫描接口 ......................................................... 289 JTAG 接口 ....................................................................... 295 基于指令的节能模式 ........................................................ 157 空闲 ......................................................................... 158 休眠 ......................................................................... 157 交流特性 .......................................................................... 316 负载条件 .................................................................. 316 内部 RC 精度 ........................................................... 318 节能特性 .......................................................................... 157 时钟频率和切换 ....................................................... 157 禁止外设模式 (PMD).................................................... 158 K 开发支持 .......................................................................... 305 看门狗定时器 (WDT)............................................ 289, 294 编程注意事项 ........................................................... 294 勘误表 ................................................................................ 21 客户通知服务 ................................................................... 365 客户支持 .......................................................................... 365 框图 16 位 Timer1 模块 .................................................... 161 A/D 模块 .......................................................... 276, 277 DCI 模块 .................................................................. 262 dsPIC30F CPU 内核 .................................................. 28 dsPIC33F................................................................... 24 DSP 引擎 ................................................................... 34 ECAN 模块 .............................................................. 232 复位系统 .................................................................... 83 共用端口的结构 ....................................................... 159 看门狗定时器 (WDT)............................................ 294 连接片内稳压器 ....................................................... 293 PLL .......................................................................... 151 PWM 模块................................................................ 176 器件时钟 .......................................................... 149, 151 SPI........................................................................... 206 输出比较 .................................................................. 173 输入捕捉 .................................................................. 169 Timer2/3 (32 位).................................................. 164 Timer2 (16 位)...................................................... 165 UART....................................................................... 223 正交编码器接口 ....................................................... 197  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 361 页 dsPIC33F L 灵活的配置 ....................................................................... 289 漏极开路配置.................................................................... 160 M Microchip 因特网网站....................................................... 365 MPLAB ASM30 汇编器、链接器和库管理器 .................... 306 MPLAB ICD 2 在线调试器 ................................................ 307 MPLAB ICE 2000 高性能通用在线仿真器 ........................ 307 MPLAB ICE 4000 高性能通用在线仿真器 ........................ 307 MPLAB PM3 器件编程器.................................................. 307 MPLAB 集成开发环境软件 ............................................... 305 MPLINK 目标链接器 /MPLIB 目标库管理器...................... 306 脉宽调制模式.................................................................... 172 模寻址 ................................................................................ 68 操作示例..................................................................... 69 起始地址和结束地址................................................... 69 W 地址寄存器选择...................................................... 69 应用 ............................................................................ 70 N NVM 模块 寄存器映射 ................................................................. 66 内部 RC 振荡器 用于 WDT................................................................. 294 P PICSTART 2 开发编程器 ................................................. 308 PICSTART Plus 开发编程器 ............................................ 308 PMD 模块 寄存器映射 ................................................................. 66 POR 和长振荡器起振时间 .................................................. 86 PORTA 寄存器映射 ................................................................. 64 PORTB 寄存器映射 ................................................................. 64 PORTC 寄存器映射 ................................................................. 65 PORTD 寄存器映射 ................................................................. 65 PORTE 寄存器映射 ................................................................. 65 PORTF 寄存器映射 ................................................................. 65 PORTG 寄存器映射 ................................................................. 66 PWM 边沿对齐................................................................... 178 CPU 空闲模式下的操作............................................ 183 CPU 休眠模式下的操作............................................ 183 单脉冲模式 ............................................................... 181 独立 PWM 输出模式 ................................................. 181 互补模式................................................................... 180 互补输出模式 ........................................................... 181 输出改写................................................................... 181 输出改写同步 ........................................................... 182 占空比 ...................................................................... 172 中心对齐................................................................... 179 周期 .................................................................. 172, 178 PWM 更新锁定 ................................................................. 183 PWM 故障引脚 ................................................................. 182 故障状态................................................................... 182 使能位 ...................................................................... 182 输入模式................................................................... 183 逐周期 .............................................................. 183 优先级 ...................................................................... 182 PWM 时基 ........................................................................ 177 单事件模式............................................................... 177 后分频器 .................................................................. 178 连续向上 / 向下计数模式 .......................................... 177 双更重新模式 ........................................................... 178 预分频器 .................................................................. 178 自由运行模式 ........................................................... 177 PWM 输出和极性控制 ...................................................... 182 输出引脚控制 ........................................................... 182 PWM 死区时间发生器 ...................................................... 180 范围 ......................................................................... 181 分配 ......................................................................... 181 选择位 (表)........................................................... 181 PWM 特殊事件触发器 ...................................................... 183 后分频器 .................................................................. 183 PWM 占空比 比较单元 .................................................................. 179 寄存器缓冲器 ........................................................... 179 即时更新 .................................................................. 179 配置寄存器映射................................................................ 289 配置模拟端口引脚 ............................................................ 160 配置位 .............................................................................. 289 说明 (表)............................................................... 290 片内稳压器....................................................................... 293 Q QEI 16 位向上 / 向下位置计数器模式.............................. 198 备用 16 位定时器 / 计数器........................................ 199 CPU 休眠模式下的定时器工作................................. 199 CPU 休眠模式下的工作 ........................................... 199 错误检查 .................................................................. 198 计数方向状态 ........................................................... 198 可编程数字噪声滤波器............................................. 199 逻辑 ......................................................................... 198 位置测量模式 ........................................................... 198 在 CPU 空闲模式下的定时器工作 ............................ 200 在 CPU 空闲模式下的工作 ....................................... 199 中断 ......................................................................... 200 R 软件堆栈指针和帧指针 CALL 堆栈帧 .............................................................. 67 软件模拟器 (MPLAB SIM)............................................ 306 S SPI 从动-帧从动模式连接............................................. 208 从动-帧主控模式连接............................................. 208 主 / 从连接 ............................................................... 207 主控-帧主控模式连接............................................. 207 SPI 模块 SPI1 寄存器映射 ........................................................ 54 SPI2 寄存器映射 ........................................................ 54 闪存程序存储器.................................................................. 77 编程算法 .................................................................... 80 表指令 ........................................................................ 77 操作 ........................................................................... 78 控制寄存器................................................................. 78 RTSP 工作原理.......................................................... 78 设置产生连续输出脉冲..................................................... 171 时间要求 DCI 多通道,I2S 模式 .............................................. 340 外部时钟 .................................................................. 317 时序规范 DS70165D_CN 第 362 页 初稿  2007 Microchip Technology Inc. dsPIC33F 10 位 A/D 转换要求 .................................................. 348 12 位 A/D 转换要求 .................................................. 350 CAN I/O 要求 ........................................................... 343 电机控制 PWM 要求................................................. 327 复位、看门狗定时器、振荡器起振定时器、上电延时 定时器和欠压复位要求 ..................................... 321 I2Cx 总线数据要求 (从动模式)............................. 338 I2Cx 总线数据要求 (主控模式)............................. 336 简单 OC/PWM 模式时序要求 ................................... 326 PLL 时钟 .................................................................. 318 QEI 索引脉冲要求 .................................................... 329 QEI 外部时钟要求 .................................................... 324 SPI 从模式 (CKE=0)要求..................................... 332 SPIx 从模式 (CKE = 1)要求 ................................. 334 SPIx 主模式 (CKE=0)要求 ................................... 330 SPI 主模式 (CKE = 1)要求................................... 331 输出比较要求 ........................................................... 325 Timer2、 Timer4、 Timer6 和 Timer8 的外部时钟 时序要求 .......................................................... 323 Timer3、 Timer5、 Timer7 和 Timer9 的外部时钟 要求.................................................................. 323 Timer1 外部时钟要求 ............................................... 322 正交解码器要求........................................................ 328 时序特性 CLKO 和 I/O ............................................................. 319 时序图 10 位 A/D 转换 (CHPS = 01, SIMSAM = 0, ASAM = 0,SSRC = 000).............................. 346 10 位 A/D 转换 (CHPS = 01, SIMSAM = 0, ASAM = 1, SSRC = 111, SAMC = 00001) 347 12 位 A/D 转换 (ASAM = 0, SSRC = 000)......... 349 边沿对齐 PWM ......................................................... 178 CAN I/O.................................................................... 343 DCI AC-Link 模式 ..................................................... 341 DCI 多通道,I2S 模式 .............................................. 339 电机控制 PWM ......................................................... 327 电机控制 PWM 故障................................................. 327 定时器 Q (QEI 模块)外部时钟.............................. 324 ECAN 位 .................................................................. 236 复位、看门狗定时器、振荡器起振定时器和上电 延时定时器 ....................................................... 320 I2Cx 总线启动 / 停止位 (从动模式)....................... 337 I2Cx 总线启动 / 停止位 (主控模式)....................... 335 I2Cx 总线数据 (从动模式)..................................... 337 I2Cx 总线数据 (主控模式)..................................... 335 I2S 接口帧同步时序 .................................................. 264 OC/PWM.................................................................. 326 QEA/QEB 输入......................................................... 328 QEI 模块索引脉冲 .................................................... 329 SPIx 从动模式 (CKE = 1) ......................................... 333 SPIx 从动模式 (CKE=0) ........................................... 332 SPI 主控模式 (CKE = 1) ........................................... 331 SPI 主控模式 (CKE=0) ............................................. 330 输出比较 (OCx).................................................... 325 输入捕捉 (CAPx) ...................................................... 325 死区时间................................................................... 180 Timer1、 Timer2、 Timer3、 Timer4、 Timer5、 Timer6、Timer7、 Timer8 和 Timer9 外部时钟 322 外部时钟................................................................... 317 帧同步时序, AC-Link 帧起始 .................................. 264 帧同步时序,多通道模式 ......................................... 264 中心对齐 PWM ......................................................... 179 时序要求 CLKO 和 I/O ............................................................. 319 DCI AC-Link 模式 ..................................................... 342 输入捕捉................................................................... 325 时钟切换 .......................................................................... 156 使能 ......................................................................... 156 序列 ......................................................................... 156 输出比较 .......................................................................... 171 寄存器...................................................................... 174 数据地址空间 ..................................................................... 41 带有 16 KB RAM 的 dsPIC33F 器件的数据存储器 映射 ................................................................... 43 带有 30 KB RAM 的 dsPIC33F 器件的数据存储器 映射 ................................................................... 44 带有 8 KB RAM 的 dsPIC33F 器件的数据存储器 映射 ................................................................... 42 对齐 ........................................................................... 41 宽度 ........................................................................... 41 Near 数据空间 ........................................................... 41 软件堆栈 .................................................................... 67 数据累加器和加法器 / 减法器............................................. 35 回写 ........................................................................... 36 舍入逻辑 .................................................................... 36 数据空间写饱和 ......................................................... 37 溢出和饱和................................................................. 35 数据转换器接口 (DCI)模块 .......................................... 261 输入捕捉 .......................................................................... 169 寄存器...................................................................... 170 输入状态变化通知模块..................................................... 160 算术逻辑单元 (ALU)....................................................... 33 T Timer2/3、 Timer4/5、 Timer6/7 和 Timer8/9.................. 163 Timer1 ............................................................................. 161 桶形移位寄存器 ................................................................. 37 通用异步收发器 ............................................................... 223 W U ...................................................................................... 211 UART 波特率 发生器 (BRG)............................................... 224 间隔或同步发送过程 ................................................ 225 使用 UxCTS 和 UxRTS 引脚的流控制 ..................... 225 在 8 位或 9 位数据模式下接收 ................................. 225 在 8 位数据模式下发送 ............................................ 225 在 9 位数据模式下发送 ............................................ 225 UART 模块 UART1 寄存器映射 .................................................... 54 UART2 寄存器映射 .................................................... 54 WWW 地址 ...................................................................... 365 WWW 在线技术支持 .......................................................... 21 位反转寻址......................................................................... 70 示例 ........................................................................... 71 实现 ........................................................................... 70 序列表 (16 项)........................................................ 71 温度和电压规范 AC............................................................................ 316 X 系统控制 寄存器映射................................................................. 66 Y 引脚配置 I/O 说明 (表).................................................... 25 因特网地址....................................................................... 365 用于说明操作码的符号..................................................... 298  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 363 页 dsPIC33F Z 在节能指令执行期间的中断 .............................................. 158 在线串行编程 (ICSP)............................................ 289, 295 在线调试器 ....................................................................... 295 在线仿真........................................................................... 289 增强型 CAN 模块.............................................................. 231 振荡器配置 ....................................................................... 149 正交编码器接口 (QEI)................................................... 197 正交编码器接口 (QEI)模块 寄存器映射 ................................................................. 53 直接存储器访问 ................................................................ 135 指令集 概述 .......................................................................... 300 综述 .......................................................................... 297 指令寻址模式...................................................................... 67 MAC 类指令 ............................................................... 68 MCU 指令................................................................... 67 其他指令..................................................................... 68 文件寄存器指令 .......................................................... 67 支持的基本寻址模式................................................... 68 传送指令和累加器指令 ............................................... 68 直流特性........................................................................... 310 程序存储器 ............................................................... 315 打盹电流 (IDOZE).................................................. 313 掉电电流 (IPD) .......................................................... 312 工作电流 (IDD) .......................................................... 311 I/O 引脚输出规范...................................................... 315 I/O 引脚输入规范...................................................... 314 空闲电流 (IIDLE).................................................... 312 温度和电压规范 ........................................................ 310 中断控制和状态寄存器 ....................................................... 91 IECx ........................................................................... 91 IFSx............................................................................ 91 INTCON1 ................................................................... 91 INTCON2 ................................................................... 91 IPCx ........................................................................... 91 中断设置过程.................................................................... 133 初始化 ...................................................................... 133 禁止中断................................................................... 133 陷阱服务程序 ........................................................... 133 中断服务程序 ........................................................... 133 中断向量表 (IVT)............................................................ 87 自动时钟延长.................................................................... 215 发送模式................................................................... 215 接收模式................................................................... 215 DS70165D_CN 第 364 页 初稿  2007 Microchip Technology Inc. MICROCHIP 网站 Microchip 网站 (www.microchip.com)为客户提供在 线支持。客户可通过该网站方便地获取文件和信息。只 要使用常用的因特网浏览器即可访问。网站提供以下信 息: • 产品支持——数据手册和勘误表、应用笔记和样本 程序、设计资源、用户指南以及硬件支持文档、最 新的软件版本以及存档软件 • 一般技术支持——常见问题 (FAQ)、技术支持请 求、在线讨论组以及 Microchip 顾问计划成员名单 • Microchip 业务——产品选型和订购指南、最新 Microchip 新闻稿、研讨会和活动安排表、 Microchip 销售办事处、代理商以及工厂代表列表 变更通知客户服务 Microchip 的 变 更 通 知 客 户 服 务 有 助 于 客户了解 Microchip 产品的最新信息。注册客户可在他们感兴趣 的某个产品系列或开发工具发生变更、更新、发布新版 本或勘误表时,收到电子邮件通知。 欲注册,请登录 Microchip 网站 www.microchip.com, 点 击 “变 更 通 知 客 户 (Customer Change Notification)”服务后按照注册说明完成注册。 dsPIC33F 客户支持 Microchip 产品的用户可通过以下渠道获得帮助: • 代理商或代表 • 当地销售办事处 • 应用工程师 (FAE) • 技术支持 客户应联系其代理商、代表或应用工程师 (FAE)寻求 支持。当地销售办事处也可为客户提供帮助。本文档后 附有销售办事处的联系方式。 也可通过http://support.microchip.com获得网上技术 支持。  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 365 页 dsPIC33F 读者反馈表 我们努力为您提供最佳文档,以确保您能够成功使用 Microchip 产品。如果您对文档的组织、条理性、主题及其他有助 于提高文档质量的方面有任何意见或建议,请填写本反馈表并传真给我公司 TRC 经理,传真号码为 86-21-5407-5066。 请填写以下信息,并从下面各方面提出您对本文档的意见。 致: TRC 经理 关于: 读者反馈 发自: 姓名 公司 地址 国家 / 省份 / 城市 / 邮编 电话:(______)__________________ 应用(选填): 您希望收到回复吗?是 否 器件: dsPIC33F 问题: 文献编号: 1. 本文档中哪些部分最有特色? 总页数 ________ 传真:(______) __________________ DS70165D_CN 2. 本文档是否满足了您的软硬件开发要求?如何满足的? 3. 您认为本文档的组织结构便于理解吗?如果不便于理解,那么问题何在? 4. 您认为本文档应该添加哪些内容以改善其结构和主题? 5. 您认为本文档中可以删减哪些内容,而又不会影响整体使用效果? 6. 本文档中是否存在错误或误导信息?如果存在,请指出是什么信息及其具体页数。 7. 您认为本文档还有哪些方面有待改进? DS70165D_CN 第 366 页 初稿  2007 Microchip Technology Inc. dsPIC33F 产品标识体系 欲订货或获取价格、交货等信息,请与我公司生产厂或销售办事处联系。 dsPIC 33 FJ 256 GP7 10 T I / PT - XXX Microchip 的商标 架构 闪存系列 程序存储器容量(KB) 产品组 引脚数 卷带标志(如果适用) 温度范围 封装 模式 示例: a) dsPIC33FJ256GP710I/PT: 通用 dsPIC33, 64 KB 程序存储器, 100 引 脚,工业级温度, TQFP 封装。 b) dsPIC33FJ64MC706I/PT-ES: 电机控制 dsPIC33, 64 KB 程序存储器, 64 引脚,工业级温度, TQFP 封装,工程样片。 架构 闪存系列 产品组 引脚数 温度范围 封装 33 = 16 位数字信号控制器 FJ = 闪存程序存储器, 3.3V GP2 = 通用系列 GP3 = 通用系列 GP5 = 通用系列 GP7 = 通用系列 MC5 = 电机控制系列 MC7 = 电机控制系列 06 = 64 引脚 08 = 80 引脚 10 = 100 引脚 I = -40°C 至 +85°C (工业级) PT = 10x10 或 12x12 mm TQFP (薄型正方扁平封装) PF = 14x14 mm TQFP (薄型正方扁平封装)  2007 Microchip Technology Inc. 初稿 DS70165D_CN 第 367 页 全球销售及服务网点 美洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 1-480-792-7200 Fax: 1-480-792-7277 技术支持: http://support.microchip.com 网址:www.microchip.com 亚特兰大 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 波士顿 Boston Westborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088 芝加哥 Chicago Itasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075 达拉斯 Dallas Addison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924 底特律 Detroit Farmington Hills, MI Tel: 1-248-538-2250 Fax: 1-248-538-2260 科科莫 Kokomo Kokomo, IN Tel: 1-765-864-8360 Fax: 1-765-864-8387 洛杉矶 Los Angeles Mission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608 圣克拉拉 Santa Clara Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445 加拿大多伦多 Toronto Mississauga, Ontario, Canada Tel: 1-905-673-0699 Fax: 1-905-673-6509 亚太地区 亚太总部 Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 北京 Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 福州 Tel: 86-591-8750-3506 Fax: 86-591-8750-3521 中国 - 香港特别行政区 Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 青岛 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 中国 - 沈阳 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深圳 Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 中国 - 顺德 Tel: 86-757-2839-5507 Fax: 86-757-2839-5571 中国 - 武汉 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 台湾地区 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-536-4803 台湾地区 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 台湾地区 - 新竹 Tel: 886-3-572-9526 Fax: 886-3-572-6459 亚太地区 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 印度 India - Bangalore Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 日本 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 韩国 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 韩国 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 或 82-2-558-5934 马来西亚 Malaysia - Penang Tel: 60-4-646-8870 Fax: 60-4-646-5086 菲律宾 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 新加坡 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 泰国 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 欧洲 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 荷兰 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 西班牙 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 英国 UK - Wokingham Tel: 44-118-921-5869 Fax: 44-118-921-5820 DS70165D_CN 第 368 页 初稿 06/25/07  2007 Microchip Technology Inc.

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。