dsPIC30F2010 数据手册 高性能 16 位 数字信号控制器 2007 Microchip Technology Inc. DS70118G_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. 版权所有。 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和 印度的设计中心均通过了 ISO/TS-16949:2002 认证。公司在 PIC® MCU 与 dsPIC® DSC、 KEELOQ® 跳码器件、串行 EEPROM、单片机外 设、非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS16949:2002。此外, Microchip 在开发系统的设计和生产方面的质量体 系也已通过了 ISO 9001:2000 认证。 DS70118G_CN 第 ii 页 2007 Microchip Technology Inc. dsPIC30F2010 28 引脚 dsPIC30F2010 增强型 16 位闪存数字信号控制器 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 高性能改进型 RISC CPU: • • • • • • • • • 改进的哈佛架构 优化的 C 编译器指令集 83 条具备灵活寻址模式的基本指令 24 位宽指令, 16 位宽数据总线 12 KB 片内闪存程序空间 512 字节片内数据 RAM 1 KB 非易失性数据 EEPROM 16 x 16 位工作寄存器阵列 最大 30 MIPS 工作: - DC 至 40 MHz 外部时钟输入 - 4 MHz-10 MHz 振荡器输入,带 PLL (4 倍 频、 8 倍频和 16 倍频) • 27 个中断源 • 三个外部中断源 • 每一个中断具有 8 个用户可选择的中断优先级 • 4 个处理器异常和软件陷阱 DSP 引擎特性: • • • • • 模寻址和位反转寻址模式 两个 40 位宽的累加器,具备可选饱和逻辑 17 位 x 17 位单周期硬件小数 / 整数乘法器 单周期乘 - 累加 (MAC)操作 40 级桶形移位寄存器 • 双数据取 外设特性: • 高灌电流 / 拉电流 I/O 引脚:25 mA/25 mA • 3个 16位定时器 /计数器;可选择将 16 位定时器配 对组成 32 位定时器模块 • 4 个 16 位捕捉输入功能引脚 • 2 个 16 位比较 /PWM 输出功能引脚 - 可提供双比较模式 • 3 线 SPI 模块 (支持 4 种帧模式) • I2C™模块支持多主器件/从模式,支持7位/10位寻 址 • 带 FIFO 缓冲区的可寻址 UART 模块 电机控制 PWM 模块特性: • 6 个 PWM 输出通道 - 互补或独立的输出模式 - 边沿和中心对齐模式 • 4 个占空比发生器 • 具备 4 种工作模式的专用时基 • • • • 输出极性可由编程设定 用于互补模式的死区时间控制 手动输出控制 用于同步 A/D 转换的触发器 正交编码器接口模块特性: • A 相、 B 相和索引脉冲输入 • 16 位向上 / 向下位置计数器 • 计数方向状态 • 位置测量 (x2 和 x4)模式 • 输入端具有可编程数字噪声滤波器 • 备用 16 位定时器 / 计数器模式 • 位置计数器计满返回 / 下溢中断 模拟特性: • 10 位模数转换器 (ADC),具备以下特性: - 1 Msps 转换速率 (对于 10 位 A/D) - 6 个输入通道 - 休眠和空闲模式下仍可进行转换 • 可编程欠压复位 2007 Microchip Technology Inc. DS70118G_CN 第1 页 dsPIC30F2010 • 故障保护时钟监控器: - 检测时钟故障,可切换至片上低功耗 RC 振荡 器 • 可编程代码保护 • 在线串行编程 (In-Circuit Serial Programming™ , ICSP™)功能 • 可选择的功耗管理模式: • 休眠、空闲和备用时钟模式 特殊数字信号控制器特性: • 增强型闪存程序存储器: - 对于工业级温度范围,最少擦写次数 1 万次, 典型擦写次数 10 万次。 • 数据 EEPROM 存储器: - 对于工业级温度范围,最少擦写次数 10 万次, 典型擦写次数 100 万次。 • 软件控制下,可自行再编程 • 上电复位 (Power-on Reset, POR)、上电延时 定时器 (Power-up Timer, PWRT)以及振荡器 起振定时器 (Oscillator Start-up Timer, OST) • 零活的看门狗定时器 (Watchdog Timer, WDT),片内带有低功耗 RC 振荡器,以便可靠地 工作 CMOS 技术: • 低功耗高速闪存技术 • 宽工作电压范围 (2.5V 至 5.5V) • 工业级和扩展级温度范围 • 低功耗 dsPIC30F 电机控制和电源转换系列器件 * UART SPI I2CTM CAN 正交编 输出 电机控制 A/D 10 位 引脚 程序存储器字 SRAM EEPROM 16 位 输入 码器模 比较 / 标准 PWM 1 Msps 数 节数 / 指令数 字节数 字节数 定时器 捕捉 块 PWM dsPIC30F2010 28 12K/4K 512 1024 3 4 2 6 通道 6 通道 有 1 1 1 – dsPIC30F3010 28 24K/8K 1024 1024 5 4 2 6 通道 6 通道 有 1 1 1 – dsPIC30F4012 28 48K/16K 2048 1024 5 4 2 6 通道 6 通道 有 1 1 1 1 dsPIC30F3011 40/44 24K/8K 1024 1024 5 4 4 6 通道 9 通道 有 2 1 1 – dsPIC30F4011 40/44 48K/16K 2048 1024 5 4 4 6 通道 9 通道 有 2 1 1 1 dsPIC30F5015 64 66K/22K 2048 1024 5 4 4 8 通道 16 通道 有 1 2 1 1 dsPIC30F6010 80 144K/48K 8192 4096 5 8 8 8 通道 16 通道 有 2 2 1 2 dsPIC30F6010A 80 144K/48K 8192 4096 5 8 8 8 通道 16 通道 有 2 2 1 2 器件 * 本表对 dsPIC30F2010 的外设特性进行了汇总,同时列出 dsPIC30F 电机控制和电源转换系列中其他器件的特性以 进行比较。 DS70118G_CN 第2 页 2007 Microchip Technology Inc. dsPIC30F2010 引脚配置图 28 引脚 SDIP 和 SOIC 封装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 dsPIC30F2010 MCLR EMUD3/AN0/VREF+/CN2/RB0 EMUC3/AN1/VREF-/CN3/RB1 AN2/SS1/LVDIN/CN4/RB2 AN3/INDX/CN5/RB3 AN4/QEA/IC7/CN6/RB4 AN5/QEB/IC8/CN7/RB5 VSS OSC1/CLKI OSC2/CLKO/RC15 EMUD1/SOSCI/T2CK/U1ATX/CN1//RC13 EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 VDD EMUD2/OC2/IC2/INT2/RD1 28 27 26 25 24 23 22 21 20 19 18 17 16 15 AVDD AVSS PWM1L/RE0 PWM1H/RE1 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 PWM3H/RE5 VDD VSS PGC/EMUC/U1RX/SDI1/SDA/RF2 PGD/EMUD/U1TX/SDO1/SCL/RF3 FLTA/INT0/SCK1/OCFA/RE8 EMUC2/OC1/IC1/INT1/RD0 28 27 26 25 24 23 22 EMUC3/AN1/VREF- /CN3/RB1 EMUD3/AN0/VREF+/CN2/RB0 MCLR AVDD AVSS PWM1L/RE0 PWM1H/RE1 28 引脚 QFN 封装 dsPIC30F2010 8 9 10 11 12 13 14 1 2 3 4 5 6 7 21 20 19 18 17 16 15 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 PWM3H/RE5 VDD VSS PGC/EMUC/U1RX/SDI1/SDA/RF2 EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13 EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 VDD EMUD2/OC2/IC2/INT2/RD1 EMUC2/OC1/IC1/INT1/RD0 FLTA/INT0/SCK1/OCFA/RE8 PGD/EMUD/U1TX/SDO1/SCL/RF3 AN2/SS1/LVDIN/CN4/RB2 AN3/INDX/CN5 RB3 AN4/QEA/IC7/CN6/RB4 AN5/QEB/IC8/CN7/RB5 VSS OSC1/CLKI OSC2/CLKO/RC15 2007 Microchip Technology Inc. DS70118G_CN 第3 页 dsPIC30F2010 目录 1.0 器件概述 ....................................................................................................................................................................................... 5 2.0 CPU 架构综述............................................................................................................................................................................... 9 3.0 存储器构成 ................................................................................................................................................................................ 19 4.0 地址发生器单元 .......................................................................................................................................................................... 31 5.0 中断 ............................................................................................................................................................................................ 37 6.0 闪存程序存储器 .......................................................................................................................................................................... 43 7.0 数据 EEPROM 存储器 ................................................................................................................................................................ 49 8.0 I/O 端口....................................................................................................................................................................................... 53 9.0 Timer1 模块 ................................................................................................................................................................................ 57 10.0 Timer2/3 模块 ............................................................................................................................................................................. 61 11.0 输入捕捉模块.............................................................................................................................................................................. 67 12.0 输出比较模块.............................................................................................................................................................................. 71 13.0 正交编码器接口 (QEI)模块..................................................................................................................................................... 75 14.0 电机控制 PWM 模块 ................................................................................................................................................................... 81 15.0 SPI 模块...................................................................................................................................................................................... 91 16.0 I2C 模块...................................................................................................................................................................................... 95 17.0 通用异步收发器 (UART)模块 ............................................................................................................................................... 103 18.0 10 位高速模数转换器 (ADC)模块......................................................................................................................................... 111 19.0 系统集成 ................................................................................................................................................................................... 121 20.0 指令集汇总 ............................................................................................................................................................................... 135 21.0 开发支持 ................................................................................................................................................................................... 143 22.0 电气特性 ................................................................................................................................................................................... 147 23.0 封装信息 ................................................................................................................................................................................... 185 Microchip 网站.................................................................................................................................................................................... 197 变更通知客户服务 .............................................................................................................................................................................. 197 客户支持............................................................................................................................................................................................. 197 读者反馈表 ......................................................................................................................................................................................... 198 产品标识体系...................................................................................................................................................................................... 199 致 客 户 我们旨在提供最佳文档供客户正确使用 Microchip 产品。 为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。 出版物的质量将随新文档及更新版本的推出而得到提升。 如果您对本出版物有任何问题和建议,请通过电子邮件联系我公司 TRC 经理,电子邮件地址为 [email protected],或将本 数据手册后附的 《读者反馈表》传真到 86-21-5407 5066。我们期待您的反馈。 最新数据手册 欲获得本数据手册的最新版本,请查询我公司的网站: http://www.microchip.com 查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000 的 A 版本。 勘误表 现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到 器件 / 文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。 欲了解某一器件是否存在勘误表,请通过以下方式之一查询: • Microchip 网站 http://www.microchip.com • 当地 Microchip 销售办事处 (见最后一页) 在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本 (包括文献编号)。 客户通知系统 欲及时获知 Microchip 产品的最新信息,请到我公司网站 www.microchip.com 上注册。 DS70118G_CN 第4 页 2007 Microchip Technology Inc. dsPIC30F2010 1.0 器件概述 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 2007 Microchip Technology Inc. 本文档包含 dsPIC30F2010 器件的特定信息。dsPIC30F 系列器件在高性能 16 位单片机 (MCU)架构中融合了 大量数字信号处理器 (DSP)功能。图 1-1 中给出了 dsPIC30F2010 器件的框图。 DS70118G_CN 第5 页 dsPIC30F2010 图 1-1: dsPIC30F2010 框图 Y 数据总线 X 数据总线 16 中断 控制器 PSV 和表 数据访问 控制模块 24 8 16 16 16 16 16 24 数据 EEPROM (1 KB) 16 X RAGU X WAGU Y AGU PCU PCH PCL 程序计数器 循环 堆栈 控制 控制 逻辑 逻辑 程序存储器 (12 KB) 16 数据锁存器 数据锁存器 Y 数据 X 数据 RAM RAM (256 字节) (256 字节) 地址 地址 锁存器 锁存器 24 地址锁存器 16 EMUD3/AN0/VREF+/CN2/RB0 EMUC3/AN1/VREF-/CN3/RB1 AN2/SS1/LVDIN/CN4/RB2 AN3/INDX/CN5/RB3 AN4/QEA/IC7/CN6/RB4 AN5/QEB/IC8/CN7/RB5 PORTB 有效地址 16 数据锁存器 ROM 锁存器 24 16 IR 16 16 x 16 W 寄存器阵列 译码 指令 译码和 控制 PORTC 16 16 至各模块 的控制信号 OSC1 /CLK EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13 EMUC1/SOSCO/T1CK/U1ARX/CN0/RC14 OSC2/CLKO/RC15 16 上电延时 定时器 DSP 引擎 除法 单元 EMUC2/OC1/IC1/INT1/RD0 EMUD2/OC2/IC2/INT2/RD1 振荡器 起振定时器 时序 发生 ALU<16> POR/BOR 复位 16 看门狗 定时器 MCLR 10 位 ADC 输入 捕捉 模块 定时器 QEI SPI1 PORTD 16 输出 比较 模块 电机控制 PWM I2C™ PWM1L/RE0 PWM1H/RE1 PWM2L/RE2 PWM2H/RE3 PWM3L/RE4 PWM3H/RE5 FLTA/INT0/SCK1/OCFA/RE8 UART1 PORTE PGC/EMUC/U1RX/SDI1/SDA/RF2 PGD/EMUD/U1TX/SDO1/SCL/RF3 PORTF DS70118G_CN 第6 页 2007 Microchip Technology Inc. dsPIC30F2010 表 1-1 对器件的 I/O 引脚配置和端口引脚的复用功能进 行了简要描述。端口引脚可具有多种功能。当发生复用 时,外设模块的功能要求可强制替代端口引脚的数据方 向。 表 1-1: 引脚 I/O 描述 引脚 类型 缓冲器 类型 AN0-AN5 I Analog AVDD P P 模拟模块正电源。 P 模拟模块的参考地。 引脚名称 描述 模拟输入通道。 AVSS P CLKI CLKO I O CN0-CN7 I ST 输入电平变化通知输入。 可通过软件编程设定所有输入为内部弱上拉。 I/O I/O I/O I/O I/O I/O I/O I/O ST ST ST ST ST ST ST ST ICD 主通信通道数据输入 / 输出引脚。 ICD 主通信通道时钟输入 / 输出引脚。 ICD 第二通信通道数据输入 / 输出引脚。 ICD 第二通信通道时钟输入 / 输出引脚。 ICD 第三通信通道数据输入 / 输出引脚。 ICD 第三通信通道时钟输入 / 输出引脚。 ICD 第四通信通道数据输入 / 输出引脚。 ICD 第四通信通道时钟输入 / 输出引脚。 IC1, IC2, IC7, IC8 I ST 捕捉输入。 dsPIC30F2010 具有 4 个捕捉输入。输入采用的编号方式有助于保 持与引脚数较多器件的输入一致。 INDX QEA I I ST ST QEB I ST 正交编码器索引脉冲输入。 在 QEI 模式下为正交编码器 A 相输入。 在定时器模式下为辅助定时器外部时钟/门控输入。 在 QEI 模式下为正交编码器 B 相输入。 在定时器模式下为辅助定时器外部时钟/门控输入。 INT0 INT1 INT2 I I I ST ST ST 外部中断 0 外部中断 1 外部中断 2 FLTA PWM1L PWM1H PWM2L PWM2H PWM3L PWM3H I O O O O O O ST — — — — — — PWM 故障 A 输入 PWM1 低端输出 PWM1 高端输出 PWM2 低端输出 PWM2 高端输出 PWM3 低端输出 PWM3 高端输出 MCLR I/P ST 主复位输入或编程电压输入。本引脚为低电平有效的器件复位输入端。 OCFA OC1-OC2 I O ST — 比较故障 A 输入 (对于比较通道 1、 2、 3 和 4)。 比较输出。 OSC1 OSC2 I I/O EMUD EMUC EMUD1 EMUC1 EMUD2 EMUC2 EMUD3 EMUC3 图注: ST/CMOS 外部时钟源输入。总是与 OSC1 引脚功能相关联。 — 振荡器晶振输出。在晶振模式下,连接到晶体或谐振器。在 RC 和 EC 模式下,可 选择作为 CLKO。总是与 OSC2 引脚功能相关联。 ST/CMOS 振荡器晶振输入。当配置为 RC 模式时,为 ST 缓冲器;否则为 CMOS。 — 振荡器晶振输出。在晶振模式下,连接到晶振或谐振器。在 RC 和 EC 模式下, 可选择作为 CLKO。 CMOS =CMOS 兼容输入或输出 Analog = 模拟输入 ST =CMOS 电平的施密特触发器输入 O = 输出 I = 输入 P =电源 2007 Microchip Technology Inc. DS70118G_CN 第7 页 dsPIC30F2010 表 1-1: 引脚 I/O 描述 (续) 引脚 类型 缓冲器 类型 PGD PGC I/O I ST ST 在线串行编程数据输入/输出引脚。 在线串行编程时钟输入引脚。 RB0-RB5 I/O ST PORTB 为双向 I/O 口。 引脚名称 描述 RC13-RC14 I/O ST PORTC 为双向 I/O 口。 RD0-RD1 I/O ST PORTD 为双向 I/O 口。 RE0-RE5, RE8 I/O ST PORTE 为双向 I/O 口。 RF2, RF3 I/O ST PORTF 为双向 I/O 口。 SCK1 SDI1 SDO1 SS1 I/O I O I ST ST — ST SPI #1 的同步串行时钟输入 / 输出。 SPI #1 数据输入。 SPI #1 数据输出。 SPI #1 同步从动模式。 SCL SDA I/O I/O ST ST 用于 I2C™ 的同步串行时钟输入 / 输出。 用于 I2C 的同步串行数据输入 / 输出。 SOSCO SOSCI O I T1CK T2CK I I ST ST Timer1 外部时钟输入。 Timer2 外部时钟输入。 U1RX U1TX U1ARX U1ATX I O I O ST — ST — UART1 接收。 UART1 发送。 UART1 备用接收。 UART1 备用发送。 VDD P — 逻辑电路和 I/O 引脚的正电源。 VSS P — 逻辑电路和 I/O 引脚的参考地。 VREF+ I Analog 模拟参考电压 (高电压)输入。 VREF- I Analog 模拟参考电压 (低电压)输入。 图注: — 32 kHz 低功耗晶振输出。 ST/CMOS 32 kHz 低功耗晶振输入。配置为 RC 模式时,为 ST 缓冲器;否则为 CMOS。 CMOS =CMOS 兼容输入或输出 Analog = 模拟输入 ST =CMOS 电平的施密特触发器输入 O = 输出 I = 输入 P =电源 DS70118G_CN 第8 页 2007 Microchip Technology Inc. dsPIC30F2010 2.0 CPU 架构综述 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 本文档对 dsPIC30F2010 的 CPU 和外设功能进行了简 要概述。有关这些内容的详细描述,请参见《dsPIC30F 系列参考手册》(DS70046E_CN)。 2.1 内核概述 内核的指令字长为 24 位。程序计数器 (PC)为 23 位 宽,其最低有效位 (LSb)始终为 0 (见第 3.1 节 “程 序地址空间”),最高有效位 (MSb)在正常的程序执 行期间被忽略,某些专用指令除外。因此, PC 能够寻 址最大为 4M 指令字的用户程序空间。 使用指令预取机 制来帮助维持吞吐量。使用 DO 和 REPEAT 指令,支持 无循环计数管理开销的程序循环结构,而 DO 和 REPEAT 这两条指令在任何时候都可被中断。 工作寄存器阵列由 16 个 16 位寄存器组成,每个寄存器 均可作为数据、地址或偏移量寄存器。一个工作寄存器 (W15)用作中断和调用时的软件堆栈指针。 数据空间为 64KB (32K 字),被分成两块,称为 X 和 Y 数据存储空间。每个存储块有各自独立的地址发生单 元 (Address Generation Unit, AGU)。大多数指令只 通过 X 存储空间 AGU 进行操作,这样对外界而言数据 空 间 就 是 单 独 而 统 一 的。乘 法 - 累 加 (MultiplyAccumulate,MAC)类双源操作数 DSP 指令,通过 X 和 Y 的 AGU 进行操作,这将数据地址空间分成两个部分 (见第 3.2 节“数据地址空间”)。 X 和 Y 数据空间边界 视具体器件而定,用户不能改变它们。每个数据字由 2 个字节构成,大多数指令可以把数据当作字或字节来进 行寻址。 对于存储在程序存储空间中的数据,有两种存取方法: • 数据存储空间的高 32 KB 可以映射到程序空间的下 半部分 (用户空间),映射的边界可以是任何 16K 程序字边界,边界由 8 位的程序空间可视性页 ( Program Space Visibility Page, PSVPAG)寄 存器定义。这使得任何指令都能象存取数据存储空 间那样存取程序存储空间,但存取需要一个额外的 周期。此外,使用这个方法,只能存取每个指令字 的低 16 位。 2007 Microchip Technology Inc. • 使用任何工作寄存器,通过表读及表写指令,可以 对程序空间内的 32K 字页进行线性间接存取。表 读和表写指令能够用来存取一个指令字的全部 24 位。 X 和 Y 地址空间都支持无开销循环缓冲区 (模寻址)。 模寻址的主要目的是要消除 DSP 算法的循环开销。 X AGU 还支持对目的有效地址进行位反转寻址,对于 基 -2 FFT 算法,这极大地简化了输入或输出数据的重 新排序。关于模寻址和位反转寻址的详细信息,参见第 4.0 节 “地址发生器单元”。 内核支持固有 (无操作数)寻址、相对寻址、立即数寻 址、存储器直接寻址、寄存器直接寻址、寄存器间接寻 址、寄存器偏移量寻址以及立即数偏移量寻址模式。指 令与预定义的寻址模式相关联,这取决于其功能需求。 对于大多数指令,内核能够在每个指令周期内执行数据 (或程序数据)存储器读取、工作寄存器(数据)读取、 数据存储器写入以及程序(指令)存储器读取操作。因 此,支持 3 操作数指令,允许在单个周期内执行 C = A + B 这样的操作。 内核包含 DSP 引擎,这极大地提高了内核的运算能力 和吞吐能力。它具有一个高速 17 位× 17 位乘法器、一 个 40 位 ALU、两个 40 位饱和累加器和一个 40 位双向 桶形移位寄存器。累加器或任何工作寄存器中的数据, 可以在单个周期内右移 16 位或左移 16 位。 DSP 指令 可以无缝地与所有其他指令一起操作,且设计为能获得 最佳实时性能。在把两个 W 寄存器相乘时, MAC 类指 令能够从存储器中同时取出两个操作数。为了能够同时 取数据操作数,对于 MAC 类指令,数据空间拆分为两 块,对所有其他指令数据空间则是线性的。对于 MAC 类 指令,这是通过将某些工作寄存器专用于每个地址空 间,以透明而灵活的方式实现的。 内核不支持多级指令流水线。不过,为了最大限度地获 得可用的执行时间,使用了单级指令预取机制,在指令 执行的前一个周期,存取并部分译码指令。除了一些特 例外,大部分指令都在单个周期内执行。 内核具有用于陷阱和中断的向量异常处理结构,具有 62 个独立的向量。异常包括最多 8 个陷阱(其中有 4 个是 保留的)和 54 个中断。根据用户指定的 1 到 7 之间的 优先级 (1 为最低优先级, 7 为最高优先级),以及预 定义的 “自然顺序”,决定每个中断的优先级。陷阱的 优先级是固定的,其优先级范围是从 8 到 15。 DS70118G_CN 第9 页 dsPIC30F2010 2.2 编程模型 2.2.1 软件堆栈指针 / 帧指针 ® 编程模型如图 2-1 所示,它包括 16 x 16 位工作寄存器 (W0 至 W15)、2 x 40 位累加器(ACCA 和 ACCB)、 状态寄存器 (SR)、数据表页寄存器 (TBLPAG)、程 序空间可视性页寄存器 (PSVPAG)、 DO 和 REPEAT 寄存器(DOSTART、DOEND、DCOUNT和RCOUNT) 以及程序计数器(PC)。工作寄存器可作为数据、地址 或偏移量寄存器。全部寄存器都是存储器映射的。 W0 用作文件寄存器寻址的 W 寄存器。 dsPIC DSC 器件具备一个软件堆栈。W15 被指定用作 软件堆栈指针(Stack Pointer,SP),异常处理以及子 程序调用与返回将自动修改 W15。但是, W15 可以被 任何指令所引用,引用方式与引用所有其他 W 寄存器相 同。这简化了堆栈指针的读、写和处理 (例如,创建堆 栈帧)。 这些寄存器中,一些寄存器有与之关联的影子寄存器, 如图 2-1 所示。影子寄存器用作临时保存寄存器,事件 发生时可在影子寄存器和主寄存器之间传递内容。所有 影子寄存器均不能直接存取。寄存器与其影子寄存器之 间的数据传递遵守下列规则: 复位时 W15 初始化为 0x0800。 在初始化过程中,用户 可以重新设定 SP,使它指向数据空间内的任何单元。 • PUSH.S 和 POP.S W0、 W1、 W2、 W3 和 SR (仅限 DC、 N、 OV、 Z 和 C 位)与对应的影子寄存器之间进行内 容传递。 • DO 指令 循环开始时, DOSTART、 DOEND 和 DCOUNT 寄存器的内容压入影子寄存器,在循环结束时其内 容从各自的影子寄存器中弹出。 对工作寄存器进行字节操作时,只影响目标寄存器的最 低有效字节 (LSB)。不过,存储器映射工作寄存器的 一个好处是,可以通过字节宽数据存储空间存取来处理 最低和最高有效字节。 注: 为 了 防 止 出 现 不 对 齐 的 堆 栈 访 问, W15<0> 始终保持为零。 W14 被指定用作 LNK 和 ULNK 指令中所定义的堆栈帧 指针。但是,W14 可以被任何指令所引用,引用方式与 引用所有其他 W 寄存器相同。 2.2.2 状态寄存器 dsPIC DSC内核有一个16位状态寄存器(SR),其LSB 称为 SR 低字节 (SRL),其 MSB 称为 SR 高字节 (SRH), SR 寄存器组成见图 2-1。 SRL 包含全部的 MCU ALU 运算状态标志位 (包括 Z 位),以及CPU中断优先级状态位 IPL<2:0>和REPEAT 有效状态位 RA。在异常处理期间,SRL 与 PC 的 MSB 连接起来形成一个完整的字值,然后被压入堆栈。 状态寄存器的高字节包含 DSP 加法器 / 减法器状态位、 DO 循环有效位 (DA)和半进位 (DC)状态位。 2.2.3 程序计数器 程序计数器为 23 位宽; bit 0 始终为零。因此, PC 能 够最多寻址 4M 指令字。 DS70118G_CN 第10 页 2007 Microchip Technology Inc. dsPIC30F2010 图 2-1: 编程模型 D15 D0 W0/WREG PUSH.S 影子寄存器 W1 DO 影子寄存器 W2 W3 图注 W4 DSP 操作数 寄存器 W5 W6 W7 工作寄存器 W8 W9 DSP 地址 寄存器 W10 W11 W12/DSP 偏移量 W13/DSP 回写 W14/ 帧指针 W15/ 堆栈指针 SPLIM AD39 堆栈指针限制寄存器 AD15 AD31 AD0 ACCA ACCB DSP 累加器 PC22 PC0 0 程序计数器 0 7 TABPAG TBLPAG 7 数据表页地址 0 PSVPAG 程序空间可视性页地址 15 0 RCOUNT REPEAT 循环计数器 15 0 DCOUNT DO 循环计数器 22 0 DOSTART DO 循环起始地址 DOEND DO 循环结束地址 22 15 0 内核配置寄存器 CORCON OA OB SA SB OAB SAB DA SRH 2007 Microchip Technology Inc. DC IPL2 IPL1 IPL0 RA N OV Z C 状态寄存器 SRL DS70118G_CN 第11 页 dsPIC30F2010 2.3 除法支持 dsPIC DSC 器件具有这样的特性:支持 16 位 /16 位有符 号小数除法运算,支持 32 位 /16 位、 16 位 /16 位有符 号和无符号整数除法运算,除法形式均为单指令迭代除 法。支持以下指令和数据长度: 1. 2. 3. 4. 5. DIVF — 16/16 有符号小数除法 DIV.sd — 32/16 有符号除法 DIV.ud — 32/16 无符号除法 DIV.sw — 16/16 有符号除法 DIV.uw — 16/16 无符号除法 除法指令必须在一个 REPEAT 循环中执行。任何其他执 行方式 (例如,一系列不连续的除法指令),将不会正 常运行,因为指令流取决于 RCOUNT。除法指令不会 自动设置 RCOUNT 值,于是 RCOUNT 必须显式地、正 确地在 REPEAT 指令中给定,如表 2-1 所示 (REPEAT 将执行目标指令 { 操作数的值 +1} 次)。必须为 DIV/ DIVF指令的18次迭代设置REPEAT循环计数。所以,完 整的除法操作需要 19 个周期。 注: 除法流可以被中断。然而,用户需要恰当地 保存中断现场。 16/16 除法类似于 32/16 除法(它们的迭代次数相同), 但在第一次迭代时,被除数要进行零扩展或符号扩展。 表 2-1: 除法指令 指令 功能 DIVF 有符号小数除法:Wm/Wn → W0 ; Rem → W1 DIV.sd 有符号除法:(Wm + 1:Wm)/Wn → W0 ; Rem → W1 DIV.ud 无符号除法:(Wm + 1:Wm)/Wn → W0 ; Rem → W1 DIV.sw (或 DIV.s) 有符号除法:Wm/Wn → W0 ; Rem → W1 DIV.uw (或 DIV.u) 无符号除法:Wm/Wn → W0 ; Rem → W1 DS70118G_CN 第12 页 2007 Microchip Technology Inc. dsPIC30F2010 2.4 DSP 引擎 通过 CPU 内核配置寄存器 (CORCON)中的各个位, 可以有多种 DSP 引擎选择,这些选择如下: DSP 引擎的组成:一个高速 17 位× 17 位乘法器、一 个桶形移位寄存器和一个 40 位加法器 / 减法器 (两个 目标累加器、舍入逻辑和饱和逻辑)。 1. 2. 3. 4. 5. 6. 7. DSP 引擎能够执行固有的不需要其他数据的累加器至 累加器操作。这些指令是 ADD、 SUB 和 NEG。 小数或整数 DSP 乘法 (IF)。 有符号或无符号 DSP 乘法 (US)。 常规或收敛舍入 (RND)。 ACCA 自动饱和使能 / 禁止 (SATA)。 ACCB 自动饱和使能 / 禁止 (SATB)。 对于写数据存储器,自动饱和使能/禁止(SATDW)。 累加器饱和模式选择 (ACCSAT)。 注: CORCON 的构成,见表 3-3。 DSP 引擎的框图,如图 2-2 所示。 表 2-2: DSP 指令汇总 指令 CLR 代数运算 ACC 回写? A=0 是 A = (x – y)2 否 EDAC A = A + (x – y)2 否 MAC A = A + (x * y) 是 ED MAC MOVSAC MPY MPY.N MSC 2007 Microchip Technology Inc. A=A+ x2 否 A 中内容将不发生改变 是 A=x*y 否 A=–x*y 否 A=A–x*y 是 DS70118G_CN 第13 页 dsPIC30F2010 图 2-2: DSP 引擎功能框图 40 40 位累加器 A 40 位累加器 B 进位 / 借位输出 进位 / 借位输入 40 舍入 逻辑 饱 和 16 饱和 加法器 取补 40 40 40 桶形 移位 寄存器 16 X 数据总线 40 Y 数据总线 符号扩展 32 16 补零 32 33 17 位 乘法器 / 定标器 16 16 至 / 来自 W 阵列 DS70118G_CN 第14 页 2007 Microchip Technology Inc. dsPIC30F2010 2.4.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,645 (0x7FFF FFFF)。 当乘法器配置为小数乘法时,数据表示为二进制补码小 数,其中 MSB 定义为符号位,小数点暗含在符号位之 后 (QX 格式)。暗含小数点的 N 位二进制补码小数的 范围是 -1.0 至(1 – 21-N)。对于 16 位小数,Q15 数据 范围是 -1.0 (0x8000)至 0.999969482 (0x7FFF), 包括 0 在内,其精度为 3.01518x10-5。在小数方式下, 16x16 乘法运算将产生 1.31 乘积,其精度为 4.65661 x 10-10。 2.4.2.1 加法器 / 减法器是一个 40 位的加法器,一侧输入可以选 择为零,而另一侧的输入可以是数据的原码或补码。对 于加法, 进位 / 借位输入是高有效的,另一侧输入是数 据的原码 (没有求补的);对于减法,进位 / 借位输入 是低有效的,另一侧输入是数据的补码。溢出和饱和状 态位 SA/SB 及 OA/OB 提供加法器 / 减法器的溢出和饱 和状态信息,状态位被锁存在状态寄存器中并在其中得 到反映。 • 从 bit 39 溢出:这是灾难性溢出,会破坏累加器的 符号。 • 溢出到警戒位(bit 32 到 bit 39):这是可恢复的溢 出。每当警戒位有任何不一致,就将把这个状态位 置 1。 加法器有一个额外的饱和块,如果选取的话,饱和模块 将控制累加器的数据饱和。饱和模块使用加法器的结 果、上述的溢出状态位以及 SATA/B (CORCON<7:6>) 和 ACCSAT (CORCON<4>)模式控制位,来确定什么 时候以及什么值要饱和。 在状态寄存器中有 6 个支持饱和及溢出的位,它们是: 同一个乘法器还用来支持 MCU 乘法指令,包括整数的 16 位有符号、无符号和混和符号乘法。 1. MUL 指令可以使用字节或字长度的操作数。字节操作数 将产生 16 位结果,而字操作数将产生 32 位结果,结果 存放在 W 寄存器阵列的指定寄存器中。 2. 2.4.2 3. 数据累加器和加法器 / 减法器 数据累加器包含一个 40 位的加法器 / 减法器,它带有自 动符号扩展逻辑。它可以选择两个累加器 (A 或 B)之 一作为其预累加的源累加器和后累加的目标累加器。对 于 ADD 和 LAC 指令,将被累加或装入的数据可选择通 过桶形移位寄存器在累加之前进行换算。 加法器 / 减法器,溢出和饱和 OA: ACCA 溢出到警戒位 OB: ACCB 溢出到警戒位 SA: ACCA 已饱和 (bit 31 溢出并饱和) 或者 4. ACCA 溢出到警戒位并饱和(bit 39 溢出并饱和) SB: ACCB 已饱和 (bit 31 溢出并饱和) 或者 5. 6. ACCB 溢出到警戒位并饱和(bit 39 溢出并饱和) OAB: OA 和 OB 的逻辑或 (OR) SAB: SA 和 SB 的逻辑或 (OR) 每次数据通过加法器 / 减法器,就会修改 OA 和 OB 位。 置 1 时,它们表明最近的操作已经溢出到累加器警戒位 (bit 32 到 bit 39)。如果 OA 和 OB 位置 1 而且 INTCON1 寄存器中相应的溢出陷阱标志允许位 (OVATE 和 OVBTE)置 1 的话,还可以选择用 OA 和 OB 位产生算术 警告陷阱 (见第 5.0 节 “中断”)。这使得用户能够立 即采取措施,例如,改正系统增益。 2007 Microchip Technology Inc. DS70118G_CN 第15 页 dsPIC30F2010 每次数据通过加法器 / 减法器,就会修改 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 位。这样,只需检查状态寄存器中的一个位,程 序就能判断累加器是否已溢出,或者累加器是否已饱 和。对于通常要使用两个累加器的复数运算而言,这很 有用。 2.4.2.2 累加器 “回写” MAC 类指令(MPY、MPY.N、ED 和 EDAC 除外)可以选 择将累加器高字 (bit 16 至 bit 31)的舍入形式写入数 据存储空间,前提是当前指令不对该累加器进行操作。 通过 X 总线,寻址组合的 X 和 Y 地址空间,执行回写 操作。支持以下寻址模式: 1. 2. W13,寄存器直接寻址: 非操作目标的累加器的舍入内容以 1.15 小数形 式写入 W13。 [W13]+ = 2,执行后递增的寄存器间接寻址: 非操作目标的累加器的舍入内容以 1.15 小数形 式写入 W13 指向的地址。然后 W13 递增 2(对 于字写入)。 器件支持三种饱和及溢出模式: 2.4.2.3 1. 舍入逻辑是一个组合块,在累加器写 (存储)过程中 执行常规的 (有偏)或收敛的 (无偏)舍入功能。舍 入模式由 CORCON 寄存器中 RND 位的状态决定。它 会产生一个 16 位的 1.15 数据值,该值被送到数据空 间写饱和逻辑:如果此指令不指明舍入,就会存储一个 截取的 1.15 数据值,简单地丢弃低位字 (least significant word, lsw)。 bit 39 溢出和饱和: 当发生 bit 39 溢出和饱和时,饱和逻辑将最大的 正 9.31 值 (0x7FFFFFFFFF)或最大的负 9.31 值 (0x8000000000)装入目标累加器。 SA 或 SB 位置 1 并保持置 1 直到被用户清零。这称为 “超饱和” ,为错误数据或不可预期的算法问题 (例如,增益计算)提供了保护机制。 2. bit 31 溢出和饱和: 当发生 bit 31 溢出和饱和时,饱和逻辑将最大的 正 1.31 值 (0x007FFFFFFF)或最大的负 1.31 值 (0x0080000000)装入目标累加器。 SA 或 SB 位置 1 并保持置 1 直到被用户清零。当这种 饱和模式生效时,不使用警戒位(因此 OA、OB 或 OAB 位不会被置 1)。 3. bit 39 灾难性溢出: 来自加法器的 bit 39 溢出状态位,用来将 SA 或 SB 位置 1(置 1 后,这两位将保持置 1,除非用户 进行清零)。不进行饱和操作,允许累加器溢出 (破坏其符号) 。如果 INTCON1 寄存器中的 COVTE 位置 1,灾难性溢出会导致一个陷阱异 常。 舍入逻辑 常规舍入取累加器的 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 的最低位 (累加器的 bit 16)进行检测。 如 果它为 1, ACCxH 递增 1。 如果它为 0, ACCxH 不 变。 假设 bit 16 本身是随机的,这样的机制将消除任何 可能累加的舍入偏移。 通过 X 总线, SAC 和 SAC.R 指令将目标累加器内容的 截取 (SAC)或舍入 (SAC.R)形式存入数据存储空间 (这受数据饱和的影响,见第 2.4.2.4 节 “数据空间写 饱和”)。注意,对于 MAC 类指令,累加器回写操作将 以同样的方式进行,通过 X 总线寻址组合的 MCU (X 和 Y)数据空间。对于 MAC 类指令,数据始终要进行舍 入。 DS70118G_CN 第16 页 2007 Microchip Technology Inc. dsPIC30F2010 2.4.2.4 数据空间写饱和 除了加法器 / 减法器饱和,对数据空间进行写操作也会 饱和,但不会影响源累加器的内容。数据空间写饱和逻 辑块接受来自舍入逻辑块的一个 16 位的 1.15 小数值作 为输入,还接受来自源 (累加器)和 16 位舍入加法器 的溢出状态。这些经过组合,用来选择恰当的 1.15 小数 值作为输出,写入至数据存储空间中。 如果 CORCON 寄存器中的 SATDW 位置 1,将检测(经 过舍入或截取后的)数据是否溢出,并相应地进行调 整。如果输入数据大于 0x007FFF,则写入数据存储器 中的数据被强制为最大的正 1.15 值, 0x7FFF。如果输 入数据小于 0xFF8000,则写入数据存储器中的数据被 强制为最大的负 1.15 值, 0x8000。源累加器的最高位 位 (bit 39)用来决定被检测的操作数的符号。 2.4.3 桶形移位寄存器 桶形移位寄存器在单个周期内最多可算术或逻辑右移 16 位或左移 16 位。源寄存器可以是两个 DSP 累加器 中的任何一个,或者是 X 总线(支持寄存器或存储器数 据的多位移位)。 移位寄存器需要一个有符号二进制值,用来确定移位操 作的幅度 (位数)和方向。正值将操作数右移。负值则 将操作数左移。值为 “0”则不改变操作数。 桶形移位寄存器是 40 位宽的,于是,它为 DSP 移位操 作提供了 40 位的结果,而为 MCU 移位操作提供 16 位 的结果。来自 X 总线的数据在桶形移位寄存器中的存放 方式是:右移则数据存放在 bit 16 至 bit 31,左移则存 放在 bit 0 至 bit 15。 如果 CORCON 寄存器中的 SATDW 位没有置 1,则输 入数据都将通过,在任何情况下都不会被修改。 2007 Microchip Technology Inc. DS70118G_CN 第17 页 dsPIC30F2010 注: DS70118G_CN 第18 页 2007 Microchip Technology Inc. dsPIC30F2010 3.0 存储器构成 图 3-1: 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 程序地址空间 程序地址空间为 4M 指令字。它可通过一个 24 位值来寻 址,这24位值来自23位PC、表指令有效地址(Effective Address, EA)或数据空间 EA (当按照表 3-1 定义的 那样,将程序空间映射到数据空间时)。注意,为了提 供与数据空间寻址的兼容性, 在两个连续的程序字之 间,程序空间地址递增量为 2。 对于除 TBLRD/TBLWT 外的所有访问,用户程序空间访 问 限 制 在 低 4M 指 令 字 地 址 范 围 (0x000000 至 0x7FFFFE);TBLRD/TBLWT使用TBLPAG<7>来决定 用户或配置空间访问。在表 3-1 “程序空间地址构成” 中,bit 23 允许访问器件 ID、用户 ID 和配置位。对于其 他情形, bit 23 始终清零。 注: 复位 - GOTO 指令 复位 - 目标地址 保留 外部振荡器故障陷阱 地址错误陷阱 堆栈错误陷阱 算术警告陷阱 保留 保留 保留 向量 0 向量 1 000000 000002 000004 向量表 000014 向量 52 向量 53 00007E 000080 0000FE 000100 备用向量表 用户存储 空间 3.1 dsPIC30F2010 的程序存储空 间映射 用户闪存 程序存储区 (4K 个指令字) 001FFE 002000 保留 (读为 0) 图 3-1 所示的地址映射是概念性的,实际 的存储器配置取决于可用的存储器大小, 各器件的存储器配置可能会存在差异。 7FFBFE 7FFC00 数据 EEPROM (1KB) 7FFFFE 800000 配置存储 空间 保留 UNITID(32 个指令字) 8005BE 8005C0 8005FE 800600 保留 器件配置 寄存器 F7FFFE F80000 F8000E F80010 保留 DEVID(2) 2007 Microchip Technology Inc. FEFFFE FF0000 FFFFFE DS70118G_CN 第19 页 dsPIC30F2010 表 3-1: 程序空间地址构成 访问 空间 访问类型 指令访问 TBLRD/TBLWT 用户 用户 (TBLPAG<7> = 0) 配置 (TBLPAG<7> = 1) 用户 TBLRD/TBLWT 程序空间可视性 图 3-2: <23> <22:16> 0 TBLPAG<7:0> 程序空间地址 <15> <14:1> PC<22:1> 数据 EA <15:0> TBLPAG<7:0> 0 <0> 0 数据 EA <15:0> PSVPAG<7:0> 数据 EA <14:0> 访问程序空间中数据的地址生成 23 位 使用 程序计数器 选择 使用 程序空间 可视性 0 0 程序计数器 0 1 EA PSVPAG 寄存器 8位 15 位 EA 使用 表指令 1/0 TBLPAG 寄存器 8位 用户 / 配置 空间 选择 16 位 24 位 EA 字节 选择 注: 程序空间可视性不能用来对程序存储空间中字的 bit <23:16> 进行访问。 DS70118G_CN 第20 页 2007 Microchip Technology Inc. dsPIC30F2010 3.1.1 使用表指令访问程序存储器中的数据 器件提供了一组表指令,用来在程序空间和数据空间之 间传送字节或字大小的数据。 本器件架构取指令时是取 24 位宽的程序存储器。因此, 指令始终是对齐的。不过,由于器件架构是改进型哈佛 架构,数据也可以出现在程序空间中。 1. 有两种方法可以访问程序空间:通过特殊的表指令,或 者通过把 16K 字程序空间页重新映射到数据空间的上半 部分 (见第 3.1.2 节 “使用程序空间可视性访问程序存 储器中的数据”)。TBLRDL 和 TBLWTL 指令,提供了读 或写程序空间内任何地址的 lsw 的直接方法,无需通过 数据空间。TBLRDH 和 TBLWTH 指令是可以把一个程序 空间字的高 8 位作为数据存取的惟一方法。 2. 3. 对于每个连续的 24 位程序字,PC 的递增量为 2。这使 得程序存储器地址能够直接映射到数据空间地址。于 是,程序存储器可以看作是两个 16 位字宽的地址空间, 它 们 并 排 放 置,具 有 相 同 的 地 址 范 围。 TBLRDL 和 TBLWTL 访问存有低位数据字的空间, 而 TBLRDH 和 TBLWTH 则访问存有最高有效数据字节的空间。 4. 图 3-2说明了如何为表操作和数据空间访问(PSV = 1) 的创建 EA。这里, P<23:0> 指的是程序空间字,而 D<15:0> 指的是数据空间字。 图 3-3: TBLRDL:表读低位 字:读程序地址的低位字; P<15:0> 映 射到 D<15:0> ; 字节:读程序地址的 LSB 中的一个字节; 当字节选择 = 0 时, P<7:0> 映射到目的字节; 当字节选择 = 1 时, P<15:8> 映射到目的字节。 TBLWTL:表写低位字 (字节)(闪存编程的细 节,见第 6.0 节 “闪存程序存储器”)。 TBLRDH:表读高位 字:读程序地址的高位字; P<23:16> 映射到 D<7:0> ; D<15:8> 始终 = 0。 字节:读程序地址的 MSB 中的一个字节; 当字节选择 = 0 时,P<23:16> 映射到目的字节; 当字节选择 = 1 时,目的字节始终 = 0。 TBLWTH:表写高位字 (字节)(闪存编程的细 节,见第 6.0 节 “闪存程序存储器”)。 程序数据表访问 (低位字) PC 地址 0x000000 0x000002 0x000004 0x000006 程序存储器 “虚拟”字节 (读为 0)。 2007 Microchip Technology Inc. 23 16 8 0 00000000 00000000 00000000 00000000 TBLRDL.W TBLRDL.B(Wn<0> = 0) TBLRDL.B(Wn<0> = 1) DS70118G_CN 第21 页 dsPIC30F2010 图 3-4: 程序数据表访问 (最高字节) TBLRDH.W PC 地址 0x000000 0x000002 0x000004 0x000006 23 16 8 0 00000000 00000000 00000000 00000000 TBLRDH.B(Wn<0> = 0) 程序存储器 “虚拟”字节 (读为 0) 3.1.2 TBLRDH.B(Wn<0> = 1) 使用程序空间可视性访问程序存储器 中的数据 可选择将数据空间的高 32 KB 映射到任何 16K 字程序空 间页。这提供了通过 X 数据空间对存储的常量数据的透 明访 问,而 无 需 使 用 特 殊 指 令 (即 TBLRDL/H 和 TBLWTL/H 指令)。 如果数据空间 EA 的 MSb 置 1,并且程序空间可视性使 能 (方法是在内核控制寄存器 CORCON 中把 PSV 位 置 1)时,就能通过数据空间访问程序空间。CORCON 功能的讨论请参见第 2.4 节 “DSP 引擎”。 正在执行的指令,如果要对这个区域进行数据访问的 话,就需要一个额外的指令周期,因为需要进行两次程 序空间读取操作。 注意,可寻址数据空间的上半部分始终是 X 数据空间的 一部分。于是,当 DSP 操作使用程序空间映射来访问 这个存储区域时, Y 数据空间通常应该存放 DSP 操作 的状态(可变)数据,而 X 数据空间通常应该存放系数 (常量)数据。 尽管每个数据空间地址, 0x8000 和更高,直接映射到 对应的程序存储器地址(见图 3-6),但只使用 24 位程 序字的低 16 位来存放数据。应该进行恰当的设置,使 得对高 8 位进行访问的指令都成为非法指令,以维持器 件的可靠性。指令编码的细节,请参见《dsPIC30F/33F 程序员参考手册》(DS70157B_CN)。 DS70118G_CN 第22 页 注意,对于每个程序存储字 PC 都将递增 2,数据空间 地址的低 15 位将直接映射到相应程序空间地址的低 15 位。剩 下 的 位 由 程 序 空 间 可 视 性 页 寄 存 器 (PSVPAG<7:0>)提供,如图 3-5 所示。 注: 在表读 / 写期间,暂时禁止 PSV 访问。 对于使用 PSV 而又在 REPEAT 循环之外执行的指令: • 下列指令,除了规定的执行时间之外,需要一个额 外的指令周期: - 带数据操作数预取的 MAC 类指令 - MOV 指令 - MOV.D 指令 • 其他所有的指令,除了规定的指令执行时间之外, 需要两个额外的指令周期。 对于使用 PSV 而又在 REPEAT 循环内执行的指令: • 下列情况,除了规定的指令执行时间之外,需要两 个额外的指令周期: - 在第一次迭代中执行的指令 - 在最后一次迭代中执行的指令 - 由于中断而退出循环之前执行的指令 - 中断得到处理后而再次进入循环时执行的指令 • REPEAT 循环的所有其他各次迭代,都允许使用 PSV 访问数据的指令在一个周期内执行。 2007 Microchip Technology Inc. dsPIC30F2010 图 3-5: 数据空间通过程序空间可视性页映射到程序空间的操作 数据空间 程序空间 0x100100 0x0000 EA<15> = 0 数据 空间 EA PSVPAG(1) 0x00 8 15 16 15 EA<15> = 1 0x8000 15 23 地址组合 15 0 0x001200 23 数据空间的上半部分 映射至程序空间 0x001FFE 0xFFFF BSET MOV MOV MOV CORCON,#2 #0x00, W0 W0, PSVPAG 0x9200, W0 ; PSV 位置 1 ; 设置 PSVPAG 寄存器 ; 使用数据空间访问方法 ; 访问程序存储区地址单元 数据读 注: PSVPAG 是 8 位寄存器,包含程序空间地址的 bit <22:15>(即,它定义了程序空间页,数据空间的上半部分要 映射到这个程序空间页)。 3.2 数据地址空间 内核具有两个数据空间。数据空间可以看作是独立的 (对于某些 DSP 指令而言),或者看作是统一的线性地 址范围 (对于 MCU 指令而言)。使用两个地址发生单 元 (Address Generation Units, AGU)和独立的数据 路径访问数据空间。 3.2.1 数据存储空间映射 数据存储空间分为两块,X 和 Y 数据空间。这个架构的 关键之处在于,Y 空间是 X 空间的子集,Y 空间完全包 含在 X 中。为了提供外在的线性寻址空间,X 和 Y 空间 要有连续的地址。 2007 Microchip Technology Inc. 在执行除 MAC 类指令之外的任何指令时, X 块由 256 字节数据地址空间(包括全部 Y 地址)组成。在执行一 条 MAC 类指令时,X 块由 256 字节数据地址空间组成, 但不包括 Y 地址块 (只用来读数据)。换句话说,所有 其他指令把整个数据存储空间当作一个复合的地址空 间。 MAC 类指令把 Y 地址空间从数据空间中抽取出来, 使用源自 W10 和 W11 的 EA 来寻址 Y 地址空间。剩下 的 X 数据空间则使用 W8 和 W9 来寻址。只有 MAC 类指 令才能同时访问两个地址空间。 数据存储空间映射如图 3-6 所示。 DS70118G_CN 第23 页 dsPIC30F2010 图 3-6: 数据存储空间映射 MSB 地址 MSB SFR 空间 (注) LSB 地址 16 位 0x0001 LSB SFR 空间 0x0000 0x07FE 0x0800 0x07FF 0x0801 2560 字节 Near 数据空间 X 数据 RAM(X) 256 字节 512 字节 SRAM 空间 0x08FF 0x0901 0x08FE 0x0900 Y 数据 RAM(Y) 256 字节 0x09FF 0x0A00 (注) 0x8001 0x8000 X 数据 未用(X) 可选择 映射至 程序存储区 0xFFFF 注: 0xFFFE 未用的 SFR 或 SRAM 存储单元读为 0。 DS70118G_CN 第24 页 2007 Microchip Technology Inc. dsPIC30F2010 图 3-7: 用于 MCU 和 DSP (MAC 类)指令的数据空间 SFR 空间 X 空间 SFR 空间 未用 Y 空间 未用 X 空间 (Y 空间) 非 MAC 类操作(读 / 写) MAC 类操作(写) 使用任何 W 寄存器的间接 EA 2007 Microchip Technology Inc. X 空间 未用 MAC 类操作 ( 只读 ) 使用 W8 和 W9 的间接 EA 使用 W10 和 W11 的间接 EA DS70118G_CN 第25 页 dsPIC30F2010 3.2.2 3.2.3 数据空间 X 数据空间为全部指令所使用,支持全部的寻址模式。 读数据总线和写数据总线是独立的。X 读数据总线是所 有指令的返回数据路径,它把数据空间视为复合的 X 和 Y 地址空间。对于双操作数读指令(MAC 类),它还是 X 地址空间的数据路径。对于所有指令而言, X 写数据总 线是至数据空间的只写路径。 X 数据空间还支持所有指令的模寻址,不过要受到寻址 模式的限制。位反转寻址只是在写 X 数据空间时才支 持。 MAC 类指令(CLR、ED、EDAC、MAC、MOVSAC、MPY、 MPY.N 和 MSC)使用的 Y数据空间,协同 X 数据空间,提 供了两条并行的数据读取路径。Y 总线上不会出现写操 作。MAC 类指令使用两个专用的 W 寄存器指针 ,W10 和 W11,它们始终寻址 Y 数据空间,与 X 数据空间独 立;而 W8 和 W9 则始终寻址 X 数据空间。注意,在累 加器回写期间,数据地址空间视为 X 和 Y 数据空间的组 合,从而写操作通过 X 总线进行。所以,可以写整个数 据空间中的任何地址。 Y 数据空间仅用于与 MAC 类指令关联的数据预取操作。 它也支持自动循环缓冲区的模寻址。当然,所有其他指 令可以通过 X 数据路径来把 Y 数据地址空间作为复合线 性空间的一部分来进行访问。 图 3-6 给出了 X 和 Y 数据空间之间的边界定义,用户不 能设定改变边界。如果 EA 指向其所在地址空间之外的 数据,或者指向物理存储器之外的存储单元,将返回全 零的字 / 字节。例如,尽管 Y 地址空间对于使用任何寻 址模式的所有非 MAC 类指令而言,是可见的,如果一条 MAC 类指令试图使用 W8 或 W9(X 空间指针)从 Y 地址 空间取数据,将返回 0x0000。 表 3-2: 非法存储器访问的后果 试图进行的操作 返回数据 EA = 未实现地址 0x0000 在 MAC 类指令中使用 W8 或 W9 访 问 Y 数据空间 0x0000 在 MAC 类指令中使用 W10 或 W11 访问 X 数据空间 0x0000 所有有效地址都是 16 位宽的,且指向数据空间内的字 节。所以,数据空间地址范围是 64KB 或 32K 字。 DS70118G_CN 第26 页 数据空间宽度 内核数据宽度为 16 位。所有内部寄存器都按照 16 位宽 的字来组织。数据存储空间以字节可寻址的 16 位宽的 块来组织。 3.2.4 数据对齐 为了维持与 PIC® MCU 器件的向后兼容性,并提高数据 存储空间的使用效率,dsPIC30F指令集既支持字操作, 也支持字节操作。在数据存储器和寄存器中,数据按照 字来对齐,但是,所有数据空间有效地址都将解析为字 节。数据字节读取将读取包含字节的整个字,使用任何 有效地址 (EA)的 LSb 确定要选取的字节。 选取的字 节将存放到 X 数据路径的 LSB 中 (不可能出现来自 Y 数据路径的字节访问,因为 MAC 类指令只能取整字)。 这就是说,数据存储器和寄存器组织为两个并行的字节 宽的实体,它们共享 (字)地址译码,但写入线独立。 数据字节写,将只写阵列或寄存器中与字节地址匹配的 那一侧。 这种字节可访问能力的结果是,所有的有效地址计算 (包括那些由 DSP 操作产生的有效地址,它们只能是字 长度的数据)在内部进行换算,以适应字对齐的存储空 间。例如,内核将识别执行后修改寄存器间接寻址模式 [Ws++] 的结果,对于字节操作产生的值是 Ws + 1,而对 于字操作产生的值是 Ws + 2。 所有的字访问必须按照偶数地址对齐。不支持没有对齐 的字数据取,所以在混和字节和字操作时,或者从 8 位 MCU 代码进行转换时,必须要小心。如果试图进行未对 齐的读或写,将产生地址错误陷阱。如果在读操作时产 生错误,正在执行的指令将完成,而如果在写操作时产 生错误,指令仍将执行,但不会进行写入。无论是哪种 情况,都将产生陷阱,从而系统和 / 或用户能够检查地 址错误发生之前的机器状态。 图 3-8: 数据对齐 15 MSB 87 LSB 0 0001 字节 1 字节 0 0000 0003 字节 3 字节 2 0002 0005 字节 5 字节 4 0004 2007 Microchip Technology Inc. dsPIC30F2010 提供了一条符号扩展 (SE)指令,允许用户把 8 位的 有符号数据转换为 16 位有符号值。或者,对于 16 位无 符号数据,用户可以清零任何 W 寄存器的 MSB,方法 是在相应的地址处执行一条零扩展 (ZE)指令。 尽管大多数指令能够对字或字节大小的数据进行操作, 但应该注意的是,一些指令,包括 DSP 指令,只对字 大小的数据进行操作。 3.2.5 NEAR 数据空间 X 地址存储空间中,在 0x0000 和 0x1FFF 之间保留了一 个 8KB 的 near 数据空间;在所有的存储器直接寻址指 令中,可以通过一个 13 位的绝对地址来直接访问这个 数据空间。其余的 X 地址空间和全部的 Y 地址空间都是 间接可寻址的。此外,使用 MOV 指令可以寻址整个 X 数 据空间,这支持通过 16 位地址字段进行存储器直接寻 址。 3.2.6 软件堆栈 dsPIC DSC 器件具备一个软件堆栈。 W15 用作堆栈指 针。 堆栈指针总是指向堆栈顶部第一个可供使用的字,从低 地址到高地址方向增长。堆栈指针在弹出堆栈之前递 减,而在压入堆栈后递增,如图 3-9 所示。注意,对于 任何 CALL 指令时的 PC 压栈,在压入堆栈之前, PC 的MSB要进行零扩展,从而确保了MSB始终是清零的。 在异常处理期间,在 PC 压入堆栈之前, 要 先将PC 的MSB与SRL寄存器组合在一起。 堆栈指针限制寄存器 (SPLIM)与堆栈指针相关联。复 位时 SPLIM 未被初始化。与堆栈指针的情况一样, SPLIM<0> 强制为 0,因为所有的堆栈操作必须是字对 齐的。每当使用 W15 作为源指针或目的指针产生 EA 时,将与 SPLIM 中的值进行比较。如果堆栈指针 (W15)与 SPLIM 寄存器的内容相等,则执行压入操 作,不产生堆栈错误陷阱。但在随后的压栈操作时将会 产生堆栈错误陷阱。这样的话,当堆栈增长超过 RAM 中地址 0x2000 时,如果要想产生堆栈错误陷阱,用值 0x1FFE 来初始化 SPLIM 即可。 注: 类似地,当堆栈指针地址小于 0x0800 时,就会产生堆 栈指针下溢 (堆栈错误)陷阱,这避免了堆栈干预特殊 功能寄存器 (SFR)空间。 在对 SPLIM 寄存器进行写操作之后,不应紧跟着使用 W15 进行间接读操作的指令。 图 3-9: CALL 堆栈帧 0x0000 15 堆栈往高地址递增 所有载入 W 寄存器的字节都将载入 W 寄存器的 LSB, W 寄存器的 MSB 不变。 0 PC<15:0> W15(CALL 前) 000000000 PC<22:16> < 空字 > W15(CALL 后) 弹出堆栈:[--W15] 压入堆栈: [W15++] 2007 Microchip Technology Inc. DS70118G_CN 第27 页 内核寄存器映射 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 复位状态 W0 0000 W0/WREG W1 0002 W1 0000 0000 0000 0000 W2 0004 W2 0000 0000 0000 0000 0000 0000 0000 0000 W3 0006 W3 0000 0000 0000 0000 W4 0008 W4 0000 0000 0000 0000 W5 000A W5 0000 0000 0000 0000 W6 000C W6 0000 0000 0000 0000 W7 000E W7 0000 0000 0000 0000 W8 0010 W8 0000 0000 0000 0000 0000 0000 0000 0000 W9 0012 W9 W10 0014 W10 0000 0000 0000 0000 W11 0016 W11 0000 0000 0000 0000 W12 0018 W12 0000 0000 0000 0000 W13 001A W13 0000 0000 0000 0000 W14 001C W14 0000 0000 0000 0000 W15 001E W15 0000 1000 0000 0000 SPLIM 0020 SPLIM 0000 0000 0000 0000 ACCAL 0022 ACCAL 0000 0000 0000 0000 ACCAH 0024 ACCAH 0000 0000 0000 0000 ACCAU 0026 ACCBL 0028 ACCAU 符号扩展 (ACCA<39>) 0000 0000 0000 0000 ACCBL 0000 0000 0000 0000 2007 Microchip Technology Inc. ACCBH 002A ACCBU 002C PCL 002E PCH 0030 — — — — — — — — TBLPAG 0032 — — — — — — — — TBLPAG 0000 0000 0000 0000 PSVPAG 0034 — — — — — — — — PSVPAG 0000 0000 0000 0000 RCOUNT 0036 RCOUNT DCOUNT 0038 DCOUNT DOSTARTL 003A DOSTARTH 003C DOENDL 003E DOENDH 0040 — — — — — — — — — 0042 OA OB SA SB OAB SAB DA DC IPL2 SR ACCBH 0000 0000 0000 0000 ACCBU 符号扩展 (ACCB<39>) 0000 0000 0000 0000 PCL 0000 0000 0000 0000 — PCH 0000 0000 0000 0000 uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu DOSTARTL — — — — — — — — 0 — DOSTARTH 0000 0000 0uuu uuuu DOENDL 0 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 DOENDH IPL1 IPL0 RA N uuuu uuuu uuuu uuu0 uuuu uuuu uuuu uuu0 0000 0000 0uuu uuuu OV Z C 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第28 页 表 3-3: 2007 Microchip Technology Inc. 表 3-3: 内核寄存器映射 (续) 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 0044 — — — US EDT DL2 DL1 DL0 SATA SATB MODCON 0046 XMODEN YMODEN — — XMODSRT 0048 XS<15:1> 0 uuuu uuuu uuuu uuu0 XMODEND 004A XE<15:1> 1 uuuu uuuu uuuu uuu1 YMODSRT 004C YS<15:1> 0 uuuu uuuu uuuu uuu0 YMODEND 004E YE<15:1> 1 uuuu uuuu uuuu uuu1 XBREV 0050 BREN DISICNT 0052 — SFR 名称 CORCON BWM<3:0> YWM<3:0> XB<14:0> — Bit 5 DISICNT<13:0> 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 Bit 4 SATDW ACCSAT Bit 3 Bit 2 Bit 1 Bit 0 复位状态 IPL3 PSV RND IF 0000 0000 0010 0000 XWM<3:0> 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第 29 页 dsPIC30F2010 注: DS70118G_CN 第30 页 2007 Microchip Technology Inc. dsPIC30F2010 4.0 4.1 地址发生器单元 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 dsPIC DSC 内核包含两个独立的地址发生器单元:X AGU 和 Y AGU。Y AGU 仅支持 DSP MAC 类指令的字数 据读取。dsPIC DSC AGU 支持如下三种数据寻址类型: • 线性寻址 • 模 (循环)寻址 • 位反转寻址 指令寻址模式 寻址模式经过优化可以支持各指令的具体功能,基本的 寻址模式在表 4-1 中给出。MAC 类指令中提供的寻址模 式,与其他指令类型中的寻址模式略有不同。 4.1.1 文件寄存器指令 大多数文件寄存器指令使用一个 13 位地址字段 (f)来 直接寻址数据存储器中的前 8192 字节 (near 数据空 间)。大多数文件寄存器指令使用工作寄存器 W0,W0 在这些指令中表示为 WREG。目的寄存器通常是同一个 文件寄存器或者 WREG(MUL 指令除外),把结果写入 寄存器或寄存器对。使用 MOV 指令能够获得更大的灵活 性,可以访问整个数据空间。 线性和模数据寻址模式可应用于数据空间或程序空间。 位反转寻址只能用于数据空间地址。 表 4-1: 支持的基本寻址模式 寻址模式 文件寄存器直接寻址 说明 寄存器直接寻址 明确指定文件寄存器的地址。 直接访问寄存器的内容。 寄存器间接寻址 Wn 的内容形成有效地址 (EA)。 执行后修改的寄存器间接寻址 Wn 的内容形成 EA。然后用一个常量值来修改 Wn (递增或递减)。 执行前修改的寄存器间接寻址 先用一个有符号常量值修改 Wn (递增或递减), Wn 的内容形成 EA。 寄存器偏移量的寄存器间接寻址 Wn 和 Wb 的和形成 EA。 立即数偏移量的寄存器间接寻址 Wn 和立即数的和形成 EA。 2007 Microchip Technology Inc. DS70118G_CN 第31 页 dsPIC30F2010 4.1.2 MCU 指令 三操作数 MCU 指令的形式是: 操作数 3 = 操作数 1 < 功能 > 操作数 2 其中,操作数 1 始终是工作寄存器(即,寻址模式只能 是寄存器直接寻址),称为 Wb。操作数 2 可以是一个 W 寄存器,取自数据存储器或一个 5 位立即数。结果位 置 (操作数 3)可以是 W 寄存器或地址单元。 MCU 指 令支持下列寻址模式: • • • • • 寄存器直接寻址 寄存器间接寻址 执行后修改的寄存器间接寻址 执行前修改的寄存器间接寻址 5 位或 10 位立即数寻址 注: 4.1.3 并非所有的指令都支持上面给出的全部寻 址模式。各条指令可能支持这些寻址模式 的某些模式,指令不同支持的寻址模式可 能不同。 传送指令和累加器指令 与其他指令相比,传送和 DSP 累加器类指令提供了更 为零活的寻址模式。除了大多数 MCU 指令支持的寻址 模式以外,传送和累加器指令还支持寄存器偏移量的寄 存器间接寻址模式,这也叫做寄存器变址寻址模式。 注: 对于 MOV 指令,指令中指定的寻址模式对 于源寄存器和目的寄存器有效地址,可以 是不同的。然而, 4 位 Wb (寄存器偏移 量)字段为源寄存器和目寄存器所共用(但 通常 只 由源 寄 存器 或目 的 寄存 器 之一 使 用)。 4.1.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)的寄存器间接寻址 带寄存器偏移量的寄存器间接寻址 (变址寻址) 4.1.5 其他指令 除了上述的各种寻址模式之外,一些指令使用各种大小 的立即数。例如, BRA (转移)指令使用 16 位有符号 立即数来直接指定转移的目标,而 DISI 指令使用一个 14 位无符号立即数字段。在一些指令中,比如 ADD Acc,操作数的来源和运算结果已经暗含在操作码中。 某些操作,比如 NOP,没有任何操作数。 概括地说,传送指令和累加器指令支持下列寻址模式: • • • • • • • • 寄存器直接寻址 寄存器间接寻址 执行后修改的寄存器间接寻址 执行前修改的寄存器间接寻址 寄存器偏移量的寄存器间接寻址 (变址寻址) 立即数偏移量的寄存器间接寻址 8 位立即数寻址 16 位立即数寻址 注: 并非所有的指令都支持上面给出的全部寻 址模式。各条指令可能支持这些寻址模式 的某些模式,指令不同支持的寻址模式可 能不同。 DS70118G_CN 第32 页 2007 Microchip Technology Inc. dsPIC30F2010 4.2 模寻址 模寻址模式,是一种使用硬件来自动支持循环数据缓冲 区的方法。目的是在执行紧密循环代码时 (这在许多 DSP 算法中很典型),不需要用软件来执行数据地址边 界检查。 可以在数据空间或程序空间中进行模寻址(因为这两种 空间的数据指针机制本质上是相同的)。每个 X (也提 供指向程序空间的指针)和 Y 数据空间中都可支持一个 循环缓冲区。模寻址可以对任何 W 寄存器指针进行操 作。然而,最好不要将 W14 或 W15 用于模寻址,因为 这两个寄存器分别用作堆栈帧指针和堆栈指针。 总的来说,任何特定的循环缓冲区只能配置为单向工 作,因为根据缓冲区的方向,对缓冲区起始地址 (对于 递增缓冲区)或结束地址 (对于递减缓冲区)有某些限 制。 使用限制的唯一例外是那些长度为 2 的幂的缓冲区。这 些缓冲区满足起始和结束地址判据,它们可以双向工作 (即,在低地址边界和高地址边界上都将进行地址边界 检查)。 4.2.1 起始地址和结束地址 模寻址机制要求指定起始和结束地址,并把它们载入 16 位模缓冲区地址寄存器 (XMODSRT、 XMODEND、 YMODSRT 和 YMODEND,见表 3-3)中。 注: Y 空间模寻址的 EA 计算使用字长度的数据 (每个 EA 的 LSb 始终清零)。 循环缓冲区的长度没有直接指定,相应的起始地址、结 束地址之差可以确定长度。循环缓冲区最大长度为 32K 字 (64KB)。 4.2.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-3)。当 XWM 被设置 为除15之外的任何值且XMODEN 位(MODCON<15>) 置 1 时, X 数据空间的模寻址被使能。 要对其进行模寻址的 Y 地址空间指针 W 寄存器(YWM) 位于 MODCON<7:4> 中。当 YWM 被设置为除 15 之外 的任何值且 YMODEN 位(MODCON<14>)置 1 时,Y 数据空间的模寻址被使能。 2007 Microchip Technology Inc. DS70118G_CN 第33 页 dsPIC30F2010 图 4-1: 模寻址操作示例 字节 地址 MOV MOV MOV MOV MOV MOV MOV MOV DO MOV AGAIN: 0x1100 #0x1100,W0 W0, XMODSRT #0x1163,W0 W0,XMODEND #0x8001,W0 W0,MODCON #0x0000,W0 #0x1110,W1 AGAIN,#0x31 W0, [W1++] INC W0,W0 ; 设定模起始地址 ; 设定模结束地址 ; 使能 W1、 X AGU 用于模寻址 ;W0 保持缓冲区填充值 ;W1 指向缓冲区 ; 填充 50 个缓冲区单元 ; 填充下一个单元 ; 填充值递增 1 0x1163 起始地址 = 0x1100 结束地址 = 0x1163 长度 = 0x0032 个字 DS70118G_CN 第34 页 2007 Microchip Technology Inc. dsPIC30F2010 4.2.3 模寻址的应用 模寻址可以应用于与任何与 W 寄存器相关的有效地址 (EA)计算中。重要的是要意识到, 地址边界检查功 能,不仅会检查地址是否正好在地址边界上,而且会检 查地址是否小于或大于上限 (对于递增缓冲区)、是否 低于下限 (对于递减缓冲区)。因此,地址变化可能会 越过边界,但仍然可以正确调整。 注: 4.3 只有在使用执行前修改或执行后修改寻址 模式来计算有效地址时,模修正有效地址 才被写回寄存器。如果使用了地址偏移量 (例如,[W7 + W2]),会进行地址修正,但 寄存器的内容保持不变。 位反转寻址 位反转寻址用来简化基 -2 FFT 算法的数据重新排序。位 反转寻址为 X WAGU 所支持,仅限于数据写入。 如果位反转缓冲区的长度是 M = 2N 字节,则数据缓冲 区起始地址的最后 N 位必须为零。 XB<14:0> 是位反转地址修改量或 “中心点”(pivot point),通常是一个常数。对于 FFT 计算,其值等于 FFT 数据缓冲区长度的一半。 注: 使能位反转寻址时,仅对预递增或后递增的寄存器间接 寻址、且仅对字数据写入,才会进行位反转寻址。对于 任何其他寻址模式或对于字节数据,不会进行位反转寻 址,而是生成正常的地址。在进行位反转寻址时,W 地 址指针的增量将始终加上地址修改量(XB),与寄存器 间接寻址模式相关的偏移量将被忽略。此外,由于要求 是字数据, EA 的 LSb 被忽略 (且始终被清零)。 注: 地址修改量,可以是常数或寄存器的内容,可视为将其 位顺序反转。地址源和目的仍然是正常的顺序。 于是, 唯一需要反转的操作数就是地址修改量。 4.3.1 2. 3. 不应同时使能模寻址和位反转寻址。如果用 户试图这么做的话,对于 X WAGU,位反转 寻址将优先,X WAGU 模寻址将被禁止。然 而,在 X RAGU 中,模寻址继续起作用。 如果通过置 1 BREN (XBREV<15>)位使能了位反转 寻址,那么,在写 XBREV 寄存器之后,不应马上进行 要使用被指定为位反转指针的 W 寄存器的间接读操作。 位反转寻址的实现 位反转寻址的使能方式如下: 1. 所有位反转 EA 的计算都使用字数据(每个 EA 的 LSb 始终为零)。为了产生兼容地址 (字节),要相应地调整 XB 的值。 MODCON 寄存器中 BWM (W 寄存器选择)的 值,是除 15 以外的任何值 ( 不能使用位反转寻 址访问堆栈),且 XBREV 寄存器中 BREN 位置 1,且 使用的寻址模式是预递增或后递增的寄存器间接 寻址模式。 图 4-2: 位反转地址示例 正常顺序的地址 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 2007 Microchip Technology Inc. DS70118G_CN 第35 页 dsPIC30F2010 表 4-2: 位反转地址序列 (16 个项) 正常 地址 A3 A2 A0 十进制 A3 A2 A1 A0 十进制 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 8 0 0 1 0 2 0 1 0 0 4 0 0 1 1 3 1 1 0 0 12 0 1 0 0 4 0 0 1 0 2 0 1 0 1 5 1 0 1 0 10 0 1 1 0 6 0 1 1 0 6 0 1 1 1 7 1 1 1 0 14 1 0 0 0 8 0 0 0 1 1 1 0 0 1 9 1 0 0 1 9 1 0 1 0 10 0 1 0 1 5 1 0 1 1 11 1 1 0 1 13 1 1 0 0 12 0 0 1 1 3 1 1 0 1 13 1 0 1 1 11 1 1 1 0 14 0 1 1 1 7 1 1 1 1 15 1 1 1 1 15 表 4-3: 注 A1 位反转 后的地址 XBREV 寄存器的位反转地址修改量 缓冲区大小 (字) XB<14:0> 位反转地址修改量 (1) 32768 0x4000 16384 0x2000 8192 0x1000 4096 0x0800 2048 0x0400 1024 0x0200 512 0x0100 256 0x0080 128 0x0040 64 0x0020 32 0x0010 16 0x0008 8 0x0004 4 0x0002 2 0x0001 1: 大于 256 字的修改量将超出 dsPIC30F2010 器件的数据存储空间范围。 DS70118G_CN 第36 页 2007 Microchip Technology Inc. dsPIC30F2010 5.0 中断 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 dsPIC30F2010 具有 24 个中断源和 4 个处理器异常(陷 阱)。所有中断和异常的处理必须依据优先级机制进行 仲裁。 CPU 负责读取中断向量表 (IVT),并把中断向量中的 地址传送给程序计数器。中断向量从程序数据总线向程 序计数器的传送,是经由程序计数器输入侧 24 位宽的 多路开关来进行的。 中断向量表 (IVT)和备用中断向量表 (AIVT)的位置 靠近程序存储器的开始 (0x000004)。 IVT 和 AIVT 如 图 5-1 所示。 在中断和处理器异常提交给处理器内核之前,中断控制 器负责它们的预处理。使用下列集中式的特殊功能寄存 器,对外设中断和陷阱进行允许、优先级分配和控制: • IFS0<15:0>、 IFS1<15:0> 和 IFS2<15:0> 这三个寄存器中保存所有的中断请求标志。中断请 求标志由其对应的外设或外部信号置 1,标志的清 除则通过软件完成。 • IEC0<15:0>、 IEC1<15:0> 和 IEC2<15:0> 这三个寄存器保存所有的中断允许控制位。这些控 制位用来单独允许来自外设或外部信号的中断。 • IPC0<15:0>... IPC11<10:0> 与 这些中断中的每一个中断有关的用户可分配中 断优先级集中存放在这 12 个寄存器中。 • IPL<3:0> 当前 CPU 优先级显式地存放在 IPL 位中。 IPL<3>在CORCON寄存器中,而IPL<2:0> 则在处 理器内核的状态寄存器 (SR)中。 2007 Microchip Technology Inc. • INTCON1<15:0> 和 INTCON2<15:0> 全局中断控制功能由这两个寄存器提供。 INTCON1 包含处理器异常的控制和状态标志。 INTCON2 寄存器控制外部中断请求信号的操作以 及备用中断向量表的使用。 注: 一旦产生中断条件,就将置 1 中断标志位, 无论其对应的中断允许位状态为何。在允 许一个中断之前,用户软件应确保相应的 中断标志位被清零。 用户可以通过 IPCx 寄存器,为所有中断源分配 7 个优 先级中的一个,优先级从 1 到 7。 每个中断源都与一个 中断向量关联,如所图 5-1 所示。优先级 7 和 1 分别代 表最高和最低的可屏蔽优先级。 注: 中断源优先级指定为 断。 0,等同于禁止该中 如果 NSTDIS 位 (INTCON1<15>)置 1,则禁止中断 嵌套。因此,正在处理一个中断时,禁止处理新的中断, 即使新中断的优先级比当前正在处理的中断优先级高。 注: 一旦 NSTDIS 位置为 1, IPL 就变为只读。 某些中断具有专门的控制位,用于控制诸如边沿或电平 触发中断、电平变化中断这样的功能。这些功能的控制 仍然由产生中断的外设模块负责。 对于某些指令,在其执行期间如果 DISI 位 (INTCON2<14>)保持置 1 的话,那么可以用 DISI 指 令来禁止优先级为 6 或更低的中断的处理。 当中断得到服务时, PC 中装入存放在程序存储器中相 应中断向量存储单元中的地址。 IVT 中有 63 个不同的 向 量 (见 表 5-1) 。这 些 向 量 存 放 在 程 序 存 储 器 从 0x000004 到 0x0000FE 的存储单元中(见图 5-1)。这 些存储单元中存有 24 位地址;为了保持鲁棒性,如果 在正常执行期间, PC 试图取任何这些字的话,就会产 生地址错误陷阱。这避免了执行随机数据; PC 递减时 意外进入向量空间,意外地把数据空间地址映射到了向 量空间,或者 PC 到达可用程序空间的末尾继而返回到 0x000000,都将执行随机数据。执行 GOTO 指令跳转到 向量空间,也将产生地址错误陷阱。 DS70118G_CN 第37 页 dsPIC30F2010 5.1 中断优先级 对 于 每 个 中 断 源,用 户 可 分 配 的 中 断 优 先 级 位 (IP<2:0>),位于 IPCx 寄存器中每个半字节的最低 3 位中。每个半字节的 bit 3 未使用,读为 0。这些位定义 了用户分配给特定中断的优先级。 注: 用户可选择的优先级为从 0 到 7,0 是最低 优先级, 7 是最高优先级。 由于特定的用户指定优先级会被分配给多个中断请求 源,所以提供了一种在给定的用户分配优先级内分配优 先级的方法。这个方法称为 “自然顺序优先级”而且是 决定性的。 自然顺序优先级由中断在向量表中的位置决定;只是在 同时有多个中断——它们都具有相同的用户分配优先级 ——等待处理时,自然顺序优先级才会影响到中断操 作。 表 5-1列出了dsPIC DSC器件的中断编号和中断源,以 及关联的向量编号。 注 1: 自然顺序优先级机制以 0 为最高优先级, 以 53 为最低优先级。 2: 自然顺序优先级编号与 INT 编号相同。 用户能够为每个中断分配七个优先级中的一个,这就意 味着,对于一个具有低自然顺序优先级的中断,用户能 够分配一个非常高的总优先级。例如,可以将低压检测 (Low-Voltage Detect, PLVD )的优先级分配为 7。 INT0 (外部中断 0)可以分配为优先级 1,这样,它的 有效优先级将非常低。 DS70118G_CN 第38 页 表 5-1: 中断编号 dsPIC30F2010 中断向量表 向量 编号 最高自然顺序优先级 0 8 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 9 17 10 18 11 19 12 20 13 21 14 22 15 23 16 24 17 25 18 26 19 27 20 28 21 29 22 30 23 31 24 32 25 33 26 34 27 35 28 36 29 37 30 38 31 39 32 40 33 41 34 42 35 43 36 44 37 45 38 46 39 47 40 48 41 49 42 50 43 51 44 52 45-53 53-61 最低自然顺序优先级 中断源 INT0 – 外部中断 0 IC1 – 输入中断 1 OC1 – 输出比较 1 T1 – Timer 1 IC2 – 输入捕捉 2 OC2 – 输出比较 2 T2 – Timer 2 T3 – Timer 3 SPI1 U1RX – UART1 接收器 U1TX – UART1 发送器 ADC – ADC 转换结束 NVM – NVM 写结束 SI2C – I2C 从中断 MI2C – I2C 主中断 输入电平变化中断 INT1 – 外部中断 1 IC7 – 输入捕捉 7 IC8 – 输入捕捉 8 保留 保留 保留 保留 INT2 – 外部中断 2 保留 保留 保留 保留 保留 保留 保留 保留 保留 保留 保留 保留 INT3 – 外部中断 3 保留 保留 PWM – PWM 周期匹配 QEI – QEI 中断 保留 保留 FLTA – PWM 故障 A 保留 保留 2007 Microchip Technology Inc. dsPIC30F2010 5.2 复位过程 复位不是真正的异常,因为复位过程中并不涉及中断控 制器。在响应强制清零 PC 的复位时,器件初始化其寄 存器。然后,处理器开始在 0x000000 地址处执行程序。 一条 GOTO 指令存放在第一个程序存储单元中,紧跟着 的是 GOTO 指令的地址目标。处理器执行 GOTO,跳转 到指定地址,然后开始指定目标(起始)地址处的操作。 5.2.1 5.3 陷阱 可以将陷阱看作不可屏蔽中断,表明出现软件或硬件错 误,陷阱遵循预定义的优先级,如表 5-1 所示。陷阱旨 在为用户提供一种方法,改正在调试和在应用中工作时 的错误操作。 注: 复位的来源 除了外部复位和上电复位(POR)之外,还有 6 个错误 条件会导致处理器复位。 • 看门狗定时器超时: 看门狗定时器已经超时,表明处理器不再执行正确 的代码流。 • 未初始化的 W 寄存器陷阱: 试图把未初始化的 W 寄存器用作地址指针将导致 复位。 • 非法指令陷阱: 试图执行任何未使用的操作码,将产生非法指令陷 阱。注意,如果由于指令流改变而在非法指令执行 之前就被从流水线中舍弃的话,取非法指令并不产 生非法指令陷阱。 • 欠压复位 (BOR): 检测到可能导致器件故障的电源电压短暂降低。 • 陷阱锁定: 多个并发的陷阱条件将导致复位。 如果用户不想在出现陷阱错误条件时采取 纠正措施,那么必须在这些陷阱向量中装 入缺省陷阱处理程序的地址,缺省陷阱处 理程序仅包含 RESET 指令。否则,如果调 用了包含非法地址的陷阱向量,将产生地 址错误陷阱。 注意,很多陷阱条件只有在发生的时候才能检测到。因 此,在陷阱异常处理之前允许有问题的指令完成执行。 如果用户选择从错误中恢复,可能不得不改正导致陷阱 的错误操作的结果。 陷阱有 8 个固定的优先级:优先级 8 到优先级 15,这意 味着在陷阱处理期间, IPL3 始终置 1。 如果用户目前不在执行陷阱处理,而将 IPL<3:0> 设置 为 0111(优先级 7),这样就禁止了所有中断,但仍然 能够处理陷阱。 5.3.1 陷阱的来源 下列陷阱的优先级依次递增。然而,由于所有陷阱都可 以嵌套,优先级的作用很小: 数学错误陷阱: 在下列四种情况下,产生数学错误陷阱: 1. 2. 3. 4. 2007 Microchip Technology Inc. 如果试图进行以零作除数的除法操作,除法操作 将在周期边界处中止,并产生陷阱。 如果使能的话,当对累加器 A 或 B 进行的算术操 作导致了 bit 31 溢出,并且没有使用累加器警戒 位时,将产生数学错误陷阱。 如果使能的话,当对累加器 A 或 B 进行的算术操 作导致了 bit 39 灾难性溢出,并且所有饱和被禁 止,将产生数学错误陷阱。 如果在移位指令中,指定的移位位数大于允许的 最大移位位数,将产生陷阱。 DS70118G_CN 第39 页 dsPIC30F2010 地址错误陷阱: 5.3.2 当发生任何下列情形时,将产生陷阱: 在同一周期内可能会产生多个陷阱(例如,把不对齐的 字写入堆栈中的溢出地址)。这时, 图 5-1 所示的固定 优先级就会起作用;为了完全纠正错误,这可能需要用 户检查是否有其他等待处理的陷阱。 试图访问不对齐的数据字。 2. 3. 4. 试图从未实现的数据存储单元取数据。 试图访问未实现的程序存储单元。 试图从向量空间取指令。 注: 5. 6. 在 MAC 类指令中,数据空间被分成 X 数据 空间 和 Y 数据 空间,未实现的 X 空间包括 所有 Y 空间,而未实现的 Y 空间包括所有 X 空间。 执行 BRA #literal 指令或 GOTO #literal 指 令,其中 literal 是未实现的程序存储器地址。 修改 PC 使其指向未实现的程序存储器地址后, 执行指令。通过将值装入堆栈并执行 RETURN 指 令可以修改 PC。 堆栈错误陷阱: 在下列条件下,产生堆栈错误陷阱: 1. 2. 在堆栈指针中装入了一个大于堆栈限制的值(堆 栈 溢 出); 堆 栈 限 制 值 用 户 可 编 程,存 放 在 SPLIM 寄存器中。 堆栈指针装入了一个小于 0x0800 的值 (简单堆 栈下溢)。 振荡器故障陷阱: 如果外部振荡器出现故障,器件使用备用的内部 RC 振 荡器工作,就会产生振荡器故障陷阱。 “软”陷阱包括优先级 8 到 11 的异常。算术错误陷阱 (优先级 11)就属于这一类陷阱。 “硬”陷阱包括优先级 12 至 15 的异常。地址错误 (优 先级 12)、堆栈错误 (优先级 13)和振荡器错误 (优 先级 14)陷阱就属于这一类。 每个硬陷阱产生时,在执行任何代码之前,必须先对它 进行响应。在优先级较高的陷阱正在等待处理、被响应 或正在处理过程中时,如果产生了较低优先级的陷阱, 就会产生硬陷阱冲突。 器件在硬陷阱冲突时自动复位。复位发生时,把 TRAPR 状态位 (RCON<15>)置 1,从而在软件中可以检测到 这一条件。 图 5-1: 递减 自然顺序优先级 1. 硬陷阱和软陷阱 陷阱向量 IVT AIVT DS70118G_CN 第40 页 复位 -GOTO 指令 复位 -GOTO 地址 保留 振荡器故障陷阱向量 地址错误陷阱向量 堆栈错误陷阱向量 数学错误陷阱向量 保留向量 保留向量 保留向量 中断 0 向量 中断 1 向量 — — — 中断 52 向量 中断 53 向量 保留 保留 保留 振荡器故障陷阱向量 堆栈错误陷阱向量 地址错误陷阱向量 数学错误陷阱向量 保留向量 保留向量 保留向量 中断 0 向量 中断 1 向量 — — — 中断 52 向量 中断 53 向量 0x000000 0x000002 0x000004 0x000014 0x00007E 0x000080 0x000082 0x000084 0x000094 0x0000FE 2007 Microchip Technology Inc. dsPIC30F2010 5.4 5.5 中断过程 在每个指令周期的开始, IFSx 寄存器都会采样全部的 中断事件标志。IFSx 寄存器中标志位等于 1,表明有等 待处理的中断请求 (IRQ)。如果中断允许 (IECx)寄 存器中相应的位置 1, IRQ 将会导致中断产生。 在 IRQ 采样后余下的指令周期中,将评估所有待处理中断请求 的优先级。 如果有待处理的 IRQ,它的优先级比 IPL 位中的当前处 理器优先级高,则处理器将被中断。 随即,处理器将把当前程序计数器和处理器状态寄存器 的低字节(SRL)压入堆栈,如图 5-2 所示。状态寄存 器低字节包含中断周期开始之前的处理器优先级。然 后,处理器把中断的优先级装入状态寄存器。这将禁止 所有低优先级的中断,直到中断服务程序 (Interrupt Service Routine, ISR)结束为止。 图 5-2: 中断堆栈帧 0x0000 15 0 备用向量表 在程序存储器中,中断向量表 (IVT)之后是备用中断 向量表 (AIVT),如图 5-1 所示。 INTCON2 寄存器中 的 ALTIVT 位控制对 AIVT 的访问。如果 ALTIVT 位置 1,所有的中断和异常处理都将使用备用向量,而不是 缺省向量。备用向量与缺省向量的组织方式是相同的。 AIVT提供了一种在应用和支持环境之间切换的方法,从 而支持仿真和调试功能,而不需要对中断向量进行再编 程。这个特性也支持运行时在不同应用之间切换,以便 评估各种软件算法。 如果不需要 AIVT,分配给 AIVT 的程序存储空间可以作 其他用途。 AIVT 不是受保护的区域,用户可以对其自 由编程。 5.6 快速现场保护 可以使用影子寄存器来保存现场。为 SR 中的 DC、N、 OV、Z 和 C 位,以及寄存器 W0 到 W3 提供了影子寄存 器。 影子寄存器深度仅为一级。只能使用 PUSH.S 和 POP.S 指令来访问影子寄存器。 堆栈往高地址递增 当处理器转移到中断向量开始处理中断时,可以使用 PUSH.S 指令,把上述寄存器的当前值保存到它们对应 的影子寄存器中去。 PC<15:0> SRL IPL3 PC<22:16> < 空字 > 注 W15(CALL 后) 如果某个优先级的 ISR 使用 PUSH.S 和 POP.S 指令来 快速保存现场,那么优先级更高的 ISR 就不应再使用这 两条指令。如果优先级较高的 ISR 使用了快速现场保 护,那么在优先级较低的中断处理期间,用户必须保存 关键寄存器。 POP :[--W15] PUSH:[W15++] 5.7 W15(CALL 前) 1: 用户能始终通过向 SR 写入一个新值以降 低优先级。必须在降低处理器中断优先级 之前,在中断服务程序中清除 IFSx 寄存器 中的中断标志位以避免重复中断。 2: 当处理中断时,IPL3 位(CORCON<3>) 总是被清零。只有在进行陷阱处理时,该 位才将会被置 1。 RETFIE (从中断返回)指令将把程序计数器和状态寄 存器内容弹出堆栈,将处理器恢复到中断处理之前的状 态。 2007 Microchip Technology Inc. 外部中断请求 中断控制器支持多达 5 个外部中断请求信号, INT0INT4。这些输入是边沿敏感的;它们需要从低至高或从 高至低的跳变来产生中断请求。 INTCON2 寄存器的 3 个位 INT0EP-INT2EP,用来选择边沿检测电路的极性。 5.8 从休眠和空闲中唤醒 如果产生中断时器件处于休眠或空闲模式,中断控制器 可以用来把处理器从休眠或空闲模式中唤醒。 如果中断控制器收到已允许的中断请求,且中断请求优 先级足够高的话,则标准中断请求将提交给处理器。同 时,处理器将从休眠或空闲中唤醒,开始执行处理中断 请求所需的中断服务程序。 DS70118G_CN 第41 页 中断控制寄存器映射 Bit 15 SFR 名称 地址 INTCON1 0080 NSTDIS Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 — — — — OVATE OVBTE COVTE — — — MATHERR ADDRERR Bit 2 Bit 1 STKERR OSCFAIL Bit 0 复位状态 — 0000 0000 0000 0000 INTCON2 0082 ALTIVT DISI — — — — — — — — — — — INT2EP INT1EP IFS0 0084 CNIF MI2CIF SI2CIF NVMIF ADIF U1TXIF U1RXIF SPI1IF T3IF T2IF OC2IF IC2IF T1IF OC1IF IC1IF INT0IF IFS1 0086 — — — — — — — — INT2IF — — — — IC8IF IC7IF INT1IF 0000 0000 0000 0000 IFS2 0088 — — — — FLTAIF — — QEIIF PWMIF — — — — — — — 0000 0000 0000 0000 IEC0 008C CNIE MI2CIE SI2CIE NVMIE ADIE SPI1IE T3IE T2IE OC2IE IC2IE T1IE OC1IE IC1IE INT0IE 0000 0000 0000 0000 IEC1 008E — — — — — — — — INT2IE — — — — IC8IE IC7IE INT1IE 0000 0000 0000 0000 IEC2 0090 — — — — FLTAIE — — QEIIE PWMIE — — — — — — — 0000 0000 0000 0000 IPC0 0094 — T1IP<2:0> — OC1IP<2:0> — IC1IP<2:0> — INT0IP<2:0> 0100 0100 0100 0100 IPC1 0096 — T31P<2:0> — T2IP<2:0> — OC2IP<2:0> — IC2IP<2:0> 0100 0100 0100 0100 IPC2 0098 — ADIP<2:0> — U1TXIP<2:0> — U1RXIP<2:0> — SPI1IP<2:0> 0100 0100 0100 0100 IPC3 009A — CNIP<2:0> — MI2CIP<2:0> — SI2CIP<2:0> — NVMIP<2:0> 0100 0100 0100 0100 IPC4 009C — — IC8IP<2:0> — IC7IP<2:0> — INT1IP<2:0> IPC5 009E — IPC6 00A0 — — — IPC7 00A2 — — — IPC8 00A4 — — — IPC9 00A6 — IPC10 00A8 — IPC11 00AA — 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 — — — INT2IP<2:0> — U1TXIE U1RXIE INT0EP 0000 0000 0000 0000 0000 0000 0000 0000 0100 0100 0100 0100 — — — — — — — — — — — — 0100 0000 0000 0000 — — — — — — — — — — — — — 0000 0000 0000 0000 — — — — — — — — — — — — — 0000 0000 0000 0000 — — — — — — — — — — — — — 0000 0000 0000 0000 PWMIP<2:0> — — — — — — — — — — — — 0000 0000 0000 0000 FLTAIP<2:0> — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 — — QEIIP<2:0> — — 0100 0000 0000 0100 dsPIC30F2010 DS70118G_CN 第42 页 表 5-2: 2007 Microchip Technology Inc. dsPIC30F2010 6.0 6.2 闪存程序存储器 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 dsPIC30F 系列器件包含用于执行用户代码的闪存程序 存储器。用户可以使用以下两种方法对闪存程序存储器 编程: 1. 2. 6.1 在线串行编程 (ICSP™)功能 运行时自编程 (RTSP) 在线串行编程 (ICSP) 可以在最终应用电路中对 dsPIC30F 器件进行串行编 程。实现很简单,仅需一根编程时钟线 (称为 PGC)、 一根编程数据线 (称为 PGD),以及电源线 (VDD)、 接地线 (VSS)和主复位线 (MCLR)。这使得用户可 以使用未编程的器件来生产电路板,在产品发货前才对 数字信号控制器进行编程。这样做还可将最新固件或用 户定制的固件编程到器件中。 图 6-1: 运行时自编程 (RTSP) 使用 TBLRD (表读)和 TBLWT (表写)指令来实现 RTSP。 使用 RTSP,用户可以一次擦除 32 个指令字(96 字节) 的程序存储单元,一次可写入 32 个指令字 (96 字节) 的程序存储数据。 6.3 表指令操作概要 TBLRDL 和 TBLWTL 指令用来读或写程序存储器的 bit <15:0>。 TBLRDL 和 TBLWTL 可以以字或字节模式 访问程序存储器。 TBLRDH 和 TBLWTH 指令用来读或写程序存储器的 bit <23:16>。TBLRDH 和 TBLWTH 可以以字或字节模式 访问程序存储器。 使用 TBLPAG 寄存器的 bit <7:0> 和来自表指令中指定 的 W 寄存器的 EA,形成 24 位的程序存储器地址,如 图 6-1 所示。 表和 NVM 寄存器寻址 24 位 使用 程序 计数器 0 程序计数器 0 NVMADR 寄存器 EA 使用 NVMADR 寻址 1/0 NVMADRU 寄存器 8位 16 位 工作寄存器 EA 使用 表指令 1/0 TBLPAG 寄存器 8位 用户/配置 空间选择 2007 Microchip Technology Inc. 16 位 24 位 EA 字节 选择 DS70118G_CN 第43 页 dsPIC30F2010 6.4 RTSP 操作 dsPIC30F 闪存程序存储器组织成行和板 (panel)。每 行由 32 个指令字(96 字节)组成。每个板由 128 行组 成 (4K × 24 个指令字)。 RTSP 允许用户每次擦除一 行 (32 个指令字)、每次编程 32 条指令。 RTSP 可以 用来对多个程序存储器板进行编程,但在每个板的边界 处必须更改表指针。 程序存储器的每个板都包含写锁存器,它能够保存 32 个指令字的编程数据。在实际编程操作前,等待写入的 数据必须先装入板的写锁存器。要写入板的数据按顺序 装载到写锁存器中:指令 0,指令 1,依此类推。装载 的指令字必须始终来自 32 个指令字的地址边界。 RTSP 编程的基本步骤是先建立一个表指针,然后执行 一系列 TBLWT 指令,装载写锁存器。通过把 NVMCON 寄存器中的特殊位置 1,进行编程。装载 32 条指令需要 32 条 TBLWTL 和 4 条 TBLWTH 指令。如果需要对多个 板进行编程,应该为下一组要写入的多个写锁存器修改 表指针。 全部表写操作都是单字写入 (2 个指令周期),因为只 需要写表锁存器。编程每一行需要一个编程周期。 在整个 VDD 范围内,正常操作期间,闪存程序存储器是 可读、可写且可擦除的。 6.5 控制寄存器 四个特殊功能寄存器用来读、写闪存程序存储器,它们 是: • • • • NVMCON NVMADR NVMADRU NVMKEY 6.5.1 NVMCON 寄存器 NVMCON 寄存器控制要擦除的存储块、要编程的存储 器类型以及编程周期的启动。 6.5.2 NVMADR 寄存器 NVMADR 寄存器用来存放有效地址的两个低字节。它 捕捉已执行的上一条表指令的 EA<15:0>,选择要写的 行。 6.5.3 NVMADRU 寄存器 NVMADRU 寄存器用来存放有效地址的高字节。它捕捉 已执行的上一条表指令的 EA<23:16>。 6.5.4 NVMKEY 寄存器 NVMKEY 是只写寄存器,用于写保护。要启动编程或擦 除过程,用户必须把 0x55 和 0xAA 连续写入 NVMKEY 寄存器。更多细节,请参阅第 6.6 节 “编程操作”。 注: DS70118G_CN 第44 页 用户也可直接写 NVMADR 和 NVMADRU 寄存器,指定擦除或编程的程序存储器地 址。 2007 Microchip Technology Inc. dsPIC30F2010 6.6 4. 编程操作 在 RTSP 模式下,对内部闪存进行编程或擦除需要完整 的编程过程。编程操作持续时间的标称值为 2 ms,编程 操作结束之前,处理器将停顿 (等待) 。把 WR 位 (NVMCON<15>)置 1 开始编程操作,操作结束后将 自动清零 WR 位。 6.6.1 5. 闪存程序存储器的编程算法 用户一次可以擦除、编程闪存程序存储器的一行。一般 过程如下: 1. 2. 3. 读一行闪存程序存储器(32 个指令字),把读出 的数据作为数据 “镜像”保存到数据 RAM。 用期望的新数据更新数据镜像。 擦除闪存程序存储器行。 a) 设置 NVMCON 寄存器以允许对闪存程序存 储器多字擦除,并置 1 WREN 位。 b) 把要擦除的行地址写入寄存器 NVMADRU/ NVMADR。 c) 把 “55”写入 NVMKEY。 d) 把 “AA”写入 NVMKEY。 e) 置 1 WR 位。这将开始擦除周期。 f) 在擦除周期中 CPU 将停顿。 g) 当擦除周期结束时 WR 位会被清零。 例 6-1: 6. 从数据 RAM“镜像”中,把 32 个指令字的数据 写入闪存程序存储器写锁存器。 将 32 个指令字写入闪存程序存储器。 a) 设置 NVMCON 寄存器以允许对闪存程序存 储器多字编程,并置 1 WREN 位。 b) 把 “55”写入 NVMKEY。 c) 把 “AA”写入 NVMKEY。 d) 置 1 WR 位。这将开始编程周期。 e) 在编程周期中 CPU 将停顿。 f) 当编程周期结束时 WR 位会被硬件清零。 根据需要,重复步骤1 到5,对所需的闪存程序存 储器空间进行编程。 6.6.2 擦除程序存储器的一行 例 6-1 所示的代码序列,可以用来擦除一行程序存储器 (32 个指令字)。 擦除程序存储器的一行 ; 设置 NVMCON 进行擦除操作和多字写 ; 选择程序存储器并使能写操作 MOV #0x4041,W0 MOV W0,NVMCON ; 初始化指针以指向要被擦除的行 MOV #tblpage(PROG_ADDR),W0 MOV W0,NVMADRU MOV #tbloffset(PROG_ADDR),W0 MOV W0, NVMADR DISI #5 MOV #0x55,W0 MOV W0,NVMKEY MOV #0xAA,W1 MOV W1,NVMKEY BSET NVMCON,#WR NOP NOP 2007 Microchip Technology Inc. ; ; 初始化 NVMCON SFR ; ; ; ; ; 初始化 PM 页边界 SFR 初始化页内 EA[15:0] 指针 初始化 NVMADR SFR 在以后的 5 个指令周期内阻止所有优先级 <7 的中断 ; 写 0x55 键 ; ; 写 0xAA 键 ; 开始擦除过程 ; 在擦除之后插入两条 NOP 指令 ; 命令结束 DS70118G_CN 第45 页 dsPIC30F2010 6.6.3 装载写锁存器 例 6-2 所示的指令序列,可以用来装载 96 字节的写锁 存器。装 载 由 表 指 针 选 择 的 写 锁 存 器,需 要 32 条 TBLWTL 指令和 32 条 TBLWTH 指令。 例 6-2: 装载写锁存器 ; 设置一个指针指向要写入的第一个程序存储单元 ; 选择程序存储器并使能写操作 MOV #0x0000,W0 MOV W0,TBLPAG MOV #0x6000,W0 ; 执行 TBLWT 指令以写入锁存器 ; 0th_program_word MOV #LOW_WORD_0,W2 MOV #HIGH_BYTE_0,W3 TBLWTL W2,[W0] TBLWTH W3,[W0++] ; 1st_program_word MOV #LOW_WORD_1,W2 MOV #HIGH_BYTE_1,W3 TBLWTL W2,[W0] TBLWTH W3,[W0++] ; 2nd_program_word MOV #LOW_WORD_2,W2 MOV #HIGH_BYTE_2,W3 TBLWTL W2, [W0] TBLWTH W3, [W0++] • • • ; 31st_program_word MOV #LOW_WORD_31,W2 MOV #HIGH_BYTE_31,W3 TBLWTL W2, [W0] TBLWTH W3, [W0++] ; ; 初始化 PM 页边界 SFR ; 程序存储器地址示例 ; ; ; 将 PM 低位字内容写入程序锁存器 ; 将 PM 高字节内容写入程序锁存器 ; ; ; 将 PM 低位字内容写入程序锁存器 ; 将 PM 高字节内容写入程序锁存器 ; ; ; 将 PM 低位字内容写入程序锁存器 ; 将 PM 高字节内容写入程序锁存器 ; ; ; 将 PM 低位字内容写入程序锁存器 ; 将 PM 高字节内容写入程序锁存器 注:在例 6-2 中, W3 高字节的内容将不起作用。 6.6.4 启动编程过程 出于保护的目的,必须使用 NVMKEY 的写启动序列, 以便允许进行任何擦除或编程操作。在编程命令执行 后,用户必须等待一段时间 (编程时间),直至编程完 成。编程过程开始之后,紧接着的应该是两条 NOP 指 令。 例 6-3: 启动编程过程 DISI MOV MOV MOV MOV BSET NOP NOP #5 #0x55,W0 W0,NVMKEY #0xAA,W1 W1,NVMKEY NVMCON,#WR DS70118G_CN 第46 页 ; 在以后的 5 个指令周期内阻止所有优先级 <7 的中断 ; ; ; ; ; ; 写入 0x55 键 写入 0xAA 键 开始擦除过程 在擦除之后插入两条 NOP 指令 命令结束 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 6-1: NVM 寄存器映射 地址 Bit 15 Bit 14 Bit 13 NVMCON 0760 WR WREN WRERR NVMADR 0762 NVMADRU 0764 — — — — — — — — NVMADR<23:16> 0000 0000 uuuu uuuu NVMKEY 0766 — — — — — — — — KEY<7:0> 0000 0000 0000 0000 文件寄存器 名称 Bit 12 Bit 11 Bit 10 — — — Bit 9 — Bit 8 Bit 7 TWRI — Bit 6 Bit 5 Bit 4 Bit 3 PROGOP<6:0> NVMADR<15:0> 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 Bit 2 Bit 1 Bit 0 复位时状态 0000 0000 0000 0000 uuuu uuuu uuuu uuuu dsPIC30F2010 DS70118G_CN 第 47 页 dsPIC30F2010 注: DS70118G_CN 第48 页 2007 Microchip Technology Inc. dsPIC30F2010 7.0 数据 EEPROM 存储器 注:本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 在整个 VDD 范围内的正常操作期间,数据 EEPROM 存 储器是可读且可写的。数据 EEPROM 存储器直接映射 到程序存储器地址空间。 用来读写闪存程序存储器的四个特殊功能寄存器,也用 来访问数据 EEPROM 存储器。如在第 6.5 节中所述, 这些寄存器是: • • • • NVMCON NVMADR NVMADRU NVMKEY EEPROM 数据存储器允许读写单字和 16 字长的块。针 对数据存储器时, NVMADR 与 NVMADRU 寄存器配 合 使 用,用 来 寻 址 要 访 问 的 EEPROM 地 址 单 元。 TBLRDL 和 TBLWTL 指令用来读写数据 EEPROM。 dsPIC30F器件有最多1KB的数据EEPROM,地址范围 从 0x7FFC00 到 0x7FFFFE。 字写操作之前,应该先擦除相应的存储单元。写操作完 成通常需要 2 ms,不过它将随电压和温度的变化而变 化。 2007 Microchip Technology Inc. 对数据 EEPROM 进行编程或擦除操作,不会停止指令 流。在启动另一次数据 EEPROM 写 / 擦除操作之前,用 户需要等待一段适当的时间。在编程或擦除操作进行过 程中,尝试读数据 EEPROM 将返回不确定的数据。 控制位 WR 启动写操作,这与 闪存程序存储器写类似。 可通过软件置 1 WR 位,但不能对其清零。写操作完成 时,硬件将清零 WR 位。不能用软件清零 WR 位,这样 避免了意外或提早结束写操作。 WREN 位使能时将允许进行写操作。上电时,WREN 位 清零。当写操作被正常工作期间的 MCLR 复位或 WDT 超时所中断时, WRERR 位置 1。在这样的情形下,复 位后,用户可以检查 WRERR 位,重写存储单元。地址 寄存器 NVMADR 保持不变。 注: 7.1 在写操作完成时, IFS0 寄存器中的中断标 志位 NVMIF 将置 1。NVMIF 位必须用软件 清零。 读数据 EEPROM TBLRD 指令读取位于当前程序字地址的字。下面的示例 使用 W0 作为指向数据 EEPROM 的指针。结果存放在 寄存器 W4 中,如例 7-1 所示。 例 7-1: MOV MOV MOV TBLRDL 读数据 EEPROM #LOW_ADDR_WORD,W0 ; 初始化指针 #HIGH_ADDR_WORD,W1 W1,TBLPAG [ W0 ], W4 ; 读数据 EEPROM DS70118G_CN 第49 页 dsPIC30F2010 7.2 擦除数据 EEPROM 7.2.1 擦除数据 EEPROM 的一块 为了擦除数据 EEPROM 的一块,首先 NVMADRU 和 NVMADR 寄 存 器 必 须 指 向 要 擦 除 的 存 储 块。将 NVMCON 配 置 为 擦 除 数 据 EEPROM 块,并 置 1 NVMCON寄存器中的WR位和WREN位。置1 WR 位, 启动擦除操作,如例 7-2 所示。 例 7-2: 擦除数据 EEPROM 的一块 ; 选择要擦除的数据 EEPROM 块,使能 WREN 位 MOV #4045,W0 MOV W0,NVMCON ; 初始化 NVMCON SFR ; 在写入键序列后通过置 1 WR 位以启动擦除过程 DISI #5 ; 在以后的 5 个指令周期内阻止所有优先级 <7 的中断 MOV #0x55,W0 ; ; 写入 0x55 键 MOV W0,NVMKEY ; MOV #0xAA,W1 ; 写入 0xAA 键 MOV W1,NVMKEY BSET NVMCON,#WR ; 启动擦除过程 NOP NOP ; 擦除过程将在 2mS 内完成。 CPU 在数据擦除周期中将不会处于停顿状态。 ; 用户可查询 WR 位的状态,使用 NVMIF 或定时器 IRQ 来确定擦除操作是否完成。 7.2.2 擦除数据 EEPROM 的一个字 NVMADRU 和 NVMADR 寄存器必须指向要擦除的存储 块。在 NVMCON 寄存器中,选择擦除数据 EEPROM 的一个字,置 1 WR 位和 WREN 位。置 1 WR 位,启 动擦除操作,如例 7-3 所示。 例 7-3: 擦除数据 EEPROM 的一个字 ; 选择要擦除的数据 EEPROM 字,使能 WREN 位 MOV #4044,W0 MOV W0,NVMCON ; 在写入键序列后通过置 1 WR 位以开始擦除周期。 DISI #5 ; 在以下的 5 个指令周期内阻止所有优先级 <7 的中断 MOV #0x55,W0 ; MOV W0,NVMKEY ; 写入 0x55 键 MOV #0xAA,W1 ; MOV W1,NVMKEY ; 写入 0xAA 键 BSET NVMCON,#WR ; 启动擦除过程 NOP NOP ; 擦除过程将在 2mS 内完成。 PU 在数据擦除周期中将不会处于停顿状态。 ; 用户可查询 WR 位的状态,使用 NVMIF 或定时器 IRQ 来确定擦除操作是否完成。 DS70118G_CN 第50 页 2007 Microchip Technology Inc. dsPIC30F2010 7.3 写数据 EEPROM 要写 EEPROM 数据存储单元,必须按照下列顺序进行: 1. 2. 3. 擦除数据 EEPROM 的字。 a) 在 NVMCON 寄存器中,选择字擦除数据 EEPROM,并置 1 WREN 位。 b) 把要擦除的字的地址写入 NVMADR/ NVMADRU。 c) 允许 NVM 中断 (可选)。 d) 把 “55”写入 NVMKEY。 e) 把 “AA”写入 NVMKEY。 f) 置 1 WR 位。这将开始擦除周期。 g) 查询 NVMIF 位或等待 NVMIF 中断。 h) 当擦除周期结束时 WR 位会被清零。 把数据字写入数据 EEPROM 的写锁存器中。 把 1 个数据字编程到数据 EEPROM 中。 a) 在 NVMCON 寄存器中,选择字编程数据 EEPROM,并置 1 WREN 位。 b) 允许 NVM 写完成中断 (可选)。 c) 把 “55”写入 NVMKEY。 d) 把 “AA”写入 NVMKEY。 e) 置 1 WR 位。这将开始编程周期。 f) 查询 NVMIF 位或等待 NVM 中断。 g) 当写周期结束时 WR 位会被清零。 例 7-4: 对于每个字,如果上述序列 (把 0x55 写入 NVMKEY, 把 0xAA 写入 NVMCON,然后置 1 WR 位)没有严格 遵守的话,写操作不会启动。强烈建议在这段代码执行 期间,禁止中断。 此外,必须置 1 NVMCON 中的 WREN 位来使能写操 作。这样的机制,防止由于不可预料的代码执行而意外 地写数据 EEPROM。除非在更新 EEPROM 时,否则 WREN 位应该始终保持清零。硬件不能清零 WREN 位。 在写过程启动之后,清零 WREN 位将不会影响当前的 写周期。禁止把 WR 位置 1,除非 WREN 位已置 1。必 须在前一条指令中置 1 WREN 位。不能在同一条指令中 置 1 WR 和 WREN 位。 写周期结束时,硬件清零 WR 位,非易失性存储器写完 成中断标志位 (NVMIF)置 1。用户可以允许这个中 断,或者查询这个标志位。 NVMIF 必须由软件清零。 7.3.1 写数据 EEPROM 的一个字 一旦用户擦除了要编程的字,则表写指令用来写写锁存 器,如例 7-4 所示。 数据 EEPROM 字写入 ; 指向数据存储器 MOV #LOW_ADDR_WORD,W0 MOV #HIGH_ADDR_WORD,W1 MOV W1,TBLPAG MOV #LOW(WORD),W2 TBLWTL W2,[ W0] ; NVMADR 捕捉上一次表访问地址 ; 选择要写的数据 EEPROM 字 MOV #0x4004,W0 MOV W0,NVMCON ; 初始化指针 ; 获得数据 ; 写入数据 ; 写入键以允许写操作 DISI #5 ; 在以下 5 个指令周期内阻止所有优先级 <7 的中断 MOV #0x55,W0 MOV W0,NVMKEY ; 写入 0x55 键 MOV #0xAA,W1 MOV W1,NVMKEY ; 写入 0xAA 键 BSET NVMCON,#WR ; 启动编程过程 NOP NOP ; 写过程将在 2mS 内完成。 CPU 在数据写周期中不会处于停顿状态。 ; 用户可查询 WR 位的状态,使用 NVMIF 或定时器 IRQ 来确定写操作是否完成。 2007 Microchip Technology Inc. DS70118G_CN 第51 页 dsPIC30F2010 7.3.2 写数据 EEPROM 的一个存储块 要写入数据 EEPROM 的一个存储块,应首先写入所有 16 个锁存器,然后设置 NVMCON 寄存器并对存储块进 行编程。 例 7-5: MOV MOV MOV MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV TBLWTL MOV MOV DISI MOV MOV MOV MOV BSET NOP NOP 7.4 数据 EEPROM 块写入 #LOW_ADDR_WORD,W0 #HIGH_ADDR_WORD,W1 W1,TBLPAG #data1,W2 W2,[ W0]++ #data2,W2 W2,[ W0]++ #data3,W2 W2,[ W0]++ #data4,W2 W2,[ W0]++ #data5,W2 W2,[ W0]++ #data6,W2 W2,[ W0]++ #data7,W2 W2,[ W0]++ #data8,W2 W2,[ W0]++ #data9,W2 W2,[ W0]++ #data10,W2 W2,[ W0]++ #data11,W2 W2,[ W0]++ #data12,W2 W2,[ W0]++ #data13,W2 W2,[ W0]++ #data14,W2 W2,[ W0]++ #data15,W2 W2,[ W0]++ #data16,W2 W2,[ W0]++ #0x400A,W0 W0,NVMCON #5 #0x55,W0 W0,NVMKEY #0xAA,W1 W1,NVMKEY NVMCON,#WR ; 初始化指针 ; 获取第 1 个数据 ; 写入数据 ; 获取第 2 个数据 ; 写入数据 ; 获取第 3 个数据 ; 写入数据 ; 获取第 4 个数据 ; 写入数据 ; 获取第 5 个数据 ; 写入数据 ; 获取第 6 个数据 ; 写入数据 ; 获取第 7 个数据 ; 写入数据 ; 获取第 8 个数据 ; 写入数据 ; 获取第 9 个数据 ; 写入数据 ; 获取第 10 个数据 ; 写入数据 ; 获取第 11 个数据 ; 写入数据 ; 获取第 12 个数据 ; 写入数据 ; 获取第 13 个数据 ; 写入数据 ; 获取第 14 个数据 ; 写入数据 ; 获取第 15 个数据 ; 写入数据 ; 获取第 16 个数据 ; 写数据。 NVMADR 捕捉上一次表访问地址。 ; 选择要进行多字写的数据 EEPROM 块 ; 写入键以允许编程操作 ; 在以后 5 个指令周期内阻止所有优先级 <7 的中断 ; 写入键 0x55 ; 写入键 0xAA ; 启动写周期 写校验 根据不同的应用,良好的编程习惯可能要求把已写入存 储器中的值与原始值进行校验。如果在应用中进行了量 非常大的写操作,从而可能接近规格说明中的上限时, 应该进行写校验。 DS70118G_CN 第52 页 7.5 防止误写入 某些情况下,并不打算写数据 EEPROM 存储器。器件内 置了各种机制来防止误写入 EEPROM。上电时,WREN 位清零;而且,上电延时定时器禁止 EEPROM 写操作。 写启动序列与 WREN 位一起,有助于防止欠压、电源 干扰或软件故障期间的意外写入。 2007 Microchip Technology Inc. dsPIC30F2010 8.0 I/O 端口 注:本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 所有的器件引脚(除 VDD、VSS、MCLR 和 OSC1/CLKI 之外),均为外设与并行 I/O 端口所共用。 后,全部端口引脚均定义为输入。读锁存器 (LATx), 读的是锁存值;写锁存值,写的是锁存器 (LATx)。读 端口 (PORTx),读的是端口引脚值,写端口引脚,写 的是锁存器 (LATx)。 任何位及其关联的数据和控制寄存器,如果对于特定器 件而言是无效的话,则将被禁止。这意味着,相应的 LATx 和 TRISx 寄存器以及端口引脚,都将读为零。 全部 I/O 输入端口都是施密特触发器输入,以便增强抗 干扰性。 当端口引脚与另一个外设共用或与只定义为输入的功能 共用时,它将被视为专用端口,因为没有任何其他竞争 的输出资源。 INT4 引脚就是例子。 8.1 与外设共用引脚的并行 I/O (PIO)端口一般屈从于外 设。外设的输出缓冲数据和控制信号提供给一对多路开 关。多路开关选择外设还是相关的端口将拥有 I/O 引脚 输出数据和控制信号的所有权。图 8-1 显示了端口是如 何与其他外设共用,以及与外设连接的相关 I/O 引脚单 元。表 8-1 给出了从 PORTB 到 PORTF 的共用端口的 寄存器的格式。 并行 I/O (PIO)端口 如果外设使能,并且外设正在使用其关联引脚时,引脚 将不再作为通用 I/O 引脚使用。这时,可以读 I/O 引脚, 但是对应并行端口位的输出驱动器将被禁止。如果外设 使能,但外设不在使用某引脚,则该引脚可以被端口驱 动。 所有的端口引脚,都有三个与端口引脚的操作直接相关 的寄存器。数据方向寄存器 (TRISx)决定引脚是输入 还是输出。如果数据方向位是 1,则引脚是输入。复位 图 8-1: 共用端口的结构框图 输出多路开关 外设模块 外设输入数据 外设模块使能 I/O 引脚单元 外设输出使能 1 外设输出数据 0 PIO 模块 1 输出使能 输出数据 0 读 TRIS I/O 端子 数据总线 D WR TRIS CK Q TRIS 锁存器 D WR LAT + WR 端口 Q CK 数据锁存器 读 LAT 输入数据 读端口 2007 Microchip Technology Inc. DS70118G_CN 第53 页 dsPIC30F2010 8.2 配置模拟端口引脚 使用 ADPCFG 和 TRIS 寄存器控制 A/D 端口引脚的操 作。对于要用作模拟输入的端口引脚,必须将其相应的 TRIS 位置 1(输入)。如果 TRIS 位清零(输出),则将 转换数字输出电平 (VOH 或 VOL)。 当读取端口寄存器时,所有配置为模拟输入通道的引 脚,都将读为零 (低电平)。 8.3 输入电平变化通知模块 输入电平变化通知模块,使得 dsPIC30F 器件能够产生 中断请求并传递给处理器,以响应所选取输入引脚上的 状态变化。即便是在休眠模式下、时钟被禁止时,该模 块也能检测输入的状态变化。对于在输入状态变化时产 生中断请求,可以选择 (使能)的外部信号多达 22 个 (CN0 到 CN21)。 配置为数字输入的引脚,将不会对模拟输入进行转换。 当将模拟电压加在任何定义为数字输入的引脚 (包括 ANx 引脚)上时,可能导致输入缓冲器消耗的电流超出 器件规范中规定的值。 8.2.1 I/O 端口读 / 写时序 在端口方向变化或端口写操作以及同一端口的读操作之 间需要一个指令周期的等待时间。通常情况下插入一条 NOP 指令。 例 8-1: MOV 0xFF00, W0 MOV W0, TRISBB NOP btssPORTB, #13 端口读/写操作示例 ; ; ; ; 将 PORTB<15:8> 配置为输入 将 PORTB<7:0> 配置为输出 延迟 1 个周期 下一条指令 DS70118G_CN 第54 页 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 8-1: dsPIC30F2010 端口寄存器映射 地址 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 复位状态 02C6 — — — — — — — — — — TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 0000 0000 0011 1111 PORTB 02C8 — — — — — — — — — — RB5 RB4 RB3 RB2 RB1 RB0 0000 0000 0000 0000 LATB 02CA — — — — — — — — — — LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 0000 0000 0000 0000 TRISC 02CC TRISC15 TRISC14 TRISC13 — — — — — — — — — — — — — 1110 0000 0000 0000 PORTC 02CE RC15 RC14 RC13 — — — — — — — — — — — — — 0000 0000 0000 0000 LATC 02D0 LATC15 LATC14 LATC13 — — — — — — — — — — — — — 0000 0000 0000 0000 TRISD 02D2 — — — — — — — — — — — — — — TRISD1 TRISD0 0000 0000 0000 0111 PORTD 02D4 — — — — — — — — RD1 RD0 0000 0000 0000 0000 LATD 02D6 — — — — — — TRISE 02D8 — — — — — — PORTE 02DA — — — — — — LATE 02DC — — — — — TRISF 02DE — — — — — PORTF 02E0 — — — — LATF 02E2 — — — — SFR 名称 TRISB — — — — — — — — — — — — LATD1 LATD0 0000 0000 0000 0000 — TRISE8 — — TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0 0000 0001 0011 1111 — RE8 — — RE5 RE4 RE3 RE2 RE1 RE0 0000 0000 0000 0000 — — LATE8 — — LATE5 LATE4 LATE3 LATE2 LATE1 LATE0 0000 0000 0000 0000 — — — — — — — TRISF3 TRISF2 — — 0000 0000 0000 1100 — — — — — — — — RF3 RF2 — — 0000 0000 0000 0000 — — — — — — — — LATF3 LATF2 — — 0000 0000 0000 0000 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 — — 输入电平变化通知寄存器映射 (BIT 15-0) 表 8-2: 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 复位状态 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE CN9IE CN8IE CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE 0000 0000 0000 0000 CNEN2 00C2 — — — — — — — — — — CN21IE CN20IE CN19IE CN18IE CN17IE CN16IE 0000 0000 0000 0000 CNPU1 00C4 CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE CN9PUE CN8PUE CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE 0000 0000 0000 0000 CNPU2 00C6 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 — — — — — — — — — — CN21PUE CN20PUE CN19PUE CN18PUE CN17PUE CN16PUE 0000 0000 0000 0000 DS70118G_CN 第 55 页 dsPIC30F2010 Bit 15 00C0 SFR 名称 地址 CNEN1 dsPIC30F2010 注: DS70118G_CN 第56 页 2007 Microchip Technology Inc. dsPIC30F2010 9.0 TIMER1 模块 通过设定 16 位 SFR T1CON 中的相应位来决定这些工 作模式。图 9-1 所示为 16 位 Timer1 模块的框图。 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 16 位定时器模式:在 16 位定时器模式下,定时器将在每 个指令周期递增,直到等于 PR1 中预先装入的值,然后 复位至 0,继续计数。 本章介绍了 16 位通用 Timer1 模块以及相关的工作模 式。图 9-1 给出了 16 位 Timer1 模块的简化框图。 当 CPU 进入空闲模式时,定时器将停止递增,除非 TSIDL (T1CON<13>)位 = 0。如果 TSIDL = 1,则定 时器模块逻辑将在 CPU 空闲模式结束后继续递增。 注: Timer1 是 A 类定时器。请参见本文挡第 22.0 节“电气特性”中 A 类定时器的规范。 下面各小节将详细说明定时器的工作模式,包括其设 置、控制寄存器以及相应的框图。 16 位同步计数器模式:在 16 位同步计数器模式下,定时 器将在外部时钟信号的上升沿递增,外部时钟与内部时 钟同步。定时器计数,直到等于 PR1 中预先装入的值, 然后复位至 0,继续计数。 Timer1模块是16位的定时器,可以用作实时时钟的时间 计数器,或者用作自由运行的时段定时器 / 计数器。 16 位定时器有下列模式: 当 CPU 进入空闲模式时,定时器将停止递增,除非对 应的 TSIDL 位 = 0。如果 TSIDL = 1,则定时器模块逻 辑将在 CPU 空闲模式结束后继续递增。 • 16 位定时器 • 16 位同步计数器 • 16 位异步计数器 16 位异步计数器模式:在 16 位异步计数器模式下,定时 器将在外部时钟信号的上升沿递增。定时器计数,直到 等于 PR1 中预先装入的值,然后复位至 0,继续计数。 而且,支持下列操作特征: 当定时器配置为异步工作模式时,且 CPU 进入空闲模 式的话,如果 TSIDL = 1,则定时器将停止递增。 • • • • 定时器门控操作 可选择的预分频比设置 CPU 空闲和休眠模式下的定时器操作 在 16 位周期寄存器匹配时产生中断,或者在外部 门控信号下降沿产生中断 2007 Microchip Technology Inc. DS70118G_CN 第57 页 dsPIC30F2010 图 9-1: 16 位 TIMER1 模块框图 (A 类定时器) PR1 等于 比较器 x 16 复位 TSYNC (3) TMR1 1 同步 0 T1IF 事件标志 0 1 Q D Q CK TGATE TCS TGATE TGATE SOSCO/ T1CK 1X LPOSCEN SOSCI 9.1 定时器门控操作 门控 同步 01 TCY 00 9.3 TON TCKPS<1:0> 2 预分频器 1, 8, 64, 256 休眠模式下的定时器操作 16 位定时器可以置为门控时间累加模式 (Gated Time Accumulation mode) 。该模式使得当门控输入信号 (T1CK 引脚)为高电平时,内部 TCY 能够递增相应的 定时器。要使能该模式,必须把控制位 TGATE 置 1 (T1CON<6>)。必须使能定时器(TON = 1),且定时 器时钟源设置为外部时钟源 (TCS = 0)。 在 CPU 休眠模式期间,定时器将继续工作,如果: 当 CPU 进入空闲模式时,定时器将停止递增,除非 TSIDL = 0。如果 TSIDL = 1,则定时器将在 CPU 空闲模 式终止后继续递增。 如果所有这三个条件都得到满足,定时器将继续计数, 直到等于周期寄存器中的值,然后复位至 0x0000。 9.2 • 定时器模块被使能 (TON = 1),且 • 定时器时钟源选用外部时钟 (TCS = 1),且 • TSYNC 位 (T1CON<2>)为逻辑 0,这将外部时 钟源定义为异步的。 当定时器与周期寄存器之间匹配时,如果相应的定时器 中断允许位置 1 的话,将产生中断。 定时器预分频器 16 位定时器的输入时钟 (FOSC/4 或外部时钟)有如下 预分频选择:1:1、 1:8、 1:64 或 1:256 ;通过控制位 TCKPS<1:0> (T1CON<5:4>)来选择预分频比。当出 现下列事件之一时,预分频器的计数器将清零: • 写 TMR1 寄存器 • 清零 TON 位 (T1CON<15>) • 器件复位,如 POR 和 BOR 但是,如果定时器被禁止 (TON = 0),那么定时器的 预分频器将不会复位,因为预分频器的时钟停止了。 当写 T1CON 时,TMR1 不会被清零。当写 TMR1 寄存 器时, TMR1 将被清零。 DS70118G_CN 第58 页 2007 Microchip Technology Inc. dsPIC30F2010 9.4 9.5.1 定时器中断 RTC 振荡器操作 16 位定时器具有在周期匹配时产生中断的能力。当定时 器计数与周期寄存器相匹配时, T1IF 位将置 1,如果允 许中断的话将产生中断。 T1IF 位必须在软件中清除。定 时器中断标志 T1IF 位于中断控制器的 IFS0 控制寄存器 中。 当 TON = 1、 TCS = 1 且 TGATE = 0 时,定时器在 32 kHz LP 振荡器输出信号的上升沿递增,一直递增到 周期寄存器中指定的值,然后复位至 0。 当使能了门控时间累加模式时,还将在门控信号的下降 沿 (累加周期的末尾)产生中断。 使能 LPOSCEN(OSCCON<1>)将禁止通常的定时器 和计数器模式而使能定时器溢出唤醒事件。 通过相应的定时器中断允许位T1IE来允许定时器中断。 定时器中断允许位位于中断控制器的 IEC0 控制寄存器 中。 当 CPU 进入休眠模式时,如果 32 kHz 外部晶体振荡器 处于工作状态、且控制位没有改变的话, RTC 将继续 工作。要使 RTC 在空闲模式下继续工作, TSIDL 位应 当置为 0。 9.5 实时时钟 当 Timer1 工作在实时时钟 (RTC)模式下时,提供了 当天时间和事件时间标记的能力。关键的 RTC 工作特 性如下: • 使用 32 kHz LP 振荡器工作 • 8 位预分频器 • 低功耗 • 实时时钟中断 • 工作模式,由 T1CON 控制寄存器中的相应位决 定。 图 9-2: 为确保正确工作, TSYNC 位必须置为逻辑 0 (异步模 式)。 9.5.2 RTC 中断 当中断事件发生时,相应的中断标志 T1IF 将置 1,如果 允许中断的话就将产生中断。 T1IF 位必须在软件中清 零。相应的定时器中断标志T1IF位于中断控制器的 IFS0 状态寄存器中。 通过相应的中断允许位 T1IE 来允许中断。定时器中断 允许位位于中断控制器的 IEC0 控制寄存器中。 TIMER1 LP 振荡器 RTC 的 推荐元件 C1 SOSCI 32.768 kHz XTAL dsPIC30FXXXX SOSCO C2 R C1 = C2 = 18 pF ; R = 100K 2007 Microchip Technology Inc. DS70118G_CN 第59 页 SFR 名称 TIMER1 寄存器映射 地址 TMR1 0100 PR1 0102 T1CON 0104 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 Timer 1 寄存器 周期寄存器 1 TON — TSIDL — — — — — — 复位状态 uuuu uuuu uuuu uuuu 1111 1111 1111 1111 TGATE 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 TCKPS1 TCKPS0 — TSYNC TCS — 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第60 页 表 9-1: 2007 Microchip Technology Inc. dsPIC30F2010 10.0 TIMER2/3 模块 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 本章介绍了 32 位通用定时器模块 (Timer2/3)以及相 关的工作模式。图 10-1 给出了 32 位 Timer2/3 模块的 简化框图。图 10-2和图 10-3分别为将Timer2/3配置成 的两个独立 16 位定时器 Timer2 和 Timer3 的框图。 注: Timer2 是 B 类定时器而 Timer3 是 C 类定 时器。请参见本文挡第 22.0 节“电气特性” 中相应类型定时器的规范。 Timer2/3 模块是 32 位定时器(可配置为两个 16 位定时 器),具有可选择的工作模式。这些定时器为其他外设 模块所使用,例如: • 输入捕捉 • 输出比较 / 简单 PWM 对于定时器的工作模式,下面的各小节将详细说明其设 置和控制寄存器以及相应的框图。 32 位定时器有下列模式: • 两个独立的 16 位定时器(Timer2 和 Timer3),支 持所有 16 位工作模式 (异步计数器模式除外) • 一个 32 位定时器 • 一个 32 位同步计数器 此外,支持如下工作特性: • • • • • ADC 事件触发信号 定时器门控操作 可选择的预分频比设定 空闲和休眠模式下的定时器操作 在 32 位周期寄存器匹配时产生中断 通过设定 16 位 T2CON 和 T3CON SFR 中的相应位来决 定这些工作模式。 2007 Microchip Technology Inc. 对于 32 位定时器 / 计数器操作, Timer2 是 32 位定时 器的低位字,而 Timer3 是高位字。 注: 对于 32 位定时器操作, T3CON 控制位将 被忽略。设置和控制只使用 T2CON 控制 位 。对于 32 位定时器模块,使用的是 Timer2 时钟和门控输入,但是,中断产生 由 Timer3 中断标志位 (T3IF)反映,且中 断通过 Timer3 中断允许位(T3IE)来允许。 16 位定时器模式:在 16 位模式下,Timer2 和 Timer3 可 以配置为两个独立的 16 位定时器。每个定时器均可设 置为 16 位定时器模式或 16 位同步计数器模式。这两种 工作模式的细节,请参见第 9.0 节 “Timer1 模块”。 Timer2 和 Timer3 之间唯一的功能差异是,Timer2 提供 了时钟预分频器输出同步。这对于高频外部时钟输入很 有用。 32 位定时器模式:在 32 位定时器模式下,定时器在每个 指令周期递增,一直递增到与预先装入组合 32 位周期 寄存器PR3/PR2中的值匹配,然后复位至0,继续计数。 对于 Timer2/Timer3 对的同步 32 位读操作,读低位字 (TMR2 寄存器)将导致高位字 (msw)被读取并锁存 到一个 16 位保持寄存器 (称作 TMR3HLD)。 对于同步 32 位写操作,必须首先写入保持寄存器 (TMR3HLD)。如果后续操作是写 TMR2 寄存器的话, 则 TMR3HLD 的内容将传送并锁存到 32 位定时器 (TMR3)的 MSB 中。 32 位同步计数器模式:在 32 位同步计数器模式下,定时 器将在外部时钟信号的上升沿递增,外部时钟信号与内 部时钟同步。定时器计数,一直递增到与预先装入组合 32 位周期寄存器 PR3/PR2 中的值匹配,然后复位至 0, 继续计数。 当定时器配置为同步计数器工作模式时,且 CPU 进入 空闲模式的话,定时器将停止递增,除非 TSIDL (T2CON<13>)位 = 0。如果 TSIDL = 1,定时器模块 逻辑将继续递增,直到 CPU 空闲模式终止。 DS70118G_CN 第61 页 dsPIC30F2010 图 10-1: 32 位 TIMER2/3 框图 数据总线 <15:0> TMR3HLD 16 写 TMR2 16 读 TMR2 16 复位 TMR3 TMR2 MSB LSB 同步 ADC 事件触发信号 等于 比较器 x 32 PR3 T3IF 事件标志 PR2 0 1 D CK TGATE(T2CON<6>) TCS TGATE TGATE (T2CON<6>) Q Q T2CK 1X 门控 同步 TCY 注: 01 TON TCKPS<1:0> 2 预分频器 1, 8, 64, 256 00 定时器配置位 T32 (T2CON<3>)必须置 1 以实现 32 位定时器/计数器操作。所有控制位都与 T2CON 寄 存器相对应。 DS70118G_CN 第62 页 2007 Microchip Technology Inc. dsPIC30F2010 图 10-2: 16 位 TIMER2 框图 ( B 类定时器) PR2 等于 复位 比较器 x 16 TMR2 同步 0 T2IF 事件标志 1 Q D Q CK TGATE TCS TGATE TGATE T2CK 1X 图 10-3: 门控 同步 01 TCY 00 TON TCKPS<1:0> 2 预分频器 1, 8, 64, 256 16 位 TIMER3 框图 (C 类定时器) PR3 ADC 事件触发信号 等于 复位 T3IF 事件标志 比较器 x 16 TMR3 0 1 Q D Q CK TCS TGATE TGATE 同步 见注 1X 01 TCY 注: TGATE TON TCKPS<1:0> 2 预分频器 1, 8, 64, 256 00 dsPIC30F2010 的 TIMER3 没有外部引脚输入。不应使用以下模式: 1. TCS = 1 2. TCS = 0 且 TGATE = 1 (门控时间累加) 2007 Microchip Technology Inc. DS70118G_CN 第63 页 dsPIC30F2010 10.1 定时器门控操作 32 位定时器可以置为门控时间累加模式。该模式使得当 门控输入信号 (T2CK 引脚)为高电平时,内部 TCY 能 够递增相应的定时器。要使能该模式,必须置 1 控制位 TGATE (T2CON<6>)。在此模式下, Timer2 是发起 时钟源。对于 Timer3, TGATE 设定被忽略。必须使能 定时器 (TON = 1),且定时器时钟源设置为内部时钟 源 (TCS = 0)。 外部信号的下降沿终止计数操作,但不会复位定时器。 要从零开始计数,用户必须复位定时器。 10.2 ADC 事件触发信号 当 32 位定时器 (TMR3/TMR2)与 32 位组合周期寄存 器 (PR3/PR2)匹配时, Timer3 将生成 ADC 特殊事 件触发信号。 10.3 10.4 休眠模式下的定时器操作 在 CPU 休眠模式期间,定时器不工作,因为内部时钟 被禁止。 10.5 定时器中断 32 位定时器模块具有在周期匹配时,或者在外部门控信 号下降沿产生中断的能力。当 32 位定时器计数与相应的 周期寄存器相匹配时,或者检测到外部 “门控”信号的 下降沿时, T3IF 位 (IFS0<7>)将置 1,如果允许中断 的话则将产生中断。在此模式下,T3IF 中断标志用作中 断源。 T3IF 位必须在软件中清零。 通过相应的定时器中断允许位 T3IE (IEC0<7>)来允 许中断。 定时器预分频器 定时器的输入时钟 (FOSC/4 或外部时钟) ,有 1:1、 1:8、 1:64 或 1:256 的 预 分 频 选 择 ; 通 过 控 制位 TCKPS<1:0>(T2CON<5:4> 和 T3CON<5:4>)来选择 预分频比。对于 32 定时器操作,发起时钟源是 Timer2。 在此模式下不能进行 Timer3 的预分频器操作。当出现 下列事件之一时,预分频器的计数器将清零: • 写 TMR2/TMR3 寄存器 • 清零任一 TON 位(T2CON<15> 或 T3CON<15>) • 器件复位,如 POR 和 BOR 但是,如果定时器被禁止(TON = 0),那么 Timer2 预 分频器将不会被复位,因为预分频器的时钟停止了。 当写 T2CON/T3CON 时, TMR2/TMR3 不会被清零。 DS70118G_CN 第64 页 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 10-1: SFR 名称 TMR2 TIMER2/3 寄存器映射 地址 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 复位状态 0106 Timer2 寄存器 uuuu uuuu uuuu uuuu TMR3HLD 0108 Timer3 保持寄存器 (仅适用于 32 位定时器操作) uuuu uuuu uuuu uuuu TMR3 010A Timer3 寄存器 uuuu uuuu uuuu uuuu PR2 010C 周期寄存器 2 1111 1111 1111 1111 PR3 010E 周期寄存器 3 1111 1111 1111 1111 T2CON 0110 TON — TSIDL — — — — — — TGATE TCKPS1 TCKPS0 T32 — TCS — 0000 0000 0000 0000 0112 TON — TSIDL — — — — — — TGATE TCKPS1 TCKPS0 — — TCS — 0000 0000 0000 0000 T3CON 图注: 注: u = 未初始化位 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 dsPIC30F2010 DS70118G_CN 第 65 页 dsPIC30F2010 注: DS70118G_CN 第66 页 2007 Microchip Technology Inc. dsPIC30F2010 11.0 输入捕捉模块的关键工作特性是: 输入捕捉模块 • 简单捕捉事件模式 • Timer2 和 Timer3 模式选择 • 输入捕捉事件发生时产生中断 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 通过在 ICxCON 寄存器 (其中, x = 1,2,...,N)中设置 相应的位,选择上述工作模式。 dsPIC DSC 器件具有 多达 8 个捕捉通道 (即, N 的最大值为 8)。 本章对输入捕捉模块和相关的工作模式进行了介绍。此 模块提供的工作特性可用于需要进行频率(周期)和脉 冲测量的应用场合。图 11-1 给出了输入捕捉模块的框 图。输入捕捉功能可用于以下模式: 注: • 频率 / 周期 / 脉冲测量 • 其他外部中断源 图 11-1: dsPIC30F2010 器件具有 4 个捕捉输入—— IC1、IC2、IC7 和 IC8。这 4 个捕捉通道的 命名意在保持与其他 dsPIC DSC 器件的软 件兼容性。 输入捕捉模式框图 来自通用定时器模块 T3_CNT T2_CNT 16 ICx 引脚 1 预分频器 1, 4, 16 3 边沿 检测 逻辑 时钟 同步器 16 0 ICTMR FIFO 读/写 逻辑 ICM<2:0> 模式选择 ICxBUF ICBNE, ICOV ICI<1:0> ICxCON 中断 逻辑 数据总线 置 1 标志位 ICxIF 注: 图中 “x”指的是与相应输入捕捉通道 1 至 N 相关的寄存器或位。 2007 Microchip Technology Inc. DS70118G_CN 第67 页 dsPIC30F2010 11.1 简单捕捉事件模式 dsPIC30F 产品系列中的简单捕捉事件是: • • • • • 在每个下降沿进行捕捉 在每个上升沿进行捕捉 在每第 4 个上升沿进行捕捉 在每第 16 个上升沿进行捕捉 在每个上升沿和下降沿进行捕捉 通过设置适当的位 ICM<2:0> (ICxCON<2:0>),选择 上述简单输入捕捉模式。 11.1.1 捕捉预分频器 有四种输入捕捉预分频器设置,它们由位 ICM<2:0> (ICxCON<2:0>)指定。每当捕捉通道关闭时,预分频 器计数器将清零。另外,任何复位都将清零预分频器计 数器。 11.1.2 11.1.3 TIMER2 和 TIMER3 选择模式 输入捕捉模块有多达 8 个输入捕捉通道。每个通道均可 选择两个定时器 (Timer2 和 Timer3)之一作为时基。 通过特殊功能寄存器位 ICTMR (ICxCON<7>),来进 行定时器资源的选择。对于输入捕捉模块, Timer3 是 缺省的可用定时器资源。 11.1.4 霍尔传感器模式 当输入捕捉模块设置为在每个边沿 (上升沿和下降沿, ICM<2:0> = 001)进行捕捉时,输入捕捉逻辑将执行下 列操作: • 输入捕捉中断标志在每个边沿 (上升沿和下降沿) 置 1。 • 捕捉时产生中断模式设置位 ICI<1:0> 被忽略,因为 每次捕捉都产生中断。 • 在这个模式下,不产生捕捉溢出。 捕捉缓冲器操作 每个捕捉通道都有一个关联的 FIFO 缓冲器,缓冲器宽 16 位,深度为四级。有两个状态标志,提供 FIFO 缓冲器 的状态: • ICBNE——输入捕捉缓冲器非空 • ICOV—— 输入捕捉溢出 ICBFNE将在第一个输入捕捉事件发生时被置1,并且一 直保持置 1 状态,直到所有的捕捉事件都已从 FIFO 中 读出。每次从 FIFO 中读出一个字,余下的字将在缓冲 器中前进一个位置。 当 FIFO 已满 (FIFO 中有四个捕捉事件)时,如果在 读 FIFO 之前发生第五个捕捉事件,则将产生溢出,且 ICOV 位将被设置成逻辑 1。第五个捕捉事件将丢失,不 会存入 FIFO。而且在从缓冲器读出全部四个事件之前 不会再捕捉任何事件。 如果 FIFO 已空、且还没有收到新的捕捉事件,这时读 FIFO 将产生不确定的结果。 DS70118G_CN 第68 页 2007 Microchip Technology Inc. dsPIC30F2010 11.2 休眠和空闲模式期间的输入捕捉工作 当器件在 CPU 空闲或休眠模式下时,输入捕捉事件将 使器件唤醒。如果允许中断,还将产生中断。 如果 ICM<2:0> = 111 且中断允许位置 1,那么当捕捉事 件发生时,输入捕捉模块将使 CPU 从休眠或空闲模式中 唤醒,这与使能的时钟无关。如果处理中断的条件已经 得到满足的话,前述的唤醒还将产生中断。唤醒特性可 以用来增加额外的外部引脚中断。 11.2.1 CPU 休眠模式下的输入捕捉 CPU 休眠模式允许输入捕捉模块以功能受到限制的方 式工作。在 CPU 休眠模式下, ICI<1:0> 位不适用,输 入捕捉模块只能用作外部中断源。 当器件处于休眠模式下时,为了使用输入捕捉模块,必 须把捕捉模块设置成仅在上升沿产生中断 (ICM<2:0> = 111)。在此模式下,4:1 或 16:1 的预分频比设定不适 用。 2007 Microchip Technology Inc. 11.2.2 CPU 空闲模式下的输入捕捉 CPU 空闲模式允许输入捕捉模块以功能受到限制的方 式工作。在 CPU 空闲模式下,通过 ICI<1:0> 位选择的 中断模式是适用的,由控制位 ICM<2:0> 定义的 4:1 和 16:1 捕捉预分频比设定同样也适用。这个模式要求使能 所选择的定时器。此外, ICSIDL 位必须置为逻辑 0。 在 CPU 空闲模式下,如果输入捕捉模块定义为 ICM<2:0> = 111,则输入捕捉引脚仅用作外部中断引 脚。 11.3 输入捕捉中断 输入捕捉通道具有根据选定的捕捉事件数来产生中断的 能力。通过控制位 ICI<1:0> (ICxCON<6:5>)来设定 选定的捕捉事件数。 每个通道都有一个中断标志位(ICxIF)。各捕捉通道中 断变址位于相应的 IFSx 状态寄存器中。 通过相应捕捉通道中断允许位 (ICxIE)来允许中断; 捕捉通道中断允许位位于相应的 IEC 控制寄存器中。 DS70118G_CN 第69 页 SFR 名称 输入捕捉寄存器映射 地址 IC1BUF 0140 IC1CON 0142 IC2BUF 0144 IC2CON 0146 IC3BUF 0148 IC3CON 014A IC4BUF 014C IC4CON 014E IC5BUF 0150 IC5CON 0152 IC6BUF 0154 IC6CON 0156 IC7BUF 0158 IC7CON 015A IC8BUF 015C IC8CON 015E 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 输入捕捉 1 寄存器 — — ICSIDL — — — — — ICTMR — ICSIDL — — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<2:0> ICI<1:0> ICOV ICBNE ICM<2:0> — ICSIDL — — — — — ICTMR — ICSIDL — — — — — ICTMR ICI<1:0> ICOV ICBNE ICM<2:0> ICI<1:0> ICOV ICBNE ICM<2:0> — ICSIDL — — — — — — ICSIDL — — — — — ICTMR ICTMR ICI<1:0> ICOV ICBNE ICM<2:0> ICI<1:0> ICOV ICBNE ICM<2:0> — ICSIDL — — — — — — ICSIDL — — — — — ICTMR ICTMR 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 0000 0000 0000 0000 uuuu uuuu uuuu uuuu ICI<1:0> ICOV ICBNE ICM<2:0> ICI<1:0> ICOV ICBNE ICM<2:0> 输入捕捉 8 寄存器 — 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 输入捕捉 7 寄存器 — 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 输入捕捉 6 寄存器 — 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 输入捕捉 5 寄存器 — 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 输入捕捉 4 寄存器 — 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 输入捕捉 3 寄存器 — 复位状态 uuuu uuuu uuuu uuuu 输入捕捉 2 寄存器 — Bit 0 0000 0000 0000 0000 uuuu uuuu uuuu uuuu 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第70 页 表 11-1: 2007 Microchip Technology Inc. dsPIC30F2010 12.0 输出比较模块 输出比较模块的关键工作特性包括: 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 本章对输出比较模块和相关工作模式进行了介绍。此模 块提供的特性适用于需要以下工作模式的应用: • • • • • • Timer2 和 Timer3 模式选择 简单输出比较匹配模式 双输出比较匹配模式 简单 PWM 模式 休眠和空闲模式下的输出比较 发生输出比较 /PWM 事件时将产生中断 • 产生可变宽度输出脉冲 • 功率因数校正 通过设定 16 位 OCxCON SFR (其中 x = 1 或 2)中相 应的位可确定这些操作模式。 图 12-1 给出了输出比较模块的框图。 图中的 OCxRS 和 OCxR 表示双比较寄存器。在双比较 模式下, OCxR 寄存器用于第一次比较而 OCxRS 用于 第二次比较。 图 12-1: 输出比较模式框图 置 1 标志位 OCxIF OCxRS 输出 逻辑 OCxR 3 OCM<2:0> 模式选择 比较器 S Q R OCx 输出使能 OCFA (对于 x = 1 和 2) 0 1 OCTSEL 0 1 来自通用定时器模块 TMR2<15:0> TMR3<15:0> T2P2_MATCH T3P3_MATCH 注: 图中 ‘x’指的是与相应输出比较通道 1 和 2 相关的寄存器。 2007 Microchip Technology Inc. DS70118G_CN 第71 页 dsPIC30F2010 12.1 Timer2 和 Timer3 模式选择 12.3.2 连续脉冲模式 每个输出比较通道均可选择两个 16 位定时器 Timer2 和 Timer3 中的一个。 将模块配置为生成连续输出脉冲,则需要执行下列步 骤: 通过 OCTSEL 位 (OCxCON<3>)来控制定时器的选 择。 Timer2 是输出比较模块缺省的定时器资源。 • • • • 12.2 简单输出比较匹配模式 当控制位 OCM<2:0> (OCxCON<2:0>) = 001、 010 或 011 时,所选输出比较通道被配置为下列三种简单输 出比较匹配模式之一: • 比较强制 I/O 引脚为低电平 • 比较强制 I/O 引脚为高电平 • 比较使 I/O 引脚状态翻转 上述模式中使用了 OCxR 寄存器。OCxR 寄存器将装入 一个值,然后与所选的递增定时器的计数值作比较。进 行比较时,将出现上述比较匹配模式之一。如果在达到 OCxR 中的值之前,计数器复位为零,则 OCx 引脚的状 态保持不变。 12.3 双输出比较匹配模式 当控制位 OCM<2:0>(OCxCON<2:0>)= 100 或 101 时,所选输出比较通道被配置为下列两种双输出比较匹 配模式之一: • 单输出脉冲模式 • 连续输出脉冲模式 12.3.1 单脉冲模式 用户将模块配置为生成单输出脉冲,需要执行下列步骤 (假设定时器已关闭): • • • • 确定指令周期时间 TCY。 根据 TCY 计算所需的脉冲宽度值。 计算从定时器起始值 0x0000 到脉冲开始的时间。 把脉冲宽度开始和停止时间分别写入 OCxR 和 OCxRS 比较寄存器 (x 表示通道 1 或 2)。 • 设置定时器周期寄存器的值,使之等于或大于 OCxRS 比较寄存器中的值。 • 设置 OCM<2:0> = 100。 • 使能定时器, TON (TxCON<15>) = 1。 确定指令周期时间 TCY。 根据 TCY 计算所需的脉冲宽度值。 计算从定时器起始值 0x0000 到脉冲开始的时间。 把脉冲宽度开始和停止时间分别写入 OCxR 和 OCxRS 比较寄存器 (x 表示通道 1 或 2)。 • 设置定时器周期寄存器的值,使之等于或大于 OCxRS 比较寄存器中的值。 • 设置 OCM<2:0> = 101。 • 使能定时器, TON (TxCON<15>) = 1。 12.4 简单 PWM 模式 当控制位 OCM<2:0>(OCxCON<2:0>)= 110 或 111 时,所选输出比较通道配置为 PWM 工作模式。当配置 为 PWM 工作模式时, OCxR 是主锁存器 (只读), OCxRS 是辅助锁存器。这样能使 PWM 信号跳变时不会 产生毛刺。 为了把输出比较模块配置为 PWM 工作模式,用户必须 执行下列步骤: 1. 2. 3. 4. 写适当的周期寄存器,设置 PWM 周期。 写 OCxRS 寄存器,设置 PWM 占空比。 把输出比较模块配置为 PWM 工作模式。 设置 TMRx 预分频比,使能定时器, TON (TxCON<15>) = 1。 12.4.1 PWM 的输入引脚故障保护 当控制位 OCM<2:0> (OCxCON<2:0>) = 111 时,所 选输出比较通道还是配置为 PWM 工作模式,但具有输 入故障保护的附加功能。在此模式下,如果在 OCFA/B 引脚上检测到逻辑 0,则对应的 PWM 输出引脚将被置 于高阻输入状态。 OCFLT 位 (OCxCON<4>)表明是 否产生故障条件。此状态将保持,直到下列事件都已发 生: t 外部故障条件已经消除。 • 通过写适当的控制位,重新使能了 PWM 模式。 要 启 动 另 一 个 单 脉 冲,进 行 另 一 次 写 操 作 设 置 OCM<2:0> = 100 即可。 DS70118G_CN 第72 页 2007 Microchip Technology Inc. dsPIC30F2010 12.4.2 12.5 PWM 周期 通过写入 PRx 寄存器可以指定 PWM 周期。可使用公 式 12-1 计算 PWM 周期。 公式 12-1: PWM 周期 PWM 周期 = [(PRx) + 1] • 4 • TOSC • (TMRx 预分频比) PWM 频率定义为 1/[PWM 周期 ]。 当所选 TMRx 等于其对应的周期寄存器 PRx 时,在下 一个递增周期将发生如下四个事件: • TMRx 清零。 • OCx 引脚置 1。 - 例外 1:如果 PWM 占空比为 0x0000,则 OCx 引脚将保持为低电平。 - 例外 2:如果占空比大于 PRx,则引脚将保持 为高电平。 • 把 PWM 占空比从 OCxRS 锁存到 OCxR 中。 • 相应的定时器中断标志置 1。 CPU 休眠模式期间的输出比较工作 当CPU进入休眠模式时,所有的内部时钟都将停止。从 而,输出比较通道将把引脚驱动为 CPU 进入休眠模式 之前的有效状态。 例如,当 CPU 进入休眠状态时,如果引脚为高电平,则 引脚将继续保持为高电平。类似地,当 CPU 进入休眠 状态时,如果引脚为低电平,它将继续保持为低电平。 在这两种情况下,当器件唤醒时,输出比较模块都将恢 复工作。 12.6 CPU 空闲模式期间的输出比较工作 当 CPU 进入空闲模式时,输出比较模块仍然能够全功 能工作。 如果 OCSIDL 位 (OCxCON<13>)为逻辑 0,所选时 基 (Timer2 或 Timer3)使能且所选定时器的 TSIDL 位 为逻辑 0,输出比较通道将在 CPU 空闲模式期间工作。 • 参见图 12-1 的关键 PWM 周期比较。为了清晰起 见,图中引用的是 Timer3 。 图 12-2: PWM 输出时序 周期 占空比 TMR3 = PR3 T3IF = 1 (中断标志) OCxR = OCxRS 12.7 TMR3 = PR3 T3IF = 1 (中断标志) OCxR = OCxRS TMR3 = 占空比(OCxR) TMR3 = 占空比(OCxR) 输出比较中断 输出比较通道具有在比较匹配时产生中断的能力,而与 选择的匹配模式无关。 对于除 PWM 之外的所有模式,当比较事件发生时,相 应的中断标志 (OCxIF)置 1,如果允许中断的话还将 产生中断。OCxIF 位位于相应的 IFS 状态寄存器中,它 必 须 用 软 件 清 零。通 过 相 应 的 比 较 中 断 允 许 位 (OCxIE)来允许中断; OCxIE 位位于相应的 IEC 控制 寄存器中。 2007 Microchip Technology Inc. 对于 PWM 模式,当事件发生时,对应的定时器中断标 志位 (T2IF 或 T3IF)置 1,如果允许中断的话还将产 生中断。 TxIF 位在 IFS0 状态寄存器中,它的清零必须 在软件中进行。通过位于 IEC0 控制寄存器中的定时器 中断允许位 (T2IE 或 T3IE),来允许相应的中断。在 PWM 工作模式下,输出比较中断标志始终不会置 1。 DS70118G_CN 第73 页 SFR 名称 输出比较寄存器映射 地址 OC1RS 0180 OC1R 0182 OC1CON 0184 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 输出比较 1 主寄存器 OCFRZ OCSIDL — — — — — — — OC2RS 0186 输出比较 2 主寄存器 OC2R 0188 输出比较 2 从寄存器 OC2CON 018A — OCFRZ OCSIDL — — — — — — — 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 复位状态 0000 0000 0000 0000 输出比较 1 从寄存器 — Bit 0 0000 0000 0000 0000 — OCFLT1 OCTSEL1 OCM<2:0> 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 — OCFLT2 OCTSEL2 OCM<2:0> 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第74 页 表 12-1: 2007 Microchip Technology Inc. dsPIC30F2010 13.0 正交编码器接口 (QEI)模块 正交编码器接口 (QEI)是多种电机控制应用中不可或 缺的关键部分,例如开关磁阻(Switched Reluctance, SR)电机和交流感应电机 (AC Induction Motor, ACIM)。 QEI 的工作特性包括: 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 • • • • • • • 本 章 介 绍 了 正 交 编 码 器 接 口 (Quadrature Encoder Interface, QEI)模块和相关的工作模式。 QEI 模块提 供了与增量式编码器的接口以获得电机位置数据。增量 式编码器在电机控制应用中是非常有用的。 三个输入通道,分别为两相信号和索引脉冲输入 16 位递增/递减位置计数器 计数方向状态 位置测量 (x2 和 x4)模式 输入端上的可编程数字噪声滤波器 备用的 16 位定时器/计数器模式 正交编码器接口中断 通过设定相应位 QEIM<2:0> (QEICON<10:8>)可确 定这些工作模式。图 13-1 给出了正交编码器接口的框 图。 图 13-1: 正交编码器接口框图 TQCKPS<1:0> 休眠输入 TQCS TCY 同步 Det 2 0 预分频器 1, 8, 64, 256 1 1 QEIM<2:0> 0 TQGATE QEA 可编程 数字滤波器 UPDN_SRC 0 QEICON<11> 2 QEB 可编程 数字滤波器 INDX 可编程 数字滤波器 Q CK Q QEIIF 事件 标志 16 位递增/递减计数器 (POSCNT) 复位 正交 解码器 逻辑 比较器/ 过零检测 3 QEIM<2:0> 模式选择 1 D 等于 最大计数寄存器 (MAXCNT) 3 2007 Microchip Technology Inc. DS70118G_CN 第75 页 dsPIC30F2010 13.1 正交编码器接口逻辑 典型的增量式编码器(也称为光电式编码器)具有三个 输出:A 相、 B 相和索引脉冲。在 ACIM 和 SR 电机的 位置和速度控制中,这三个信号非常有用,且通常是必 须的。 A 相(QEA)和 B 相(QEB)通道输出信号具有特定的 相位关系。如果 A 相超前 B 相,那么认为电机正向旋 转。如果 A 相滞后于 B 相,那么认为电机反向旋转。 第三个通道称为索引脉冲,每转一圈产生一个脉冲,作 为基准用来确定绝对位置。索引脉冲与 A 相和 B 相一 致,皆为低电平。 13.2 16 位递增/递减位置计数器模式 16 位递增/递减计数器在每一个计数脉冲递增或递减 计数,该脉冲信号由 A 相和 B 相输入信号的关系确定。 计数器作为一个积分器,其计数值与位置成正比。计数 方向由 UPDN 信号确定,该信号由正交编码器接口逻辑 产生。 13.2.1 位置计数器错误检查 CNTERR 位(QEICON<15>)提供了 QEI 中的位置计数 错误检查功能。只有当位置计数器配置为通过索引脉冲 复位模式 (QEIM<2:0> = 110 或 100)时,才能使用 错误检查功能。在这些模式下, POSCNT 寄存器中的 内容将与值 (0xFFFF 或 MAXCNT + 1,取决于转向) 进行比较。如果检测到这些值,将通过置 1 CNTERR 位 产生一个错误条件并产生 QEI 计数错误中断。通过置 1 CEID 位 (DFLTCON<8>)可禁止 QEI 计数错误中断。 在检测到错误之后,位置计数器仍将继续对编码器脉冲 边沿进行计数。 POSCNT 寄存器继续递增/递减计数 直至出现自然计满溢出/下溢。发生自然计满溢出/下 溢事件时不产生中断。CNTERR 位是一个可读/写位, 由用户采用软件方式对其进行复位。 13.2.2 位置计数器复位 位置计数器复位使能位 POSRES (QEI<2>)用于确定 当检测到索引脉冲时是否对位置计数器进行复位。只有 当 QEIM<2:0> = ‘100’或 ‘110’时,该位才适用。 如果 POSRES 位设置为‘1’,则位置计数器在检测到 索引脉冲时将被复位。如果 POSRES 位设定为 ‘0’, 则当检测到索引脉冲时位置计数器将不会被复位。位置 计数器将继续进行递增或递减计数,且在发生计满溢出 /下溢时进行复位。 当选择使用 INDX 信号对位置计数器(POSCNT)进行 复位时,用户必须指定 QEA 和 QEB 输入引脚的状态。 只 有 这 些 状 态 匹 配 时,复 位 才 会 发 生。通 过 DFLTCON<10:9> 寄存器中的 IMV<1:0> 位可选择这些 状态。 当 POSCNT 寄存器将被复位时,IMV<1:0>(索引匹配 值)位允许用户在索引脉冲期间指定 QEA 和 QEB 输入 引脚的状态。 在 4X 正交计数模式下: IMV1 = 索引脉冲匹配所要求的 B 相输入信号的状态 IMV0 = 索引脉冲匹配所要求的 A 相输入信号的状态 在 2X 正交计数模式下: IMV1= 为索引状态匹配选择的相输入信号(0 = A 相,1 =B 相) IMV0= 索引脉冲匹配要求的所选相输入信号的状态 当检测到索引脉冲但位置计数器未发生计满溢出/下溢 事件时,仍将产生中断。 13.2.3 计数方向状态 如前所述, QEI 逻辑将根据 A 相和 B 相之间的关系产 生 UPDN 信号。除输出引脚外,还将此内部 UPDN 信 号的状态传送至 SFR 的 UPDN 位 (QEICON<11>), 该位是只读位。 注: QEI 引脚复用为模拟输入引脚。用户必须确保在 ADPCFG 寄存器中所有 QEI 相关引脚被设定为数字 输入。 DS70118G_CN 第76 页 2007 Microchip Technology Inc. dsPIC30F2010 13.3 位置测量模式 QEI 支持两种测量模式,分别称为 x2 和 x4 模式。通过位 于 SFR QEICON<10:8> 中的模式选择位 QEIM<2:0> 可 选择模式。 当控制位 QEIM<2:0> = 100 或 101 时,将选择 x2 测量 模式,此时 QEI 逻辑将只通过 A 相输入信号来确定位置 计数器递增速率。A 相信号的每个上升沿和下降沿都将 导致位置计数器递增或递减。和在 x4 模式中一样, B 相信号仍然用于计数器方向的确定。 在 x2 测量模式中,存在导致位置计数器复位的两种不 同原因: 1. 2. 检测到索引脉冲,QEIM<2:0> = 100,导致位置 计数器复位。 计数值与 MAXCNT, QEIM<2:0> = 101 匹配时 导致位置计数器复位。 当控制位 QEIM<2:0> = 110 或 111 时,将选择 x4 测量 模式,此时 QEI 逻辑将通过 A 相和 B 相输入信号的每 个边沿来确定位置计数器递增速率。A 相和 B 相输入信 号的每个边沿都将导致位置计数器递增或递减。 在 x4 测量模式中,存在导致位置计数器复位的两种不 同原因: 1. 2. QEIM<2:0> = 110 时,检测到索引脉冲导致位置 计数器复位。 QEIM<2:0> = 111时,计数值与MAXCNT匹配导 致位置计数器复位。 x4 测量模式为确定电机位置提供了更高精度的测量数 据 (更多的位置计数)。 13.4 13.5 当 QEI 模块未被配置为 QEI 模式 QEIM<2:0> = 001 时, 此模块可被配置为简单的 16 位定时器/计数器。通过 QEICON SFR寄存器可实现辅助定时器的设定和控制。 此定时器功能与 Timer1 相同。QEA 引脚用作定时器时 钟输入。 当配置为定时器时, POSCNT 寄存器作为定时器计数 寄存器,而 MAXCNT 寄存器用作周期寄存器。当定时 器/周期寄存器匹配时, QEI 中断标志将被置 1。 此定时器和通用定时器之间惟一的差异是增加了外部递 增/递减输入选择功能。当 UPDN 引脚为高电平时,定 时器将进行递增计数。当 UPDN 引脚为低电平时,定时 器将进行递减计数。 注: 该滤波器可以确保在三个连续的滤波器周期内都获得同 一个稳定值之后,才允许经过滤波的输出信号发生变 化。 可 通 过 位 QECK<2:0> (DFLTCON<6:4>)对 QEA、 QEB 和 INDX 引脚的数字滤波器时钟分频频率进行编程 设定,该频率来源自基本指令周期 TCY。 工作模式的改变 (即,从 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 位定时器/计数器 13.6 13.6.1 此定时器不支持外部异步计数器工作模式。 如果使用外部时钟源,时钟将自动与内部指 令周期同步。 CPU 休眠模式下的 QEI 模块操作 CPU 休眠模式下的 QEI 操作 在 CPU 休眠模式下 QEI 模块将停止工作。 13.6.2 CPU 休眠模式下的定时器操作 在 CPU 休眠模式下,定时器将不工作,因为内部时钟 被禁止了。 QEOUT 位必须为‘1’以使能 QEA、QEB 和 INDX 通道 的滤波器输出功能。在 POR 和 BOR 时,所有通道的滤 波器网络将被禁止。 2007 Microchip Technology Inc. DS70118G_CN 第77 页 dsPIC30F2010 13.7 CPU 空闲模式下的 QEI 模块操作 由于 QEI 模块可作为正交编码器接口,或 16 位定时器, 以下各节介绍了这两种模式下的 QEI 模块操作。 13.7.1 CPU 空闲模式下的 QEI 操作 当 CPU 处 于 空 闲 模 式 时,如 果 QEISIDL 位 (QEICON<13>) = 0,则 QEI 模块将工作。在 POR 和 BOR 时,该位默认为逻辑 ‘0’。在空闲模式下若要使 QEI 模块停止工作,应将 QEISIDL 位设定为 ‘1’。 13.7.2 CPU 空闲模式下的定时器操作 当 CPU 处于空闲模式且 QEI 模块配置为 16 位定时器模 式时,如果 QEISIDL 位 (QEICON<13>) = 0,则 16 位定时器将工作。在 POR 和 BOR 时,该位默认为逻辑 ‘0’。在空闲模式下若要使定时器模块停止工作,应将 QEISIDL 位设定为 ‘1’。 13.8 正交编码器接口中断 正交编码器接口能够在发生以下事件时产生中断: • 当 16 位递增/递减位置计数器发生计满溢出/下 溢时产生中断 • 检测到合格的索引脉冲时,或 CNTERR 位置 1 时 • 定时器周期匹配事件 (溢出/下溢) • 门控累加事件 在发生以上任一事件时,QEI 中断标志位 QEIIF 将被置 1。QEIIF 位必须通过软件方式清零。QEIIF 位于 IFS2 状 态寄存器中。 可通过相应的中断允许位 QEIIE 允许中断。QEIIE 位于 IEC2 控制寄存器中。 如果 QEISIDL 位被清零,定时器将正常工作,就象 CPU 没有进入空闲模式一样。 DS70118G_CN 第78 页 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 13-1: SFR 名称 QEI 寄存器映射 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 QEISIDL INDX UPDN QEIM2 QEIM1 QEIM0 SWPAB Bit 6 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 复位状态 QEICON 0122 CNTERR — DFLTCON 0124 — — POSCNT 0126 位置计数器 <15:0> 0000 0000 0000 0000 MAXCNT 0128 最大计数值 <15:0> 1111 1111 1111 1111 — — — IMV1 IMV0 CEID QEOUT — Bit 5 QECK2 TQGATE TQCKPS1 TQCKPS0 POSRES TQCS UPDN_SRC 0000 0000 0000 0000 QECK1 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 QECK0 — — — — 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第 79 页 dsPIC30F2010 注: DS70118G_CN 第80 页 2007 Microchip Technology Inc. dsPIC30F2010 14.0 电机控制 PWM 模块 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 此模块简化了产生多种同步脉宽调制输出(Pulse Width Modulated,PWM)的任务。特别是它还能支持以下电 源和电机控制应用: • • • • 三相交流感应电机 开关磁阻电机 直流无刷 (Brushless DC, BLDC)电机 不间断电源 (Uninterruptible Power Supply, UPS) PWM 模块具有以下特性: • 6 个具备 3 占空比发生器的 PWM I/O 引脚 • 16 位精度 • 实时更改 PWM 频率 • 单脉冲产生模式 • 对中心对齐模式下不对称更新的中断支持 • 用于电子换相电机 (Electrically Commutative Motor, ECM)控制的输出改写控制 • 用于调度其他外设事件的 “特殊事件”比较器 • 可选择将任何一个 PWM 输出引脚驱动至确定状态 的 FLTA 引脚 此模块包含 3 个占空比发生器,分别编号为 1 至 3。此 模块具有 6 个 PWM 输出引脚,分别编号为 PWM1H/ PWM1L 至 PWM3H/PWM3L。6 个 I/O 引脚可组合为 3 个高 / 低端引脚对,分别以下标 H 或 L 表示。对于互补 的负载,低端 PWM 引脚的状态总是与高端 I/O 引脚的 状态相反。 图 14-1 中显示了电机控制 PWM 模块的简化框图。 PWM 模块可以实现多种工作模式,有利于实现特定的 功率控制应用。 • 边沿对齐和中心对齐输出模式 2007 Microchip Technology Inc. DS70118G_CN 第81 页 dsPIC30F2010 图 14-1: PWM 框图 PWMCON1 PWM 使能和模式 SFR PWMCON2 DTCON1 死区时间控制 SFR FLTACON FLTA 引脚控制 SFR OVDCON PWM 手动 控制 SFR PWM 发生器 #3 16 位数据总线 PDC3 缓冲器 PDC3 PWM 发生器 #2 PTMR PWM3H 通道 3 死区时间 发生器和 改写逻辑 比较器 通道 2 死区时间 发生器和 改写逻辑 PWM3L 输出 驱动器 块 PWM2H PWM2L 比较器 PWM 发生器 #1 通道 1 死区时间 发生器和 改写逻辑 PTPER PWM1H PWM1L FLTA PTPER 缓冲器 PTCON 比较器 SEVTDIR SEVTCMP 特殊事件 后分频器 特殊事件触发信号 PTDIR PWM 时基 注: 为清晰起见,图中未给出 PWM 发生器 #1 和 #2 的细节。 DS70118G_CN 第82 页 2007 Microchip Technology Inc. dsPIC30F2010 14.1 PWM 时基 PWM 时基由带预分频器和后分频器的 15 位定时器提 供。通过 PTMR SFR 可对该时基进行访问。PTMR<15> 为只读状态位,用于表明 PWM 时基的当前计数方向。 如果 PTDIR 被清零,表明 PTMR 正进行递增计数。如 果 PTDIR 置 1,表明 PTMR 正进行递减计数。可通过 PTCON SFR 对 PWM 时基进行配置。可通过置 1 /清 零 PTCON SFR 中的 PTEN 位使能/禁止时基。当用软 件清零 PTEN 位时, PTMR 将不会被清零。 PTPER SFR 设定 PTMR 的计数周期。用户必须写入 15 位 值 至 PTPER<14:0>。当 PTMR<14:0> 中的值与 PTPER<14:0> 中的值相匹配时,时基将会被复位为 0 或在下一个时钟周期反转计数方向,这取决于时基的工 作模式。 注: 如果周期寄存器设定为 0x0000,定时器将 停 止 计 数,且 即 使 特 殊 事 件 值 也 是 0x0000,也不会产生中断和特殊事件触发 信号。该模块将不会更新周期寄存器,即使 它已是 0x0000 ;因此,用户必须禁止该模 块以更新周期寄存器。 PWM 时基可配置为 4 种不同的工作模式: • • • • 自由运行模式 单事件模式 连续递增/递减计数模式 带双更新中断的连续递增/递减计数模式 通过 PTCON SFR 中的 PTMOD<1:0> 位可选择这 4 种 模式。递增/递减计数模式支持产生中心对齐 PWM。 单事件模式使得 PWM 模块可支持某些电子换相电机 (ECM)的脉冲控制。 PWM 时 基 产 生 的 中 断 信 号 取 决 于 模 式选择位 (PTMOD<1:0>)和 PTCON SFR 中的后分频比控制位 (PTOPS<3:0>)。 2007 Microchip Technology Inc. 14.1.1 自由运行模式 在自由运行模式下, PWM 时基进行递增计数直至与时 基周期寄存器 (Time Base Period register, PTPER) 中的设定值相匹配。PTMR 寄存器将在下一输入时钟边 沿复位且只要 PTEN 位保持置 1 时基将继续进行递增计 数。 当PWM时基处于自由运行模式时(PTMOD<1:0> = 00), 每当计数值与 PTPER 寄存器匹配都将产生一个中断事件 且 PTMR 寄存器将被复位为零。在此模式下,可使用后分 频比选择位来降低中断事件的频率。 14.1.2 单事件模式 在单事件计数模式下,当 PTEN 位置 1 时 PWM 时基将 开始递增计数。当 PTMR 寄存器中的值与 PTPER 寄存 器匹配时,PTMR 寄存器将在下一个输入时钟边沿被复 位,且 PTEN 位将被硬件清零以中止时基的操作。 当 PWM 时基处于单事件模式 (PTMOD<1:0> = 01) 时,当发生与 PTPER 寄存器匹配时将产生一个中断事 件,PTMR 寄存器会在下一个输入时钟边沿复位为零且 PTEN 位将被清零。在该模式下,后分频比选择位将不 起作用。 14.1.3 连续递增 / 递减计数模式 在连续递增 / 递减计数模式下, PWM 时基将进行递增 计数直至与 PTPER 寄存器值相匹配。定时器将在下一 个输入时钟边沿开始递减计数。 PTCON SFR 中的 PTDIR 位为只读位,用于表明计数方向。当定时器进行 递减计数时, PTDIR 位将被置 1。 在递增 / 递减计数模式 (PTMOD<1:0> = 10)下,每 当 PTMR 寄存器值为零时将产生中断事件且 PWM 时基 将开始递增计数。在此模式下可使用后分频比选择位来 降低中断事件的频率。 DS70118G_CN 第83 页 dsPIC30F2010 14.1.4 双更新模式 14.2 PWM 周期 在双更新模式(PTMOD<1:0> = 110)下,每当 PTMR 寄存器等于零或出现周期匹配时将产生中断事件。在此 模式下,后分频比选择位将不起作用。 PTPER 为 15 位寄存器,用来设定 PWM 时基的计数周 期。 PTPER 为双缓冲寄存器。在下列情况下, PTPER 缓冲器内容将被装入 PTPER 寄存器: 双更新模式向用户提供了另外两种功能。首先,控制环 带宽可增加一倍,因为在每一个周期内 PWM 占空比可 被更新两次。其次,可产生不对称的中心对齐 PWM 波 形,可在某些电机控制应用中用于减少输出波形畸变。 • 自由运行和单事件模式:与 PTPER 寄存器匹配后 当 PTMR 寄存器复位为零时。 • 递增 / 递减计数模式:当 PTMR 寄存器为零时。 注: 14.1.5 将周期寄存器编程设定为 0x0001 可产生一 个连续的中断脉冲,因此必须加以避免。 PWM 时基预分频器 PTMR 的输入时钟 (FOSC/4)可通过 PTCON SFR 寄 存器中的 PTCKPS<1:0> 控制位选择 1:1、1:4、1:16 或 1:64 预分频比。当发生以下事件时,预分频器计数器将 被清零: • 写入 PTMR 寄存器 • 写入 PTCON 寄存器 • 任何器件复位 当写入 PTCON 时, PTMR 寄存器将不会被清零。 14.1.6 当 PWM 时基被禁止时 (PTEN = 0), PTPER 缓冲器 中的值将被自动装入 PTPER 寄存器。 可使用公式 14-1 确定 PWM 周期。 公式 14-1: TPWM = TCY • (PTPER + 1) (PTMR 预分频比 ) 如果 PWM 时基配置为递增 / 递减计数模式之一,则 PWM 周期可由公式 14-2 确定。 公式 14-2: PWM 周期 (递增 / 递减计数 模式) PWM 时基后分频器 PTMR 的匹配输出可选择通过 4 位后分频器进行后分频 (可实现 1:1 至 1:16 分频)。 PWM 周期 TPWM = TCY • 2 • (PTPER + 0.75) (PTMR 预分频比 ) 当发生以下事件时,后分频器计数器将被清零: • 写入 PTMR 寄存器 • 写入 PTCON 寄存器 • 任何器件复位 对于给定器件振荡器和 PWM 频率,最大分辨率 (以位 为单位)可使用公式 14-3 进行确定: 当写入 PTCON 作时, PTMR 寄存器将不会被清零。 公式 14-3: 分辨率 = DS70118G_CN 第84 页 PWM 分辨率 log (2 • TPWM / TCY) log (2) 2007 Microchip Technology Inc. dsPIC30F2010 14.3 边沿对齐 PWM 14.4 当 PWM 时基处于自由运行模式或单事件模式时,模块 将产生边沿对齐 PWM 信号。对于边沿对齐 PWM 输出, 输出信号的周期由 PTPER 中的值指定,而占空比由相 应的占空比寄存器指定(见图 14-2)。PWM 输出将在 周期的起始 (PTMR = 0)驱动为有效状态,而当占空 比寄存器中的值与 PTMR 匹配时被驱动为无效状态。 如果特定占空比寄存器的值为零,则对应 PWM 引脚上 的输出会在整个 PWM 周期中处于无效状态。此外,如 果占空比寄存器中的值大于 PTPER 寄存器中的值,则 PWM 引脚的输出将会在整个 PWM 周期中保持有效状 态。 图 14-2: 边沿对齐 PWM 中心对齐 PWM 当 PWM 时基配置为递增 / 递减计数模式时 (见 图 14-3),模块将产生中心对齐的 PWM 信号。 当占空比寄存器值与 PTMR 的值相匹配且 PWM 时基进 行递减计数 (PTDIR = 1)时, PWM 比较输出将被驱 动为有效状态。当 PWM 时基进行递增计数 (PTDIR = 0)且 PTMR 寄存器中的值与占空比值匹配 时, PWM 比较输出将被驱动为无效状态。 如果特定占空比寄存器中的值为零,则整个 PWM 周期 内对应 PWM 引脚上的输出将为无效状态。此外,如果 占空比寄存器中的值等于 PTPER 寄存器中的值,则整 个 PWM 周期内 PWM 引脚上的输出将为有效状态。 中心对齐 PWM 图 14-3: 锁存的新占空比 周期 /2 PTPER PTPER PTMR 值 PTMR 值 占空比 0 0 占空比 周期 周期 14.5 PWM 占空比比较单元 有 4 个 16 位特殊功能寄存器 (PDC1、 PDC2、 PDC3 和 PDC4)用来指定 PWM 模块的占空比值。 每一个占空比寄存器中的值负责确定 PWM 输出处于有 效状态的时间。占空比寄存器为 16 位宽。占空比寄存 器的 LSb 用来确定开始时是否出现 PWM 边沿。因此, PWM 的分辨率实际上提高了一倍。 2007 Microchip Technology Inc. DS70118G_CN 第85 页 dsPIC30F2010 14.5.1 占空比寄存器缓冲器 4 个 PWM 占空比寄存器采用双缓冲方式,因此可使 PWM 输出更新时不会产生毛刺。对于每一个占空比, 有一个用户可访问的占空比寄存器,而另外一个占空比 寄存器保存当前 PWM 周期使用的实际比较值。 对于边沿对齐 PWM 输出,当计数值与 PTPER 寄存器 值匹配且 PTMR 寄存器被复位时,将更新占空比值。当 PWM 时基被禁止 (PTEN = 0)且 PWMCON2 寄存器 中的 UDIS 位被清零时,占空比缓冲器的内容将被自动 装入占空比寄存器。 如果 PWM 时基处于递增 / 递减计数模式,则当 PTMR 寄存器值为零且 PWM 时基开始递增计数时将采用新的 对占空比值。当 PWM 时基被禁止(PTEN = 0)时,占 空比缓冲器中的值将被自动装入占空比寄存器。 如果PWM时基处于双更新功能的递增/递减计数模式, 当 PTMR 寄存器值为零且 PTMR 的值与 PTPER 寄存器 的值匹配时,将采用新的占空比值。当 PWM 时基被禁 止(PTEN = 0),占空比缓冲器中的值将被自动装入占 空比寄存器。 14.6 互补 PWM 操作 在互补工作模式下,每对 PWM 输出都是互补的 PWM 信号。对于一段两个引脚的输出均为无效的短暂时间, 可选择在器件开关过程中插入一个死区时间 (参见第 14.7 节 “死区时间发生器”)。 在互补模式下,占空比比较单元将按如下分配给相应的 PWM 输出: • PDC1 寄存器控制 PWM1H/PWM1L 输出 • PDC2 寄存器控制 PWM2H/PWM2L 输出 • PDC3 寄存器控制 PWM3H/PWM3L 输出 14.7 死区时间发生器 当任一 PWM I/O 引脚对工作于互补输出模式时,可使 用死区时间发生功能。 PWM 输出采用推挽驱动电路。 由于功率输出器件的导通和关断都需要时间,因此在一 对互补 PWM 输出中一个开关器件的关断和另一个开关 器件的导通之间必须间隔一定的时间。 14.7.1 死区时间发生器 PWM 模块的每一对互补输出都有一个 6 位的递减计数 器,用于插入死区时间。如图 14-4 中所示,每个死区 时间单元都有与占空比比较输出相连的上升沿和下降沿 检测器。 14.7.2 死区时间范围 通过指定输入时钟预分频值和一个 6 位无符号值可设定 死区时间单元提供的死区时间。 死区时间单元提供了 4 种输入时钟预分频比选项,用户 可根据器件的工作频率选择适当的死区时间范围。使用 DTCON1 SFR 中的 DTAPS<1:0> 和 DTBPS<1:0> 控制 位可选择死区时间时钟预分频值。死区时间值可使用 4 种时钟预分频比选择之一(TCY、2TCY、4TCY 或8TCY)。 在选择预分频值之后,通过装入 6 位无符号值至 DTCON1 SFR 可对死区时间进行调整。 发生以下事件时,死区时间单元预分频器将被清零: • 由于占空比比较边沿事件导致装入递减定时器。 • 写入 DTCON1 寄存器。 • 任何器件复位。 注: 当 PWM 模块处于工作状态时(PTEN = 1), 用户不应对 DTCON1 值进行修改,否则可能 导致意外结果的发生。 将 PWMCON1 SFR 中相应的 PMODx 位清零可使 PWM I/O 引脚对工作于互补模式。在器件复位时, PWM I/O 引脚将被设定为互补模式。 DS70118G_CN 第86 页 2007 Microchip Technology Inc. dsPIC30F2010 图 14-4: 死区时间时序图 占空比发生器 PWMxH PWMxL 14.8 独立的 PWM 输出 在驱动某些类型的负载时,需要采用独立的PWM输出。 当 PWMCON1 寄存器中相应的 PMOD 位置 1 时,则相 应的 PWM 输出对将工作于独立输出模式。当模块工作 于独立模式时,相邻 PWM I/O 引脚之间将不会实现死 区时间控制而 I/O 引脚对将允许同时处于有效状态。 在独立模式下,每一个占空比发生器将被同时连接到 PWM 输出对中的两个 I/O 引脚。通过相关的占空比寄 存器和 OVDCON 寄存器中的相应位,用户可为工作于 独立模式的每一个 PWM I/O 引脚选择以下的信号输出 选项: • I/O 引脚输出 PWM 信号 • I/O 引脚处于无效状态 • I/O 引脚处于有效状态 14.9 单脉冲 PWM 操作 当 PTCON 控制位 PTMOD<1:0> = 10 时, PWM 模块 将产生单脉冲输出。在单脉冲模式下仅可产生边沿对齐 输出。在单脉冲模式下,当 PTEN 位置 1 时, PWM I/O 引脚将被驱动为有效状态。当计数值与占空比寄存 器设定值匹配时,PWM I/O 引脚将被驱动为无效状态。 当计数值与 PTPER 寄存器匹配时, PTMR 寄存器将被 清零,所有处于有效状态的 PWM I/O 引脚将被驱动为 无效状态, PTEN 位将被清零且将产生中断。 2007 Microchip Technology Inc. 14.10 PWM 输出改写 通过 PWM 输出改写控制位 , 用户可手动驱动 PWM I/O 引脚至指定逻辑状态,而不受占空比比较单元的影响。 OVDCON 寄存器中包含了所有与 PWM 输出改写功能 相关的控制位。 OVDCON 寄存器的高字节包含 6 个数 据位,即 POVDxH<3:1> 和 POVDxL<3:1>,用于确定 哪些 PWM I/O 引脚输出将被改写。OVDCON 寄存器的 低字节包含 POUTxH<3:1> 和 POUTxL<3:1> 6 个数据 位,用于确定当通过 POVD 位对特定输出进行改写时的 PWM I/O 引脚的状态。 14.10.1 互补输出模式 当通过 OVDCON 寄存器驱动 PWMxL 引脚为有效状态 时,输出信号将被强制为与输出对中对应 PWMxH 引脚 输出状态相反的状态。当通过手动方式对 PWM 通道进 行改写时,死区时间插入仍然有效。 14.10.2 改写同步 如果 PWMCON2 寄存器中的 OSYNC 位置 1,所用通 过 OVDCON 寄存器执行的输出改写操作将与 PWM 时 基同步。同步输出改写将发生在以下时刻: • 若是边沿对齐模式,则当 PTMR 为零时。 • 若是中心对齐模式,则当 PTMR 为零或当 PTMR 值 与 PTPER 匹配时。 DS70118G_CN 第87 页 dsPIC30F2010 14.11 PWM 输出和极性控制 14.12.3 有 3 个与 PWM 模块有关的器件配置位用来提供 PWM 输出引脚控制: FLTA 输入引脚具有两种工作模式: • HPOL 配置位 • LPOL 配置位 • PWMPIN 配置位 FPORBOR 配置寄存器中的这 3 个位 (见第 21 章)将 与位 于 PWMCON1 SFR 中 的 3 个 PWM 使 能位 (PWMEN<3:1>)配合工作。这些控制位和 PWM 使能 位确保在器件发生复位后 PWM 引脚能够处于正确的状 态。配置位 PWMPIN 使得 PWM 模块输出可选择在器 件复位时被使能。如果 PWMPIN = 0,在复位时 PWM 输出将被驱动至无效状态。如果 PWMPIN = 1(默认), PWM 模块将为三态。 HPOL 位用于指定 PWMxH 输出 的极性,而 LPOL 位指定 PWMxL 输出的极性。 14.11.1 输出引脚控制 PWMCON1 SFR 中的 PEN<3:1>H 和 PEN<3:1>L 控制 位将分别用于使能每一个高端 PWM 输出引脚和每一个 低端 PWM 输出引脚。如果某个 PWM 输出引脚未被使 能,则该引脚将被视作一般 I/O 引脚。 14.12 PWM FLTA 引脚 有一个与 PWM 模块相关的故障引脚,即 FLTA 引脚 (FLTA)。当使能时,可以选择用该引脚将每个 PWM I/O 引脚驱动至定义的状态。 14.12.1 故障引脚使能位 FLTACON SFR 具有 4 个控制位,用于确定特定 PWM I/O引脚对是否由FLTA输入引脚控制。欲使能某一PWM I/O 引脚对的 FLTA 改写功能,必须将 FLTACON 寄存器 中的相应位置 1。 故障输入模式 • 锁存模式:当 FLTA 引脚驱动为低电平时,PWM 输 出将进入 FLTACON 寄存器所定义的状态。 PWM 输出将保持在此状态,直到 FLTA 引脚被驱动为高 电平并且相应的中断标志由软件清零。当这两种情 况都发生时, PWM 输出将在下一个 PWM 周期开 始时或在半周期边界返回到正常工作状态。如果中 断标志在 FLTA 状态结束前清零, PWM 模块将等 到 FLTA 引脚不再有效时才恢复输出。 • 逐周期模式:当 FLTA 输入引脚被驱动为低电平 时,只要 FLTA 引脚保持为低电平, PWM 输出将 会一直保持在定义的 FLTA 状态。在 FLTA 引脚被 驱动为高电平后, PWM 输出将在下一个 PWM 周 期开始时或半周期边界返回正常状态。 FLTA输入引脚的工作模式可通过FLTACON特殊功能寄 存器中的 FLTAM 控制位进行选择。 FLTA 引脚可通过软件方式进行手动控制。 14.13 PWM 更新锁定 对于某些复杂的 PWM 应用,用户可能需要在某一时刻 对多达 4 个占空比寄存器以及时基周期寄存器 PTPER 进行写入操作。在某些应用中,在装入新的占空比和周 期设定值供模块使用之前写入所有的缓冲寄存器是很重 要的。 通过将 PWMCON2 SFR 中的 UDIS 控制位置 1 可使能 PWM 更新锁定功能。UDIS 位会影响所有占空比缓冲寄 存器和 PWM 时基周期缓冲器 PTPER。当 UDIS = 1 时, 占空比或周期值将不会发生变化。 如果寄存器 FLTACON 中所有的使能位都被清零,则 FLTA 输入引脚对 PWM 模块将没有影响,且该引脚可用 作一般的中断引脚或 I/O 引脚。 注: 14.12.2 FLTA 引脚逻辑可独立于 PWM 逻辑进行工 作。如果 FLTACON 寄存器中的所有使能位 被清零,则 FLTA 引脚可用作一般中断引 脚。每一个 FLTA 引脚具有一个中断向量, 中断标志位和与之相关的中断优先级位。 故障状态 FLTACON 特殊功能寄存器具有 8 个位,用于确定每一 个 PWM I/O 引脚被 FLTA 输入改写时的状态。当这些位 清零时,PWM I/O 引脚将被驱动至无效状态。如果这些 位置 1,PWM I/O 引脚将被驱动至有效状态。有效和无 效 状 态 与 为 每 个 PWM I/O 引 脚 所 定 义 的 极 性 有关 (HPOL 和 LPOL 极性控制位)。 DS70118G_CN 第88 页 2007 Microchip Technology Inc. dsPIC30F2010 14.14 PWM 特殊事件触发器 14.15 CPU 休眠模式下的 PWM 操作 PWM 模块具有一个特殊事件触发器,可使 A/D 转换与 PWM 时基同步。通过对 A/D 采样和转换的时间进行编 程设定,可使其发生在 PWM 周期中的任何时刻。特殊 事件触发器使用户将采集 A/D 转换结果的时间和更新占 空比值的时间之间的延迟减到最小。 FLTA A 和 FLTA B 输入引脚能将 CPU 从休眠状态唤醒。 在休眠模式下,如果任何一个 FLTA 引脚被驱动为低电 平, PWM 模块将产生中断。 PWM 特殊事件触发器使用一个称为 SEVTCMP 的 SFR 以及 5 个控制位对其操作进行控制。用于产生特殊事件 触发信号的 PTMR 值装入 SEVTCMP 寄存器。当 PWM 时基处于递增 / 递减计数模式时,还需要一个控制位指 定特殊事件触发信号的计数方向。此计数方向是通过使 用 SEVTCMP SFR 中的 SEVTDIR 控制位选择的。如果 SEVTDIR 位清零,特殊事件触发信号将在 PWM 时基 的递增计数周期产生。如果 SEVTDIR 位置 1,特殊事 件触发信号将在 PWM 时基的递减计数周期产生。如果 PWM 时基不配置为递增 / 递减计数模式,SEVTDIR 控 制位不起作用。 14.14.1 14.16 CPU 空闲模式下的 PWM 操作 PTCON SFR 包含 PTSIDL 控制位。该位用于确定当器 件进入空闲模式时 PWM 模块将继续工作还是停止工 作。如果 PTSIDL = 0,空闲模式下模块将继续工作。如 果 PTSIDL = 1,只要 CPU 仍然处于空闲模式,模块将 停止工作。 特殊事件触发器后分频器 PWM特殊事件触发器有一个允许后分频比为1:1 到1:16 的 后 分 频 器。通 过 写 入 PWMCON2 SFR 中的 SEVOPS<3:0> 控制位可配置后分频器。 特殊事件输出后分频器在发生下列事件时清零: • 任何写入 SEVTCMP 寄存器的操作 • 任何器件复位 2007 Microchip Technology Inc. DS70118G_CN 第89 页 SFR 名称 PTCON PWM 寄存器映射 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 01C0 PTEN — PTSIDL — — — — — Bit 7 Bit 6 Bit 5 Bit 4 PTOPS<3:0> Bit 3 Bit 2 PTCKPS<1:0> Bit 1 Bit 0 PTMOD<1:0> 复位状态 0000 0000 0000 0000 PTMR 01C2 PTDIR PWM 定时器计数值 0000 0000 0000 0000 PTPER 01C4 — PWM 时基周期寄存器 0011 1111 1111 1111 SEVTCMP 01C6 SEVTDIR PWMCON1 01C8 — — — — PWMCON2 01CA — — — — DTCON1 01CC FLTACON 01D0 — — FAOV3H FAOV3L FAOV2H FAOV2L FAOV1H FAOV1L FLTAM — OVDCON 01D4 — — POVD3H POVD3L POVD2H POVD2L POVD1H POVD1L — — PDC1 01D6 PWM 占空比 #1 寄存器 0000 0000 0000 0000 PDC2 01D8 PWM 占空比 #2 寄存器 0000 0000 0000 0000 PDC3 01DA PWM 占空比 #3 寄存器 0000 0000 0000 0000 PWM 特殊事件比较寄存器 DTBPS<1:0> — PTMOD3 PTMOD2 PTMOD1 SEVOPS<3:0> DTB<5:0> 0000 0000 0000 0000 — PEN3H PEN2H PEN1H — PEN3L PEN2L PEN1L 0000 0000 0111 0111 — — — — — — OSYNC UDIS 0000 0000 0000 0000 — — FAEN2 FAEN1 0000 0000 0000 0000 DTAPS<1:0> 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 死区时间 A 值 — FAEN3 0000 0000 0000 0000 POUT3H POUT3L POUT2H POUT2L POUT1H POUT1L 0011 1111 0000 0000 dsPIC30F2010 DS70118G_CN 第90 页 表 14-1: 2007 Microchip Technology Inc. dsPIC30F2010 15.0 SPI 模块 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 串行外设接口(Serial Peripheral Interface, SPI)模块 是同步串行接口,可用于与其他外设 (如 EEPROM、 移位寄存器、显示驱动器和 A/D 转换器等)或者单片机 进行通信。SPI 模块与 Motorola 的 SPI 和 SIOP 接口兼 容。 15.1 功能说明 每个 SPI 模块由一个 16 位移位寄存器(SPIxSR,其中 x = 1 或 2)和一个缓冲器寄存器(SPIxBUF)组成;移 位 寄 存 器 用 来 移 入 和 移 出 数 据。一 个 控 制 寄 存 器 (SPIxCON)用来配置模块。此外,一个状态寄存器 (SPIxSTAT)用来表明各种状态条件。 串行接口有 4 个引脚:SDIx (串行数据输入)、 SDOx (串行数据输出) 、 SCKx (移位时钟输入或输出)以 及 SSx (低电平有效从选择 )。 在主模式下工作时, SCK 是时钟输出,但在从模式下 它是时钟输入。 一组 8 或 16 个时钟脉冲将数据位从 SPIxSR 移出到 SDOx 引脚,同时将 SDIx 引脚的数据位移入 SPIxSR。 当传输完成后将产生中断,相应的中断标志位(SPI1IF 或 SPI2IF)置 1。通过中断允许位(SPI1IE 或 SPI2IE) 可以禁止该中断。 接 收 操 作 是 双 缓 冲 的。当 接 收 完 字 节 时,将 字 节 从 SPIxSR 送到 SPIxBUF。 当从 SPIxSR 传输新数据到 SPIxBUF 时,如果接收缓 冲器满,模块将置 1 SPIROV 位,表明产生溢出条件。 数据从 SPIxSR 向 SPIxBUF 的传送不会完成,新数据 将丢失。当 SPIROV 为 1 时,模块将不会对 SCK 电平 跳变进行响应;实际上会禁止模块,直到用户软件读 SPIxBUF 为止。 发送写操作同样也是双缓冲的。用户写入 SPIxBUF。当 主器件或从器件传输完成后,移位寄存器 (SPIxSR) 的内容将送至接收缓冲器。如果已经向缓冲器寄存器写 了任何发送数据,发送缓冲器的内容将送至 SPIxSR。 于是,接收到的数据存放在 SPIxBUF 中,而 SPIxSR 中 的发送数据已经准备就绪,可进行下一次传输。 注: 在主模式下,通过对系统时钟进行预分频来产生时钟。 只要数据写入 SPIxBUF 就会被发送。在最后一个位传 送的过程中产生中断。 在从模式下, SCK 上出现外部时钟时,进行数据的发 送和接收。同样,当最后一个位被锁存时产生中断。如 果使能了 SSx 控制,那么仅当 SSx 为低时使能发送和 接收。在 SSx 模式下,当 SSx 为高时 SDOx 输出将被 禁止。 提供给模块的时钟是 FOSC/4。而后,使用主预分频因子 (PPRE<1:0>)和辅助预分频因子 (SPRE<2:0>),对 这个时钟进行分频。 CKE 位决定发送的时钟边沿,是 在时钟从有效状态跳变到空闲状态进行发送,还是反 之。CKP 位选择时钟的空闲状态(高电平或低电平)。 15.1.1 字和字节通信 控制位 MODE16(SPIxCON<10>)允许模块在 8 位或 16 位模式下通信。16 位通信,除了发送的位数是 16 而 不是 8 以外,与 8 位通信相同。 在更改 MODE16 位之前,用户软件必须禁止模块。用 户更改 MODE16 位时, SPI 模块将复位。 8 位和 16 位工作之间的基本区别是, 8 位工作模式下 数据是从 SPIxSR 的 bit 7 开始发送的;而在 16 位工作 模式下,则是从 SPIxSR 的 bit 15 开始发送的。在两种 模式下,数据都会移入 SPIxSR 的 bit 0。 15.1.2 SDOx 禁止 SPIxCON 寄存器中的控制位 DISSDO,用来禁止 SDOx 输出。这样可以使 SPIx 模块配置为仅输入的工作模式。 SDO 也可用作一般 I/O 口。 15.2 帧 SPI 支持 当工作在主模式或从模式时,模块支持基本的帧 SPI 协 议。控制位 FRMEN 使能帧 SPI 模式支持,并使 SSx 引 脚用作帧同步脉冲 (FSYNC)功能。控制位 SPIFSD 决定 SSx 引脚是输入还是输出 (即,模块是接收还是 产生帧同步脉冲)。帧脉冲在一个 SPI 时钟周期内是高 电平有效脉冲。当帧同步使能时,仅在 SPI 时钟的下一 个发送边沿开始发送数据。 发 送 缓 冲 器 (SPIxTXB)和 接 收 缓 冲 器 (SPIxRXB)都映射到相同的寄存器地址 SPIxBUF。 2007 Microchip Technology Inc. DS70118G_CN 第91 页 dsPIC30F2010 图 15-1: SPI 框图 内部 数据总线 读 写 SPIxBUF SPIxBUF 发送 接收 SPIxSR SDIx bit 0 SDOx 移位 时钟 SS & FSYNC 时钟 控制 控制 SSx 边沿 选择 主预分频器 辅助 预分频器 1:1-1:8 SCKx 1:1, 1:4, 1:16, 1:64 FCY 使能主时钟 注: x = 1 或 2。 图 15-2: SPI 主 / 从器件连接 SPI 主器件 SPI 从器件 SDOx SDIy 串行输入缓冲器 (SPIxBUF) 串行输入缓冲器 (SPIyBUF) SDIx 移位寄存器 (SPIxSR) SDOy LSb MSb MSb SCKx 处理器 1 移位寄存器 (SPIySR) 串行时钟 LSb SCKy 处理器 2 注: x = 1 或 2, y = 1 或 2。 DS70118G_CN 第92 页 2007 Microchip Technology Inc. dsPIC30F2010 15.3 从选择同步 SSx 引脚允许同步从模式。必须使用 SSx 引脚控制使能 位 (SSEN = 1)把 SPI 配置为 SPI 从模式。当 SSx 引 脚为低时,使能发送和接收且驱动 SDOx 引脚。当 SSx 引脚变高时,将不再驱动 SDOx 引脚。另外,可以重新 同步 SPI 模块,所有的计数器 / 控制电路都将复位。于 是,当 SSx 引脚再次为低时,发送 / 接收又将从 MSb 开始,即使 SSx 是在发送 / 接收过程中变高。 15.4 CPU 休眠模式期间的 SPI 工作 在休眠模式期间,SPI 模块关闭。SPIx 模块正在进行处 理时,如果 CPU 进入休眠模式,则发送 / 接收将中止。 在休眠模式下,发送器和接收器将停止。但进入或退出 休眠模式不影响寄存器内容。 15.5 CPU 空闲模式期间的 SPI 工作 当器件进入空闲模式时,所有的系统时钟源继续工作。 SPISIDL 位(SPIxSTAT<13>)选择 SPI 模块在空闲模 式下是停止工作还是继续工作。 如果 SPISIDL = 0,模 块将继续工作。如果 SPISIDL = 1,模块将停止。 2007 Microchip Technology Inc. DS70118G_CN 第93 页 SPI1 寄存器映射 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 SPI1STAT 0220 SPIEN — SPISIDL — — — — — — SPIROV — — — — SPITBF SPIRBF 0000 0000 0000 0000 SPI1CON 0222 — FRMEN SPIFSD — SMP CKE SSEN CKP MSTEN SPRE2 SPRE1 SPRE0 PPRE1 PPRE0 SPI1BUF 0224 DISSDO MODE16 发送和接收缓冲器 图注: u = 未初始化位 注: 有关寄存器中各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 Bit 0 复位状态 0000 0000 0000 0000 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第94 页 表 15-1: 2007 Microchip Technology Inc. dsPIC30F2010 16.0 I2C™ 模块 16.1 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 I2C 模块(16 位接口)为 I2C 串行通信标准的从模式和多 主器件模式提供完全的硬件支持。 功能说明 硬件完全实现了 I2C 标准和快速模式规范的全部主从功 能,以及 7 位和 10 位寻址。 从而, I2C 模块既可作为 I2C 总线上的主器件工作,也 可作为 I2C 总线上的从器件工作。 16.1.1 各种 I2C™ 模式 模块具有以下主要特性: 支持 I2C 模块工作在以下模式: I2C 接口支持主、从模式工作。 I2C 从模式支持 7 位和 10 位地址。 I2C 主模式支持 7 位和 10 位地址。 I2C 端口允许主器件和从器件之间的双向传输。 I2C 端口的串行时钟同步可以用作握手机制来暂停 和继续串行传输 (SCLREL 控制)。 • I2C 支持多主器件工作;检测总线冲突并相应地进 行仲裁。 • 7 位地址的 I2C 从模式 • 10 位地址的 I2C 从模式 • 7 位或 10 位地址的 I2C 主模式 • • • • • 图 16-1: 参见图 16-1 中的 I2C 编程模型。 16.1.2 I2C™ 模块的引脚配置 I2C 有一个双引脚接口,SCL 引脚是时钟线,SDA 引脚 是数据线。 编程模型 I2CRCV (8 位) bit 7 bit 0 bit 7 bit 0 I2CTRN(8 位) I2CBRG(9 位) bit 8 bit 0 I2CCON (16 位) bit 15 bit 0 bit 15 bit 0 I2CSTAT(16 位) I2CADD(10 位) bit 9 16.1.3 I2C™ 寄存器 I2CCON 和 I2CSTAT 分别是控制寄存器和状态寄存器。 I2CCON 寄存器是可读且可写的。I2CSTAT 的低 6 位是 只读的,它的其余位则是可读且可写的。 I2CRSR 是移位寄存器,用来对数据进行移位。I2CRCV 是接收缓冲寄存器,可写入、读出数据字节,如图 15-1 所示。 I2CTRN 是发送寄存器,发送操作期间,字节将 会写入 I2CTRN,如图 16-2 所示。 2007 Microchip Technology Inc. bit 0 I2CADD 寄存器存放从地址。状态位 ADD10 表明是否为 10 位地址模式。 I2CBRG 用来保存波特率发生器 (BRG)的重载值。 在进行接收时,I2CRSR 和 I2CRCV 一起形成双缓冲接 收器。在 I2CRSR 接收到一个完整的字节后,字节被送 至 I2CRCV 并产生中断脉冲。在发送期间,I2CTRN 不 是双缓冲的。 注: 在 10 位寻址方式下,在重复启动条件之 后,用户只需匹配前 7 位地址。 DS70118G_CN 第95 页 dsPIC30F2010 图 16-2: I2C™ 框图 内部 数据总线 I2CRCV 读 SCL 移位 时钟 I2CRSR LSB SDA 地址匹配 匹配检测 写 I2CADD 读 启动和停止位 检测 I2CSTAT 写 控制逻辑 启动、重复启动 和停止位产生 写 I2CCON 冲突 检测 应答 产生 时钟 延长 读 读 写 I2CTRN LSB 移位 时钟 读 重载 控制 BRG 递减 计数器 DS70118G_CN 第96 页 写 I2CBRG FCY 读 2007 Microchip Technology Inc. dsPIC30F2010 16.2 I2C™ 模块地址 I2CADD 寄存器包含从模式地址,它是 10 位宽的寄存 器。 如果 A10M 位 (I2CCON<10>)为 0,模块把地址解释 为7位地址。在接收到地址时,将收到的地址与I2CADD 寄存器中的低 7 位进行比较。 如果 A10M 位为 1,将认为地址是 10 位地址。在接收 地址时,将收到的地址与二进制数 “11110 A9 A8” (其中 A9 和 A8 是 I2CADD 的最高两位)进行比较。如 果匹配的话,下一个地址将与 I2CADD 的低 8 位进行比 较,这是 10 位寻址协议规定的。 16.3.2 如果地址匹配时,接收到的 R_W 位是 0,就将启动接 收模式。在 SCL 上升沿采样进入的位。接收到 8 个位之 后,如果 I2CRCV 未满或者 I2COV 没有置 1,I2CRSR 中的数据将被送至 I2CRCV。在第九个时钟发送 ACK。 如果 RBF 标志置 1,表明 I2CRCV 仍然存有前一次收到 的数据 (RBF = 1),则不发送 ACK ;然而,仍将产生 中断脉冲。如果出现溢出, I2CRSR 的内容不会被装载 到 I2CRCV 中。 注: dsPIC30F 支持的 7 位 I2C™ 从 地址 表 16-1: 0x00 从模式接收 如果 I2COV 位 为 1 且 RBF 标志为 0,将 装入 I2CRCV。在这种情况下,要对 I2CRCV进行读操作,但在下一次接收操作 发生之前,不会清零 I2COV 位。不发送应 答(ACK = 1),但 I2CRCV 位会被更新。 广播呼叫地址或启动字节 保留 16.4 0x08-0x77 Hs 模式主机码 有效 7 位地址 0x78-0x7B 有效 10 位地址 (低 7 位) 在 10 位寻址方式下,基本的接收和发送操作与 7 位寻 址方式下的操作相同。不过,地址匹配的判据更加复 杂。 0x7C-0x7F 保留 0x01-0x03 0x04-0x07 16.3 I2C™ 7 位从模式的工作 一旦使能 (I2CEN = 1),从模块将等待一个启动位出 现 (即, I2C 模块 “空闲”)。检测到启动位之后, 8 个位将移入I2CRSR,然后地址将与I2CADD进行比较。 在 7 位寻址方式下 (A10M = 0),位 I2CADD<6:0> 与 位 I2CRSR<7:1> 进行比较,而 I2CRSR<0> 是 R_W 位。所有进入的位都是在 SCL 的上升沿采样的。 如 果 地 址 匹 配 的 话,将 发 送 一 个 应 答,在 第 九 个 位 (ACK)的下降沿,从事件中断标志 (SI2CIF)置 1。 地址匹配不影响 I2CRCV 缓冲器或 RBF 位的内容。 16.3.1 从模式发送 如果收到的 R_W 位为 1,串行端口将进入发送模式。模 块将在第九位发送 ACK ,并使 SCL 保持为 0,直到 CPU 写 I2CTRN 进行响应为止。通过把 SCLREL 置 1 释 放 SCL,而后数据的 8 个位被移出。数据位在 SCL 下 降沿移出,因此 SCL 为高 (参见时序图)时 SDA 有 效。将在第九个时钟脉冲的下降沿发出中断脉冲,而与 从主器件接收到的 ACK 状态无关。 2007 Microchip Technology Inc. I2C™ 10 位从模式的工作 I2C规范要求,对于写操作,必须在一个启动位后跟两个 地址字节来寻址从器件。 A10M控制位置 1表明I2CADD中的地址是10位地址,而 不是 7 位地址。报文地址首字节的地址检测协议,对于 7位和10位报文地址而言,是完全相同的,但首字节各位 进行比较的机制不同。 I2CADD 存放完整的 10 位地址。在接收到启动位后的地 址时, I2CRSR <7:3> 与立即数 11110 (缺省 10 位地 址)进行比较,I2CRSR<2:1> 与 I2CADD<9:8> 进行比 较。如果出现匹配且 R_W = 0,则发出中断脉冲。 ADD10 位清零,表明地址部分匹配。如果地址不匹配, 或者 R_W = 1,则 ADD10 位清零,模块返回到空闲状 态。 然后,接收地址的低字节,与 I2CADD<7:0> 进行比较。 如果出现匹配,则产生中断脉冲且置 1 ADD10 位,表 明 10 位地址完全匹配。如果地址不匹配的话, ADD10 位清零,模块返回到空闲状态。 DS70118G_CN 第97 页 dsPIC30F2010 16.4.1 10 位地址从模式接收 一旦以上述方式使用完整的10位地址寻址到从器件(我 们把这个状态叫做“PRIOR_ADDR_MATCH”),主器 件就可以开始送数据字节,从器件接收。 16.4.2 10 位地址从模式发送 一旦寻址到从器件,主器件就可以产生重复的启动位, 复位地址的高字节,并置 1 R_W 位,但不产生停止位, 于是开始进行从器件发送操作。 16.5 自动时钟低电平时间延长 当模块工作在从模式下时,通过时钟低电平时间延长, 模块能够同步读缓冲器与写主器件。 16.5.1 发送时钟低电平时间延长 16.5.3 从接收模式下,当 STREN 置 1 时,缓冲器已满时 SCL 线保持为低。延长 SCL 输出低电平时间的方法,对于使 用 7 位和 10 位寻址的从接收模式是相同的。 在接收序列第九个时钟之后进行时钟低电平时间延长。 在 ACK 序列末端的第九个时钟的下降沿,如果 RBF 位 置 1 的话, SCLREL 位将自动清零,这将强制 SCL 输 出保持为低。在允许继续接收之前,用户中断服务程序 必须置 1 SCLREL 位。通过使 SCL 线保持为低,在主 器件启动另一个接收序列之前,用户就有时间执行中断 服务程序并读出 I2CRCV 的内容。这将防止缓冲器溢 出。 注 在 10 位或 7 位地址发送模式下,如果 TBF 位清零(这 表明缓冲器为空) ,则在第九个时钟的下降沿后清零 SCLREL 位,就实现了时钟延长。 注 1: 如果用户读 I2CRCV 的内容,在第九个时 钟下降沿之前置 1 RBF 位,则 SCLREL 位 将不会被清零,也不会发生时钟延长。 2: 可以在软件中置 1 SCLREL 位,无论 RBF 位的状态为何。为了防止溢出,在下一个 接收序列之前,用户应该在中断服务程序 中清零 RBF 位。 在从发送模式下,始终进行时钟延长,无论 STREN 位 的状态为何。 在发送序列的第九个时钟之后,发生时钟同步。如果器 件在第九个时钟的下降沿采样到 ACK,并且 TBF 位仍 然清零的话,则 SCLREL 位自动清零。 SCLREL 的清 零,将使得 SCL 线变低。在允许继续发送之前,用户中 断服务程序必须置 1 SCLREL 位。通过使 SCL 线保持 为低,在主器件启动另一个发送序列之前,用户就有时 间执行中断服务程序并载入 I2CTRN 的内容。 7 位寻址时的时钟低电平时间延长 (STREN = 1) 16.5.4 10 位寻址时的时钟低电平时间延长 (STREN = 1) 在寻址过程中自动进行时钟低电平时间延长。由于模块 有寄存器存放完整的地址,协议不必等待地址更新。 寻址过程完成后,每个数据接收或发送序列都要进行时 钟延长,如前所述。 1: 如果用户载入 I2CTRN 的内容,在第九个 时钟下降沿之前置 1 TBF 位,则 SCLREL 位将不会被清零,也不会发生时钟延长。 2: 可以在软件中置 1 SCLREL 位,无论 TBF 位的状态为何。 16.5.2 接收时钟低电平时间延长 I2CCON 寄存器中的 STREN 位可以用来使能从件接收 模式下的时钟低电平时间延长。当 STREN 位置 1 时, SCL 引脚将在每个数据接收序列结束后保持为低。 DS70118G_CN 第98 页 2007 Microchip Technology Inc. dsPIC30F2010 16.6 软件控制的时钟低电平时间延长 (STREN = 1) 当 STREN 位为 1 时,软件可清零 SCLREL 位,从而软 件能够控制时钟延长。思路是把写 SCLREL 位的操作与 SCL时钟进行同步。清零 SCLREL 位不会使SCL输出保 持为低,除非模块检测到 SCL 输出的下降沿且采样到 SCL 为 低。在 SCL 线 采 样 为 低 时,如 果 用户清零 SCLREL 位,则 SCL 输出将保持为低。SCL 输出将保持 为低,一直到 SCLREL 位置 1,且 I2C 总线上所有其他 器件都已经释放了 SCL。这确保了写 SCLREL 位的操 作,不会违背 SCL 的最小高电平时间要求。 如果 STREN 位为 0,软件对 SCLRE 位的写操作将被 忽略,不会对 SCLREL 位产生影响。 16.7 中断 I2C 模块产生两个中断标志:MI2CIF(I2C 主中断标志) 和 SI2CIF (I2C 从中断标志)。 MI2CIF 中断标志,会 在主器件报文事件完成时置1(从而激活中断)。SI2CIF 中断标志,在检测到发往从器件的报文时置 1 (从而激 活中断)。 16.8 斜率控制 对于快速模式 (400 kHz), I2C 标准要求对 SDA 和 SCL 信号进行斜率控制。如果需要的话,用户可通过控 制位 DISSLW 来禁止斜率控制。对于 1 MHz 模式,必 须禁止斜率控制。 16.9 IPMI 支持 控 制 位 IPMIEN 允 许 模 块 支 持 智 能 外 设 管理接口 (IPMI)。当 IPMIEN 位置 1 时,模块将接受并操作所 有地址。 16.10 广播呼叫地址支持 广播呼叫地址能寻址所有器件。当使用广播呼叫地址 时,理论上所有器件都应该以应答信号作出响应。 如果广播呼叫地址匹配,第八个时钟之后 I2CRSR 被送 至 I2CRCV, RBF 标志在第九个位 (ACK 位)的下降 沿置 1,主事件中断标志 (MI2CIF)置 1。 在响应中断时,通过读 I2CRCV 的内容可以检测到中断 的来源,从而确定地址是特定于器件的还是广播呼叫地 址。 16.11 I2C™ 主模式支持 用作主器件时,支持下列 6 个操作: • • • • • • 在 SDA 和 SCL 上产生启动条件。 在 SDA 和 SCL 上产生重复启动条件。 写 I2CTRN 寄存器,启动数据 / 地址的发送。 在 SDA 和 SCL 上产生停止条件。 配置 I2C 端口,用以接收数据。 在数据字节接收完成后产生 ACK 条件。 16.12 I2C™ 主模式的工作 主器件产生所有的串行时钟脉冲、启动和停止条件。出 现停止条件或重复的启动条件,则传输结束。因为重复 的启动条件是下一次串行传输的开始,此时不会释放 I2C 总线。 在主发送模式下,串行数据通过 SDA 输出, SCL 输出 串行时钟。发送的第一个字节是接收器件 (从器件)地 址 (7 位)和数据方向位 (R_W)。此时,数据方向位 是逻辑 0。一次发送 8 位串行数据。在每个字节发送完 之后,接收到一个 ACK 位。输出启动条件和停止条件, 来表明串行传输的开始和结束。 在主接收模式下,发送的第一个字节是发送器件(从器 件)地址 (7 位)和数据方向位。此时,数据方向位 (R_W)是逻辑 1。这样,主器件发送的第一个字节是 一个 7 位从地址,后跟一个表明接收的 1。通过 SDA 接 收串行数据,SCL 输出是串行时钟。一次接收 8 位串行 数据。在每个字节接收之后,要发送一个 ACK 位。启 动条件和停止条件,表明发送的开始和结束。 广播呼叫地址是 I2C 协议为特定目的保留的八个地址之 一。它由全 0 地址位组成,且 R/W = 0。 当广播呼叫使能位 GCEN 置 1 (I2CCON<15> = 1) 时,识别广播呼叫地址。在检测到启动位后,将 8 位 移入 I2CRSR,并将地址与 I2CADD 进行比较,同时 也与广播呼叫地址进行比较,广播呼叫地址固化在硬件 中。 2007 Microchip Technology Inc. DS70118G_CN 第99 页 dsPIC30F2010 16.12.1 I2C™ 主发送 数据字节、 7 位地址或 10 地址后半部分的发送,通过 简单地把值写入 I2CTRN 寄存器就能完成。当模块处于 等待状态时,用户应该只写 I2CTRN。这将置 1 缓冲器 满标志 (TBF),允许波特率发生器开始计数,并开始 下一次发送。在 SCL 的下降沿后,地址 / 数据的每一个 位将被移出至 SDA 引脚上。发送状态标志位 TRSTAT (I2CSTAT<14>)用来表明主器件是否正在进行发送。 16.12.2 I2C™ 主接收 通过设置接收使能位 RCEN(I2CCON<11>)可以使能 主模式接收。在 RCEN 置 1 之前,I2C 模块必须是空闲 的,否则 RCEN 位被忽略。波特率发生器开始计数,每 次计满返回到零时,在每个时钟的上升沿,SCL 引脚状 态发生翻转,数据移入至 I2CRSR 中。 16.12.3 波特率发生器 (BRG) I2C 在 主模式下,波特率发生器的重载值位于 I2CBRG 寄存器中。波特率发生器装入该值后,发生器递减计数 到 0,然后停止,直到发生再次装入。如果发生时钟仲 裁,例如 SCL 引脚采样为高时,将重载波特率发生器。 根据 I2C 标准,FSCK 可以是 100 kHz 或 400 kHz 。然 而,用户可以指定任何波特率,最高到 1 MHz。I2CBRG 的值不能是 0 或 1。 公式 16-1: I2CBRG 值 Fcy Fcy I2CBRG = ----------- – --------------------------- – 1 Fscl 1, 111, 111 16.12.4 16.12.5 多主器件通信、总线冲突与总线仲裁 多主器件工作的支持,是通过总线仲裁来实现的。当主 器件在 SDA 引脚上输出地址 / 数据位时,第一个主器件 使 SDA 悬空为高电平从而输出一个 “1”,而另一个主 器件要输出 “0”,就会发生仲裁。当 SCL 引脚悬空为 高时,数据应该是稳定的。如果 SDA 上预期数据是 “1”,但从 SDA 引脚采样到的数据是 “0”,那么就发 生了总线冲突。主器件将置 1 MI2CIF 脉冲,并把 I2C 端 口的主器件部分复位到空闲状态。 如果正在进行发送时产生总线冲突,将停止发送,清除 TBF标志,释放SDA和SCL线,而后可向I2CTRN写入数 据。当用户执行 I2C 主事件中断服务程序时, 如果 I2C 总线空闲 (即 P 位置 1),用户可以通过产生一个启动 条件继续通信。 当总线冲突发生在启动、重复启动、停止或应答条件期 间,将中止这些条件,释放 SDA 和 SCL 线,清零 I2CCON 寄存器中对应的控制位。当用户执行总线冲突 中断服务程序时, 如果 I2C 总线空闲,用户可以通过产 生一个启动条件继续通信。 主器件将继续监测 SDA 和 SCL 引脚,如果停止条件出 现,将置 1 MI2CIF 位。 写 I2CTRN 将从第一个数据位开始数据的发送,无论总 线发生冲突时发送停止在何处。 在多主器件环境中,在检测到启动和停止条件时产生中 断,能够确定总线何时空闲。当 I2CSTAT 中 P 位置 1 时,器件可以控制 I2C 总线;否则,总线空闲,且 S 和 P 位清零。 时钟仲裁 在任何接收、发送或重复启动 / 停止条件期间,当主器 件释放了 SCL 引脚 (允许 SCL 悬空为高电平),就会 出现时钟仲裁。当释放 SCL 引脚时,波特率发生器暂停 计数,直到 SCL 引脚被实际采样到高电平为止。当 SCL 引 脚 被 采 样 到 高 电 平 时,波 特 率 发 生 器 重 新 装 载 I2CBRG 的内容并开始计数。在外部器件使时钟保持为 低时,这可以始终保证SCL高电平时间至少为一个BRG 计满返回计数周期。 DS70118G_CN 第100 页 2007 Microchip Technology Inc. dsPIC30F2010 16.13 CPU 休眠和空闲模式期间 I2C™ 模块 的工作 16.13.1 CPU 休眠模式期间 I 2C™ 的工作 当器件进入休眠模式时,模块的全部时钟源都将关闭并 保持在逻辑 0。如果休眠发生在发送过程中,且时钟停 止时状态机部分进入发送,发送将中止。类似地,如果 休眠出现在接收过程中,接收也将中止。 16.13.2 CPU 空闲模式期间 I2C™ 的工作 对于 I2C, I2CSIDL 位选择 CPU 空闲时模块是停止还 是继续工作。如果 I2CSIDL = 0,模块将继续工作;如 果 I2CSIDL = 1,模块将停止工作。 2007 Microchip Technology Inc. DS70118G_CN 第101 页 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 0200 — — — — — — — — I2CTRN 0202 — — — — — — — — I2CBRG 0204 — — — — — — — I2CCON 0206 I2CEN — A10M DISSLW SMEN GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN 0001 0000 0000 0000 I2CSTAT 0208 ACKSTAT — BCL — GCSTAT ADD10 IWCOL I2COV D_A P S R_W RBF TBF 0000 0000 0000 0000 SFR 名称 I2CRCV I2CADD 020A I2CSIDL SCLREL IPMIEN — — — TRSTAT — — — — Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0000 0000 0000 0000 发送寄存器 0000 0000 1111 1111 波特率发生器 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 复位状态 接收寄存器 地址寄存器 0000 0000 0000 0000 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第102 页 I2C™ 寄存器映射 表 16-2: 2007 Microchip Technology Inc. dsPIC30F2010 17.0 17.1 通用异步收发器 (UART)模块 UART 模块的主要特性是: 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN) • 全双工 8 位或 9 位数据通信 • 偶校验、奇校验或无奇偶校验选项 (对于 8 位数 据) • 一或两个停止位 • 完全集成的波特率发生器,具有 16 位预分频器 • 在 30 MHz 指令速度时,波特率范围为 38 bps 到 1.875 Mbps • 4 字深度发送数据缓冲器 • 4 字深度接收数据缓冲器 • 奇偶、帧和缓冲溢出错误检测 • 支持仅在地址检测 (第 9 位 = 1)时中断 • 独立的发送和接收中断 • 用于诊断支持的环回模式 本章介绍了通用异步接收器/发送器通信模块。 注: 由于 dsPIC30F2010 器件只拥有一个 UART, 因此所有 Ux... 中的 x 仅指 x = 1。 图 17-1: UART 模块概述 UART 发送器框图 内部数据总线 控制和状态位 写 写 UTX8 UxTXREG 低字节 发送控制 – 控制 TSR – 控制缓冲器 – 产生标志 – 产生中断 装载 TSR UxTXIF UTXBRK 数据 UxTX 发送移位寄存器(UxTSR) ‘0’ (启动) ‘1’(停止) 奇偶校验位 奇偶校验位 发生器 16 分频器 来自波特率发生器的 16X 波特率时钟 控制 信号 注:x = 1。 2007 Microchip Technology Inc. DS70118G_CN 第103 页 dsPIC30F2010 图 17-2: UART 接收器框图 内部数据总线 16 写 读 读 UxMODE URX8 读 写 UxSTA UxRXREG 低字节 接收缓冲器控制 – 产生标志 – 产生中断 – 移位数据字符 装载 RSR 至缓冲器 1 接收移位寄存器 (UxRSR) 0 · 启动位检测 · 奇偶校验 · 停止位检测 · 移位时钟发生 · 唤醒逻辑 控制 信号 FERR UxRX 8-9 PERR LPBACK 来自 UxTX 16 分频器 来自波特率发生器的 16X 波特率时钟 UxRXIF 注:x = 1。 DS70118G_CN 第104 页 2007 Microchip Technology Inc. dsPIC30F2010 17.2 17.2.1 使能和设置 UART 使能 UART UART模块的使能,是通过置1 UxMODE寄存器(其中, x = 1)中的 UARTEN 位来进行的。一旦使能,UxTX 和 UxRX 引脚被分别配置为输出和输入,这改写了相应 I/O 端口引脚的 TRIS 和 LATCH 寄存器位的设置。 在没有 传输发生时, UxTX 引脚状态为逻辑 1。 17.2.2 禁止 UART 通过清零UxMODE寄存器中的UARTEN位,禁止UART 模块。 这是任何复位后的默认状态。 如果 UART 被禁 止,那么所有的 I/O 引脚均用作端口引脚,受相应端口 引脚的锁存器和 TRIS 位的控制。 禁止 UART 模块将使缓冲器复位为空状态。缓冲器中的 所有字符都将丢失,同时波特率计数器也将复位。 当 UART 模块禁止时,所有与之相关的错误和状态标志 都将复位。URXDA、OERR、FERR、PERR、UTXEN、 UTXBRK 和 UTXBF 位被清零,而 RIDLE 和 TRMT 被 置 1。 其他的控制位,包括 ADDEN、 URXISEL<1:0> 和 UTXISEL,以及 UxMODE 和 UxBRG 寄存器则不受 影响。 当 UART 处于工作状态时,对 UARTEN 位清零将中止 所有等待的发送和接收,同时还将像上面定义的那样将 模块复位。再次使能 UART 将使用同样的配置重新启动 UART。 17.2.3 备用 I/O 通过置 1 ALTIO 位 (UxMODE<10>)可使能备用 I/O 功能。如果 ALTIO = 1, UART 模块将使用 UxATX 和 UxARX 引脚 (分别为备用发送引脚和备用接收引脚) 而不是 UxTX 和 UxRX 引脚。如果 ALTIO = 0,UART 模 块将使用 UxTX 和 UxRX 引脚。 17.2.4 设定数据、奇偶校验以及停止位选择 UxMODE 寄存器中的控制位 PDSEL<1:0>,用来选择发 送时使用的数据长度和奇偶校验。数据长度可以是 8 位,具有偶校验位、奇校验位或没有校验位,数据长度 也可以是没有校验位的 9 位。 STSEL位决定在数据发送期间,是使用一个还是两个停 止位。 17.3 发送数据 17.3.1 8 位数据模式下的发送 为了发送 8 位数据,必须执行下列步骤: 1. 2. 3. 设置 UART: 首先,必须选择数据长度、奇偶校验和停止位的 个数。然后,在 UxMODE 和 UxSTA 寄存器中设 置发送和接收中断允许位以及优先级位。另外, 必须把适当的波特率值写入 UxBRG 寄存器。 通过置 1 UARTEN 位 (UxMODE<15>),使能 UART。 置 1 UTXEN 位(UxSTA<10>),从而使能发送。 在 UARTEN 位被置 1 使能 UART 发送 之后,必须置 1 UTXEN 位。 4. 向 UxTXREG 的低字节写入要发送的字节。它将 被立即送往发送移位寄存器 (UxTSR),在波特 率时钟的下一个上升沿期间,串行位流将开始移 出移位寄存器。另一种方法是,在 UTXEN = 0 时 可写入数据字节,而后,用户可以把 UTXEN 置 1。这将使串行位流立即开始,因为波特率时钟 将从清零状态启动。 5. 将产生发送中断,这取决于中断控制位UTXISEL (UxSTA<15>)的值。 注: 17.3.2 9 位数据模式下的发送 9 位数据发送涉及的步骤,类似于 8 位数据发送,但是必 须将一个 16 位数据字 (其中高 7 位始终为 0)写入 UxTXREG 寄存器。 17.3.3 发送缓冲器 (UXTXB) 发送缓冲器为 9 位宽、 4 字符深度。把发送移位寄存器 (UxTSR)算上的话,用户实际上有一个 5 级深度的 FIFO (先进先出)缓冲器。 UTXBF 状态位 (UxSTA<9>)表明发送缓冲器是否已满。 如果用户试图写已满的缓冲器,新数据将不会被 FIFO 接收,缓冲器内也不会有数据移位。这确保了能够从缓 冲器溢出条件中恢复。 FIFO 在任何器件复位时复位,但当器件进入省电模式 或从省电模式唤醒时, FIFO 不受影响。 UART 的默认(上电)设置是 8 位、无校验位以及 1 个停 止位 (通常表示为 8, N, 1)。 2007 Microchip Technology Inc. DS70118G_CN 第105 页 dsPIC30F2010 17.3.4 发送中断 17.4.2 接收缓冲器 (UXRXB) 发送中断标志 (U1TXIF 或 U2TXIF)位于相应的中断 标志寄存器中。 接收缓冲器是 4 字深缓冲器。加上接收移位寄存器 (UxRSR),用户实际上有一个 5 字深的 FIFO 缓冲器。 发送器产生一个边沿来置 1 UxTXIF 位。产生中断的条 件取决于 UTXISEL 控制位: URXDA (UxSTA<0>) = 1 表明接收缓冲器中还有数 据。 URXDA = 0 意味着缓冲器为空。如果用户试图读 空缓冲器,读取的是缓冲器中的原有值,在 FIFO 中不 会产生数据移位。 a) 如果 UTXISEL = 0,当从发送缓冲器传输一个字 到发送移位寄存器 (UxTSR)时,将产生中断。 这意味着,发送缓冲器中至少有一个空字。 b) 如果 UTXISEL = 1,当从发送缓冲器传输一个字 到发送移位寄存器 (UxTSR)且缓冲器为空时, 将产生中断。 工作期间可以在这两种中断方式之间切换,有时这提供 了更大的灵活性。 17.3.5 发送间隔符 任何器件复位时, FIFO 都将复位。当器件进入省电模 式或从省电模式中唤醒时,它不受影响。 17.4.3 把 UTXBRK 位 (UxSTA<11>)置 1,将使 UxTX 线被 驱动为逻辑 0。 UTXBRK 位改写了全部的发送器活动。 从而,通常用户应该在置 1 UTXBRK 之前等待发送器空 闲。 a) 为了发送中止字符,必须由软件置 1 UTXBRK 位,而且 保持该位置 1 至少 13 个波特率时钟周期。然后通过软 件将 UTXBRK 位 清 零,产 生 停 止 位。在 再 次 装载 UTXBUF 或开始其他发送活动前,用户必须等待至少一 或两个波特率时钟周期,以便保证产生有效的停止位。 b) 17.4 17.4.1 在接收 8 位或 9 位数据时,必须执行下列步骤: 1. 2. 3. 4. 5. c) 接收数据 在 8 位或 9 位数据模式下接收 设置 UART(见第 17.3.1 节“8 位数据模式下的 发送”)。 使能 UART(见第 17.3.1 节“8 位数据模式下的 发送”)。 当接收到一个或多个数据字时,将产生接收中 断,这取决于接收中断的设置 (由 URXISEL 位 (UxSTA<7:6>)指定)。 读 OERR 位,判断是否产生溢出错误。OERR 位 必须在软件中复位。 从 UxRXREG 中读取接收数据。对 UxRXREG 的 读操作,将使下一个字移动到接收 FIFO 的顶端, 且将更新 PERR 和 FERR 值。 DS70118G_CN 第106 页 接收中断 可以 从相应的 中断标 志寄存器 中读取 接收中断 标志 (U1RXIF) 。中断标志由接收器产生的边沿来进行置 1。置 1 接收器中断标志的条件,取决于 URXISEL<1:0> (UxSTA<7:6>)控制位的设定。 如果URXISEL<1:0> = 00或01,每当一个数据字 从接收移位寄存器 (UxRSR)送往接收缓冲器 后就会产生中断。接收缓冲器中可以有一个或多 个字符。 如果 URXISEL<1:0> = 10,当一个字从接收移位 寄存器 (UxRSR)送往接收缓冲器,使得缓冲 器中有 3 个字符时,就会产生中断。 如果 URXISEL<1:0> = 11,当一个字从接收移位 寄存器 (UxRSR)送往接收缓冲器,使得缓冲 器中有 4 个字符(即缓冲器满)时,就会产生中 断。 工作期间可以在这两种中断方式之间切换,尽管正常工 作期间这样做并不可取。 17.5 17.5.1 接收错误处理 接收缓冲器溢出错误 (OERR 位) 如果满足下列全部条件,OERR 位(UxSTA<1>)将置 1: a) b) c) 接收缓冲器满。 接收移位寄存器满,但不能把字符送往接收缓冲 器。 检测到 UxRSR 中字符的停止位,这表明 UxRSR 需要把字符送往缓冲器。 一旦 OERR 置 1,就不会有数据移入 UxRSR (除非在 软件中将 OERR 位清零,或者发生了复位) 。存放在 UxRSR 和 UxRXREG 中的数据继续有效。 2007 Microchip Technology Inc. dsPIC30F2010 17.5.2 帧错误 (FERR) 17.7 环回模式 如果检测到 0 而不是停止位,则 FERR 位(UxSTA<2>) 置 1。如果选用两个停止位,则两个停止位都必须是 1, 否则将置 1 FERR。FERR 位是只读的,它将和收到的 数据一起被送入缓冲器。 任何复位时都将清零 FERR 位。 置 1 LPBACK 位来使能这个特殊的模式,在该模式下 UxTX 引脚从内部连接到 UxRX 引脚。当配置为环回模 式时, UxRX 引脚与内部 UART 接收逻辑断开。但是, UxTX 引脚仍然正常工作。 17.5.3 a) b) c) 奇偶校验错误 (PERR) 如 果 接 收 到 的 字 奇 偶 校 验 错 误 的 话, PERR 位 (UxSTA<3>)将置 1。此错误位仅在选取了奇偶校验模 式 (奇或偶)时适用。 PERR 位是只读的,它将和收 到 的数 据一起被 送入 缓 冲器。 任何复 位时都将 清零 PERR 位。 17.5.4 空闲状态 当接收器处于活动状态(即,在初次检测到启动位与停 止位完成之间时), RIDLE 位 (UxSTA<4>)为 0。在 停止位完成与检测到下一个启动位之间时,RIDLE 位为 1,表明 UART 空闲。 17.5.5 接收中止符 要选择该模式: 将 UART 配置为所需的工作模式。 设置 LPBACK = 1,使能环回模式。 使能发送,如同第 17.3 节“发送数据”中定义的 那样。 17.8 波特率发生器 UART 有一个 16 位波特率发生器,以便在波特率发生 时获得最大的灵活性。波特率发生器寄存器(UxBRG) 是可读写的。波特率的计算如下: BRG = UxBRG 寄存器中的 16 位值 (0 到 65535) FCY = 指令时钟速度 (1/TCY) 波特率由公式 17-1 给出。 接收器会根据在 PDSEL (UxMODE<2:1>)和 STSEL (UxMODE<0>)中设置的值,计数并等待一定的位时 间数。 公式 17-1: 如果中止超过 13 个位时间,则在 PDSEL 和 STSEL 指 定的位时间数之后,认为接收完成。 URXDA 位置 1, FERR 置 1,接收 FIFO 中装载零,同时产生中断 (若 允许中断)且 RIDLE 位置 1。 从而,可能的最大波特率是 如果模块收到长中止信号,同时接收器检测到了启动 位、数据位和无效的停止位 (这将把 FERR 置 1),那 么接收器在找寻下一个启动位之前,必须等待有效停止 位出现。接收器不能假定线上的中止条件就是下一个启 动位。 中止符被视为一个全 0 的字符,且 FERR 位置 1。中止 符将被装载到缓冲器中。除非接收到停止位,不会再进 行接收。注意,当停止位还没有接收到时,RIDLE 将置 1。 17.6 地址检测模式 波特率 波特率 = FCY / (16*(BRG + 1)) FCY /16 (如果 BRG = 0), 可能的最小波特率是 FCY / (16* 65536)。 对于在 30 MIPS 工作的 16 位波特率发生器,能够达到 的最小波特率是 28.5 bps。 17.9 自动波特率支持 为了让系统确定接收字符的波特率,可选择将输入连接 到所选择的捕捉输入通道。为使能该模式,用户必须对 输入捕捉模块进行设置,以检测启动位的上升沿和下降 沿。 置 1 ADDEN 位(UxSTA<5>)来使能这个特殊的模式, 在此模式下,如果第 9 位 (URX8)值为 1,则表明接 收到的字是一个地址,而不是数据。此模式仅适用于 9 位数据通信。在此模式下, URXISEL 控制位对中断产 生没有任何影响,因为中断 (如果允许的话)仅在接收 到的字的第 9 位为 1 时产生。 2007 Microchip Technology Inc. DS70118G_CN 第107 页 dsPIC30F2010 17.10 UART 在 CPU 休眠和空闲模式下的 工作 17.10.1 UART 在 CPU 休眠模式下的工作 当器件进入休眠模式时,模块的所有时钟源都将关闭, 保持在逻辑 0 状态。如果在发送进行期间进入休眠模式 的话,发送将中止,并且 UxTX 引脚被驱动为逻辑 1。 类似地,如果接收进行期间进入休眠模式,接收将中 止。休眠模式不影响 UxSTA、 UxMODE、发送和接收 的寄存器和缓冲器以及 UxBRG 寄存器。 17.10.2 UART 在 CPU 空闲模式下的工作 对于 UART,USIDL 位选择当器件进入空闲模式时,模 块是停止还是继续工作。 如果 USIDL = 0,模块将在空 闲模式期间继续工作。 如果 USIDL = 1,模块将在空闲 模式下停止工作。 器件进入休眠模式前,如果 WAKE 位(UxMODE<7>) 置 1,那么 UxRX 引脚上的下降沿将产生接收中断。接 收中断选择模式位(URXISEL)对该功能没有影响。如 果接收中断允许,那么这将把器件从休眠中唤醒。为了 产生唤醒中断, UARTEN 位必须置 1。 DS70118G_CN 第108 页 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 17-1: UART1 寄存器映射 地址 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 U1MODE 020C UARTEN — USIDL — — ALTIO — — WAKE LPBACK ABAUD — — RIDLE PERR SFR 名称 Bit 2 Bit 1 Bit 0 复位状态 PDSEL1 PDSEL0 STSEL 0000 0000 0000 0000 U1STA 020E UTXISEL — — — UTXBF TRMT U1TXREG 0210 — — — — — — — UTX8 发送寄存器 0000 000u uuuu uuuu U1RXREG 0212 — — — — — — — URX8 接收寄存器 0000 0000 0000 0000 U1BRG 0214 UTXBRK UTXEN URXISEL1 URXISEL0 ADDEN 波特率发生器预分频器 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 FERR OERR URXDA 0000 0001 0001 0000 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第 109 页 dsPIC30F2010 注: DS70118G_CN 第110 页 2007 Microchip Technology Inc. dsPIC30F2010 18.0 10 位高速模数转换器 (ADC)模 块 ADC 模块具有 6 个 16 位寄存器: • • • • • • 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。 10 位高速模数转换器 (ADC)可将模拟输入信号转换 为 10 位 数 字 值。该 模 块 基 于 逐 次 逼 近寄存器 (Successive Approximation Register,SAR)结构,可 实现最大为 500 ksps 的采样速率。 ADC 模块拥有多达 16 个模拟输入通道,这些模拟输入通过多路开关连接到 4 个采样 / 保持放大器。采样 / 保持电路的输出输入到转 换器,经转换器转换后得到数字结果。可通过软件选择 模 拟 参 考 电 压 为 器 件 供 电 电 压 (AVDD/AVSS)或 (VREF+/VREF-)引脚上的电压。 ADC 具有一个独特的 功能,当器件处于休眠模式时仍能工作。 A/D 控制寄存器 1 (ADCON1) A/D 控制寄存器 2 (ADCON2) A/D 控制寄存器 3 (ADCON3) A/D 输入选择寄存器 (ADCHS) A/D 端口配置寄存器 (ADPCFG) A/D 输入扫描选择寄存器 (ADCSSL) ADCON1、 ADCON2 和 ADCON3 寄存器控制 ADC 的 工作。 ADCHS 寄存器选择要转换的输入通道。 ADPCFG 寄存器用于将端口引脚配置为模拟输入或数 字 I/O。 ADCSSL 寄存器用于选择要扫描的输入通道。 注: 当 ADON = 1 时,不应对 SSRC<2:0>、 ASAM、SIMSAM、SMPI<3:0>、BUFM 和 ALTS 位以及 ADCON3 和 ADCSSL 寄存器 进行写入操作,否则将导致不确定的结果。 图 18-1 给出了 ADC 的框图。 图 18-1: 10 位高速 ADC 功能框图 AVDD AVSS VREF+ VREF- + - AN1 AN1 AN4 AN2 AN5 CH1 ADC 10 位结果 + - AN2 S/H S/H CH2 16 字 10 位 双端口 缓冲器 + - S/H CH3 CH1, CH2, CH3, CH0 采样 AN3 AN0 AN1 AN2 AN3 AN4 AN4 AN5 AN5 + AN1 - 2007 Microchip Technology Inc. 转换逻辑 输入 开关 S/H 采样 / 顺序 控制 总线接口 AN0 AN3 数据 格式 AN0 输入 Mux 控制 CH0 DS70118G_CN 第111 页 dsPIC30F2010 18.1 A/D 结果缓冲器 模块包含一个称为 ADCBUF0...ADCBUFF 的 16 字双端 口只读缓冲器,对 A/D 转换结果进行缓冲。 RAM 为 10 位宽,但读出为不同格式的 16 位字。用户软件不能对 16 个 A/D 转换结果缓冲寄存器 ADCBUF0 至 ADCBUFF 的 内容进行写入操作。 CHPS 位用于选择对多少个通道进行采样。通道数目可 为 1、 2 或 4 个通道不等。如果 CHPS 选择 1 个通道, 则将在一个采样时钟内对 CH0 通道进行采样并转换。结 果将存放在缓冲器中。如果 CHPS 选择 2 个通道,将对 CH0 和 CH1 通道进行采样和转换。如果 CHPS 选择 4 个 通道,则将对 CH0、CH1、CH2 和 CH3 通道进行采样 和转换。 18.2 SMPI位用于选择在中断发生前进行采集/ 转换的次数。 该数值可为每次中断进行采样 1 至 16 次。 转换操作 当 ADC 模块配置完毕后,置 1 SAMP 位将启动采样操 作。可编程位、定时器超时和外部事件等触发源将终止 采集并启动转换。当 A/D 转换完成时,结果将被装入 ADCBUF0...ADCBUFF,且在 SMPI 位指定的采样数之 后 A/D 中断标志位 ADIF 和 DONE 位将被置 1。 进行 A/D 转换时,应遵守以下步骤: 1. 2. 3. 4. 5. 6. 7. 配置 ADC 模块: 配置模拟引脚、参考电压和数字 I/O 选择 A/D 输入通道 选择 A/D 转换时钟 选择 A/D 转换触发源 开启 ADC 模块 配置 A/D 中断 (如果需要): 清零 ADIF 位 选择 A/D 中断优先级 启动采样。 等待所需的采集时间。 触发采样结束,启动转换 等待 A/D 转换完成,可通过以下方式实现: 等待 A/D 中断 等待 DONE 位被置 1 读 A/D 结果缓冲器,清零 ADIF (如果需要)。 18.3 选择转换顺序 几组控制位可用来对 A/D 将输入连接至采样 / 保持通 道、转换通道、写入缓冲器存储器和产生中断的过程进 行选择控制。该过程将由采样时钟进行控制。 用户不能将 CHPS 和 SMPI 位的组合编程设定为指定每 次中断进行 16 次或 8 次转换,具体是 16 次还是 8 次取 决于 BUFM 位的状态。当置 1 时,BUFM 位将 16 字结 果缓冲器 (ADCBUF0...ADCBUFF)分为两个 8 字缓 冲器。每个中断事件将交替写入 8 字缓冲器。BUFM 位 的使用取决于中断之后有多少时间将数据从缓冲器内移 出,而这取决于具体的应用。 如果处理器可在对一个通道进行采样和转换的时间内快 速卸空一个满的缓冲器,则 BUFM 位可为 ‘0’且每次 中断可进行最多 16 次转换。处理器在一次采样和转换 的时间内移出 16 个转换结果。 如 果 在 采 样 和 转 换 时 间 内 处 理 器 不 能 卸 空 缓 冲 器, BUFM 位应为 ‘1’ 。例如,如果 SMPI<3:0> (ADCON2<5:2>) = 0111,则先将 8 个转换结果装入 其中一个 8 字缓冲器,此后将产生中断。再将另外的 8 个转换结果装入另一个 8 字缓冲器。处理器将利用相邻 中断之间的全部时间来移出 8 个转换结果。 ALTS 位用来在采样过程中轮换选择的输入。输入多路 开关具有两组采样输入:MUX A 和 MUX B。如果 ALTS 位为 ‘0’,只选择 MUX A 输入进行采样。如果 ALTS 位为 ‘1’且 SMPI<3:0> = 0000,在第一个采样 / 转 换过程将选择 MUX A 输入通道,而在下一个采样 / 转 换过程,将选择 MUX B 输入通道。 CSCNA位(ADCON2<10>)允许对CH0通道输入MUX A 组的选定数量的模拟输入进行顺序扫描。ADCSSL 寄 存器选择要扫描的输入。如果 ADCSSL 寄存器中的某个 位为‘1’,则将选择相应的输入。将在每次中断之后, 始终按照输入编号从低至高的顺序对输入进行扫描。如 果选择的输入数目大于每次中断进行的采样数,则编号 高于采样数的输入将不会被使用。 SIMSAM 位对多个通道的采样 / 转换顺序进行控制。如 果 SIMSAM 位为 ‘0’,将在两个或四个采样时钟内对 两 个或 四 个 选 择的 通 道 按 顺序 进 行 采 样和 转 换。如 果 SIMSAM 位为 ‘1’,将在一个采样时钟内同时对两 个或四个选择的通道进行采样。然后按顺序转换通道。 显然,如果只选择 1 个通道, SIMSAM 位将不适用。 DS70118G_CN 第112 页 2007 Microchip Technology Inc. dsPIC30F2010 18.4 转换触发的编程设定 转换触发将终止数据采集和并开始进行要求的转换。 SSRC<2:0> 位用于选择转换触发源。 SSRC 位提供多达 5 个备用的转换触发源。 当 SSRC<2:0> = 000 时,转换触发由软件进行控制。 清零 SAMP 位将导致触发转换。 当 SSRC<2:0> = 111 (自动启动模式)时,转换触发 由 A/D 时钟进行控制。 SAMC 位用于选择采样起始和 转换起始之间的 A/D 时钟数。这将提供最快的多通道转 换速率。 SAMC 必须始终大于等于 1 个时钟周期。 其他触发源可能来自定时器模块、电机控制 PWM 模块 或外部中断。 注: 18.5 如果需要使 A/D 工作在最大指定转换速率, 应选择自动转换触发选项 (SSRC = 111) 且 自 动 采 样 时 间 应 该 设 定 为 1 个 TAD (SAMC = 00001)。此配置将使全部转换 周期 (采样 + 转换)为 13 个 TAD。 使用任何其他转换触发方式将导致额外的 TAD 周期以与 A/D 的外部事件同步。 中止转换 18.6 选择 A/D 转换时钟 A/D 转换需要 12 个 TAD。通过软件方式使用 6 位计数器 可选择 A/D 转换的时钟源。TAD 存在 64 种可能的选择。 公式 18-1: A/D 转换时钟 TAD = TCY * (0.5*(ADCS<5:0> + 1)) TAD ADCS<5:0> = 2 –1 TCY 通过置 1 ADRC 位可选择内部 RC 振荡器。 为使 A/D 转换正确,必须选择合适的 A/D 转换时钟 (TAD)以确保最小 83.33 ns (当 VDD = 5V 时)的 TAD 时间。其他工作条件下的最小 TAD,可参见第 22.0 节 “电气特性”。 例 18-1 中显示了 ADCS<5:0> 位的计算示例,其中假定 器件工作速度为 30 MIPS。 例 18-1: A/D 转换时钟计算 TAD = 84 ns TCY = 33 ns(30 MIPS) TAD –1 TCY 84 ns =2• 33 ns = 4.09 转换过程中清零ADON位将中止当前的转换并停止采样 过程。不会用部分完成的 A/D 采样转换来更新 A/D 结果 寄存器对。即,对应的 ADCBUF 缓冲器单元将仍然保 持上一次转换完成后的值 (即上一次写入该缓冲器的 值)。 ADCS<5:0> = 2 如果清零 ADON 位与自动启动同时发生,清零 ADON 位具有更高的优先级。 因此, 设置 ADCS<5:0> = 5 A/D 转换中止后,在置 1 SAMP 位启动下一次采样之前 需等待 2 个 TAD 的时间。 实际 TAD = 如果指定进行顺序采样,A/D 将在与下一个要转换通道 对应的下一个采样脉冲处继续工作。如果指定同时采 样, A/D 将继续下一个多通道组转换过程。 2007 Microchip Technology Inc. –1 TCY (ADCS<5:0> + 1) 2 33 ns = (5 + 1) 2 = 99 ns DS70118G_CN 第113 页 dsPIC30F2010 18.7 A/D 转换速度 dsPIC30F 的 10 位 ADC 规范允许最大 1 Msps 的采样速 率。表 18-1 汇总了 dsPIC30F 10 位 ADC 的转换速度及 其要求的工作条件。 表 18-1: 10 位 A/D 转换速率参数 dsPIC30F 10 位 A/D 转换器转换速率 A/D 速度 最大 1 Msps(1) TAD 最小值 采样时间 最小值 RS 最大值 VDD 温度 83.33 ns 12 TAD 500Ω 4.5V 至 5.5V -40°C 至 +85°C A/D 通道配置 VREF- VREF+ ANx CH1、CH2 或 CH3 S/H ADC CH0 S/H 最大 750 ksps(1) 95.24 ns 2 TAD 500Ω 4.5V 至 5.5V -40°C 至 +85°C VREF- VREF+ ANx 最大 600 ksps(1) 138.89 ns 12 TAD 500Ω 3.0V 至 5.5V CHX S/H ADC -40°C 至 +125°C VREF- VREF+ ANx CH1、CH2 或 CH3 S/H CH0 ADC S/H 最大 500 ksps 153.85 ns 1 TAD 5.0 kΩ 4.5V 至 5.5V -40°C 至 +125°C VREF- VREF+ 或 或 AVSS AVDD CHX ANx S/H ADC ANx 或 VREF- 最大 300 ksps 256.41 ns 1 TAD 5.0 kΩ 3.0V 至 5.5V -40°C 至 +125°C VREF- VREF+ 或 或 AVSS AVDD CHX ANx S/H ADC ANx 或 VREF- 注 1: 为确保正常工作,必须使用外部 VREF- 和 VREF+ 引脚。推荐电路请参见图 18-2。 DS70118G_CN 第114 页 2007 Microchip Technology Inc. dsPIC30F2010 图 18-2 给出了转换速度高于 500 ksps 时的推荐电路。 配置指导给出了转换速度高于 500 ksps 时要求的设置 值,因为这些转换速度需要使用外部 VREF 引脚,且配 置过程有一些差别。此处忽略了与转换速度关系不大的 配置细节。 图 18-2: ADC 参考电压原理图 VDD R2 10 C2 0.1 µF VDD C1 0.01 µF 10 R1 VDD AVSS AVDD VREF- VREF+ C8 1 µF dsPIC30F2010 VDD VDD VSS VDD VSS VDD C5 1 µF VDD 18.7.1 1 Msps 时的配置指南 1 Msps 时的配置取决于要采样单个输入引脚还是多个 引脚。 18.7.1.1 单路模拟输入 对于 1 Msps 单路模拟输入的转换,必须至少使能两个 采样 / 保持 (S/H)通道。必须将模拟输入多路开关配 置为将同一个输入引脚连接到两个采样 / 保持通道。在 A/D 对一个 S/H 通道保持的值进行转换的同时,另外一 个 S/H 通道采集新的输入采样。 18.7.1.2 多路模拟输入 A/D 转换器可用于使用多个采样 / 保持通道对多路模拟 输入进行采样。在这种情况下,不同的输入信号共享总 的 1 Msps 的采样速率。例如,可以对 4 路输入进行采 样,每个信号的采样速率为 250 ksps ;或对 2 路输入 进行采样,每个信号的采样速率为 500 ksps。在这种配 置下,必须采用顺序采样以使每路输入具有足够的采样 时间。 18.7.1.3 1 Msps 时的配置 为获得 1 Msps 的转换速率,需要进行如下配置。 • 符合表 19-2 中提供的条件 2007 Microchip Technology Inc. • 按照图 18-2 所示的推荐电路连接外部 VREF+ 和 VREF- 引脚 • 设置 ADCON1 寄存器的 SSRC<2:0> = 111 使能自 动转换选项 • 将ADCON1寄存器的ASAM控制位置1使能自动采 样 • 将 ADCON1 寄存器的 SIMSAM 位清零使能顺序采 样 • 通过写 ADCON2 寄存器的 CHPS<1:0> 控制位来使 能至少两个采样 / 保持通道 • 写 ADCON2 寄存器的 SMPI<3:0> 控制位来设置两 次中断之间所需的转换次数。至少要设置 SMPI<3:0> = 0001,因为至少要使能两个采样 / 保 持通道 • 通过写 ADCON3 寄存器的 ADCS<5:0> 控制位来将 A/D 时钟周期配置为: 1 12 x 1,000,000 = 83.33 ns • 通过写 SAMC<4:0> = 00010 来将采样时间配置为 2 TAD • 通过写 ADCHS 寄存器为每个模拟输入引脚选择最 少两个通道 DS70118G_CN 第115 页 dsPIC30F2010 18.7.2 750 ksps 时的配置指南 为获得 750 ksps 的转换速率,需要进行如下配置。配置 假设对单路模拟输入进行采样。 • 符合表 19-2 中提供的条件 • 按照图 18-2 所示的推荐电路连接外部 VREF+ 和 VREF- 引脚 • 设置 ADCON1 寄存器的 SSRC<2:0> = 111 使能自 动转换选项 • 将ADCON1寄存器的ASAM控制位置1使能自动采 样 • 通过设置ADCON2寄存器的CHPS<1:0> = 00来使 能一个采样 / 保持通道 • 写 ADCON2 寄存器的 SMPI<3:0> 控制位来设置两 次中断之间所需的转换次数。 • 通过写 ADCON3 寄存器的 ADCS<5:0> 控制位来将 A/D 时钟周期配置为: 1 (12 + 2) X 750,000 = 95.24 ns • 通过写 SAMC<4:0> = 00010 来将采样时间配置为 2 TAD 18.7.3 600 ksps 时的配置指南 600 ksps时的配置取决于要采样单个输入引脚还是多个 引脚。 18.7.3.1 单路模拟输入 以 600 ksps 对单路模拟输入进行转换时,必须至少使能 两个采样 / 保持 (S/H)通道。必须将模拟输入多路开 关配置为将同一个输入引脚连接到两个采样 / 保持通 道。在 A/D 对一个 S/H 通道保持的值进行转换的同时, 另外一个 S/H 通道采集新的输入采样。 DS70118G_CN 第116 页 18.7.3.2 多路模拟输入 A/D 转换器可用于使用多个采样 / 保持通道对多路模拟 输入进行采样。在这种情况下,不同的输入信号共享总 的 600 ksps 的采样速率。例如,可以对 4 路输入进行 采样,每个信号的采样速率为 150 ksps ;或对 2 路输 入进行采样,每个信号的采样速率为 300 ksps。在这种 配置下,必须采用顺序采样以使每路输入具有足够的采 样时间。 18.7.3.3 600 ksps 时的配置 为获得 600 ksps 的转换速率,需要进行如下配置。 • 符合表 19-2 中提供的条件 • 按照图 18-2 所示的推荐电路连接外部 VREF+ 和 VREF- 引脚 • 设置 ADCON1 寄存器的 SSRC<2:0> = 111 使能自 动转换选项 • 将ADCON1寄存器的ASAM控制位置1使能自动采 样 • 将 ADCON1 寄存器的 SIMSAM 位清零使能顺序采 样 • 通过写 ADCON2 寄存器的 CHPS<1:0> 控制位来使 能至少两个采样 / 保持通道 • 写 ADCON2 寄存器的 SMPI<3:0> 控制位来设置两 次中断之间所需的转换次数。至少要设置 SMPI<3:0> = 0001,因为至少要使能两个采样 / 保 持通道 • 通过写 ADCON3 寄存器的 ADCS<5:0> 控制位来将 A/D 时钟周期配置为: 1 12 x 600,000 = 138.89 ns • 通过写 SAMC<4:0> = 00010 来将采样时间配置为 2 TAD • 通过写 ADCHS 寄存器为每个模拟输入引脚选择最 少两个通道 2007 Microchip Technology Inc. dsPIC30F2010 18.8 A/D 采集要求 两次转换之间应该至少留出 1 个 TAD 周期作为采样时间 TSAMP。可通过软件手动方式设定/清零SAMP位以对该 采样时间进行控制,也可由 A/D 转换器进行自动控制。 对于自动配置方式,用户必须在转换触发之间保留足够 时间以满足最小采样时间。有关 TAD 和采样时间的要 求,参见器件电气规范。 图 18-3 给出了 10 位 A/D 转换器的模拟输入模型。 A/D 的总采样时间是内部放大器稳定时间、器件 VDD 和保 持电容充电时间的函数。 为了使 A/D 转换器达到规定的精度,必须让充电保持电 容 (CHOLD)充分充电至模拟输入引脚上的电平。信号 源阻抗 (RS)、内部走线等效阻抗 (RIC)和内部采样 开关阻抗(RSS)共同地直接影响电容 CHOLD 充电所需 的时间,所以模拟信号源的总阻抗应足够小,以便在选 择的采样时间内对保持电容充分充电。为了把引脚泄漏 电流对 A/D 转换器精度的影响降到最低,最大建议信号 源阻抗 RS 为 5 kΩ。选择(改变)了模拟输入通道后, 采样工作必须在启动转换前完成。在每次采样操作前, 内部保持电容将处于放电状态。 图 18-3: ADC 模拟输入模型 VDD Rs VA ANx CPIN RIC ≤ 250Ω VT = 0.6V VT = 0.6V RSS ≤ 3 kΩ 采样 开关 RSS CHOLD = DAC 电容 = 4.4 pF Ileakage ± 500 nA VSS 图注: CPIN = 输入电容 = 电压阈值 VT I leakage = 引脚上由各结点 引起的泄漏电流 = 内部走线等效阻抗 RIC = 采样开关阻抗 RSS = 采样 / 保持电容(来自 DAC) CHOLD 注: CPIN 值取决于器件封装,未经测试。如果 Rs ≤ 5 kΩ,可忽略 CPIN 的影响。 2007 Microchip Technology Inc. DS70118G_CN 第117 页 dsPIC30F2010 18.9 如果允许 A/D 中断,则器件将从休眠状态唤醒。如果 A/D 中断被禁止,ADC 模块将被关闭,尽管 ADON 位仍然保 持置 1 状态。 模块掉电模式 模块具有 3 种内部功耗模式。当 ADON 位为 ‘1’时, 模块将处于工作模式,模块处于完全供电和工作状态; 当 ADON 为 ‘0’时,模块将处于关断模式。电路的数 字和模拟部分将被禁止以最大程度地降低电流消耗。为 从关断模式返回工作模式,用户必须等待 ADC 电路进 入稳定状态。 18.10.2 ADSIDL位选择ADC模块在空闲模式下是停止工作还是 继续工作。如果 ADSIDL = 0,当器件进入空闲模式时, 该模块将继续工作。如果 ADSIDL= 1,在空闲模式下 该模块将停止工作。 18.10 CPU 休眠和空闲模式下的 A/D 操作 18.10.1 18.11 复位的影响 CPU 休眠模式下的 A/D 操作 器件复位强制所有寄存器进入复位状态。这将迫使 ADC 模块关闭并中止任何正在进行的转换。 ADCBUF 寄存 器中的值将不会被修改。上电复位时, A/D 结果寄存器 将包含未知数据。 当器件进入休眠模式时,模块的所有时钟源将被关闭且 停留在逻辑 ‘0’状态。 如果在转换过程中进入休眠模式,转换将中止。当器件 退出休眠模式时,转换器将不会继续进行部分完成的转 换。 18.12 输出格式 器件进入或退出休眠模式将不会对寄存器内容造成影 响。 A/D结果为10位宽,数据缓冲器RAM也是10位宽。当对 该缓冲器执行读操作时,读出数据将以四种不同格式之 一进行表示。 FORM<1:0> 位用于选择格式。每一种输 出格式将读出数据转换为数据总线上的 16 位结果。 如果 A/D 时钟源设定为 RC (ADRC = 1),则 ADC 模 块可在休眠模式下进行工作。当选择RC时钟源时,ADC 在 启 动 转换 之 前 将 等 待 一 个 指 令 周期。其 间 可 执 行 SLEEP 指令,这将消除转换过程中所有的数字开关噪 声。当转换操作完成之后,DONE 位将置 1 且转换结果 将被装入 ADCBUF 寄存器。 图 18-4: CPU 空闲模式下的 A/D 操作 写数据总是采用右对齐 (整数)的格式。 A/D 输出数据格式 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 RAM 内容: 读至总线: 有符号小数 (1.15) d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0 0 0 小数 (1.15) d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0 0 0 有符号整数 整数 DS70118G_CN 第118 页 d09 d09 d09 d09 d09 d09 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 0 0 0 0 0 0 d09 d08 d07 d06 d05 d04 d03 d02 d01 d00 2007 Microchip Technology Inc. dsPIC30F2010 18.13 配置模拟端口引脚 18.14 连接注意事项 ADPCFG 和 TRIS 寄存器用于控制 A/D 端口引脚的操 作。当端口引脚作为模拟输入时,必须将其对应的 TRIS 位置 1 (输入)。如果 TRIS 位被清零 (输出),将对 数字输出电平 (VOH 或 VOL)进行转换。 模拟输入与 VDD 和 VSS 之间连接有二极管作为 ESD 保 护。这就要求模拟输入电压必须介于 VDD 和 VSS 之间。 如果输入电压超出此范围 0.3V 以上(任一方向上),就 会有一个二极管正偏,而且如果超过输入电流规范可能 会损坏器件。 A/D 操作将不受 CH0SA<3:0>/CH0SB<3:0> 位以及 TRIS 位状态的影响。 当对 PORT 寄存器进行读操作时,所有配置为模拟输入 通道的引脚将被读为零。 配置为数字输入的引脚将不会对模拟输入进行转换。任 何定义为数字输入的引脚 (包括 ANx 引脚)上的模拟 电平可能导致输入缓冲器消耗电流超过器件规范限定 值。 2007 Microchip Technology Inc. 有时可外接 RC 滤波器来对输入信号进行抗混叠滤波。 R 元件的选择要确保满足采样时间要求。任何通过高阻 抗连接到模拟输入引脚上的外部元件(如电容和齐纳二 极管等)在引脚上的泄漏电流都应极小。 DS70118G_CN 第119 页 2007 Microchip Technology Inc. 表 18-2: ADC 寄存器映射 SFR 名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 ADCBUF0 0280 — — — — — — Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ADCBUF1 0282 — — — — — — ADC 数据缓冲器 1 0000 00uu uuuu uuuu ADCBUF2 0284 — — — — — — ADC 数据缓冲器 2 0000 00uu uuuu uuuu ADCBUF3 0286 — — — — — — ADC 数据缓冲器 3 0000 00uu uuuu uuuu ADCBUF4 0288 — — — — — — ADC 数据缓冲器 4 0000 00uu uuuu uuuu ADCBUF5 028A — — — — — — ADC 数据缓冲器 5 0000 00uu uuuu uuuu ADCBUF6 028C — — — — — — ADC 数据缓冲器 6 0000 00uu uuuu uuuu ADC 数据缓冲器 0 复位状态 0000 00uu uuuu uuuu ADCBUF7 028E — — — — — — ADC 数据缓冲器 7 0000 00uu uuuu uuuu ADCBUF8 0290 — — — — — — ADC 数据缓冲器 8 0000 00uu uuuu uuuu ADCBUF9 0292 — — — — — — ADC 数据缓冲器 9 0000 00uu uuuu uuuu ADCBUFA 0294 — — — — — — ADC 数据缓冲器 10 0000 00uu uuuu uuuu ADCBUFB 0296 — — — — — — ADC 数据缓冲器 11 0000 00uu uuuu uuuu ADCBUFC 0298 — — — — — — ADC 数据缓冲器 12 0000 00uu uuuu uuuu ADCBUFD 029A — — — — — — ADC 数据缓冲器 13 0000 00uu uuuu uuuu ADCBUFE 029C — — — — — — ADC 数据缓冲器 14 0000 00uu uuuu uuuu ADCBUFF 029E — — — — — — ADC 数据缓冲器 15 ADCON1 02A0 ADON — ADSIDL — — — FORM<1:0> ADCON2 02A2 — — CSCNA CHPS<1:0> ADCON3 02A4 ADCHS 02A6 ADPCFG 02A8 — 02AA — ADCSSL VCFG<2:0> — — CH123NB<1:0> — SAMC<4:0> CH0SB<3:0> SSRC<2:0> BUFS — ADRC — CH123SB CH0NB CH123NA<1:0> — — — — — — — — — — — — — — — — 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 — 0000 00uu uuuu uuuu SIMSAM ASAM SMPI<3:0> SAMP DONE 0000 0000 0000 0000 BUFM ALTS 0000 0000 0000 0000 ADCS<5:0> CH0SA<3:0> 0000 0000 0000 0000 CH123SA CH0NA — PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000 0000 0000 0000 — CSSL5 CSSL4 CSSL3 CSSL2 CSSL1 CSSL0 0000 0000 0000 0000 0000 0000 0000 0000 dsPIC30F2010 DS70118G_CN 第 120 页 dsPIC30F2010 19.0 系统集成 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 本系列器件的下列功能,旨在最大限度地提高系统可靠 性,通过减少外部元件的使用来降低成本,提供省电工 作模式以及提供代码保护: • 振荡器选择 • 复位 - 上电复位 (POR) - 上电延时定时器 (PWRT) - 振荡器起振定时器 (OST) - 可编程欠压复位 (BOR) • 看门狗定时器 (WDT) • 省电模式 (休眠和空闲) • 代码保护 • 器件 ID 存储单元 • 在线串行编程 (ICSP)功能 19.1 振荡器系统概述 dsPIC30F 振荡器系统包含以下模块和功能: • • • • • 可选择多种外部和内部振荡器作为时钟源 片上 PLL,可提高内部工作频率 在各种时钟源之间进行切换的时钟切换机制 可编程时钟后分频器,可节省系统功耗 故障保护时钟监视器 (FSCM),可检测时钟故障 并采取故障保护措施 • 时钟控制寄存器 (OSCCON) • 用于主振荡器选择的配置位 表 19-1 汇总了 dsPIC30F 的振荡器工作模式。图 19-1 中给出了振荡器系统的简化框图。 配置位用于在上电复位 (POR)和欠压复位 (BOR) 时确定时钟源。此后,可在许可的时钟源之间切换时钟 源。 OSCCON 寄存器用于控制时钟切换并包含与系统 时钟相关的状态位。 dsPIC30F 器件具备一个看门狗定时器,它可以通过配 置位永久使能,或用软件进行控制。它依靠自身的 RC 振荡器运行,以便提升可靠性。两个定时器提供了上电 时必须的延时;一个是振荡器起振定时器 (OST),用 来使芯片保持复位,直到晶体振荡器稳定为止;另一个 是上电延时定时器 (PWRT),仅在上电时提供延时, 用来在电源稳定过程中使器件保持在复位状态 。有了这 两个片内定时器,大多数应用不再需要外部复位电路。 休眠模式,旨在提供极低电流的掉电模式。通过外部复 位、看门狗定时器唤醒或中断,用户可将器件从休眠中 唤醒。一些振荡器功能仍然可用,从而器件能够适用于 范围宽广的各种应用。在空闲模式下,时钟源仍然处于 工作状态,但 CPU 停止。RC 振荡器可降低系统成本, 而 LP 晶振功能可降低功耗。 2007 Microchip Technology Inc. DS70118G_CN 第121 页 dsPIC30F2010 表 19-1: 振荡器工作模式 振荡器模式 XTL XT XT w/ PLL 4x XT w/ PLL 8x XT w/ PLL 16x LP HS EC ECIO EC w/ PLL 4x EC w/ PLL 8x EC w/ PLL 16x ERC ERCIO FRC LPRC 描述 OSC1:OSC2 上 200 kHz-4 MHz 晶振。 OSC1:OSC2 上 4 MHz-10 MHz 晶振。 OSC1:OSC2 上 4 MHz-10 MHz 晶振。 4x PLL 使能。 OSC1:OSC2 上 4 MHz-10 MHz 晶振。 8x PLL 使能。 OSC1:OSC2 上 4 MHz-10 MHz 晶振。16x PLL 使能 (1)。 SOSCO:SOSCI 上 32 kHz 晶振 (2)。 10 MHz-25 MHz 晶振。 外部时钟输入 (0-40 MHz)。 外部时钟输入 (0-40 MHz)。OSC2 引脚为 I/O。 外部时钟输入 (0-40 MHz)。OSC2 引脚为 I/O。 4x PLL 使能 (1)。 外部时钟输入 (0-40 MHz)。OSC2 引脚为 I/O。 8x PLL 使能 (1)。 外部时钟输入 (0-40 MHz)。OSC2 引脚为 I/O。 16x PLL 使能 (1)。 外部 RC 振荡器。 OSC2 引脚为 FOSC/4 输出 (3)。 外部 RC 振荡器。 OSC2 引脚为 I/O(3)。 7.37 MHz 内部 RC 振荡器。 512 kHz 内部 RC 振荡器。 注 1:必须满足 dsPIC30F 最大工作频率为 120 MHz 的要求。 2:LP 振荡器可方便地为系统时钟和 Timer1 实时时钟所共用。 3:需要外部 R、 C 元件。工作频率最高为 4 MHz。 DS70118G_CN 第122 页 2007 Microchip Technology Inc. dsPIC30F2010 图 19-1: 振荡器系统框图 振荡器配置位 PWRSAV 指令 唤醒请求 FPLL OSC1 主振荡器 OSC2 PLL x4, x8, x16 PLL Lock COSC<1:0> 主振荡器 NOSC<1:0> 主振荡器 稳定性 检测器 POR 结束 OSWEN 振荡器 起振 定时器 辅助振荡器 SOSCO SOSCI 32 kHz LP 振荡器 时钟切换 和控制模块 辅助 振荡器 稳定性检测器 可编程 时钟分频器 系统 时钟 2 POST<1:0> 内部低功耗 快速 RC 振荡器(FRC) FRC 内部低 LPRC 功耗 RC 振荡器(LPRC) FCKSM<1:0> 2 故障保护时钟 监视器(FSCM) CF 振荡器陷阱 至 Timer1 2007 Microchip Technology Inc. DS70118G_CN 第123 页 dsPIC30F2010 19.2 19.2.2 振荡器配置 19.2.1 为确保晶振 (或陶瓷振荡器)已起振并达到稳定状态, 振荡器中包含一个振荡器起振定时器。该定时器仅仅是 一个 10 位计数器,在允许振荡器时钟应用于系统其他 部分之前该计数器将计数 1024 个 TOSC 周期。超时周期 称为 TOST。每当振荡器重启(即当 POR、BOR 和从休 眠模式唤醒时)需进行 TOST 时间的定时。振荡器起振 定时器适用于 LP 振荡器和主振荡器的 XT、XTL 和 HS 模式 (当 POR、 BOR 和从休眠模式唤醒时)。 初始时钟源选择 当退出上电复位或欠压复位状态时,器件根据以下原则 进行时钟源的选择: a) b) 振荡器起振定时器 (OST) 通过 FOS<1:0> 配置位选择四种振荡器组合中的一 种。 通过FPR<3:0>配置位选择主振荡器组中13个振荡 器之一。 表 19-2 中显示了时钟选择。 表 19-2: 时钟选择的配置位值 振荡器模式 振荡器源 FOS1 FOS0 FPR3 FPR2 FPR1 FPR0 OSC2 功能 EC 主振荡器 1 1 1 0 1 1 CLKO ECIO 主振荡器 1 1 1 1 0 0 I/O EC w/ PLL 4x 主振荡器 1 1 1 1 0 1 I/O EC w/ PLL 8x 主振荡器 1 1 1 1 1 0 I/O EC w/ PLL 16x 主振荡器 1 1 1 1 1 1 I/O ERC 主振荡器 1 1 1 0 0 1 CLKO ERCIO 主振荡器 1 1 1 0 0 0 I/O XT 主振荡器 1 1 0 1 0 0 OSC2 XT w/ PLL 4x 主振荡器 1 1 0 1 0 1 OSC2 XT w/ PLL 8x 主振荡器 1 1 0 1 1 0 OSC2 XT w/ PLL 16x 主振荡器 1 1 0 1 1 1 OSC2 XTL 主振荡器 1 1 0 0 0 X OSC2 HS 主振荡器 1 1 0 0 1 X OSC2 LP 辅助振荡器 0 0 — — — — (注 1, 2) FRC 内部 FRC 0 1 — — — — (注 1, 2) LPRC 内部 LPRC 1 0 — — — — (注 1, 2) 注 1: OSC2 引脚功能由主振荡器模式选择确定 (FPR<3:0>)。 2: 注意,即使始终选择辅助振荡器或内部时钟源, OSC1 引脚仍不能用作 I/O 引脚。 DS70118G_CN 第124 页 2007 Microchip Technology Inc. dsPIC30F2010 19.2.3 LP 振荡器控制 表 19-4: 通过以下各位可使能 LP 振荡器: 1. 2. 当前振荡器组控制位 COSC<1:0>。 LPOSCEN 位 (OSCCON 寄存器)。 如果 LPOSCEN = 1,则 LP 振荡器被使能 (即使处于 休眠模式)。在下列条件下,LP振荡器将作为器件时钟: • COSC<1:0> = 00 (选择 LP 作为主振荡器)且 • LPOSCEN = 1 保持 LP 振荡器总是使能可以快速切换至 32kHz 系统时 钟以实现低功耗运行。返回更快速的主振荡器仍需要经 过起振时间。 19.2.4 锁相环 (PLL) PLL 可将主振荡器或快速 RC 振荡器产生的时钟信号进 行 频。 PLL 可 选 择 具 有 x4、 x8 和 x16 的增益。 表 19-3 中对输入和输出频率范围进行了汇总。 表 19-3: PLL 频率范围 FRC 调节 TUN<3:0> 位 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 FRC 频率 + 10.5% + 9.0% + 7.5% + 6.0% + 4.5% + 3.0% + 1.5% 中心频率 (振荡器运行于校准频率) - 1.5% - 3.0% - 4.5% - 6.0% - 7.5% - 9.0% - 10.5% - 12.0% FIN PLL 倍频 FOUT 4 MHz-10 MHz x4 16 MHz-40 MHz 19.2.6 LPRC 振荡器是看门狗定时器(WDT)的组成部分,其 标称振荡频率为 512 kHz。 LPRC 振荡器是上电延时定 时器 (PWRT)电路、 WDT 和时钟监视器电路的时钟 源。它也可用于低功耗要求高但时序精度要求不高的应 用场合作为低频时钟源。 4 MHz-10 MHz x8 32 MHz-80 MHz 4 MHz-7.5 MHz x16 64 MHz-120 MHz PLL 具有锁定输出,当 PLL 进入锁相状态时,锁定输出 有效。如果锁相环锁定失败 (例如由噪声导致),锁定 信号将为无效。此信号的状态将通过 OSCCON 寄存器 中的只读位 LOCK 反映。 19.2.5 快速 RC 振荡器 (FAST RC OSCILLATOR, FRC) FRC 振荡器是一个快速(7.37 MHz ±2% 标称值)的内 部 RC 振荡器。该振荡器用于提供合理的器件工作速度 而无需使用外部晶振、陶瓷振荡器或 RC 网络。 当 OSCCON 寄 存 器 中 的 振 荡 器 选 择 控制位 (OSCCON<13:12>)设定为 ‘01’时, dsPIC30F 将 使用 FRC 振荡器进行工作。 通过 TUN<3:0> (OSCCON<15:14> 和 OSCCON<11:10>)指定的 4 位位域将使用户可对内部 快速 RC 振荡器 (标称值为 7.37 MHz)进行调节。用 户可在厂商校准设定值的 -12%(-960 kHz)至 +10.5% (+840 kHz)范围内对 FRC 振荡器进行调节,单步调 节的幅度为 1.50%,参见表 19-4。 2007 Microchip Technology Inc. 低功耗 RC 振荡器 (LPRC) 由于 LPRC 振荡器是 PWRT 的时钟源,因此上电复位 时该振荡器总是被使能。当 PWRT 超时时,如果以下任 何一个条件为真, LPRC 振荡器将保持使能状态: • 故障保护时钟监视器使能 • WDT 使能 • 通过OSCCON寄存器中的控制位COSC<1:0>选择 LPRC 振荡器作为系统时钟 如果以上任何一个条件都不为真,在 PWRT 超时之后 LPRC 将被关闭。 注 1:通过主振荡器模式选择位 (FPR<3:0>)可确 定 OSC2 的引脚功能。 2:即 使 总 是 选 择 辅 助 振 荡 器 或 内 部 时 钟 源, OSC1 引脚也不能用作 I/O 引脚。 DS70118G_CN 第125 页 dsPIC30F2010 19.2.7 故障保护时钟监视器 与时钟切换相关的控制和状态位在OSCCON寄存器中: 故障保护时钟监视器 (FSCM),使得器件能够继续工 作,即便是振荡器出现故障。恰当地设置 FOSC 器件配 置寄存器中的 FCKSM 配置位(时钟切换和监视器选择 位),可使能 FSCM 功能。如果使能了 FSCM 功能, LPRC 内部振荡器将始终保运行 (休眠模式除外),不 再受 SWDTEN 位的控制。 在发生振荡器故障时, FSCM 会产生时钟故障陷阱事 件,并将系统时钟切换到 FRC 振荡器。之后,用户即 可选择尝试重新启动振荡器,或者执行受控关闭操作。 用户可以把陷阱当作热复位来处理,这只要把复位地址 载入振荡器陷阱向量即可。出现故障时,一旦识别出时 钟故障, CF (时钟故障)状态位 (OSCCON<3>)也 将置 1。 出现时钟故障时, WDT 不受影响,继续靠 LPRC 时钟 运行。 从 POR、 BOR 或休眠退出后,如果振荡器起振时间非 常慢的话,则可能出现这样的情况,在振荡器启动之前 PWRT 定时器就已到期。在这样的情形下,FSCM 将被 激活,FSCM 将启动一个时钟故障陷阱,FRC 振荡器选 择将载入 COSC<1:0> 位中。这实际上是关闭了先前正 在试图启动的振荡器。 在时钟故障陷阱 ISR 中,用户可以检测到这样的情况并 重启振荡器。 检测到时钟故障时, FSCM 模块将发起至 FRC 振荡器 的时钟切换,方法如下: 1. 把 FRC 振荡器选择位的值载入 COSC (OSCCON<13:12>)中。 2. CF 位 (OSCCON<3>)置 1。 3. OSWEN 控制位 (OSCCON<0>)清零。 位 出于时钟切换的目的,时钟源划分为四组: 1. 2. 3. 4. 主组 辅助组 内部 FRC 组 内部 LPRC 组 用户可以在这些功能组之间进行切换,但不能在同一个 组内进行切换。如果选择了主组的话,则在主组内的选 择始终由 FPR<3:0> 配置位决定。 • COSC<1:0>:只读状态位,总是表明当前有效的 振荡器组。 • NOSC<1:0>:控制位,写控制位表明选择了新的 振荡器组。 - 在POR和BOR时,将把配置位FOS<1:0>的值 装入 COSC<1:0> 和 NOSC<1:0> 中。 • LOCK:LOCK 状态位,表明 PLL 是否锁定。 • CF:只读状态位,说明是否检测到时钟故障。 • OSWEN:控制位,当时钟切换过程启动时,从 0 变为 1。清零 OSWEN 控制位将中止正在进行中的 时钟切换 (用于挂起情形)。 如果配置位 FCKSM<1:0> = 1x,那么时钟切换和故障 保护时钟监视器功能被禁止。这是缺省的配置位设定。 如果时钟切换禁止,则 FOS<1:0> 和 FPR<3:0> 位直接 控制振荡器选择, COSC<1:0> 位不控制时钟选择。然 而,这些位将反映时钟源选择。 注: 19.2.8 当使能故障保护时钟监视器时,在应用中 不应尝试切换至低于100 KHz的时钟频率。 如果执行此了这样的时钟切换,器件可能 产生振荡器故障陷阱并切换至快速 RC 振荡 器。 防止意外写入 OSCCON 由于 OSCCON 寄存器控制时钟切换和时钟分频,因此 有意地将其写入操作过程设计得较为困难。 要写入 OSCCON 低字节,必须执行以下代码序列且不 应在其中插入任何其他指令: • 写入字节 “0x46”至 OSCCON 低字节 • 写入字节 “0x57”至 OSCCON 低字节 允许在一个指令周期内对 OSCCONL 进行字节写操作。 写入期望值或使用位操作指令。 要写入 OSCCON 高字节,必须执行以下指令且不应在 其中插入任何其他指令: • 写入字节 “0x78”至 OSCCON 高字节 • 写入字节 “0x9A”至 OSCCON 高字节 允许在一个指令周期内对 OSCCONL 进行字节写操作。 写入期望值或使用位操作指令。 DS70118G_CN 第126 页 2007 Microchip Technology Inc. dsPIC30F2010 19.3 复位 dsPIC30F2010 区分下列各种复位: a) b) c) d) e) f) g) h) 上电复位 (POR) 正常工作期间的 MCLR 复位 休眠期间的 MCLR 复位 看门狗定时器(WDT)复位(在正常工作期间) 可编程欠压复位 (BOR) RESET 指令 由陷阱锁定 (TRAPR)导致的复位 由非法操作码导致的复位,或者是由于把未初始 化的 W 寄存器用作地址指针 (IOPUWR)而导 致的复位 图 19-2: 各种复位条件以不同的方式影响不同的寄存器。大多数 寄存器不受 WDT 唤醒的影响,因为这被视为是正常工 作的继续。 在不同的复位条件下,将以不同的方式置 1 或清零 RCON 寄存器中的状态位,如表 19-5 所示。软 件中使用这些位来确定复位的性质。 片内复位电路的框图,如图 19-2 所示。 在 MCLR 复位路径上,提供了一个 MCLR 噪声滤波器。 滤波器检测并滤除小脉冲。 内部产生的复位不会将 MCLR 引脚驱动为低电平。 复位系统框图 RESET 指令 数字 毛刺滤波器 MCLR 休眠或空闲 WDT 模块 POR VDD 上升 检测 S VDD 欠压 复位 BOR BOREN R Q SYSRST 陷阱冲突 非法操作码 / 未初始化的 W 寄存器 19.3.1 POR:上电复位 当检测到 VDD 上升时,上电事件将产生内部 POR 脉冲。 复位脉冲将在 POR 电路阈值电压 (VPOR)处产生,标 称阈值是 1.85V。器件电源电压特性曲线必须满足规定 的起始电压和上升速度要求。POR 脉冲将复位 POR 定 时器,并使器件进入复位状态。POR 还将选择器件时钟 源,时钟源由振荡器配置位指定。 POR 电路将插入一个标称值为 10 µs 的小延时 TPOR, 确保器件偏压电路是稳定的。此外,还要施加用户选择 的上电延时 (TPWRT)。 TPWRT 参数由器件配置位设 定,可以是 0 ms(无延时)、4 ms、16 ms 或 64 ms。 器件上电的总延时为 TPOR + TPWRT。在这些延时结束 后, SYSRST 将在 Q1 时钟的下一个上升沿反相, PC 将跳转到复位向量。 SYSRST 信号时序如图 19-3 至图 19-5 所示。 2007 Microchip Technology Inc. DS70118G_CN 第127 页 dsPIC30F2010 图 19-3: 上电过程中的延时时序 (MCLR 接至 VDD) VDD MCLR 内部 POR TOST OST 延时 TPWRT PWRT 延时 内部复位 上电过程中的延时时序 (MCLR 未接至 VDD):情形 1 图 19-4: VDD MCLR 内部 POR TOST OST 延时 TPWRT PWRT 延时 内部复位 图 19-5: 上电过程中的延时时序 (MCLR 未接至 VDD):情形 2 VDD MCLR 内部 POR TOST OST 延时 TPWRT PWRT 延时 内部复位 DS70118G_CN 第128 页 2007 Microchip Technology Inc. dsPIC30F2010 19.3.1.1 具有长晶振起振时间的 POR (FSCM 使能) 振荡器起振电路没有连接到 POR 电路。一些晶振电路 (尤其是低频晶振)具有相对长的起振时间。从而,在 POR 定时器和 PWRT 超时后,可能会出现下列情况: • 振荡器电路还没有开始振荡。 • 振荡器起振定时器还没有超时 (如果使用晶振的 话)。 • PLL 还未锁定 (如果使用了 PLL 的话)。 如果 FSCM 使能且出现上述条件之一时,就将产生时钟 故障陷阱。器件将自动切换到 FRC 振荡器,而用户可 在陷阱 ISR 中切换到期望的晶体振荡器。 19.3.1.2 FSCM 和 PWRT 禁止时的工作 如果 FSCM 禁止、且上电延时定时器(PWRT)也禁止 的话,上电时器件将快速退出复位状态。如果时钟源是 FRC、 LPRC、 ERC 或 EC,它将立即激活。 BOR 将产生复位器件的复位脉冲。在欠压复位时,会根 据器件配置位(FOS<1:0> 和 FPR<3:0>)选择时钟源。 此外,如果选择了晶体振荡器模式,BOR 将激活振荡器 起振定时器 (OST)。 系统时钟将保持到 OST 超时。 如果使用了 PLL,则时钟将被保持到 LOCK 位 (OSCCON<5>)置 1。 同时,在内部复位信号释放之前,还要施加 POR 延时 (TPOR)和 PWRT 延时 (TPWRT)。如果 TPWRT = 0 且 正 在 使 用 的 是 晶 体 振 荡 器 的 话,那 么 将 施 加 TFSCM = 100 µs 的标称延时。这样,总延时为 TPOR + TFSCM。 BOR 状态位(RCON<1>)将置1,以表明发生了BOR。 使能时,BOR 电路将在休眠或空闲模式下继续工作,当 VDD 下降到 BOR 阈值电压以下时将复位器件。 图 19-6: VDD 如果 FSCM 禁止而系统时钟还没有启动,器件将在复位 向量处处于冻结状态,直到系统时钟启动为止。从用户 的角度看,器件看上去仍然在复位状态,直到系统时钟 可用为止。 19.3.2 BOR 模块允许选择以下电压跳变点之一: • 2.6V-2.71V • 4.1V-4.4V • 4.58V-4.73V 注: D 这里的 BOR 电压跳变点为标称值,仅供设 计参考。 C MCLR dsPIC30F 注 1:只有当 VDD 上电速率太慢时,才需要外部上 电复位电路。二极管 D 有助于当 VDD 断电 时对电容进行快速放电。 2:应该选择合适的 R 以确保 R 两端的压降不 会违反器件电气规范。 3:应该选择合适的 R1 以限制静电放电 (Electrostatic Discharge,ESD)或过度电 性应力(Electrical Overstress,EOS)导致 MCLR/VPP 引脚损坏时从外部电容 C 流入 MCLR 的电流。 注: 2007 Microchip Technology Inc. R R1 BOR:可编程欠压复位 BOR (欠压复位)模块是基于内部参考电压电路的。 BOR 模块的主要用途是在发生欠压条件时产生器件复 位。欠压条件通常由 AC 电源线上的干扰信号 (即,由 于电源传输线路不良造成的 AC 周期波形丢失,或者由 于接入大负载时过电流造成电压下降)产生的。 外部上电复位电路 (对于较 慢的 VDD 上电过程) 专用监视器件,如 MCP1XX 和 MCP8XX 也可用作外部上电复位电路。 DS70118G_CN 第129 页 dsPIC30F2010 表 19-5 所示为 RCON 寄存器的复位状态。由于 RCON 寄存器中的控制位都是可读写的,表中的信息意味着: 所有位状态是在“条件”这一列指定操作之前的位状态 的反码。 表 19-5: RCON 寄存器的初始状态,情形 1 程序计数器 TRAPR IOPUWR EXTR SWR WDTO 条件 上电复位 0x000000 欠压复位 正常工作期间的 MCLR 复位 空闲 休眠 POR BOR 0 0 0 0 0 0 0 1 1 0x000000 0 0 0 0 0 0 0 0 1 0x000000 0 0 1 0 0 0 0 0 0 正常工作期间的软件复位 0x000000 0 0 0 1 0 0 0 0 0 休眠模式下的 MCLR 复位 0x000000 0 0 1 0 0 0 1 0 0 空闲模式下的 MCLR 复位 0x000000 0 0 1 0 0 1 0 0 0 WDT 超时复位 0x000000 0 0 0 0 1 0 0 0 0 WDT 唤醒 PC + 2 0 0 0 0 1 0 1 0 0 被中断从休眠状态唤醒 PC + 2(1) 0 0 0 0 0 0 1 0 0 时钟故障陷阱 0x000004 0 0 0 0 0 0 0 0 0 陷阱复位 0x000000 1 0 0 0 0 0 0 0 0 0x000000 0 1 0 0 0 0 0 0 0 非法操作陷阱 图注: 注 u = 不变, x = 未知,- = 未用位,读为 0 1: 如果唤醒由允许的中断导致, PC 将装入相应的中断向量。 表 19-6 显示了 RCON 寄存器位状态的第二个实例。在 该情形中,并未假定在条件栏指定的操作之前用户已置 1/ 清零特定的位。 表 19-6: RCON 寄存器的初始状态,情形 2 条件 程序计数器 TRAPR IOPUWR EXTR SWR WDTO IDLE SLEEP POR BOR 上电复位 0x000000 0 0 0 0 0 0 0 1 1 欠压复位 0x000000 u u u u u u u 0 1 正常工作期间的 MCLR 复位 0x000000 u u 1 0 0 0 0 u u 正常工作期间的软件复位 0x000000 u u 0 1 0 0 0 u u 休眠模式下的 MCLR 复位 0x000000 u u 1 u 0 0 1 u u 空闲模式下的 MCLR 复位 0x000000 u u 1 u 0 1 0 u u WDT 超时复位 0x000000 u u 0 0 1 0 0 u u WDT 唤醒 PC + 2 PC + 2 (1) u u u u 1 u 1 u u 被中断从休眠状态唤醒 u u u u u u 1 u u 时钟故障陷阱 0x000004 u u u u u u u u u 陷阱复位 0x000000 1 u u u u u u u u 非法操作陷阱 0x000000 u 1 u u u u u u u 图注: u = 不变, x = 未知, - = 未用位,读为 0 注 1: 如果唤醒由允许的中断导致, PC 将装入相应的中断向量。 DS70118G_CN 第130 页 2007 Microchip Technology Inc. dsPIC30F2010 19.4 19.4.1 看门狗定时器 (WDT) 看门狗定时器的工作 看门狗定时器 (WDT)的主要功能是在软件故障时使 处理器复位。 WDT 是独立运行的定时器,它使用片内 RC 振荡器,不需要外部元件。于是,即使主处理器时 钟(例如,晶振)出现故障,WDT 定时器将继续工作。 19.4.2 使能和禁止 WDT 看 门狗 定 时 器 的使 能 或 禁 止,只能 通 过 配 置寄 存 器 FWDT 中的配置位 (FWDTEN)来进行。 发生以下任一事件时,处理器将从休眠模式唤醒: • 任何中断,如果已使能并且满足所需的优先级 • 任何复位 (POR、 BOR 或 MCLR) • WDT 超时 从休眠模式唤醒时,处理器将重新启动进入休眠模式之 前 处 于 活 动 状 态 的 时 钟。当 时 钟 切 换 使 能 时, COSC<1:0> 位将决定唤醒时所使用的振荡器源。如果 时钟切换禁止,则只有一个系统时钟。 注: 如果发生 POR 或 BOR,则振荡器的选择 将基于 FOS<1:0> 和 FPR<3:0> 配置位。 设置 FWDTEN = 1,使能看门狗定时器。使能是在对器 件进行编程时完成的。缺省情况下,在擦除芯片后, FWDTEN 位 = 1。任何能够对 dsPIC30F 器件进行编程 的编程器,都能够对这个配置位及其他配置位进行编 程。 如果时钟源是振荡器,器件的时钟将一直关闭,直到 OST 超时为止(这表明振荡器已经稳定)。如果使用了 PLL,系统时钟关闭,直到 LOCK = 1 为止(这表明 PLL 已经稳定)。不管是哪种情况,都要加上 TPOR、 TLOCK 和 TPWRT 延时。 如果使能的话,WDT 将递增,直到它溢出或“超时”。 WDT 超时将强制器件复位 (除非是在休眠期间)。要 防止 WDT 超时,用户必须使用 CLRWDT 指令清零看门 狗定时器。 如果使用了 EC、FRC、LPRC 或 ERC 振荡器,那么要 加上 TPOR 的延时 (~ 10 µs)。这是从休眠中唤醒时的 最小延时。 如果休眠期间 WDT 超时,器件将唤醒。 RCON 寄存器 中的 WDTO 位将清零,表明 WDT 超时导致唤醒。 设置 FWDTEN = 0,允许用户软件通过 SWDTEN 控制 位 (RCON<5>)来使能 / 禁止看门狗定时器。 19.5 省电模式 通过执行一条特殊的指令 PWRSAV,可以进入两个省电 模式。 这两个模式是:休眠和空闲。 PWRSAV 指令的格式如下: PWRSAV <parameter>,其中“parameter”定 义是空闲还是休眠模式。 19.5.1 休眠模式 在休眠模式下,CPU 和外设的时钟关闭。如果在使用片 内振荡器,它也将关闭。 此外,如果在休眠期间 LP 振荡器处于工作状态,并且 LP 是唤醒时使用的振荡器,那么起振延时等于 TPOR。 不会有 PWRT 延时和 OST 定时器延时。为了使从休眠 中唤醒的起振延时最小,在进入休眠之前,应该选择这 些快速唤醒选项之一。 任何中断,如果被单独允许 (通过相应的 IE 位)并且优 先级占先的话,将唤醒处理器。处理器将处理中断,转 移至ISR。唤醒时RCON寄存器中的休眠状态位将置1。 注: 尽管加入各种不 同的延迟时间 (TPOR、 TLOCK 和 TPWRT),在延时结束时晶振(和 PLL)可能并未处于工作状态 (例如,对 于低频晶振)。在这种情况下,如果 FSCM 被使能,则器件将这这种情况作为时钟故 障并处理时钟故障陷阱, FRC 振荡器将被 使 能 而 用 户 必 须 重 新 使 能 晶 振。如 果 FSCM 未使能,器件将暂停代码执行直至 时钟稳定且将继续处于休眠模式直至振荡 器时钟启动。 休眠期间,故障保护时钟监视器不起作用,因为没有时 钟需要监视。不过,如果休眠期间 WDT 工作的话, LPRC 时钟将保持为活动状态。 欠压保护电路和低电压检测电路,如果使能的话,在休 眠期间仍然起作用。 2007 Microchip Technology Inc. DS70118G_CN 第131 页 dsPIC30F2010 所有复位将使处理器从休眠模式唤醒。除 POR 之外的 任何复位都将置 1 休眠状态位。在 POR 时,休眠状态 位将被清零。 如果看门狗定时器被使能,则处理器将在发生 WDT 超 时时从休眠模式唤醒。休眠和 WDTO 状态位都将被置 1。 19.5.2 空闲模式 3. 4. FBORPOR(0xF80004):BOR 和 POR 配置寄 存器 FGS (0xF8000A):通用代码段配置寄存器 如果在器件编程器中选择了器件,配置位的位置将被自 动处理。可以在源代码(这取决于使用的语言工具)中, 或者通过编程接口来指定配置位的期望状态。在对器件 编程之后,应用软件可以通过表读指令读取配置位的 值。更多信息,请参见器件的编程规范。 在空闲模式下,CPU 的时钟关闭,而外设继续运行。与 休眠模式不同的是,时钟源继续保持为工作状态。 注: 对于一些外设而言,每个模块中有一个与外设对应的控 制位,控制外设在空闲期间是否工作。 如果时钟故障检测使能的话,LPRC 故障保护时钟继续 保持为工作状态。 在发生以下事件之一时,处理器将从空闲模式唤醒: • 任何中断,如果已允许 (IE 为 1)并且满足所需的 优先级 • 任何复位 (POR、 BOR 或 MCLR) • WDT 超时 在从空闲模式唤醒时,时钟再次供 CPU 使用且指令立 即开始执行,从 PWRSAV 指令之后的第一条指令处开始 执行。 任何中断,如果已允许 (使用相应的 IE 位)并且优先级 占先的话,将唤醒处理器。处理器将处理中断,转移至 ISR。唤醒时 RCON 寄存器中的空闲状态位将置 1。 除 POR 之外的任何复位,都将把空闲状态位置 1。POR 时,空闲状态位清零。 19.7 如果设置了代码保护配置控制位 (FGS<GCP> 和 FGS<GWRP>),那么只 有在电压 VDD ≥ 4.5V 时才可以擦除整个代 码保护的器件。 在线调试器 如果选择 MPLAB® ICD 2 作为调试器,则使能在线调试 功能。与 MPLAB IDE 一起使用时,在线调试功能允许 简单的调试功能。当使能器件的这个功能时,某些资源 不能用于通常的用途。这些资源包括数据 RAM 的前 80 字节 和两个 I/O 引脚。 用户使用 MPLAB IDE 中的配置选项,可选择四对调试 I/O 引脚中的一对。这些引脚为 EMUD/EMUC、EMUD1/ EMUC1、 EMUD2/EMUC2 和 EMUD3/EMUC3。 无论选取哪对调试引脚,选取的 EMUD 引脚都是仿真 / 调试数据线,而 EMUC 引脚则是仿真 / 调试时钟线。这 些引脚将与 Microchip 提供的 MPLAB ICD 2 模块接口。 MPLAB ICD 2 使用选取的调试 I/O 引脚,发送命令、接 收响应,发送和接收数据。要使用器件的在线调试功 能,应用设计必须实现至 MCLR、 VDD、 VSS、 PGC、 PGD以及选取的EMUDx/EMUCx 引脚对的ICSP 连接。 如果看门狗定时器使能,则处理器在 WDT 超时时将从 空闲模式中唤醒。空闲和 WDTO 状态位都将置 1。 这样就产生了两种可能性: 与从休眠中唤醒不同的,从空闲中唤醒时不存在延时。 1. 19.6 器件配置寄存器 每个器件配置寄存器中的配置位都指定某些器件模式, 配置位通过器件编程器或者器件的在线串行编程 (ICSP)功能来进行编程。虽然每个器件配置寄存器都 是 24 位寄存器,但只有低 16 位可用来保存配置数据。 有四个器件配置寄存器可供用户使用: 1. 2. 2. 如果选取 EMUD/EMUC 作为调试 I/O 引脚对,那 么只需要一个 5 引脚的接口,这是因为,在所有 的 dsPIC30F 器件上, EMUD 和 EMUC 引脚功 能均可与 PGD 和 PGC 引脚功能复用。 如果选取了 EMUD1/EMUC1、 EMUD2/EMUC2 或 EMUD3/EMUC3 作为调试 I/O 引脚对,那么 需要 7 引脚的接口,这是因为,EMUDx/EMUCx 引脚功能(x = 1、2 或 3)不能与 PGD 和 PGC 引脚功能复用。 FOSC (0xF80000):振荡器配置寄存器 FWDT(0xF80002):看门狗定时器配置寄存器 DS70118G_CN 第132 页 2007 Microchip Technology Inc. 2007 Microchip Technology Inc. 表 19-7: SFR 名称 RCON OSCCON 系统集成寄存器映射 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0740 TRAPR IOPUWR BGST — — — — — EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR 0742 TUN3 TUN2 TUN1 TUN0 LOCK — CF — LPOSCEN Bit 8 Bit 7 Bit 6 COSC<1:0> NOSC<1:0> POST<1:0> 图注: u = 未初始化位 注: 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 表 19-8: 文件寄存器 名称 OSWEN 取决于配置位。 器件配置寄存器映射 地址 bit 23-16 FOSC F80000 — FWDT F80002 — FWDTEN — FBORPOR F80004 — MCLREN FGS F8000A — — 注: 复位状态 取决于复位类型。 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 — — — — FOS<1:0> — — — — — — — — — — FWPSA<1:0> — — — — PWMPIN HPOL LPOL BOREN — BORV<1:0> — — — — — — — — — — — — — — FCKSM<1:0> Bit 9 Bit 5 Bit 4 — — — Bit 3 Bit 2 Bit 1 Bit 0 FPR<3:0> FWPSB<3:0> FPWRT<1:0> GCP GWRP 有关寄存器各位的描述,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 dsPIC30F2010 DS70118G_CN 第 133 页 dsPIC30F2010 注: DS70118G_CN 第134 页 2007 Microchip Technology Inc. dsPIC30F2010 20.0 指令集汇总 注: 本数据手册总结了 dsPIC30F 系列器件的功能,但是不 应把本手册当作无所不包的参考手册来使用。有关 CPU、外 设、寄 存 器 说 明 和 一 般 器 件 功 能 的 更 多 信 息,请 参 阅 《dsPIC30F 系列参考手册》(DS70046E_CN)。有关器件 指令集和编程的更多信息,请参阅 《dsPIC30F/33F 程序员 参考手册》(DS70157B_CN)。 dsPIC30F 指令集的众多增强性能扩展了以往的 PIC® MCU 指令集,同时可以方便地从 PIC MCU 指令集移植 到 dsPIC30F 指令集。 大部分指令的长度为一个程序存储字(24 位)。只有三 条指令需要两个程序存储单元。 每一条单字指令长 24 位,分为一个指定指令类型的 8 位操作码和进一步指定指令操作的一个或多个操作数。 指令集是高度正交的,分为五个基本类别: • • • • • 针对字或字节的操作 针对位的操作 立即数操作 DSP 操作 控制操作 表 20-1 给出了在说明指令时使用的通用符号。 表 20-2 是 dsPIC30F 指令集汇总,还给出了每条指令影 响的状态标志位。 大多数针对字或字节的 W 寄存器指令 (包括桶形移位 指令)有三个操作数: • 第一个源操作数通常是寄存器 Wb,不带任何地址 修改量 • 第二个源操作数通常是寄存器 Ws,带或不带地址 修改量 • 运算结果的目的寄存器,通常是寄存器 Wd,带或 不带地址修改量 不过,针对字或字节的文件寄存器指令只有两个操作 数: • 文件寄存器由 f 值指定 • 目的寄存器可以是文件寄存器 f 或 W0 寄存器 (用 WREG 表示) 2007 Microchip Technology Inc. 大多数位操作类指令 (包括简单的循环 / 移位指令)有 两个操作数: • 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 或立即数指定 控制指令可以使用下列操作数: • 程序存储地址 • 表读和表写指令的模式 除了某些双字指令外,所有指令都是单字指令;双字指 令之所以是双字长的 (48 位),是因为要用 48 位来提 供所需信息。在第二个字中,8 个 MSb 全为 0。如果指 令自身把第二个字当作一条指令来执行的话,它将作为 一条 NOP 指令来执行。 DS70118G_CN 第135 页 dsPIC30F2010 大多数单字长指令都在一个指令周期内执行,除非条件 测试为真、或者指令运行结果要改变程序计数器。在这 样的情形下,执行就需要两个指令周期,多出的一个指 令周期,就如同执行了一条 NOP 指令。值得注意的例外 是 BRA(无条件 / 计算转移)、间接 CALL/GOTO、所有 的表读和表写以及 RETURN/RETFIE 指令,它们是单字 长指令,但执行需要两个或三个周期。某些与跳过后续 指令有关的指令,如果要执行跳过的话,可能需要两个 表 20-1: 或三个周期,这取决于被跳过的指令是单字还是双字指 令。此外,双字传送需要两个周期。双字指令执行需要 两个指令周期。 注: 关 于 指 令 集 的 更 多 细 节,可 参 见 《dsPIC30F/33F 程序员参考手册》 (DS70157B_CN)。 操作码描述中使用的符号 字段 #text (text) [text] { } <n:m> .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 DS70118G_CN 第136 页 描述 表示由 “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} 2007 Microchip Technology Inc. dsPIC30F2010 表 20-1: 操作码描述中使用的符号 (续) 字段 Wb Wd Wdo Wm,Wn Wm*Wm Wm*Wn Wn Wnd Wns WREG Ws Wso Wx Wxd Wy Wyd 2007 Microchip Technology Inc. 描述 基准 W 寄存器 ∈ {W0..W15} 目的 W 寄存器 ∈ { Wd, [Wd], [Wd++], [Wd--], [++Wd], [--Wd] } 目的 W 寄存器 ∈ { Wnd, [Wnd], [Wnd++], [Wnd--], [++Wnd], [--Wnd], [Wnd+Wb] } 被除数和除数工作寄存器对 (直接寻址) 用于平方指令的被乘数和乘数寄存器对 ∈ {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 数据空间预取地址寄存器 ∈ {[W10] + = 6, [W10] + = 4, [W10] + = 2, [W10], [W10] - = 6, [W10] - = 4, [W10] - = 2, [W11] + = 6, [W11] + = 4, [W11] + = 2, [W11], [W11] - = 6, [W11] - = 4, [W11] - = 2, [W11 + W12], 无 } 用于 DSP 指令的 Y 数据空间预取目的寄存器 ∈ {W4..W7} DS70118G_CN 第137 页 dsPIC30F2010 表 20-2: 基本指 令编号 1 2 3 4 5 6 7 指令集汇总表 汇编 助记符 ADD ADDC AND ASR BCLR BRA BSET 汇编语法 说明 字 数 周期数 影响的 状态标志 OA,OB,SA,SB ADD Acc 累加器相加 1 1 ADD f f = f + WREG 1 1 C,DC,N,OV,Z ADD f,WREG WREG = f + WREG 1 1 C,DC,N,OV,Z ADD #lit10,Wn Wd = lit10 + Wd 1 1 C,DC,N,OV,Z ADD Wb,Ws,Wd Wd = Wb + Ws 1 1 C,DC,N,OV,Z ADD Wb,#lit5,Wd Wd = Wb + lit5 1 1 C,DC,N,OV,Z ADD Wso,#Slit4,Acc 16 位符号立即数加到累加器 1 1 OA,OB,SA,SB ADDC f f = f + WREG +(C) 1 1 C,DC,N,OV,Z ADDC f,WREG WREG = f + WREG + (C) 1 1 C,DC,N,OV,Z ADDC #lit10,Wn Wd = lit10 + Wd + (C) 1 1 C,DC,N,OV,Z ADDC Wb,Ws,Wd Wd = Wb + Ws + (C) 1 1 C,DC,N,OV,Z ADDC Wb,#lit5,Wd Wd = Wb + lit5 + (C) 1 1 C,DC,N,OV,Z AND f f = f .AND. WREG 1 1 N,Z AND f,WREG WREG = f .AND. WREG 1 1 N,Z AND #lit10,Wn Wd = lit10 .AND. Wd 1 1 N,Z AND Wb,Ws,Wd Wd = Wb .AND. Ws 1 1 N,Z AND Wb,#lit5,Wd Wd = Wb .AND. lit5 1 1 N,Z ASR f f = 算术右移 f 1 1 C,N,OV,Z ASR f,WREG WREG = 算术右移 f 1 1 C,N,OV,Z ASR Ws,Wd Wd = 算术右移 Ws 1 1 C,N,OV,Z ASR Wb,Wns,Wnd Wnd = 算术右移 Wb,移位位数为 Wns 1 1 N,Z ASR Wb,#lit5,Wnd Wnd = 算术右移 Wb,移位位数为 lit5 1 1 N,Z BCLR f,#bit4 位清零 f 1 1 无 BCLR Ws,#bit4 位清零 Ws 1 1 无 BRA C,Expr 如果有进位,则转移 1 1 (2) 无 BRA GE,Expr 如果大于或等于,则转移 1 1 (2) 无 BRA GEU,Expr 如果无符号大于或等于,则转移 1 1 (2) 无 BRA GT,Expr 如果大于,则转移 1 1 (2) 无 BRA GTU,Expr 如果无符号大于,则转移 1 1 (2) 无 BRA LE,Expr 如果小于或等于,则转移 1 1 (2) 无 BRA LEU,Expr 如果无符号小于或等于,则转移 1 1 (2) 无 BRA LT,Expr 如果小于,则转移 1 1 (2) 无 BRA LTU,Expr 如果无符号小于,则转移 1 1 (2) 无 BRA N,Expr 如果为负,则转移 1 1 (2) 无 BRA NC,Expr 如果没有进位,则转移 1 1 (2) 无 BRA NN,Expr 如果不为负,则转移 1 1 (2) 无 BRA NOV,Expr 如果不溢出,则转移 1 1 (2) 无 BRA NZ,Expr 如果非零,则转移 1 1 (2) 无 BRA OA,Expr 如果累加器 A 溢出,则转移 1 1 (2) 无 BRA OB,Expr 如果累加器 B 溢出,则转移 1 1 (2) 无 BRA OV,Expr 如果溢出,则转移 1 1 (2) 无 BRA SA,Expr 如果累加器 A 饱和,则转移 1 1 (2) 无 BRA SB,Expr 如果累加器 B 饱和,则转移 1 1 (2) 无 BRA Expr 无条件转移 1 2 无 BRA Z,Expr 如果为零,则转移 1 1 (2) 无 BRA Wn 计算转移 1 2 无 BSET f,#bit4 位置位 f 1 1 无 BSET Ws,#bit4 位置位 Ws 1 1 无 Ws,Wb 把 C 位写入 Ws<Wb> 1 1 无 8 BSW BSW.C BSW.Z Ws,Wb 把 Z 位写入 Ws<Wb> 1 1 无 9 BTG BTG f,#bit4 位翻转 f 1 1 无 BTG Ws,#bit4 位翻转 Ws 1 1 无 BTSC f,#bit4 位测试 f,如果清零则跳过 1 1 (2 或 3) 无 BTSC Ws,#bit4 位测试 Ws,如果清零则跳过 1 1 (2 或 3) 无 10 BTSC DS70118G_CN 第138 页 2007 Microchip Technology Inc. dsPIC30F2010 表 20-2: 基本指 令编号 11 12 13 14 15 指令集汇总表 (续) 汇编 助记符 BTSS BTST BTSTS CALL CLR 汇编语法 说明 字 数 周期数 影响的 状态标志 BTSS f,#bit4 位测试 f,如果为 1 则跳过 1 1 (2 或 3) 无 BTSS Ws,#bit4 位测试 Ws,如果为 1 则跳过 1 1 (2 或 3) 无 BTST f,#bit4 位测试 f 1 1 Z BTST.C Ws,#bit4 位测试 Ws,并将被测试位拷贝至 C 1 1 C BTST.Z Ws,#bit4 1 Z Ws,Wb 位测试 Ws,并将被测试位的反码拷贝至 Z 位测试 Ws<Wb>,并将被测试位拷贝至 C 1 BTST.C 1 1 C Z BTST.Z Ws,Wb 位测试 Ws<Wb>,并将被测试位的反码拷贝至 Z 1 1 BTSTS f,#bit4 位测试,然后置 1 f 1 1 Z BTSTS.C Ws,#bit4 位测试 Ws,将被测试位拷贝至 C,随后将被测试 位置 1 1 1 C BTSTS.Z Ws,#bit4 位测试 Ws,将被测试位的反码拷贝至 Z,随后将 被测试位置 1 1 1 Z CALL lit23 调用子程序 2 2 无 CALL Wn 间接调用子程序 1 2 无 CLR f f = 0x0000 1 1 无 CLR WREG WREG = 0x0000 1 1 无 CLR Ws Ws = 0x0000 1 1 无 CLR Acc,Wx,Wxd,Wy,Wyd,AWB 清零累加器 1 1 OA,OB,SA,SB 16 CLRWDT CLRWDT 清零看门狗定时器 1 1 WDTO,Sleep 17 COM COM f f=f 1 1 N,Z COM f,WREG WREG = f 1 1 N,Z COM Ws,Wd Wd = Ws 1 1 N,Z CP f 比较 f 与 WREG 1 1 C,DC,N,OV,Z 18 19 20 CP CP0 CPB CP Wb,#lit5 比较 Wb 与 lit5 1 1 C,DC,N,OV,Z CP Wb,Ws 比较 Wb 与 Ws (Wb - Ws) 1 1 C,DC,N,OV,Z CP0 f 比较 f 与 0xFFFF 1 1 C,DC,N,OV,Z CP0 Ws 比较 Ws 与 0xFFFF 1 1 C,DC,N,OV,Z CPB f 比较 f 与 WREG,带借位 1 1 C,DC,N,OV,Z CPB Wb,#lit5 比较 Wb 与 lit5,带借位 1 1 C,DC,N,OV,Z CPB Wb,Ws 比较 Wb 与 Ws,带借位 (Wb - Ws - C) 1 1 C,DC,N,OV,Z 21 CPSEQ CPSEQ Wb, Wn 比较 Wb 与 Wn,如果 相等,则跳过 1 1 (2 或 3) 无 22 CPSGT CPSGT Wb, Wn 比较 Wb 与 Wn,如果大于,则跳过 1 1 (2 或 3) 无 23 CPSLT CPSLT Wb, Wn 比较 Wb 与 Wn,如果小于,则跳过 1 1 (2 或 3) 无 24 CPSNE CPSNE Wb, Wn 比较 Wb 与 Wn,如果不相等,则跳过 1 1 (2 或 3) 无 25 DAW DAW Wn Wn = 十进制调整 Wn 1 1 C 26 DEC DEC f f = f -1 1 1 C,DC,N,OV,Z DEC f,WREG WREG = f -1 1 1 C,DC,N,OV,Z DEC Ws,Wd Wd = Ws - 1 1 1 C,DC,N,OV,Z DEC2 f f = f -2 1 1 C,DC,N,OV,Z DEC2 f,WREG WREG = f -2 1 1 C,DC,N,OV,Z C,DC,N,OV,Z 27 DEC2 DEC2 Ws,Wd Wd = Ws - 2 1 1 28 DISI DISI #lit14 1 1 无 29 DIV DIV.S Wm,Wn 禁止中断,且持续时间为 lit14 个指令周期 有符号 16/16 位整数除法 1 18 N,Z,C,OV DIV.SD Wm,Wn 有符号 32/16 位整数除法 1 18 N,Z,C,OV DIV.U Wm,Wn 无符号 16/16 位整数除法 1 18 N,Z,C,OV DIV.UD Wm,Wn 无符号 32/16 位整数除法 1 18 N,Z,C,OV 有符号 16/16 位小数除法 1 18 N,Z,C,OV 30 DIVF DIVF 31 DO DO #lit14,Expr 执行 DO 循环到 PC+Expr,执行次数为 lit14+1 次 2 2 无 DO Wn,Expr 2 2 无 1 1 OA,OB,OAB, SA,SB,SAB Wm,Wn 32 ED ED Wm*Wm,Acc,Wx,Wy,Wxd 执行 DO 循环到 PC+Expr,执行次数为 (Wn) + 1 次 欧几里德距离 (无累加) 33 EDAC EDAC Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离 1 1 OA,OB,OAB, SA,SB,SAB 34 EXCH EXCH Wns,Wnd 交换 Wns 与 Wnd 的内容 1 1 无 2007 Microchip Technology Inc. DS70118G_CN 第139 页 dsPIC30F2010 表 20-2: 基本指 令编号 指令集汇总表 (续) 汇编 助记符 汇编语法 字 数 说明 周期数 影响的 状态标志 35 FBCL FBCL Ws,Wnd 搜索自左起第一个位变化 1 1 C 36 FF1L FF1L Ws,Wnd 搜索自左起第一个 1 1 1 C 搜索自右起第一个 1 转移至地址 1 1 C 2 2 无 37 FF1R FF1R Ws,Wnd 38 GOTO GOTO Expr GOTO Wn 间接转移 1 2 无 39 INC INC f f=f+1 1 1 C,DC,N,OV,Z INC f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z INC Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z INC2 f f=f+2 1 1 C,DC,N,OV,Z INC2 f,WREG WREG = f + 2 1 1 C,DC,N,OV,Z INC2 Ws,Wd Wd = Ws + 2 1 1 C,DC,N,OV,Z IOR f f = f .IOR. WREG 1 1 N,Z IOR f,WREG WREG = f .IOR. WREG 1 1 N,Z IOR #lit10,Wn Wd = lit10 .IOR. Wd 1 1 N,Z IOR Wb,Ws,Wd Wd = Wb .IOR. Ws 1 1 N,Z 40 41 INC2 IOR IOR Wb,#lit5,Wd Wd = Wb .IOR. lit5 1 1 N,Z 42 LAC LAC Wso,#Slit4,Acc 装载累加器 1 1 OA,OB,OAB, SA,SB,SAB 43 LNK LNK #lit14 分配堆栈帧 1 1 无 44 LSR LSR f f = 逻辑右移 f 1 1 C,N,OV,Z LSR f,WREG WREG = 逻辑右移 f 1 1 C,N,OV,Z LSR Ws,Wd Wd = 逻辑右移 Ws 1 1 C,N,OV,Z LSR Wb,Wns,Wnd Wnd = 逻辑右移 Wb,移位位数 Wns 1 1 N,Z LSR Wb,#lit5,Wnd Wnd = 逻辑右移 Wb,移位位数 lit5 1 1 N,Z MAC Wm*Wn,Acc,Wx,Wxd,Wy,W 相乘并累加 yd, AWB 1 1 OA,OB,OAB, SA,SB,SAB MAC Wm*Wm,Acc,Wx,Wxd,Wy,W 平方并累加 yd 1 1 OA,OB,OAB, SA,SB,SAB MOV f,Wn 传送 f 至 Wn 1 1 无 MOV f 传送 f 至 f 1 1 N,Z MOV f,WREG 传送 f 至 WREG 1 1 N,Z MOV #lit16,Wn 传送 16 位立即数至 Wn 1 1 无 MOV.b #lit8,Wn 传送 8 位立即数至 Wn 1 1 无 无 45 46 MAC MOV MOV Wn,f 传送 Wn 至 f 1 1 MOV Wso,Wdo 传送 Ws 至 Wd 1 1 无 MOV WREG,f 传送 WREG 至 f 1 1 N,Z MOV.D Wns,Wd 双字传送 W(ns):W(ns + 1) 至 Wd 1 2 无 MOV.D Ws,Wnd 双字传送 Ws 至 W(nd + 1):W(nd) 1 2 无 1 1 无 47 MOVSAC MOVSAC 48 MPY MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd Wm 与 Wn 相乘,结果存入累加器 1 1 OA,OB,OAB, SA,SB,SAB MPY Wm*Wm,Acc,Wx,Wxd,Wy,Wyd Wm 平方,结果存入累加器 1 1 OA,OB,OAB, SA,SB,SAB -(Wm × Wn),结果存入累加器 1 1 无 1 1 OA,OB,OAB, SA,SB,SAB Acc,Wx,Wxd,Wy,Wyd,AWB 预取并保存累加器 49 MPY.N MPY.N Wm*Wn,Acc,Wx,Wxd,Wy,Wyd 50 MSC MSC Wm*Wm,Acc,Wx,Wxd,Wy,W 相乘并从累加器中减去 yd, AWB 51 MUL MUL.SS Wb,Ws,Wnd {Wnd + 1, Wnd} = signed(Wb) * signed(Ws) 1 1 无 MUL.SU Wb,Ws,Wnd {Wnd + 1, Wnd} = signed(Wb) * unsigned(Ws) 1 1 无 MUL.US Wb,Ws,Wnd {Wnd + 1, Wnd} = unsigned(Wb) * signed(Ws) 1 1 无 MUL.UU Wb,Ws,Wnd {Wnd + 1, Wnd} = unsigned(Wb) * unsigned(Ws) 1 1 无 MUL.SU Wb,#lit5,Wnd {Wnd + 1, Wnd} = signed(Wb) * unsigned(lit5) 1 1 无 MUL.UU Wb,#lit5,Wnd {Wnd + 1, Wnd} = unsigned(Wb) * unsigned(lit5) 1 1 无 MUL f W3:W2 = f * WREG 1 1 无 DS70118G_CN 第140 页 2007 Microchip Technology Inc. dsPIC30F2010 表 20-2: 基本指 令编号 52 53 54 指令集汇总表 (续) 汇编 助记符 NEG NOP POP 汇编语法 NEG 累加器求补 Acc PUSH 字 数 周期数 1 1 影响的 状态标志 OA,OB,OAB, SA,SB,SAB NEG f f=f+1 1 1 C,DC,N,OV,Z NEG f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z NEG Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z NOP 空操作 1 1 无 NOPR 空操作 1 1 无 POP f 从栈顶 (TOS)弹出至 f 1 1 无 POP Wdo 从栈顶 (TOS)弹出至 Wdo 1 1 无 POP.D Wnd 从栈顶 (TOS)弹出至 W(nd):W(nd+1) 1 2 无 把影子寄存器弹出堆栈 1 1 全部 POP.S 55 说明 PUSH f 把 f 压入栈顶 (TOS) 1 1 无 PUSH Wso 把 Wso 压入栈顶 (TOS) 1 1 无 PUSH.D Wns 把 W(ns):W(ns+1) 压入栈顶 (TOS) 1 2 无 把影子寄存器压入堆栈 1 1 无 进入休眠或空闲模式 1 1 WDTO,Sleep 无 PUSH.S 56 PWRSAV PWRSAV 57 RCALL RCALL Expr 相对调用 1 2 RCALL Wn 计算调用 1 2 无 重复执行下一条指令 lit14 + 1 次 1 1 无 #lit1 58 REPEAT REPEAT #lit14 REPEAT Wn 重复执行下一条指令 (Wn) + 1 次 1 1 无 59 RESET RESET 软件器件复位 1 1 无 60 RETFIE RETFIE 从中断返回 1 3 (2) 无 61 RETLW RETLW 返回,并将立即数存储至 Wn 1 3 (2) 无 62 RETURN RETURN 从子程序返回 1 3 (2) 无 63 RLC RLC f = 带进位位循环左移 f 1 1 C,N,Z 64 65 66 67 RLNC RRC RRNC SAC #lit10,Wn f RLC f,WREG WREG = 带进位位循环左移 f 1 1 C,N,Z RLC Ws,Wd Wd = 带进位位循环左移 Ws 1 1 C,N,Z RLNC f f = 不带进位位循环左移 f 1 1 N,Z RLNC f,WREG WREG = 不带进位位循环左移 f 1 1 N,Z RLNC Ws,Wd Wd = 不带进位位循环左移 Ws 1 1 N,Z RRC f f = 带进位位循环右移 f 1 1 C,N,Z RRC f,WREG WREG = 带进位位循环右移 f 1 1 C,N,Z RRC Ws,Wd Wd = 带进位位循环右移 Ws 1 1 C,N,Z RRNC f f = 不带进位位循环右移 f 1 1 N,Z RRNC f,WREG WREG = 不带进位位循环右移 f 1 1 N,Z RRNC Ws,Wd Wd = 不带进位位循环右移 Ws 1 1 N,Z SAC Acc,#Slit4,Wdo 保存累加器 1 1 无 SAC.R Acc,#Slit4,Wdo 保存舍入后的累加器 1 1 无 1 1 C,N,Z 68 SE SE Ws,Wnd Wnd = 符号扩展后的 Ws 69 SETM SETM f f = 0xFFFF 1 1 无 SETM WREG WREG = 0xFFFF 1 1 无 SETM Ws Ws = 0xFFFF 1 1 无 SFTAC Acc,Wn 算术移位累加器 (Wn) 次 1 1 OA,OB,OAB, SA,SB,SAB SFTAC Acc,#Slit6 算术移位累加器 Slit6 次 1 1 OA,OB,OAB, SA,SB,SAB SL f f = 左移 f 1 1 C,N,OV,Z SL f,WREG WREG = 左移 f 1 1 C,N,OV,Z SL Ws,Wd Wd = 左移 Ws 1 1 C,N,OV,Z SL Wb,Wns,Wnd Wnd = 左移 Wb,且移位位数为 Wns 1 1 N,Z SL Wb,#lit5,Wnd Wnd = 左移 Wb,且移位位数为 lit5 1 1 N,Z 70 71 SFTAC SL 2007 Microchip Technology Inc. DS70118G_CN 第141 页 dsPIC30F2010 表 20-2: 基本指 令编号 72 73 74 75 指令集汇总表 (续) 汇编 助记符 SUB SUBB SUBR SUBBR 汇编语法 说明 字 数 周期数 1 1 影响的 状态标志 OA,OB,OAB, SA,SB,SAB SUB Acc 从累加器减去 SUB f f = f - WREG 1 1 C,DC,N,OV,Z SUB f,WREG WREG = f - WREG 1 1 C,DC,N,OV,Z SUB #lit10,Wn Wn = Wn - lit10 1 1 C,DC,N,OV,Z SUB Wb,Ws,Wd Wd = Wb - Ws 1 1 C,DC,N,OV,Z SUB Wb,#lit5,Wd Wd = Wb - lit5 1 1 C,DC,N,OV,Z SUBB f f = f - WREG - (C) 1 1 C,DC,N,OV,Z SUBB f,WREG WREG = f - WREG - (C) 1 1 C,DC,N,OV,Z SUBB #lit10,Wn Wn = Wn - lit10 - (C) 1 1 C,DC,N,OV,Z SUBB Wb,Ws,Wd Wd = Wb - Ws - (C) 1 1 C,DC,N,OV,Z SUBB Wb,#lit5,Wd Wd = Wb - lit5 - (C) 1 1 C,DC,N,OV,Z SUBR f f = WREG - f 1 1 C,DC,N,OV,Z SUBR f,WREG WREG = WREG - f 1 1 C,DC,N,OV,Z SUBR Wb,Ws,Wd Wd = Ws - Wb 1 1 C,DC,N,OV,Z SUBR Wb,#lit5,Wd Wd = lit5 - Wb 1 1 C,DC,N,OV,Z SUBBR f f = WREG - f - (C) 1 1 C,DC,N,OV,Z SUBBR f,WREG WREG = WREG -f - (C) 1 1 C,DC,N,OV,Z SUBBR Wb,Ws,Wd Wd = Ws - Wb - (C) 1 1 C,DC,N,OV,Z SUBBR Wb,#lit5,Wd Wd = lit5 - Wb - (C) 1 1 C,DC,N,OV,Z 76 SWAP SWAP.b Wn Wn = 半字节交换 Wn 1 1 无 SWAP Wn Wn = 字节交换 Wn 1 1 无 77 TBLRDH TBLRDH Ws,Wd 读程序存储单元 <23:16> 至 Wd<7:0> 1 2 无 78 TBLRDL TBLRDL Ws,Wd 读程序存储单元 <15:0> 至 Wd 1 2 无 79 TBLWTH TBLWTH Ws,Wd 写 Ws<7:0> 至程序存储单元 <23:16> 1 2 无 80 TBLWTL TBLWTL Ws,Wd 写 Ws 至程序存储单元 <15:0> 1 2 无 81 ULNK ULNK 释放堆栈帧 1 1 无 82 XOR XOR f f = f .XOR. WREG 1 1 N,Z XOR f,WREG WREG = f .XOR. WREG 1 1 N,Z XOR #lit10,Wn Wd = lit10 .XOR. Wd 1 1 N,Z XOR Wb,Ws,Wd Wd = Wb .XOR. Ws 1 1 N,Z XOR Wb,#lit5,Wd Wd = Wb .XOR. lit5 1 1 N,Z ZE Ws,Wnd Wnd = 零扩展后的 Ws 1 1 C,Z,N 83 ZE DS70118G_CN 第142 页 2007 Microchip Technology Inc. dsPIC30F2010 21.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 开发编程器 • 低成本演示和开发板及评估工具包 21.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. DS70118G_CN 第143 页 dsPIC30F2010 21.2 MPASM 汇编器 MPASM 汇编器是全功能通用宏汇编器,适用于所有的 PIC MCU。 MPASM 汇编器可生成用于 MPLINK 目标链接器的可重 定位目标文件、Intel® 标准 HEX 文件、详细描述存储器 使用状况和符号参考的 MAP 文件、包含源代码行及生 成机器码的绝对 LST 文件以及用于调试的 COFF 文件。 MPASM 汇编器具有如下特征: • • • • 集成在 MPLAB IDE 项目中 用户定义的宏可简化汇编代码 对多用途源文件进行条件汇编 允许完全控制汇编过程的指令 21.3 MPLAB C18 和 MPLAB C30 C 编译器 MPLAB C18 和 MPLAB C30 代码开发系统是完全的 ANSI C 编译器,分别适用于 Microchip 的 PIC18 和 PIC24 系列单片机及 dsPIC30F 和 dsPIC33 系列数字信 号控制器。这些编译器可提供其他编译器并不具备的强 大的集成功能和出众的代码优化能力,且使用方便。 为便于源代码调试,编译器提供了针对 MPLAB IDE 调 试器的优化符号信息。 21.4 MPLINK 目标链接器 / MPLIB 目标库管理器 MPLINK 目标链接器包含了由 MPASM 汇编器、MPLAB C18 C 编译器产生的可重定位目标。通过使用链接器脚 本中的指令,它还可链接预编译库中的可重定位目标。 21.5 MPLAB ASM30 汇编器、 链接器和库管理器 MPLAB ASM30 汇编器为 dsPIC30F 器件提供转换自符 号汇编语言的可重定位机器码。 MPLAB C30 C 编译器 使用该汇编器生成目标文件。汇编器产生可重定位目标 文件之后,可将这些目标文件存档,或与其他可重定位 目标文件和存档链接以生成可执行文件。该汇编器有如 下显著特征: • • • • • • 支持整个 dsPIC30F 指令集 支持定点数据和浮点数据 命令行界面 丰富的指令集 灵活的宏语言 MPLAB IDE 兼容性 21.6 MPLAB SIM 软件模拟器 MPLAB SIM软件模拟器在指令级对PIC MCU和dsPIC® DSC 进行模拟,使得用户可以在 PC 主机的环境下进行 代码开发。对于任何给定的指令,用户均可对数据区进 行检查或修改,并通过各种触发机制来产生激励。可以 将各寄存器的情况记录在文件中,以便进行进一步地运 行时分析。跟踪缓冲器和逻辑分析器的显示使模拟器还 能记录和跟踪程序的执行、 I/O 的动作、大部分的外设 及内部寄存器的状况。 MPLAB SIM 软件模拟器完全支持使用 MPLAB C18 和 MPLAB C30 C 编译器以及MPASM和MAPLAB ASM30 汇编器的符号调试。该软件模拟器可用于在硬件实验室 环境外灵活地开发和调试代码,是一款完美且经济的软 件开发工具。 MPLIB目标库管理器管理预编译代码库文件的创建和修 改。当从源文件调用库中的一段子程序时,只有包含此 子程序的模块被链接到应用中。这样可使大型库在许多 不同应用中被高效地利用。 目标链接器 / 库管理器具有如下特征: • 高效地连接单个的库而不是许多小文件 • 通过将相关的模块组合在一起来增强代码的可维护 性 • 只要列出、替换、删除和抽取模块,便可灵活地创 建库 DS70118G_CN 第144 页 2007 Microchip Technology Inc. dsPIC30F2010 21.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 位操作系统可使这些功能在一个简单而统一的应用中得 到很好的利用。 21.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)与目标板相连。 21.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 器件的 开发编程器。 21.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 卡 用作文件存储及数据安全应用。 可通过 MPLAB IDE 下载将来版本的固件,对 MPLAB REAL ICE 进行现场升级。在即将推出的 MPLAB IDE 版 本中,会支持许多新器件,还将增加一些新特性,如软 件断点和汇编代码跟踪等。在同类仿真器中, MPLAB REAL ICE 的优势十分明显:低成本、高速仿真、实时变 量监视、跟踪分析、复杂断点、耐用的探针接口及较长 (长达 3 米)的互连电缆。 2007 Microchip Technology Inc. DS70118G_CN 第145 页 dsPIC30F2010 21.11 PICSTART Plus 开发编程器 21.13 演示、开发和评估板 PICSTART Plus开发编程器是一款易于使用而成本低廉 的原型编程器。它通过 COM (RS-232)端口与 PC 相 连。 MPLAB 集成开发环境软件使得该编程器的使用简 便、高效。PICSTART Plus 开发编程器支持采用 DIP 封 装的大部分 PIC 器件,其引脚数最多可达 40 个。引脚 数更多的器件,如 PIC16C92X 和 PIC17C76X,可通过 连接一个转接插槽来获得支持。PICSTART Plus 开发编 程器符合 CE 规范。 有许多演示、开发和评估板可用于各种 PIC MCU 和 dsPIC DSC,实现对全功能系统的快速应用开发。大多 数的演示、开发和评估板都有实验布线区,供用户添加 定制电路;还有应用固件和源代码,用于测试和修改。 21.12 PICkit 2 开发编程器 PICkit™ 2 开发编程器是一个低成本编程器;对于某些 选定闪存器件,它也是一个调试器,通过其易于使用的 接口可对众多 Microchip 的低档、中档和 PIC18F 系列 闪存单片机进行编程。 PICkit 2 入门工具包中包含一个 有实验布线区的开发板、十二堂系列课程、软件和 HITECH 的 PICC™ Lite C 编译器,有助于用户快速掌握 PIC® 单片机的使用。这一工具包为使用 Microchip 功能 强大的中档闪存系列单片机进行编程、评估和应用开 发,提供了所需的一切。 DS70118G_CN 第146 页 这些板支持多种功能部件,包括 LED、温度传感器、开 关、扬声器、 RS-232 接口、 LCD 显示器、电位计和附 加 EEPROM 存储器。 演示和开发板可用于教学环境,在实验布线区设计定制 电路,从而掌握各种单片机应用。 除了 PICDEM™ 和 dsPICDEM™ 演示 / 开发板系列电路 外, Microchip 还有一系列评估工具包和演示软件, 适 用于模拟滤波器设计、 KEELOQ® 数据安全产品 IC、 CAN、IrDA®、PowerSmart 电池管理、SEEVAL® 评估 系统、 Σ−∆ ADC、流速传感器,等等。 有 关 演 示、开 发 和 评 估 工 具 包 的 完 整 列 表,请 查 阅 Microchip 公司网页 (www.microchip.com)。 2007 Microchip Technology Inc. dsPIC30F2010 22.0 电气特性 本章将对 dsPIC30F 电气特性进行概括介绍。其余信息将在该文档的后续版本中给出。 有关 dsPIC30F 架构和内核的详细信息,请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)。 下面列出了 dsPIC30F 系列器件的绝对最大额定值。器件长时间工作在最大额定值条件可能影响其可靠性。我们不建议 使器件在或超过本规范指定的最大额定值条件下运行。 绝对最大额定值 (牐 © 环境温度................................................................................................................................................ .-40°C 至 +125°C 存储温度................................................................................................................................................ -65°C 至 +150°C 任一引脚相对于 VSS 的电压 (除 VDD 和 MCLR 外).................................................................. -0.3V 至 (VDD + 0.3V) VDD 引脚相对于 VSS 的电压 ...................................................................................................................... -0.3V 至 +5.5V MCLR 引脚相对于 VSS 的电压 (注 1)..................................................................................................... 0V 至 +13.25V 总功耗 (注 2)..........................................................................................................................................................1.0W VSS 引脚的最大电流 ..............................................................................................................................................300 mA VDD 引脚的最大电流..............................................................................................................................................250 mA 输入箝位电流, IIK (VI < 0 或 VI > VDD)............................................................................................................. ±20 mA 输出箝位电流, IOK (VO < 0 或 VO > VDD)......................................................................................................... ±20 mA 任一 I/O 引脚最大输出灌电流..................................................................................................................................25 mA 任一 I/O 引脚最大输出拉电流..................................................................................................................................25 mA 全部端口总的灌电流..............................................................................................................................................200 mA 全部端口总的拉电流..............................................................................................................................................200 mA 注 1: MCLR/VPP 引脚上的尖峰电压低于 VSS,导致感应电流超过 80 mA 时,可能引起锁死。因此,当把一个 “低”电平加到 MCLR/VPP 引脚上时,应串联一个 50-100Ω 的电阻,而不要将这个引脚直接接到 VDD。 2: 最大可允许电流由器件最大功耗决定,参见表 22-2。 † 注:如果器件工作条件超过上述 “绝对最大额定值”,可能引起器件永久性损坏。这仅是极限参数,我们不建议 器件工作在极限值甚至超过上述极限值。器件长时间工作在极限条件下可能会影响其可靠性。 22.1 DC 特性 表 22-1: 工作 MIPS 与电压 VDD 范围 温度范围 最大 MIPS dsPIC30F2010-30I dsPIC30F2010-20E 4.5-5.5V -40°C 至 85°C 30 — 4.5-5.5V -40°C 至 125°C — 20 3.0-3.6V -40°C 至 85°C 20 — 3.0-3.6V -40°C 至 125°C — 15 2.5-3.0V -40°C 至 85°C 10 — 2007 Microchip Technology Inc. DS70118G_CN 第147 页 dsPIC30F2010 表 22-2: 热工作条件 额定值 符号 最小值 典型值 最大值 单位 工作结温范围 TJ -40 +125 °C 工作环境温度范围 TA -40 +85 °C 工作结温范围 TJ -40 +150 °C 工作环境温度范围 TA -40 +125 °C 功耗: 内部芯片功耗: P INT = V DD × ( I D D – ∑ I O H) PD PINT + PI/O W PDMAX (TJ - TA) / θJA W dsPIC30F2010-30I dsPIC30F2010-20E I/O 引脚功耗: P I/O = ∑ ( { V DD – V OH } × I OH ) + ∑ ( V OL × I OL ) 最大允许功耗 表 22-3: 热封装特性 特性 封装热阻, 28 引脚 SOIC (SO) 封装热阻, 28 引脚 QFN 封装热阻, 28 引脚 SPDIP (SP) 注 1: 通过封装模拟获得结点与环境的热阻值 表 22-4: θJA 。 典型值 θJA θJA θJA 48.3 最大值 单位 注 °C/W 1 33.7 °C/W 1 42 °C/W 1 DC 温度和电压规范 标准工作条件: 2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数 编号 符号 符号 特性 最小值 典型值 (1) 最大 值 单位 条件 工作温度 (2) DC10 VDD 电源电压 2.5 — 5.5 V 工业级温度 DC11 VDD 电源电压 3.0 — 5.5 V 扩展级温度 DC12 VDR RAM 数据保持电压 (3) — 1.5 — V DC16 VPOR 确保内部上电复位信号的 VDD 起 始电压 — VSS — V DC17 SVDD 确保内部上电复位信号的 VDD 上 升率 0.05 注 V/ms 0-5V/0.1 s 0-3V/60 ms 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 2: 这些参数为特性值,但生产时未经测试。 3: 这是在不丢失 RAM 数据的前提下, VDD 的下限值。 DS70118G_CN 第148 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-5: DC 特性:工作电流 (IDD) 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数编号 工作电流 (IDD) DC31a DC31b DC31c DC31e DC31f DC31g DC30a DC30b DC30c DC30e DC30f DC30g DC23a DC23b DC23c DC23e DC23f DC23g DC24a DC24b DC24c DC24e DC24f DC24g DC27a DC27b DC27d DC27e DC27f DC29a DC29b 注 典型值 最大值 单位 3 3 3 7 7 7 5 5 5 9 9 9 14 15 15 24 24 24 32 32 32 53 53 53 59 59 99 99 99 150 150 mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA 条件 (1) 1.6 1.6 1.6 3.9 3.5 3.4 3 3 3 6 6 6 9 10 10 16 16 16 21 21 21 35 36 36 39 39 66 66 66 95 94 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 125°C 25°C 85°C 25°C 85°C 125°C 25°C 85°C 3.3V 0.128 MIPS LPRC (512 kHz) 5V 3.3V (1.8 MIPS) FRC (7.37MHz) 5V 3.3V 4 MIPS EC 模式, 4X PLL 5V 3.3V 10 MIPS EC 模式, 4X PLL 5V 3.3V 20 MIPS EC 模式, 8X PLL 5V 5V 30 MIPS EC 模式, 16X PLL 1: 供电电流主要受工作电压和频率的影响。其他因素如 I/O 引脚负载和开关频率、振荡器类型、内部代码执 行模式和温度也对电流消耗有影响。所有 IDD 测量的测试条件为:OSC1 使用满幅的外部方波进行驱动。 所有 I/O 引脚配置为输入且被拉到 VDD。MCLR = VDD, WDT、 FSCM、 LVD 和 BOR 被禁止。 CPU、 SRAM、程序存储器和数据存储器处于工作状态。外设模块均不工作。 2007 Microchip Technology Inc. DS70118G_CN 第149 页 dsPIC30F2010 表 22-6: DC 特性:空闲电流 (IIDLE) 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数编号 典型值 (1) 空闲电流 (IIDLE) 最大值 单位 条件 (2) DC51a 1.5 3.0 mA 25°C DC51b 1.5 3.0 mA 85°C DC51c 1.5 3.0 mA 125°C DC51e 4.1 7 mA 25°C DC51f 3.6 7 mA 85°C DC51g 3.5 7 mA 125°C DC50a 3 5 mA 25°C DC50b 3 5 mA 85°C DC50c 3 5 mA 125°C DC50e 7 9 mA 25°C DC50f 6 9 mA 85°C DC50g 6 9 mA 125°C DC43a 5 9 mA 25°C DC43b 6 9 mA 85°C DC43c 6 9 mA 125°C DC43e 10 15 mA 25°C DC43f 10 15 mA 85°C DC43g 10 15 mA 125°C DC44a 11 18 mA 25°C DC44b 12 18 mA 85°C DC44c 12 18 mA 125°C DC44e 20 30 mA 25°C DC44f 20 30 mA 85°C DC44g 20 30 mA 125°C DC47a 16.8 — mA 25°C DC47b — — mA 85°C DC47d 30.5 — mA 25°C DC47e — — mA 85°C DC47f — — mA 125°C DC49a 49 65 mA 25°C DC49b 50 65 mA 85°C 注 3.3V 0.128 MIPS LPRC (512 kHz) 5V 3.3V (1.8 MIPS) FRC (7.37MHz) 5V 3.3V 4 MIPS EC 模式, 4X PLL 5V 3.3V 10 MIPS EC 模式, 4X PLL 5V 3.3V 20 MIPS EC 模式, 8X PLL 5V 5V 30 MIPS EC 模式, 16X PLL 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 2: 基本 IIDLE 电流测量是在内核不工作、时钟工作而所有外设模块关闭的条件下进行的。 DS70118G_CN 第150 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-7: DC 特性:掉电电流 (IPD) 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数编号 掉电电流 (IPD) 典型值 最大值 单位 条件 (1) DC60a 0.05 — µA 25°C DC60b 3 25 µA 85°C DC60c 20 50 µA 125°C DC60e 0.1 — µA 25°C DC60f 6 35 µA 85°C DC60g 40 70 µA 125°C DC61a 30 45 µA 25°C DC61b 34 51 µA 85°C DC61c 46 69 µA 125°C DC61e 35 53 µA 25°C DC61f 39 59 µA 85°C DC61g 40 60 µA 125°C DC62a 4 10 µA 25°C DC62b 5 10 µA 85°C DC62c 4 10 µA 125°C DC62e 4 15 µA 25°C DC62f 6 15 µA 85°C DC62g 5 15 µA 125°C DC63a 4 6 µA 25°C DC63b 4 6 µA 85°C DC63c 5 7.5 µA 125°C DC63e 10 15 µA 25°C 注 3.3V 基本掉电电流 (2) 5V 3.3V 看门狗定时器电流:∆IWDT(2) 5V 3.3V Timer 1,带 32 kHz 晶振:∆ITI32(2) 5V 3.3V BOR 工作:∆IBOR(2) 5V 1: 基本 IPD 是在所有外设和时钟都关断的条件下进行测量的。所有 I/O 都配置为输入且被拉至高电平。 LVD、 BOR 和 WDT 等都关闭。 2: ∆ 电流为当模块使能时额外消耗的电流。此电流应被加到基本 IPD 电流。 2007 Microchip Technology Inc. DS70118G_CN 第151 页 dsPIC30F2010 表 22-8: DC 特性:I/O 引脚输入规范 标准工作条件:2.5V 至 5.5V ((除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 最小值 典型 值 (1) 最大值 单位 I/O 引脚: 带施密特触发缓冲器 VSS — 0.2 VDD V DI15 MCLR VSS — 0.2 VDD V DI16 OSC1 (处于 XT、 HS 和 LP 模 式) VSS — 0.2 VDD V DI17 OSC1 (处于 RC 模式) (3) VSS — 0.3 VDD V DI18 SDA 和 SCL VSS — 0.3 VDD V 禁止 SM 总线 SDA 和 SCL VSS — 0.2 VDD V 禁止 SM 总线 I/O 引脚: 带施密特触发缓冲器 0.8 VDD — VDD V DI25 MCLR 0.8 VDD — VDD V DI26 OSC1 (处于 XT、 HS 和 LP 模 式) 0.7 VDD — VDD V DI27 OSC1 (处于 RC 模式) (3) 0.9 VDD — VDD V DI28 SDA 和 SCL 0.7 VDD — VDD V 禁止 SM 总线 SDA 和 SCL 0.8 VDD — VDD V 禁止 SM 总线 50 250 400 µA VDD = 5V, VPIN = VSS 参数 编号 符号 VIL DI10 DI19 VIH DI20 DI29 特性 条件 输入低电平电压 (2) 输入高电平电压 (2) ICNPU CNXX 上拉电流 (2) IIL 输入泄露电流 (2)(4)(5) DI30 DI50 I/O 端口 — 0.01 ±1 µA VSS ≤ VPIN ≤ VDD, 引脚处于高阻态 DI51 模拟输入引脚 — 0.50 ±1.3 µA VSS ≤ VPIN ≤ VDD, 引脚处于高阻态 DI55 MCLR — 0.05 ±5 µA VSS ≤ VPIN ≤ VDD DI56 OSC1 — 0.05 ±7 µA VSS ≤ VPIN ≤ VDD, XT、 HS 和 LP 振荡模式 注 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 2: 这些参数为特性值,但生产时未经测试。 3: 在 RC 振荡器配置中, OSC1/CLKl 引脚为施密特触发器输入。不建议在 RC 模式下使用外部时钟驱动 dsPIC30F 器件。 4: MCLR 引脚上的泄露电流主要取决于所加电平。表中给定的电平表示正常工作条件。在不同输入电压条件 下可能测得更高的泄露电流。 5: 负电流定义为引脚的拉电流。 DS70118G_CN 第152 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-9: DC 特性:I/O 引脚输出规范 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数 编号 符号 VOL 特性 最小值 I/O 端口 — DO16 OSC2/CLKO (RC 或 EC 振荡模式) — DO20 条件 — 0.6 V IOL = 8.5 mA, VDD = 5V — — TBD V IOL = 2.0 mA, VDD = 3V — — 0.6 V IOL = 1.6 mA, VDD = 5V — TBD V IOL = 2.0 mA, VDD = 3V 输出高电平电压 (2) I/O 端口 DO26 单位 输出低电平电压 (2) DO10 VOH 典型 最大值 值 (1) OSC2/CLKO (RC 或 EC 振荡模式) VDD – 0.7 — — V IOH = -3.0 mA, VDD = 5V TBD — — V IOH = -2.0 mA, VDD = 3V VDD – 0.7 — — V IOH = -1.3 mA, VDD = 5V TBD — — V IOH = -2.0 mA, VDD = 3V 输出引脚的容性负载规范 (2) DO50 COSC2 OSC2/SOSC2 引脚 — — 15 pF 在 XTL、 XT、 HS 和 LP 模式 下,使用外部时钟驱动 OSC1 时。 DO56 CIO 所有 I/O 引脚和 OSC2 — — 50 pF RC 或 EC 振荡模式 DO58 CB SCL 和 SDA — — 400 pF 在 I2C 模式下 注 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 2: 这些参数为特性值,但生产时未经测试。 图 22-1: 欠压复位特性 VDD BO10 (器件处于欠压复位状态) BO15 ( 器件未处于欠压复位状态) 复位(由于欠压引起) 上电延时 2007 Microchip Technology Inc. DS70118G_CN 第153 页 dsPIC30F2010 表 22-10: 电气特性:BOR 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数编号 BO10 最小值 典型值 (1) 最大值 单位 特性 VBOR BO15 注 符号 当 VDD 从高电平翻转 至低电平时的 BOR 电 压 (2) BORV = 11(3) — — — V BORV = 10 2.6 — 2.71 V BORV = 01 4.1 — 4.4 V BORV = 00 4.58 — 4.73 V — 5 — mV VBHYS 条件 不在工作电压范围内 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参考, 未经测试。 2: 这些参数为特性值,但生产时未经测试。 3: 00 值不在可用工作电压范围内。 表 22-11: DC 特性:程序存储器和 EEPROM 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C DC 特性 参数 编号 符号 特性 最小值 典型值 (1) 最大值 单位 条件 数据 EEPROM 存储器 (2) -40°C ≤ TA ≤ +85°C D120 ED 字节耐擦写能力 100K 1M — E/W D121 VDRW 读 / 写操作时的 VDD VMIN — 5.5 V D122 TDEW 擦 / 写周期时间 — 2 — ms D123 TRETD 特性保持时间 40 100 — 年 假定未违反其他规范 D124 IDEW 编程时的 IDD — 10 30 mA 行擦除 -40°C ≤ TA ≤ +85°C 使用 EECON 读 / 写 VMIN = 最小工作电压 闪存程序存储器 (2) D130 EP 单元耐擦写能力 10K 100K — E/W D131 VPR 读操作时的 VDD VMIN — 5.5 V D132 VEB 块擦除时的 VDD 4.5 — 5.5 V D133 VPEW 擦 / 写操作时的 VDD 3.0 — 5.5 V D134 TPEW 擦 / 写周期时间 — 2 — ms D135 TRETD 特性保持时间 40 100 — 年 VMIN = 最小工作电压 假定未违反其他规范 D136 TEB ICSP 块擦除时间 — 4 — ms D137 IPEW 编程时的 IDD — 10 30 mA 行擦除 D138 IEB 编程时的 IDD — 10 30 mA 块擦除 注 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。 2: 这些参数为特性值,但生产时未经测试。 DS70118G_CN 第154 页 2007 Microchip Technology Inc. dsPIC30F2010 22.2 AC 特性和时序参数 本节包含的信息说明了 dsPIC30F 系列器件的 AC 特性和时序参数。 表 22-12: 温度和电压规范——AC 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C 工作电压 VDD 范围如 DC 规范第 22.1 节 “DC 特性”中所介绍。 AC 特性 图 22-2: 器件时序规范的负载条件 负载条件 1 - 对于除 OSC2 之外的所有引脚 负载条件 2 - 对于 OSC2 VDD/2 RL CL Pin VSS CL 引脚 RL = 464Ω CL = 对于除OSC2外所有引脚为50 pF 对于 OSC2 输出为 5 pF VSS 图 22-3: 外部时钟时序 Q4 Q1 Q2 Q3 Q1 Q4 OSC1 OS20 OS30 OS25 OS30 OS31 OS31 CLKO OS40 2007 Microchip Technology Inc. OS41 DS70118G_CN 第155 页 dsPIC30F2010 表 22-13: 外部时钟时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 OS10 符号 FOSC 特性 最小值 典型值 (1) 最大值 单位 条件 外部 CLKI 频率 (2) (外部时钟仅允许运行于 EC 模式) DC 4 4 4 — — — — 40 10 10 7.5 MHz MHz MHz MHz EC EC ,且 4x PLL EC ,且 8x PLL EC ,且 16x PLL 振荡器频率 (2) DC 0.4 4 4 4 4 10 31 — — — — — — — — — — 7.37 512 4 4 10 10 10 7.5 25 33 — — MHz MHz MHz MHz MHz MHz MHz kHz MHz kHz RC XTL XT XT ,且 4x PLL XT ,且 8x PLL XT ,且 16x PLL HS LP 内部 FRC 内部 LPRC OS20 TOSC TOSC = 1/FOSC — — — — 关于 FOSC 值,参见参数 OS10 OS25 TCY 指令周期时间 (2)(3) 33 — DC ns 参见表 22-16 (2) OS30 TosL, TosH 外部时钟 输入 (OSC1) 高电平或低电平时间 .45 x TOSC — — ns EC OS31 TosR, TosF 外部时钟 (2) 输入 (OSC1) 上升或下降时间 — — 20 ns EC OS40 TckR CLKO 上升时间 (2)(4) — 6 10 ns TckF (2)(4) — 6 10 ns OS41 注 CLKO 下降时间 1: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 2: 这些参数为特性值,但生产时未经测试。 3: 指令周期 (TCY)等于输入振荡器时基周期的 4 倍。所有规定值均基于标准运行条件下,器件执行代码时 对应特定振荡器类型的特征数据。超过规定值可导致振荡器运行不稳定,并 / 或使电流消耗超过预期。所有 器件在测试 “最小”值时,均在 OSC1/CLKI 引脚接入了外部时钟。当使用外部时钟输入时,所有器件的 “最大”周期时间极限为 “DC”(无时钟)。 4: 测量在 EC 或 ERC 模式下进行。在 OSC2 引脚上测量 CLKO 信号。 CLKO 在 Q1-Q2 周期 (1/2 TCY)中为低电平,在 Q3-Q4 周期 (1/2 TCY)中为高电平。 DS70118G_CN 第156 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-14: PLL 时钟时序规范 (VDD = 2.5 至 5.5 V) 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小值 典型值 (2) 最大值 单位 条件 OS50 FPLLI PLL 输入频率范围 (2) 4 4 4 4 4 4 — — — — — — 10 10 7.5(3) 10 10 7.5(3) MHz MHz MHz MHz MHz MHz EC,带 4x PLL EC,带 8x PLL EC,带 16x PLL XT,带 4x PLL XT,带 8x PLL XT,带 16x PLL OS51 FSYS 片内 PLL 输出 (2) 16 — 120 MHz EC 和 XT 模式,且 PLL 使能 OS52 TLOC PLL 启动时间 (锁定时间) — 20 50 µs 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 3: 受器件工作频率范围的限制。 表 22-15: PLL 抖动 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 OS61 特性 x4 PLL x8 PLL x16 PLL 注 最小值 典型 值 (1) 最大值 单位 条件 — 0.251 0.413 % -40°C ≤ TA ≤ +85°C VDD = 3.0 至 3.6V — 0.251 0.413 % -40°C ≤ TA ≤ +125°C VDD = 3.0 至 3.6V — 0.256 0.47 % -40°C ≤ TA ≤ +85°C VDD = 4.5 至 5.5V — 0.256 0.47 % -40°C ≤ TA ≤ +125°C VDD = 4.5 至 5.5V — 0.355 0.584 % -40°C ≤ TA ≤ +85°C VDD = 3.0 至 3.6V — 0.355 0.584 % -40°C ≤ TA ≤ +125°C VDD = 3.0 至 3.6V — 0.362 0.664 % -40°C ≤ TA ≤ +85°C VDD = 4.5 至 5.5V — 0.362 0.664 % -40°C ≤ TA ≤ +125°C VDD = 4.5 至 5.5V — 0.67 0.92 % -40°C ≤ TA ≤ +85°C VDD = 3.0 至 3.6V — 0.632 0.956 % -40°C ≤ TA ≤ +85°C VDD = 4.5 至 5.5V — 0.632 0.956 % -40°C ≤ TA ≤ +125°C VDD = 4.5 至 5.5V 1: 这些参数为特性值,但生产时未经测试。 2007 Microchip Technology Inc. DS70118G_CN 第157 页 dsPIC30F2010 表 22-16: 内部时钟时序示例 时钟振荡器模式 FOSC (MHz) (1) TCY (µs) (2) MIPS(3) 无 PLL MIPS(3) PLL x4 MIPS(3) PLL x8 MIPS(3) PLL x16 EC 0.200 20.0 0.05 — — — 4 1.0 1.0 4.0 8.0 16.0 10 0.4 2.5 10.0 20.0 — 25 0.16 6.25 — — — 4 1.0 1.0 4.0 8.0 16.0 10 0.4 2.5 10.0 20.0 — XT 注 1: 假设振荡器后分频器分频比为 1。 2: 指令执行周期时间:TCY = 1 / MIPS。 3: 指令执行频率:MIPS = (FOSC * PLLx) / 4 (因为每个指令周期有 4 个 Q 时钟)。 表 22-17: AC 特性:内部 RC 抖动、精度和漂移 标准工作条件:2.5 V 至 5.5 V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 最小值 典型值 最大值 单位 条件 内部 FRC 抖动 @ FRC 频率 = 7.37 MHz(1) OS62 FRC — +0.04 +0.16 % -40°C ≤ TA ≤ +85°C VDD = 3.0-3.6V — +0.07 +0.23 % -40°C ≤ TA ≤ +125°C VDD = 4.5-5.5V +1.50 % -40°C ≤ TA ≤ +125°C VDD = 3.0-5.5V 内部 FRC 精度 @ FRC 频率 = 7.37 MHz(1) OS63 FRC — — 内部 FRC 漂移 @ FRC 频率 = 7.37 MHz(1) OS64 注 -0.7 — 0.5 % -40°C ≤ TA ≤ +85°C VDD = 3.0-3.6V -0.7 — 0.7 % -40°C ≤ TA ≤ +125°C VDD = 3.0-3.6V -0.7 — 0.5 % -40°C ≤ TA ≤ +85°C VDD = 4.5-5.5V -0.7 — 0.7 % -40°C ≤ TA ≤ +125°C VDD = 4.5-5.5V 1: 在 7.372 MHz ±2%、 25°C 和 5V 条件下进行频率校准。 TUN <3:0> 位可用来补偿温度漂移。 2: FRC 总的偏差可通过将抖动、精度和漂移百分比的绝对值相加来计算。 表 22-18: AC 特性:内部 LPRC 精度 标准工作条件:2.5 V 至 5.5 V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 最小值 典型值 最大值 单位 条件 -35 — +35 % — LPRC @ 频率 = 512 kHz(1) OS65 注 1: LPRC 频率将随 VDD 的变化而变化。 DS70118G_CN 第158 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-4: CLKO 和 I/O 时序特性 I/O 引脚 (输入) DI35 DI40 I/O 引脚 (输出) 新值 旧值 DO31 DO32 注:负载条件参见图 22-2。 表 22-19: CLKO 和 I/O 时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参输编号 特性 (1)(2)(3) 符号 最小值 典型值 (4) 最大值 单位 条件 DO31 TIOR 端口输出上升时间 — 7 20 ns — DO32 TIOF 端口输出下降时间 — 7 20 ns — DI35 TINP INTx 引脚高电平或低电平时间 (输 出) 20 — — ns — DI40 TRBP CNx 高电平或低电平时间 (输入) 2 TCY — — — — 注 1: 2: 3: 4: 这些参数为异步事件,与任何内部时钟边沿无关。 测量是在 RC 模式和 EC 模式下进行的,其中 CLKO 输出为 4 x TOSC。 这些参数为特性值,但生产时未经测试。 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。 2007 Microchip Technology Inc. DS70118G_CN 第159 页 dsPIC30F2010 图 22-5: VDD 复位、看门狗定时器、振荡器起振定时器和上电定时器时序特性 SY12 MCLR SY10 内部 POR PWRT 延时 OSC 延时 SY11 SY30 内部 复位 看门狗 定时器复位 SY13 SY20 SY13 I/O 引脚 SY35 FSCM 延时 注:有关负载条件信息,参见图 22-2。 DS70118G_CN 第160 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-20: 复位、看门狗定时器、振荡器起振定时器、上电定时器和欠压复位时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小 值 典型值 (2) 最大 值 单位 条件 SY10 TmcL MCLR 脉冲宽度 (低电平) 2 — — µs -40°C 至 +85°C SY11 TPWRT 上电延时定时器周期 3 12 50 4 16 64 6 22 90 ms -40°C 至 +85°C 用户可编程 -40°C 至 +85°C SY12 TPOR 上电复位延时 3 10 30 µs SY13 TIOZ MCLR 低电平或看门狗定时器复 位引起 I/O 高阻态 — 0.8 1.0 µs SY20 TWDT1 看门狗定时器超时周期 (无预分频器) 1.4 2.1 2.8 ms 3.3V, -40°C 至 +125°C 1.4 2.1 2.8 ms 5.0V, -40°C 至 +125°C TBOR 欠压复位脉冲宽度 (3) 100 — — µs VDD ≤ VBOR (D034) SY30 TOST 振荡器起振定时器周期 — 1024 TOSC — — TOSC = OSC1 周期 SY35 TFSCM 故障保护时钟监视器延时 — 500 900 µs -40°C 至 +85°C TWDT2 SY25 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。 3: 有关 BOR 的信息,参见图 22-1 和表 22-10。 2007 Microchip Technology Inc. DS70118G_CN 第161 页 dsPIC30F2010 图 22-6: 带隙启动时间特性 VBGAP 0V 使能带隙 (见注) 带隙 稳定 SY40 注:当 FBORPOR<7> 置 1 时,将使能带隙。 表 22-21: 带隙启动时间要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 SY40 注 特性 (1) 符号 TBGAP 带隙启动时间 最小 值 典型值 (2) 最大 值 单位 — 40 65 µs 条件 定义为带隙功能使能和带隙参考电压 稳定之间的时间。 RCON<13> 状态位 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。 DS70118G_CN 第162 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-7: 定时器外部时钟时序特性 TxCK Tx11 Tx10 Tx15 Tx20 OS60 TMRX 注: “x”指的是 A 类定时器或 B 类定时器。 有关负载条件的信息,参见图 22-2。 表 22-22: TIMER1 外部时钟时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 TA10 TA11 TA15 符号 TTXH TTXL TTXP 特性 TxCK 高电平时间 TxCK 低电平时间 TxCK 输入周期 最小值 典型值 最大值 单位 条件 同步, 无预分频器 0.5 TCY + 20 — — ns 也必须满足参数 TA15 同步, 带预分频器 10 — — ns 异步 10 — — ns 同步, 无预分频器 0.5 TCY + 20 — — ns 同步, 带预分频器 10 — — ns 异步 10 — — ns 同步, 无预分频器 TCY + 10 — — ns 同步, 带预分频器 20 ns 或 (TCY + 40)/N 中的较大值 — — — 20 — — ns DC — 50 kHz 1.5 TCY — 异步 OS60 Ft1 TA20 SOSC1/T1CK 振荡器输入频率范围 (通过置 1 TCS 位 (T1CON 的 bit 1) 使能振荡器 TCKEXTMRL 从外部 TxCK 时钟边沿至定时器递增之 间的延时 2007 Microchip Technology Inc. 0.5 TCY 也必须满足参数 TA15 N = 预分频值 (1, 8, 64, 256) DS70118G_CN 第163 页 dsPIC30F2010 表 22-23: TIMER2 外部时钟时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 符号 TtxH TB10 最小值 典型 值 最大值 单位 条件 0.5 TCY + 20 — — ns 也必须满足参数 TB15 10 — — ns 0.5 TCY + 20 — — ns 同步, 带预分频器 10 — — ns 同步, 无预分频器 TCY + 10 — — ns 同步, 带预分频器 20 ns 或 (TCY + 40)/N 两 者中的较大值 1.5 TCY — 特性 TxCK 高电平时间 同步, 无预分频器 同步, 带预分频器 TB11 TtxL TB15 TtxP TB20 TxCK 低电平时间 同步, 无预分频器 TxCK 输入周期 TCKEXTMRL 从外部 TxCK 时钟边沿至定时器递 增之间的延时 表 22-24: N = 预分频值 (1, 8, 64, 256) TIMER3 外部时钟时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 0.5 TCY 也必须满足参数 TB15 符号 特性 最小值 典型值 最大值 单位 条件 TC10 TtxH TxCK 高电平时间 同步 0.5 TCY + 20 — — ns 也必须满足参数 TC15 TC11 TtxL TxCK 低电平时间 同步 0.5 TCY + 20 — — ns 也必须满足参数 TC15 TC15 TtxP TxCK 输入周期 同步, 无预分频器 TCY + 10 — — ns N = 预分频值 (1, 8, 64, 256) 同步, 带预分频器 20 ns 或 (TCY + 40)/N 两 者中的较大值 1.5 TCY — TC20 TCKEXTMRL 从外部 TxCK 时钟边沿至定时器递 增之间的延时 DS70118G_CN 第164 页 0.5 TCY 2007 Microchip Technology Inc. dsPIC30F2010 图 22-8: TIMERQ (QEI 模块)外部时钟时序特性 QEB TQ11 TQ10 TQ15 TQ20 POSCNT 表 22-25: QEI 模块外部时钟时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小值 典型值 最大值 单位 条件 TQ10 TtQH TQCK 高电平时间 同步, 带预分频器 TCY + 20 — ns 也必须满足参数 TQ15 TQ11 TtQL TQCK 低电平时间 同步, 带预分频器 TCY + 20 — ns 也必须满足参数 TQ15 TQ15 TtQP TQCP 输入周期 同步, 带预分频器 2 * TCY + 40 — ns — TQ20 TCKEXTMRL 从外部 TxCK 时钟边沿至定时器递 增之间的延时 0.5 TCY 1.5 TCY ns — 注 1: 这些参数为特性值,但生产时未经测试。 2007 Microchip Technology Inc. DS70118G_CN 第165 页 dsPIC30F2010 图 22-9: 输入捕捉 (CAPx)时序特性 ICX IC10 IC11 IC15 注:有关负载条件的信息,请参见图 22-2。 表 22-26: 输入捕捉时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 IC10 TccL IC11 TccH IC15 注 特性 (1) 符号 TccP ICx 输入低电平时间 ICx 输入高电平时间 最小值 最大值 单位 无预分频器 0.5 TCY + 20 — ns 带预分频器 10 — ns 无预分频器 0.5 TCY + 20 — ns 带预分频器 10 — ns (2 TCY + 40)/N — ns ICx 输入周期 条件 N = 预分频值 (1, 4, 16) 1: 这些参数为特性值,但生产时未经测试。 图 22-10: 输出比较模块 (OCx)时序特性 OCx (输出比较 或 PWM 模式) OC10 OC11 注:有关负载条件的信息,请参见图 22-2。 表 22-27: 输出比较模块时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小值 典型值 (2) 最大值 单位 条件 OC10 TccF OCx 输出下降时间 — — — ns 见参数 D032 OC11 TccR OCx 输出上升时间 — — — ns 见参数 D031 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计参 考,未经测试。 DS70118G_CN 第166 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-11: 输出比较 /PWM 模块时序特性 OC20 OCFA/OCFB OC15 OCx 表 22-28: 简单输出比较 /PWM 模式时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 OC15 TFD 故障输入至 PWM I/O 发 生变化的时间 — — 50 ns — OC20 TFLT 故障输入脉冲宽度 50 — — ns — 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考,未经测试。 2007 Microchip Technology Inc. DS70118G_CN 第167 页 dsPIC30F2010 图 22-12: 电机控制 PWM 模块故障时序特性 MP30 FLTA/B MP20 PWMx 图 22-13: 电机控制 PWM 模块时序特性 MP11 MP10 PWMx 注:有关负载条件的信息,请参见图 22-2。 表 22-29: 电机控制 PWM 模块时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 MP10 特性 (1) 符号 最小值 典型值 (2) 最大值 见参数 D032 PWM 输出下降时间 — — MP11 TRPWM PWM 输出上升时间 — — — ns 见参数 D031 MP20 TFD 故障输入 ↓ 至 PWMI/O 变化 — — 50 ns — TFH 最小脉冲宽度 50 — — ns — MP30 ns 条件 TFPWM 注 — 单位 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考,未经测试。 DS70118G_CN 第168 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-14: QEA/QEB 输入特性 TQ36 QEA (输入) TQ30 TQ31 TQ35 QEB TQ41 (输入) TQ40 TQ30 TQ31 TQ35 QEB 内部 表 22-30: 正交解码器时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数编号 特性 (1) 符号 典型值 (2) 最大值 单位 条件 TQ30 TQUL 正交输入低电平时间 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 (注 2) TQ41 TQUFH 数字滤波器确认高电平的时间 3 * N * TCY — ns N = 1、 2、 4、 16、 32、 64、 128 和 256 (注 2) 注 1: 这些参数为特性值,但生产时未经测试。 2: N = 索引通道数字滤波器时钟分频选择位。请参见 《dsPIC30F 系列参考手册》(DS70046E_CN)的第 16 章 “正交编码器接口 (QEI)”。 2007 Microchip Technology Inc. DS70118G_CN 第169 页 dsPIC30F2010 图 22-15: QEI 模块索引脉冲时序特性 QEA (输入) QEB (输入) 无门控索引脉 冲 TQ50 TQ51 索引内部 TQ55 位置 表 22-31: QEI 索引脉冲时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (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),但索引脉冲确认出现在下降沿。 DS70118G_CN 第170 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-16: SPI 模块主模式 (CKE = 0)时序特性 SCKx (CKP = 0) SP11 SP10 SP21 SP20 SP20 SP21 SCKx (CKP = 1) SP35 BIT14 - - - - - -1 MSb SDOx SP31 SDIx LSb SP30 BIT14 - - - -1 MSb 输入 LSb 输入 SP40 SP41 注:有关负载条件信息,请参见图 22-2。 表 22-32: SPI 主模式 (CKE = 0)时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小值 典型值 (2) 最大值 单位 条件 SP10 TscL SCKX 输出低电平时间 (3) TCY / 2 — — ns — SP11 TscH SCKX 输出高电平时间 (3) TCY / 2 — — ns — SP20 TscF — — — ns 见参数 D032 SP21 TscR SCKX 输出下降时间 (4) SCKX 输出上升时间 (4) — — — ns 见参数 D031 (4) SP30 TdoF SDOX 数据输出下降时间 — — — ns 见参数 D032 SP31 TdoR SDOX 数据输出上升时间 (4) — — — ns 见参数 D031 SP35 TscH2doV, TscL2doV SCKX 边沿后的 SDOX 数据输出 有效时间 — — 30 ns — SP40 TdiV2scH, TdiV2scL SDIX 数据输入到 SCKX 边沿的建 立时间 20 — — ns — SP41 TscH2diL, TscL2diL SDIX 数据输入到SCKX 边沿的保 持时间 20 — — ns — 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考,未经测试。 3: SCK 的最小时钟周期为 100 ns。因此,主模式下产生的时钟不应违反此规范。 4: 假定所有 SPI 引脚上为 50 pF 负载。 2007 Microchip Technology Inc. DS70118G_CN 第171 页 dsPIC30F2010 图 22-17: SPI 模块主模式 (CKE =1)时序特性 SP36 SCKX (CKP = 0) SP11 SCKX (CKP = 1) SP10 SP21 SP20 SP20 SP21 SP35 BIT14 - - - - - -1 MSb SDOX SP40 SDIX LSb SP30,SP31 MSb 输入 BIT14 - - - -1 LSb 输入 SP41 注:有关负载条件信息,请参见图 22-2。 表 22-33: SPI 模块主模式 (CKE = 1)时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 SP10 TscL SCKX 输出低电平时间 (3) TCY / 2 — — ns — SP11 TscH SCKX 输出高电平时间 (3) TCY / 2 — — ns — SP20 TscF — — — ns 见参数 D032 SP21 TscR SCKX 输出下降时间 (4) SCKX 输出上升时间 (4) — — — ns 见参数 D031 SDOX 数据输出下降时间 (4) SDOX 数据输出上升时间 (4) — — — ns 见参数 D032 — — — ns 见参数 D031 SP30 TdoF SP31 TdoR SP35 TscH2doV, SCKX 边沿后的 SDOX 数据输 TscL2doV 出有效时间 — — 30 ns — SP36 TdoV2sc, SDOX 数据输出建立到 SCKX TdoV2scL 边沿的时间 30 — — ns — SP40 TdiV2scH, SDIX 数据输入到 SCKX 边沿的 TdiV2scL 建立时间 20 — — ns — SP41 TscH2diL, TscL2diL 20 — — ns — 注 SDIX 数据输入到 SCKX 边沿的 保持时间 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考未经测试。 3: SCK 的最小时钟周期为 100 ns。因此,主模式下产生的时钟不应违反此规范。 4: 假定所有 SPI 引脚上为 50 pF 负载。 DS70118G_CN 第172 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-18: SPI 模块从模式 (CKE = 0)时序特性 SSX SP52 SP50 SCKX (CKP = 0) SP71 SP70 SP73 SP72 SP72 SP73 SCKX (CKP = 1) SP35 MSb SDOX BIT14 - - - - - -1 LSb SP51 SP30,SP31 SDIX MSb 输入 BIT14 - - - -1 LSb 输入 SP41 SP40 注:有关负载条件信息,请参见图 22-2。 表 22-34: SPI 模块从模式 (CKE = 0)时序要求 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数编号 SP70 SP71 SP72 SP73 SP30 SP31 SP35 SP40 SP41 SP50 SP51 SP52 注 符号 特性 (1) 最小值 典型值 (2) 最大值 单位 条件 TscL TscH TscF TscR TdoF TdoR TscH2doV, TscL2doV TdiV2scH, TdiV2scL TscH2diL, TscL2diL TssL2scH, TssL2scL TssH2doZ TscH2ssH TscL2ssH SCKX 输入低电平时间 SCKX 输入高电平时间 SCKX 输入下降时间 (3) SCKX 输入上升时间 (3) SDOX 数据输出下降时间 (3) SDOX 数据输出上升时间 (3) SCKX 边沿后的 SDOX 数据输出有效 时间 SDIX 数据输入到 SCKX 边沿的建立 时间 SDIX 数据输入到 SCKX 边沿的保持 时间 SSX↓ 至 SCKX↑ 或 SCKX↓ 输入时间 30 30 — — — — — — — 10 10 — — — — — 25 25 — — 30 ns ns ns ns ns ns ns — — — — 见参数 D032 见参数 D031 — 20 — — ns — 20 — — ns — 120 — — ns — — — 50 — ns ns — — 10 SSX↑ 至 SDOX 输出高阻态的时间 (3) SCK 边沿后的 SSX 1.5 TCY +40 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考,未经测试。 3: 假定所有 SPI 引脚上为 50 pF 负载。 2007 Microchip Technology Inc. DS70118G_CN 第173 页 dsPIC30F2010 图 22-19: SPI 模块从模式 (CKE = 1)时序特性 SP60 SSX SP52 SP50 SCKX (CKP = 0) SP71 SP70 SP73 SP72 SP72 SP73 SCKX (CKP = 1) SP35 SP52 MSb SDOX BIT14 - - - - - -1 LSb SP30,SP31 SDIX MSb 输入 BIT14 - - - -1 SP51 LSb 输入 SP41 SP40 注:有关负载条件信息,请参见图 22-2。 DS70118G_CN 第174 页 2007 Microchip Technology Inc. dsPIC30F2010 SPI 模块从模式 (CKE = 1)时序要求 表 22-35: 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 特性 (1) 符号 最小值 典型值 (2) 最大值 单位 条件 — — ns — SP70 TscL SCKX 输入低电平时间 30 SP71 TscH SCKX 输入高电平时间 30 — — ns — SP72 TscF SCKX 输入下降时间 (3) — 10 25 ns — SP73 TscR SCKX 输入上升时间 (3) — 10 25 ns — SP30 TdoF SDOX 数据输出下降时间 (3) — — — ns 见参数 D032 SP31 TdoR SDOX 数据输出上升时间 (3) — — — ns 见参数 D031 SP35 TscH2doV, SCKX 边沿后的 SDOX 数据输出 TscL2doV 有效时间 — — 30 ns — SP40 TdiV2scH, SDIX 数据输入到 SCKX 边沿的建 TdiV2scL 立时间 20 — — ns — SP41 TscH2diL, SDIX 数据输入到 SCKX 边沿的保 TscL2diL 持时间 20 — — ns — SP50 TssL2scH, SSX↓至SCKX↓或SCKX↑输入时 TssL2scL 间 120 — — ns — SP51 TssH2doZ SS↑ 至 SDOX 输出高阻态时间 (4) 10 — 50 ns — SP52 TscH2ssH SCKX 边沿后 SSX↑ TscL2ssH 1.5 TCY + 40 — — ns — SP60 TssL2doV SSX 边沿后的 SDOX 数据输出有 效时间 — — 50 ns — 注 1: 这些参数为特性值,但生产时未经测试。 2: 除非另外声明,否则 “典型值”一列中的数据都是在 5V、 25°C 的条件下给出的。这些参数仅供设计时参 考,未经测试。 3: SCK 的最小时钟周期为 100 ns。因此,主模式下产生的时钟不应违反此规范。 4: 假定所有 SPI 引脚上为 50 pF 负载。 2007 Microchip Technology Inc. DS70118G_CN 第175 页 dsPIC30F2010 I2C™ 总线启动 / 停止位时序特性 (主模式) 图 22-20: SCL IM31 IM34 IM30 IM33 SDA 停止 条件 启动 条件 注:有关负载条件信息,请参见图 22-2。 I2C™ 总线数据时序特性 (主模式) 图 22-21: IM20 IM21 IM11 IM10 SCL IM11 IM26 IM10 IM25 IM33 SDA 输入 IM40 IM40 IM45 SDA 输出 注:有关负载条件信息,请参见图 22-2。 DS70118G_CN 第176 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-36: I2C™ 总线数据时序要求 (主模式) 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 IM10 最小值 (1) 最大值 单位 条件 TLO:SCL 时钟低电平时间 100 kHz 模式 TCY / 2 (BRG + 1) — µs — 400 kHz 模式 TCY / 2 (BRG + 1) — µs — 符号 特性 1 MHz IM11 IM20 THI:SCL TF:SCL 模式 (2) TCY / 2 (BRG + 1) — µs — 时钟高电平时间 100 kHz 模式 TCY / 2 (BRG + 1) — µs — 400 kHz 模式 TCY / 2 (BRG + 1) — µs — 1 MHz 模式 (2) TCY / 2 (BRG + 1) — µs — — 300 ns CB 规定为 10 至 400 pF 20 + 0.1 CB 300 ns SDA 和 SCL 下降 100 kHz 模式 时间 400 kHz 模式 1 MHz 模式 (2) IM21 TR:SCL SDA 和 SCL 上升 100 kHz 模式 时间 400 kHz 模式 1 MHz 模式 (2) IM25 TSU:DAT 数据输入建立时 100 kHz 模式 间 400 kHz 模式 1 MHz 模式 (2) IM26 THD:DAT 数据输入保持时 100 kHz 模式 间 400 kHz 模式 1 MHz 模式 (2) IM30 TSU:STA 启动条件建立时 100 kHz 模式 间 400 kHz 模式 1 MHz 模式 (2) IM31 IM34 IM40 IM45 IM50 注 100 ns 1000 ns 20 + 0.1 CB 300 ns — 300 ns 250 — ns 100 — ns TBD — ns 0 — ns 0 0.9 µs TBD — ns TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs TCY / 2 (BRG + 1) — µs 1 MHz 模式 (2) TCY / 2 (BRG + 1) — µs THD:STO 停止条件 100 kHz 模式 TCY / 2 (BRG + 1) — ns 保持时间 400 kHz 模式 TCY / 2 (BRG + 1) — ns 1 MHz 模式 (2) TCY / 2 (BRG + 1) — ns THD:STA 启动条件保持时 100 kHz 模式 间 400 kHz 模式 1 MHz 模式 (2) IM33 — — TSU:STO 停止条件建立时 100 kHz 模式 间 400 kHz 模式 TAA:SCL 自时钟边沿到输 100 kHz 模式 出有效的时间 400 kHz 模式 TBF:SDA 总线空闲时间 CB 总线容性负载 CB 规定为 10 至 400 pF — — 仅与重复启动条件相关 在此时间之后将产生第 一个时钟脉冲 — — — 3500 ns — — 1000 ns — 1 MHz 模式 (2) — — ns — 100 kHz 模式 4.7 — µs 400 kHz 模式 1.3 — µs 1 MHz 模式 (2) TBD — µs 在新的发送操作启动之 前总线必须保持空闲的 时间 — 400 pF 2C™ 波特率发生器的取值。参见 《dsPIC30F 系列参考手册》(DS70046E_CN)的第 21 章 1: BRG 为 I “I2C™ 模块”。 2: 对于所有 I2C 引脚,最大引脚电容 = 10 pF (仅对于 1 MHz 模式) 2007 Microchip Technology Inc. DS70118G_CN 第177 页 dsPIC30F2010 I2C™ 总线启动/停止位时序特性 (从模式) 图 22-22: SCL IS34 IS31 IS30 IS33 SDA 停止 条件 启动 条件 I2C™ 总线数据时序特性 (从模式) 图 22-23: IS20 IS21 IS11 IS10 SCL IS30 IS26 IS31 IS25 IS33 SDA 输入 IS40 IS40 IS45 SDA 输出 DS70118G_CN 第178 页 2007 Microchip Technology Inc. dsPIC30F2010 I2C™ 总线数据时序要求 (从模式) 表 22-37: 标准工作条件:2.5V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数编 号. IS10 IS11 符号 TLO:SCL THI:SCL 特性 时钟低电平时间 时钟高电平时间 IS20 TF:SCL SDA和SCL下降时 间 IS21 TR:SCL SDA和SCL上升时 间 IS25 TSU:DAT 数据输入建立时间 IS26 THD:DAT 数据输入保持时间 IS30 TSU:STA 启动条件建立时间 IS31 THD:STA 启动条件保持时间 IS33 TSU:STO 停止条件建立时间 IS34 THD:STO 停止条件保持时间 IS40 TAA:SCL 自时钟边沿到输出 有效的时间 IS45 TBF:SDA 总线空闲时间 IS50 CB 总线容性负载 注 最小值 最大值 单位 100 kHz 模式 4.7 — µs 400 kHz 模式 1.3 — µs 1 MHz 模式 (1) 100 kHz 模式 0.5 4.0 — — µs µs 400 kHz 模式 0.6 — µs 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 100 kHz 模式 400 kHz 模式 1 MHz 模式 (1) 0.5 — 20 + 0.1 CB — — 20 + 0.1 CB — 250 100 100 0 0 0 4.7 0.6 0.25 4.0 0.6 0.25 4.7 0.6 0.6 4000 600 250 0 0 0 4.7 1.3 0.5 — — 300 300 100 1000 300 300 — — — — 0.9 0.3 — — — — — — — — — — — µs ns ns ns ns ns ns ns ns ns ns µs µs µs µs µs µs µs µs µs µs µs ns ns ns ns ns ns µs µs µs pF 3500 1000 350 — — — 400 条件 器件工作频率不能低于 1.5 MHz 器件工作频率不能低于 10 MHz. — 器件工作频率不能低于 1.5 MHz 器件工作频率不能低于 10 MHz — CB 规定为 10 至 400 pF CB 规定为 10 至 400 pF — — 仅与重复启动条件相关 在此时间之后将产生第一个 时钟脉冲 — — — 在新的发送操作启动之前总 线必须保持空闲的时间 — I2 1: 对于所有 C™ 引脚,最大引脚电容 = 10 pF (仅对于 1 MHz 模式)。 2007 Microchip Technology Inc. DS70118G_CN 第179 页 dsPIC30F2010 表 22-38: 10 位高速 A/D 模块规范 标准工作条件:2.7V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 符号 特性 最小值 典型值 最大值 单位 条件 器件电源 AD01 AVDD 模块 VDD 电源 VDD - 0.3 和 2.7 中 的较大值 VDD + 0.3 和 5.5 中的 较小值 V — AD02 AVSS 模块 VSS 电源 Vss - 0.3 VSS + 0.3 V — 参考电压源 AD05 VREFH 参考电压高电平 AVss+2.7 AVDD V — AD06 VREFL 参考电压低电平 AVss AVDD - 2.7 V — 绝对参考电压 AD07 VREF AD08 IREF AD10 VINH-VINL 满量程输入范围 消耗电流 AVss - 0.3 — AVDD + 0.3 V 300 3 µA µA VREFH V 200 .001 — A/D 工作 A/D 关闭 模拟输入 VREFL — AD11 VIN 绝对输入电压 AVDD + 0.3 V — AD12 — 泄露电流 — ±0.001 ±0.244 µA VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V 电源阻抗 = 5 kΩ AD13 — 泄露电流 — ±0.001 ±0.244 µA VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V 信号源阻抗 = 5 kΩ AD17 RIN 模拟信号源的推荐阻抗 — 5K Ω — AD20 Nr 分辨率 位 — INL 积分非线性 (3) — ±1 ±1 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V AD21A INL 积分非线性 (3) — ±1 ±1 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD22 DNL 微分非线性 (3) — ±1 ±1 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V AD22A DNL 微分非线性 (3) — ±1 ±1 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD23 GERR 增益误差 (3) +1 ±5 ±6 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V AD23A GERR 增益误差 (3) +1 ±5 ±6 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AVSS - 0.3 DC 精度 AD21 注 10 个数据位 1: 因为采样电容最终将无法保持电荷,因此低于 10 kHz 的时钟频率可能影响线性性能,尤其是在温度较高 时。 2: A/D 转换结果将不会随着输入电压的增加而减小,而且不会丢失码。 3: 测量是在使用外部 VREF+ 和 VREF- 作为 ADC 参考电压的情况下进行的。 DS70118G_CN 第180 页 2007 Microchip Technology Inc. dsPIC30F2010 表 22-38: 10 位高速 A/D 模块规范 (续) 标准工作条件:2.7V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 AD24 符号 特性 最小值 典型值 最大值 单位 条件 EOFF 偏移误差 ±1 ±2 ±3 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 5V AD24A EOFF 偏移误差 ±1 ±2 ±3 LSb VINL = AVSS = VREFL = 0V, AVDD = VREFH = 3V AD25 — 单调性 (2) — — — — AD30 THD 总谐波失真 — -64 -67 dB — AD31 SINAD 信号噪声和失真 — 57 58 dB — AD32 SFDR 伪空闲动态范围 — 67 71 dB — AD33 FNYQ 输入信号带宽 — — 500 kHz — AD34 ENOB 有效位数 9.29 9.41 — 位 — 保证 动态性能 注 1: 因为采样电容最终将无法保持电荷,因此低于 10 kHz 的时钟频率可能影响线性性能,尤其是在温度较高 时。 2: A/D 转换结果将不会随着输入电压的增加而减小,而且不会丢失码。 3: 测量是在使用外部 VREF+ 和 VREF- 作为 ADC 参考电压的情况下进行的。 2007 Microchip Technology Inc. DS70118G_CN 第181 页 dsPIC30F2010 图 22-24: 10 位高速 A/D 转换时序特性(CHPS = 01,SIMSAM = 0,ASAM = 0,SSRC = 000) AD50 ADCLK 指令 执行 置 1 SAMP 清零 SAMP SAMP ch0_dischrg ch0_samp ch1_dischrg ch1_samp eoc AD61 AD60 AD55 TSAMP AD55 DONE ADIF ADRES(0) ADRES(1) 1 2 3 4 5 6 7 8 5 6 7 8 1 – 软件置 1 ADCON. SAMP 以启动采样。 2 – 有关放电周期 TSAMP 之后的采样启动在第 18.7 节中进行介绍。 3 – 软件清零 ADCON. SAMP 以启动转换。 4 – 采样结束,转换过程启动。 5 – 转换 bit 9。 6 – 转换 bit 8。 8 – 转换 bit 0。 9 – 转换结束的一个 TAD。 DS70118G_CN 第182 页 2007 Microchip Technology Inc. dsPIC30F2010 图 22-25: 10 位高速 A/D 转换时序特性 ( CHPS = 01, SIMSAM = 0, ASAM = 1, SSRC = 111, SAMC = 00001 ) AD50 ADCLK 指令 执行 置 1 ADON SAMP ch0_dischrg ch0_samp ch1_dischrg ch1_samp eoc TSAMP AD55 TSAMP AD55 TCONV DONE ADIF ADRES(0) ADRES(1) 1 2 3 4 1 – 软件置 1 ADCON. ADON 以启动 AD 操作。 5 6 7 3 4 5 6 8 3 4 5 – 转换 bit 0。 2 – 采样在放电周期之后启动。 6 – 转换结束的一个 TAD。 TSAMP 在《dsPIC30F/33F 系列参考手册》(DS70046E_CN) 7 – 开始下一个通道的转换。 的第 17 章进行介绍。 3 – 转换 bit 9。 4 – 转换 bit 8。 2007 Microchip Technology Inc. 8 – 在由 SAMC 指定的时间内进行采样。 TSAMP 在第 18.7 节介绍。 DS70118G_CN 第183 页 dsPIC30F2010 表 22-39: 10 位高速 A/D 转换时序要求 标准工作条件:2.7V 至 5.5V (除非另外声明) 工作温度范围 工业级:-40°C ≤ TA ≤ +85°C 扩展级:-40°C ≤ TA ≤ +125°C AC 特性 参数 编号 符号 特性 最小值 典型值 最大值 单位 — 84 — ns 700 900 1100 ns 条件 时钟参数 AD50 TAD A/D 时钟周期 AD51 tRC A/D 内部 RC 振荡器周期 见表 18-2(1) — 转换速率 AD55 tCONV 转换时间 — 12 TAD — — AD56 FCNV 吞吐率 — 1.0 — Msps 见表 18-1(1) AD57 TSAMP 采样时间 — 1 TAD — — 见表 18-1(1) — 时序参数 AD60 tPCS 从采样启动至转换触发的时间 AD61 tPSS 从采样位 (SAMP)置 1 至采样启 动的时间 AD62 tCSS AD63 tDPU 注 — 1.0 TAD — ns — 0.5 TAD — 1.5 TAD ns — 转换结束至采样启动 (ASAM = 1) 时间 — 0.5 TAD — ns — 从 A/D 关闭到 A/D 开始工作使模拟 级稳定的时间 — 20 — µs — 1: 因为采样电容最终将无法保持电荷,因此低于 10 kHz 的时钟频率可能影响线性性能,尤其是在温度较高 时。 DS70118G_CN 第184 页 2007 Microchip Technology Inc. dsPIC30F2010 23.0 封装信息 23.1 封装标识信息 28 引脚 QFN-S 示例 XXXXXXXX XXXXXXXX YYWWNNN dsPIC30F2010 -30I/MM e3 060700U 28 引脚 SPDIP(窄条 DIP) 示例 dsPIC30F2010-30I/SP 0648017 e3 XXXXXXXXXXXXXXXXX YYWWNNN 28 引脚 SOIC(.300”) 示例 XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX YYWWNNN 图注: XX...X Y YY WW NNN e3 * 注: dsPIC30F2010-30I/SO 0648017 e3 客户信息 年份代码 (日历年的最后一位数字) 年份代码 (日历年的最后两位数字) 星期代码 (一月一日的星期代码为 “01”) 以字母数字排序的追踪代码 雾锡 (Matte Tin, Sn)的 JEDEC 无铅标志 表示无铅封装。 JEDEC 无铅标志 ( e3 )标示于此种封装的外包装 上。 Microchip 元器件编号如果无法在同一行内完整标注,将换行标出,因此会限制 表示客户信息的字符数。 2007 Microchip Technology Inc. DS70118G_CN 第185 页 dsPIC30F2010 28 引脚塑封四方扁平无脚封装 (MM)——6x6x0.9 mm 主体 (QFN-S),触点长度为 mm 注: 0.40 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 ' ' 䴆ⱘ 䞥ሲ㹀ᑩ H ( ( E . 1 1 / ⊼ ׃㾚 ӄ㾚 $ $ $ ऩԡ ሎᇌ㣗ೈ ᓩ㛮᭄ 1 ᓩ㛮䯈䎱 H ᘏ催ᑺ $ ぎ䯈䱭 $ 㾺⚍८ᑺ $ ᘏᆑᑺ ( 䴆䞥ሲ㹀ᑩᆑᑺ ( ᘏ䭓ᑺ ' 䴆䞥ሲ㹀ᑩ䭓ᑺ ' 㾺⚍ᆑᑺ E 㾺⚍䭓ᑺ / 㾺⚍ࠄ䴆䞥ሲ㹀ᑩⱘ䎱⾏ . ↿㉇ ᳔ᇣ ⊼˖ ᓩ㛮ⱘৃ㾚㋶ᓩ⡍ᕕৃ㛑Ӯ᳝ব࣪ˈԚᖙ乏ԡѢ䰈ᕅऎඳݙDŽ 䞡㽕⡍ᗻ ᇕ㺙Ўߛࡆߚ⾏ ሎᇌ݀Ꮒখ㗗$60(<0 %6&˖ᴀሎᇌDŽ㒭ߎⱘᰃ⧚䆎Ϟⱘ㊒⹂ؐˈ≵᳝݀ᏂDŽ 5()˖খ㗗ሎᇌˈ䗮ᐌ᮴݀Ꮒˈҙկখ㗗DŽ DS70118G_CN 第186 页 ℷᐌ %6& 5() %6& %6& ² ᳔ ² 0LFURFKLS7HFKQRORJ\ˈো˖&±ˈᑈ᳜᮹ 2007 Microchip Technology Inc. dsPIC30F2010 28 引脚窄条塑封双列直插式封装——300 mil 主体 (PDIP) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E1 D 2 n 1 α E A2 A L c β B1 A1 eB p B 英寸 * 单位 尺寸范围 n p 引脚数 引脚间距 最小 毫米 正常 最大 最小 正常 28 最大 28 .100 2.54 顶端到固定面高度 A .140 .150 .160 3.56 3.81 4.06 塑模封装厚度 A2 .125 .130 .135 3.18 3.30 3.43 塑模底端到固定面高度 A1 .015 肩到肩宽度 E .300 .310 .325 7.62 7.87 8.26 塑模封装宽度 E1 .275 .285 .295 6.99 7.24 7.49 总长度 D 1.345 1.365 1.385 34.16 34.67 35.18 引脚尖到固定面高度 L c .125 .130 .135 3.18 3.30 3.43 .008 .012 .015 0.20 0.29 0.38 B1 .040 .053 .065 1.02 1.33 1.65 B .016 .019 .022 0.41 0.48 0.56 .320 .350 .430 8.13 8.89 10.92 塑模顶部锥度 eB α 塑模底部锥度 β 引脚厚度 引脚上部宽度 引脚下部宽度 总排列间距 § 0.38 5 10 15 5 10 15 5 10 15 5 10 15 * 控制参数 § 重要特性 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254mm)。 等同于 JEDEC 号: MO-095 图号:C04-070 2007 Microchip Technology Inc. DS70118G_CN 第187 页 dsPIC30F2010 28 引脚塑封小外形封装——宽条, 300 mil 主体 (SOIC) 注: 最新封装图请至 http://www.microchip.com/packaging 查看 Microchip 封装规范。 E E1 p D B 2 1 n h α 45° c A2 A φ β 引脚数 引脚间距 总高度 塑模封装厚度 悬空间隙 § 总宽度 塑模封装宽度 总长度 斜面投影距离 底脚长度 底脚倾角 引脚厚度 引脚宽度 塑模顶部锥度 塑模底部锥度 * 控制参数 § 重要特性 L 单位 尺寸范围 n p A A2 A1 E E1 D h L φ c B α β A1 最小 .093 .088 .004 .394 .288 .695 .010 .016 0 .009 .014 0 0 英寸 * 正常 28 .050 .099 .091 .008 .407 .295 .704 .020 .033 4 .011 .017 12 12 毫米 最大 .104 .094 .012 .420 .299 .712 .029 .050 8 .013 .020 15 15 最小 2.36 2.24 0.10 10.01 7.32 17.65 0.25 0.41 0 0.23 0.36 0 0 正常 28 1.27 2.50 2.31 0.20 10.34 7.49 17.87 0.50 0.84 4 0.28 0.42 12 12 最大 2.64 2.39 0.30 10.67 7.59 18.08 0.74 1.27 8 0.33 0.51 15 15 注: 尺寸 D 和 E1 不包括塑模毛边或突起。塑模每侧的毛边或突起不得超过 0.010 英寸(0.254mm)。 等同于 JEDEC 号:MS-013 图号:C04-052 DS70118G_CN 第188 页 2007 Microchip Technology Inc. dsPIC30F2010 附录 A: 版本历史 版本 F (2006 年 5 月) 本数据手册的早期版本中包含超前或初步信息。其中包 含不完善的特性数据。 本版本进行了如下更新: • 支持 I2C 从地址 (见表 16-1) • 10 位 A/D 高速转换时序要求(见第 18.0 节“10 位 高速模数转换器 (ADC)模块”) • 工作电流 (IDD)规范 (见表 22-5) • 空闲电流 (IIDLE)规范 (见表 22-6) • 掉电电流 (IPD) )规范 (见表 22-7) • I/O 引脚输入规范 (见表 22-8) • BOR 电压限制 (见表 22-10) • PLL 时钟时序规范 (见表 22-14) • PLL 抖动规范 (见表 22-15) • 内部 RC 精度规范 (见表 22-17) • 看门狗定时器超时限制 (见表 22-20) • 整个文档中还包含一些其他较小的修正 版本 G (2006 年 12 月) 此版本包含了对封装图的更新。 2007 Microchip Technology Inc. DS70118G_CN 第189 页 dsPIC30F2010 注: DS70118G_CN 第190 页 2007 Microchip Technology Inc. dsPIC30F2010 索引 数字 C 10 位高速 A/D A/D 采集要求........................................................... 117 ADCHS ................................................................... 111 ADCON1 ................................................................. 111 ADCON2 ................................................................. 111 ADCON3 ................................................................. 111 ADCSSL.................................................................. 111 ADPCFG ................................................................. 111 CPU 空闲模式下的操作........................................... 118 CPU 休眠模式下的操作........................................... 118 采集要求.................................................................. 117 掉电模式.................................................................. 118 复位的影响 .............................................................. 118 寄存器映射 .............................................................. 120 结果缓冲器 .............................................................. 112 连接注意事项 .......................................................... 119 配置模拟端口引脚 ................................................... 119 输出格式.................................................................. 118 选择转换时钟 .......................................................... 113 选择转换序列 .......................................................... 112 中止转换.................................................................. 113 转换操作.................................................................. 112 转换触发的编程设定................................................ 113 10 位高速模数转换器。 参见 A/D 16 位递增 / 递减位置计数器模式 ....................................... 76 错误检查.................................................................... 76 计数方向状态 ............................................................ 76 C 编译器 MPLAB C18............................................................ 144 MPLAB C30............................................................ 144 CLKO 和 I/O 时序 特性 ........................................................................ 159 要求 ........................................................................ 159 CPU 空闲模式期间的输出比较工作 .................................. 73 CPU 空闲模式下的 PWM 操作.......................................... 89 CPU 休眠模式期间的输出比较工作 .................................. 73 CPU 休眠模式下的 PWM 操作.......................................... 89 操作码描述中使用的符号 ................................................ 136 程序存储器和 EEPROM 特性.......................................... 154 程序地址空间 .................................................................... 19 表指令 TBLRDL............................................................ 21 TBLWTL ........................................................... 21 存储器映射................................................................ 19 构成 .......................................................................... 20 使用表指令,访问程序存储器中的数据 .................... 21 数据访问,地址生成 ................................................. 20 程序计数器........................................................................ 10 程序空间 表指令 TBLRDH ........................................................... 21 TBLWTH........................................................... 21 使用程序空间可视性,来自程序存储器映射的数据 访问 .......................................................................... 22 数据空间通过可视性页映射到程序空间的操作.......... 23 程序空间可视性 程序空间窗口可视操作.............................................. 23 程序数据表访问 ................................................................ 22 除法支持 ........................................................................... 12 串行外设接口。参见 SPI 从休眠和空闲中唤醒 ......................................................... 41 从休眠中唤醒 .................................................................. 121 存储器组织........................................................................ 19 A A/D .................................................................................. 111 1 Msps 时的配置指南 .............................................. 115 600 ksps 时的配置指南 ........................................... 116 750 ksps 时的配置指南 ........................................... 116 参考电压原理图....................................................... 115 转换速度.................................................................. 114 转换速率参数 .......................................................... 114 AC 温度和电压特性 ......................................................... 155 AC 特性 ........................................................................... 155 负载条件.................................................................. 155 ADC 配置模拟端口引脚 ..................................................... 54 B BOR 特性 ........................................................................ 154 BOR。参见欠压复位。 备用 16 位定时器 / 计数器 ................................................. 77 备用向量表 ........................................................................ 41 编程 ................................................................................. 135 编程操作............................................................................ 45 擦除程序存储器的一行 .............................................. 45 启动编程过程 ............................................................ 46 闪存程序存储器算法.................................................. 45 装载写锁存器 ............................................................ 46 编程模型............................................................................ 10 原理图 ....................................................................... 11 变更通知客户服务 ........................................................... 197 边沿对齐 PWM .................................................................. 85 表指令操作概要 ................................................................. 43 2007 Microchip Technology Inc. D DC 特性 .......................................................................... 147 BOR........................................................................ 154 程序存储器和 EEPROM.......................................... 154 掉电电流 (IPD)..................................................... 151 工作电流 (IDD) ...................................................... 149 I/O 引脚输出规范 .................................................... 153 I/O 引脚输入规范 .................................................... 152 空闲电流 (IIDLE)................................................... 150 欠压复位 ................................................................. 153 温度和电压特性 ...................................................... 147 DSP 引擎 .......................................................................... 13 乘法器....................................................................... 15 代码保护 ......................................................................... 121 代码实例 数据 EEPROM 读 ..................................................... 49 数据 EEPROM 块擦除 .............................................. 50 数据 EEPROM 块写操作........................................... 52 数据 EEPROM 字擦除 .............................................. 50 数据 EEPROM 字写操作........................................... 51 代码示例 擦除程序存储器的一行.............................................. 45 启动编程过程 ............................................................ 46 装载写锁存器 ............................................................ 46 DS70118G_CN 第191 页 dsPIC30F2010 带隙启动时间 时序特性.................................................................. 162 要求 ......................................................................... 162 单脉冲 PWM 操作.............................................................. 87 单一 PWM 模式 周期 ........................................................................... 73 低功耗模式 空闲 ......................................................................... 132 地址发生器单元 ................................................................. 31 电机控制 PWM 模块 .......................................................... 81 故障时序特性 .......................................................... 168 时序特性.................................................................. 168 时序要求.................................................................. 168 电气特性 AC ........................................................................... 155 DC ........................................................................... 147 掉电电流 (IPD).............................................................. 151 独立 PWM 输出 ................................................................. 87 端口读 / 写操作示例........................................................... 54 F 防止 OSCCON 意外写入 ................................................. 126 防止意外写入 OSCCON.................................................. 126 封装信息.......................................................................... 185 标识 ......................................................................... 185 复位 ......................................................................... 121, 127 具有长晶振起振时间的 POR ................................... 129 POR, FSCM 和 PWRT 禁止时的工作 ................... 129 欠压复位 (BOR),可编程 .................................... 129 上电复位 (POR)................................................... 127 复位时序特性........................................................... 160, 161 复位时序要求................................................................... 161 复位顺序............................................................................ 39 复位源 ....................................................................... 39 复位源 非法指令陷阱 ............................................................ 39 看门狗定时器超时 ..................................................... 39 欠压复位 (BOR)..................................................... 39 未初始化的 W 寄存器陷阱 ......................................... 39 陷阱锁定.................................................................... 39 负载条件.......................................................................... 155 G 功能框图 dsPIC30F2010 ............................................................ 6 DSP 引擎................................................................... 14 公式 A/D 转换时钟........................................................... 113 波特率 ..................................................................... 107 串行时钟速率 .......................................................... 100 PWM 分辨率.............................................................. 84 PWM 周期 ................................................................. 84 PWM 周期 (递增 / 递减计数模式).......................... 84 工作电流 (IDD)............................................................. 149 工作频率与电压 dsPIC30FXXXX-20 (扩展).................................. 147 固件指令.......................................................................... 135 H 互补 PWM 操作 ................................................................. 86 汇编器 MPASM 汇编器 ....................................................... 144 DS70118G_CN 第192 页 I I/O 端口 并行 (PIO)............................................................. 53 I/O 引脚规范 输出 ........................................................................ 153 输入 ........................................................................ 152 I2C..................................................................................... 95 I2C 10 位从模式的工作 ..................................................... 97 I2C 10 位从器件模式的工作 发送 .......................................................................... 98 接收 .......................................................................... 98 I2C 7 位从模式的工作 ....................................................... 97 I2C 7 位从器件模式的工作 发送 .......................................................................... 97 接收 .......................................................................... 97 I2C 模块 编程模型 ................................................................... 95 地址 .......................................................................... 97 寄存器映射.............................................................. 102 总线启动 / 停止位时序特性 从模式............................................................. 178 总线数据时序要求 从模式............................................................. 179 总线总线数据时序特性 主模式............................................................. 176 I2C 主模式支持.................................................................. 99 I2C 模块 CPU 休眠和空闲模式期间的工作 ............................ 101 各种模式 ................................................................... 95 功能说明 ................................................................... 95 广播呼叫地址支持 ..................................................... 99 寄存器 ....................................................................... 95 IPMI 支持 .................................................................. 99 软件控制的时钟延长 (STREN = 1)........................ 99 斜率控制 ................................................................... 99 引脚配置 ................................................................... 95 中断 .......................................................................... 99 I2C 主模式的工作 .............................................................. 99 I2C 主器件模式的工作 波特率发生器 .......................................................... 100 多主器件通讯、总线冲突与总线仲裁 ...................... 100 发送 ........................................................................ 100 接收 ........................................................................ 100 时钟仲裁 ................................................................. 100 J 寄存器配置 寄存器映射.............................................................. 133 简单捕捉事件模式 ............................................................. 68 缓冲器操作................................................................ 68 霍尔传感器模式 ........................................................ 68 Timer2 和 Timer3 选择模式....................................... 68 预分频器 ................................................................... 68 简单 OC/PWM 模式时序要求 .......................................... 167 简单 PWM 模式................................................................. 72 输入引脚故障保护 ..................................................... 72 简单输出比较匹配模式...................................................... 72 禁止 UART ...................................................................... 105 K 开发支持 ......................................................................... 143 看门狗定时器 时序特性 ................................................................. 160 时序要求 ................................................................. 161 2007 Microchip Technology Inc. dsPIC30F2010 看门狗定时器 (WDT)........................................... 121, 131 操作......................................................................... 131 使能和禁止 .............................................................. 131 勘误表 ................................................................................. 4 可编程 ............................................................................. 121 可编程数字噪声滤波器 ...................................................... 77 客户通知服务 .................................................................. 197 客户支持.......................................................................... 197 空闲电流 (IIDLE)........................................................... 150 快速保存现场 .................................................................... 41 框图 10 位高速 A/D 功能 ................................................. 111 16 位 Timer1 模块 ..................................................... 58 复位系统.................................................................. 127 共用端口结构 ............................................................ 53 I2C............................................................................. 96 SPI ............................................................................ 92 SPI 主 / 从器件连接 ................................................... 92 UART 发送器 .......................................................... 103 UART 接收器 .......................................................... 104 外部上电复位电路 ................................................... 129 振荡器系统 .............................................................. 123 M Microchip 因特网网站...................................................... 197 MPLAB ASM30 汇编器、链接器和库管理器 ................... 144 MPLAB ICD 2 在线调试器............................................... 145 MPLAB ICE 2000 高性能通用在线仿真器 ....................... 145 MPLAB PM3 器件编程器................................................. 145 MPLAB REAL ICE 在线仿真器系统 ................................ 145 MPLAB 集成开发环境软件 .............................................. 143 MPLINK 目标链接器 /MPLIB 目标库管理器..................... 144 模块原理图 输入捕获模式 ............................................................ 67 模寻址 ............................................................................... 33 操作示例.................................................................... 34 起始和结束地址......................................................... 33 W 地址寄存器选择 .................................................... 33 应用........................................................................... 35 N 内部集成电路。参见 I2C 内部时钟时序示例 ........................................................... 158 内核寄存器映射 ................................................................. 27 内核架构 概述............................................................................. 9 O OC/PWM 模块时序特性 .................................................. 167 P PICSTART 2 开发编程器 ................................................ 146 PICSTART Plus 开发编程器 ........................................... 146 PLL 时钟时序特性 ........................................................... 157 PORTB 寄存器映射 ................................................................ 55 POR。参见上电复位。 产品标识体系 .................................................................. 199 PWM 寄存器映射 ................................................................ 90 PWM FLTA 引脚 ............................................................... 88 故障状态.................................................................... 88 模式........................................................................... 88 锁存................................................................... 88 逐个周期 ........................................................... 88 使能位 ....................................................................... 88 2007 Microchip Technology Inc. PWM 特殊事件触发器 后分频器 ................................................................... PWM 更新锁定.................................................................. PWM 时基......................................................................... 单事件模式................................................................ 后分频器 ................................................................... 连续递增 / 递减计数模式........................................... 预分频器 ................................................................... 双更新模式................................................................ 自由运行模式 ............................................................ PWM 输出改写.................................................................. 互补输出模式 ............................................................ 同步 .......................................................................... PWM 输出和极性控制....................................................... 输入引脚控制 ............................................................ PWM 特殊事件触发器....................................................... PWM 占空比周期比较单元................................................ 占空比周期缓冲寄存器.............................................. PWM 周期......................................................................... 89 88 83 83 84 83 84 84 83 87 87 87 88 88 89 85 86 84 Q QEA/QEB 输入特性 ........................................................ 169 QEI 模块 CPU 休眠模式下的定时器操作 ................................. 77 CPU 空闲模式下的操作 ............................................ 78 CPU 空闲模式下的定时器操作.................................. 78 CPU 休眠模式下的操作 ............................................ 77 寄存器映射................................................................ 79 索引脉冲时序特性................................................... 170 索引脉冲时序要求................................................... 170 外部时钟时序要求................................................... 165 器件概述 ............................................................................. 5 器件 ID 存储单元............................................................. 121 器件配置寄存器 .............................................................. 132 FBORPOR.............................................................. 132 FGS ........................................................................ 132 FOSC...................................................................... 132 FWDT ..................................................................... 132 器件指令 ......................................................................... 135 欠压复位 ......................................................................... 121 时序要求 ................................................................. 161 特性 ........................................................................ 153 R RCON 寄存器的初始状态,情形 1.................................. 130 RCON 寄存器的初始状态,情形 2.................................. 130 RTSP 操作 ........................................................................ 44 软件堆栈指针,帧指针...................................................... 10 CALL 堆栈帧 ............................................................. 27 软件模拟器 (MPLAB SIM)........................................... 144 S SPI .................................................................................... SPI 模块 功能说明 ................................................................... SPI 模块............................................................................ CPU 空闲模式期间的工作......................................... CPU 休眠模式期间的工作......................................... 从动选择同步 ............................................................ SDOx 禁止 ................................................................ 帧 SPI 支持 ............................................................... 字和字节通讯 ............................................................ SPI 模式 SPI1 寄存器映射 ....................................................... 91 91 91 93 93 93 91 91 91 94 DS70118G_CN 第193 页 dsPIC30F2010 闪存程序存储器 ................................................................. 43 控制寄存器 ................................................................ 44 NVMADR .......................................................... 44 NVMADRU........................................................ 44 NVMCON .......................................................... 44 NVMKEY........................................................... 44 上电定时器 时序特性.................................................................. 160 时序要求.................................................................. 161 上电复位 ((POR) 上电延时定时器 (PWRT)..................................... 121 上电复位 (POR)........................................................... 121 振荡器起振定时器 (OST)..................................... 121 省电模式.......................................................................... 131 休眠 ......................................................................... 131 省电模式 (休眠和空闲)................................................. 121 使能和设置 UART 设定数据、奇偶校验和停止位选择 .......................... 105 使能 UART ...................................................................... 105 时序特性 A/D 转换 10 位高速 (CHPS = 01、 SIMSAM = 0、 ASAM = 0、 SSRC = 000)............................ 182 10 位高速 (CHPS = 01、 SIMSAM = 0、 ASAM = 1、 SSRC = 111、 SAMC = 00001) 183 A、 B 和 C 类型定时器外部时钟 ............................. 163 CLKO 和 I/O ............................................................ 159 带隙启动时间 .......................................................... 162 电机控制 PWM 模块 ................................................ 168 电机控制 PWM 模块故障......................................... 168 复位 ......................................................................... 160 I2C 总线启动 / 停止位 主模式 ............................................................. 176 I2C 总线数据 从模式 ............................................................. 178 看门狗定时器 .......................................................... 160 OC/PWM 模块......................................................... 167 PLL 时钟.................................................................. 157 QEI 模块索引脉冲 ................................................... 170 SPI 模块 从模式 (CKE = 0)........................................ 173 从模式 (CKE = 1)........................................ 174 主模式 (CKE = 0)........................................ 171 主模式 (CKE = 1)........................................ 172 上电定时器 .............................................................. 160 输出比较模块 .......................................................... 166 输入捕捉 (CAPX)................................................. 166 TimerQ (QEI 模块)外部时钟 ............................... 165 外部时钟.................................................................. 155 振荡器起振定时器 ................................................... 160 时序图 上电延时时序 (MCLR 连接至 VDD)...................... 128 上电延时时序 (MCLR 未接至 VDD),情形 1 ........ 128 上电延时时序 (MCLR 未接至 VDD),情形 2 ........ 128 死区时间.................................................................... 87 时序图表和特性 DC 特性 - 内部 RC 精度 .......................................... 158 时序图表。参见时序特性 时序要求 A/D 转换 高速................................................................. 184 A 类型定时器外部时钟 ............................................ 163 B 类型定时器外部时钟 ............................................ 164 CLKO 和 I/O ............................................................ 159 C 类型定时器外部时钟 ............................................ 164 DS70118G_CN 第194 页 带隙启动定时器 ...................................................... 162 电机控制 PWM 模块................................................ 168 复位 ........................................................................ 161 I2C 总线数据 (主模式)......................................... 177 简单 OC/PWM 模式 ................................................ 167 看门狗定时器 .......................................................... 161 QEI 模块 索引脉冲 ......................................................... 170 外部时钟 ......................................................... 165 欠压复位 ................................................................. 161 SPI 模块 从模式 (CKE = 0)........................................ 173 SPI 模块 从模式 (CKE = 1)........................................ 175 主模式 (CKE = 0)........................................ 171 主模式 (CKE = 1)........................................ 172 上电定时器.............................................................. 161 输出比较模块 .......................................................... 166 输入捕捉 ................................................................. 166 外部时钟 ................................................................. 156 振荡器起振定时器 ................................................... 161 正交解码器.............................................................. 169 时序原理图 边沿对齐 PWM.......................................................... 85 PWM 输出................................................................. 73 中心对齐 PWM.......................................................... 85 输出比较模块 .................................................................... 71 时序特性 ................................................................. 166 时序要求 ................................................................. 166 输出比较模式 寄存器映射................................................................ 74 输出比较中断 .................................................................... 73 数据地址空间 存储器映射.......................................................... 23, 24 对齐 .......................................................................... 26 空间 .......................................................................... 26 宽度 .......................................................................... 26 MCU 和 DSP (MAC 类)指令 ................................ 25 Near 数据空间........................................................... 27 软件堆栈 ................................................................... 27 数据 EEPROM 存储器 ...................................................... 49 擦除 .......................................................................... 50 擦除,块 ................................................................... 50 擦除,字 ................................................................... 50 读 .............................................................................. 49 防止错误写入 ............................................................ 52 写 .............................................................................. 51 写校验 ....................................................................... 52 写,块 ....................................................................... 52 写,字 ....................................................................... 51 数据累加器和加法器 / 减法器............................................ 15 回写 .......................................................................... 16 舍入逻辑 ................................................................... 16 数据空间写饱和 ........................................................ 17 溢出和饱和................................................................ 15 输入捕获中断 寄存器映射................................................................ 70 输入捕捉模块 .................................................................... 67 中断 .......................................................................... 69 输入捕捉时序要求 ........................................................... 166 输入捕捉 (CAPX)时序特性 ......................................... 166 输入电平变化模块 寄存器映射 (bit 15-8)............................................ 55 输入电平变化通知模块...................................................... 54 2007 Microchip Technology Inc. dsPIC30F2010 输入特性 QEA/QEB................................................................ 169 双输出比较匹配模式.......................................................... 72 单脉冲模式 ................................................................ 72 连续脉冲模式 ............................................................ 72 死区时间发生器 ................................................................. 86 范围........................................................................... 86 T TimerQ (QEI 模块)外部时钟时序特性 ......................... 165 Timer2/3 模块.................................................................... 61 16 位定时器模式 ....................................................... 61 32 位定时器模式 ....................................................... 61 32 位同步计数器模式 ................................................ 61 ADC 事件触发器 ....................................................... 64 定时器预分频器......................................................... 64 寄存器映射 ................................................................ 65 门控操作.................................................................... 64 休眠模式下的操作 ..................................................... 64 中断........................................................................... 64 Timer2 和 Timer3 选择模式 ............................................... 72 Timer1 模块....................................................................... 57 16 位定时器模式 ....................................................... 57 16 位同步计数器模式 ................................................ 57 16 位异步计数器模式 ................................................ 57 寄存器映射 ................................................................ 60 门控操作.................................................................... 58 实时时钟.................................................................... 59 振荡器操作 ........................................................ 59 中断................................................................... 59 休眠模式下的操作 ..................................................... 58 预分频器.................................................................... 58 中断........................................................................... 59 桶形移位器 ........................................................................ 17 通用异步收发器。参见 UART。 U UART 使能和设置 UART 备用 I/O ........................................................... UART1 寄存器映射 ................................................. 自动波特率支持....................................................... UART 工作 空闲模式.................................................................. 休眠模式.................................................................. UART 模块 8 位数据模式下的发送............................................. 9 位数据模式下的发送............................................. 波特率发生器 .......................................................... 地址检测模式 .......................................................... 发送缓冲器 (UxTXB)........................................... 发送数据.................................................................. 发送中断.................................................................. 发送中止符 .............................................................. 概述......................................................................... 环回模式.................................................................. 接收错误处理 .......................................................... 接收缓冲器溢出错误 (OERR 位)......................... 接收缓冲器 (UxRXB)........................................... 接收数据.................................................................. 接收中断.................................................................. 接收中止符 .............................................................. 奇偶校验错误 (PERR)......................................... 使能和设置 .............................................................. 在 8 位或 9 位数据模式下接收................................. 在 CPU 休眠和空闲模式下的工作 ........................... 2007 Microchip Technology Inc. 帧错误 (FERR).................................................... 107 W WWW 地址 ..................................................................... 197 WWW 在线技术支持 ........................................................... 4 外部时钟时序特性 类型 A、 B 和 C 定时器........................................... 163 外部时钟时序要求 ........................................................... 156 A 类型定时器 .......................................................... 163 B 类型定时器 .......................................................... 164 C 类型定时器 .......................................................... 164 外部引脚描述 ...................................................................... 7 外部中断请求 .................................................................... 41 位反转寻址........................................................................ 35 实例 .......................................................................... 35 实现 .......................................................................... 35 修改量表 ................................................................... 36 序列表 (16 个位)................................................... 36 位置测量模式 .................................................................... 77 温度和电压特性 AC........................................................................... 155 DC .......................................................................... 147 X 系统集成 ......................................................................... 121 寄存器映射.............................................................. 133 陷阱 .................................................................................. 39 来源 .......................................................................... 39 地址错误陷阱 .................................................... 40 堆栈错误陷阱 .................................................... 40 数学错误陷阱 .................................................... 39 振荡器故障陷阱 ................................................ 40 硬与软....................................................................... 40 休眠和空闲模式期间的输入捕捉工作 ................................ 69 CPU 空闲模式........................................................... 69 CPU 休眠模式........................................................... 69 Y 105 109 107 108 108 105 105 107 107 105 105 106 106 103 107 106 106 106 106 106 107 107 105 106 108 因特网地址...................................................................... 197 原理框图 PWM......................................................................... 82 输出比较模式 ............................................................ 71 正交编码器接口 ........................................................ 75 运行时自编程 (RTSP)................................................... 43 Z 在线串行编程 (ICSP)............................................ 43, 121 在线调试器 (ICD 2)..................................................... 132 振荡器 配置 低功耗 RC (LPRC)...................................... 125 快速 RC (FRC)............................................ 125 振荡器工作模式表 ........................................................... 122 振荡器配置...................................................................... 124 初始时钟源选择 ...................................................... 124 故障保护时钟监测器 ............................................... 126 LP O 振荡器控制 .................................................... 125 配置 锁相环 (PLL)............................................... 125 起振定时器 (OST)............................................... 124 振荡器起振定时器 时序特性 ................................................................. 160 时序要求 ................................................................. 161 振荡器选择...................................................................... 121 正交编码器接口逻辑 ......................................................... 76 正交编码器接口中断 ......................................................... 78 DS70118G_CN 第195 页 dsPIC30F2010 正交编码器接口 (QEI)模块 ........................................... 75 正交解码器时序特性........................................................ 169 指令集 ............................................................................. 135 汇总表 ..................................................................... 138 指令寻址模式..................................................................... 31 MAC 指令 .................................................................. 32 MCU 指令.................................................................. 32 其他指令.................................................................... 32 文件寄存器指令 ......................................................... 31 支持的基本模式 ......................................................... 31 传送和累加器指令 ..................................................... 32 中断 ................................................................................... 37 中断控制 寄存器映射 ................................................................ 42 中断顺序............................................................................ 41 中断序列 中断堆栈帧 ................................................................ 41 中断优先级 ........................................................................ 38 中心对齐 PWM .................................................................. 85 状态寄存器 ........................................................................ 10 自动时钟延长..................................................................... 98 10 位寻址时 (STREN = 1)..................................... 98 7 位寻址时 (STREN = 1)....................................... 98 发送模式.................................................................... 98 接收模式.................................................................... 98 DS70118G_CN 第196 页 2007 Microchip Technology Inc. dsPIC30F2010 MICROCHIP 网站 客户支持 Microchip 网站 (www.microchip.com)为客户提供在 线支持。客户可通过该网站方便地获取文件和信息。只 要使用常用的因特网浏览器即可访问。网站提供以下信 息: Microchip 产品的用户可通过以下渠道获得帮助: • 产品支持——数据手册和勘误表、应用笔记和样本 程序、设计资源、用户指南以及硬件支持文档、最 新的软件版本以及存档软件 • 一般技术支持——常见问题 (FAQ)、技术支持请 求、在线讨论组以及 Microchip 顾问计划成员名单 • Microchip 业务——产品选型和订购指南、最新 Microchip 新闻稿、研讨会和活动安排表、 Microchip 销售办事处、代理商以及工厂代表列表 • • • • 代理商或代表 当地销售办事处 应用工程师 (FAE) 技术支持 客户应联系其代理商、代表或应用工程师 (FAE)寻求 支持。当地销售办事处也可为客户提供帮助。本文档后 附有销售办事处的联系方式。 也可通过http://support.microchip.com获得网上技术 支持。 变更通知客户服务 Microchip 的 变 更 通 知 客 户 服 务 有 助 于 客户了解 Microchip 产品的最新信息。注册客户可在他们感兴趣 的某个产品系列或开发工具发生变更、更新、发布新版 本或勘误表时,收到电子邮件通知。 欲注册,请登录 Microchip 网站 www.microchip.com, 点 击 “变 更 通 知 客 户 (Customer Change Notification)”服务后按照注册说明完成注册。 2007 Microchip Technology Inc. DS70118G_CN 第197 页 dsPIC30F2010 读者反馈表 我们努力为您提供最佳文档,以确保您能够成功使用 Microchip 产品。如果您对文档的组织、条理性、主题及其他有助 于提高文档质量的方面有任何意见或建议,请填写本反馈表并传真给我公司 TRC 经理,传真号码为 86-21-5407-5066。 请填写以下信息,并从下面各方面提出您对本文档的意见。 致: TRC 经理 总页数 ________ 关于: 读者反馈 发自: 姓名 公司 地址 国家 / 省份 / 城市 / 邮编 电话:(______) __________________ 传真:(______)__________________ 应用(选填): 您希望收到回复吗?是 器件: 否 dsPIC30F2010 文献编号: DS70118G_CN 问题: 1. 本文档中哪些部分最有特色? 2. 本文档是否满足了您的软硬件开发要求?如何满足的? 3. 您认为本文档的组织结构便于理解吗?如果不便于理解,那么问题何在? 4. 您认为本文档应该添加哪些内容以改善其结构和主题? 5. 您认为本文档中可以删减哪些内容,而又不会影响整体使用效果? 6. 本文档中是否存在错误或误导信息?如果存在,请指出是什么信息及其具体页数。 7. 您认为本文档还有哪些方面有待改进? DS70118G_CN 第198 页 2007 Microchip Technology Inc. dsPIC30F2010 产品标识体系 欲订货,或获取价格、交货等信息,请与我公司生产厂或各销售办事处联系。 d s P I C 3 0 F 2 0 1 0 AT- 3 0 E / S O - E S 用户 ID (3 位数字)或 工程样片(ES) 商标 架构 封装 SP = SO = S = W = 闪存 存储器大小(字节) 0 = 无 ROM 1 = 1K 至 6K 2 = 7K 至 12K 3 = 13K 至 24K 4 = 25K 至 48K 5 = 49K 至 96K 6 = 97K 至 192K 7 = 193K 至 384K 8 = 385K 至 768K 9 = 769K 及以上 SPDIP SOIC 裸片 (叠片封装) 裸片 (晶圆) 温度 I = 工业级 -40°C 至 +85°C E = 扩展级 -40°C 至 +125°C 器件 ID 速度 20 = 20 MIPS 30 = 30 MIPS T = 卷带式 A, B, C… = 版本 示例: dsPIC30F2010AT-30E/SO = 30 MIPS,扩展级温度范围, SOIC 封装, A 版本 2007 Microchip Technology Inc. DS70118G_CN 第199 页 全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 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 亚太总部 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 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 印度 India - Bangalore Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 日本 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 亚特兰大 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 中国 - 北京 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 韩国 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 荷兰 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 菲律宾 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 中国 - 西安 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 06/25/07 DS70118G_CN 第 200 页 2007 Microchip Technology Inc.