PIC32 Flash Programming Specification

Size: px
Start display at page:

Download "PIC32 Flash Programming Specification"

Transcription

1 闪存编程规范 1.0 器件概述 本文档定义了 32 位单片机的编程规范 本编程规范旨在为外部编程工具的开发人员提供指导 为 PIC32MM 器件开发应用的客户应该使用已支持器件编程的开发工具 本文档包含以下器件的编程规范 : PIC32MM0016GPL020 PIC32MM0256GPM028 PIC32MM0032GPL020 PIC32MM0064GPM036 PIC32MM0064GPL020 PIC32MM0128GPM036 PIC32MM0016GPL028 PIC32MM0256GPM036 PIC32MM0032GPL028 PIC32MM0064GPM048 PIC32MM0064GPL028 PIC32MM0128GPM048 PIC32MM0016GPL036 PIC32MM0256GPM048 PIC32MM0032GPL036 PIC32MM0064GPM064 PIC32MM0064GPL036 PIC32MM0128GPM064 PIC32MM0064GPM028 PIC32MM0256GPM064 PIC32MM0128GPM028 主要的讨论主题包括 : 第 1.0 节 器件概述 第 2.0 节 编程概述 第 3.0 节 编程步骤 第 4.0 节 连接到器件 第 5.0 节 4 线 JTAG 与 ICSP 第 6.0 节 伪操作 第 7.0 节 进入 2 线 ICSP 模式 第 8.0 节 检查器件状态 第 9.0 节 擦除器件 第 10.0 节 进入串行执行模式 第 11.0 节 下载编程执行程序 (PE) 第 12.0 节 下载数据块 第 13.0 节 启动闪存行写入 第 14.0 节 校验器件存储器 第 15.0 节 退出编程模式 第 16.0 节 编程执行程序 第 17.0 节 校验和 第 18.0 节 配置存储区器件 ID 和唯一器件标识符 第 19.0 节 TAP 控制器 第 20.0 节 交流 / 直流特性和时序要求 附录 A: PIC32MM 闪存映射 附录 B: Hex 文件格式 附录 C: 版本历史 2.0 编程概述 在开发编程工具时, 需要了解目标器件的内部闪存编程操作以及用于控制闪存编程的特殊功能寄存器 (Special Function Register, SFR), 因为这些操作和寄存器将由外部编程工具及其软件使用 特定器件数据手册的 闪存程序存储器 章节以及 PIC32 系列参考手册 的相关章节介绍了这些操作和控制寄存器 强烈建议将这些文档与本编程规范配合使用 外部工具编程设置由外部编程器工具和目标 PIC32MM 器件组成 图 2-1 显示了典型的编程设置 编程器工具用于执行必要的编程步骤和完成编程操作 图 2-1: 外部编程器 编程系统设置 目标 PIC32MM 器件 CPU 片上存储器 DS D_CN 第 1 页

2 2.1 编程接口 所有 PIC32MM 器件都能为外部编程器工具提供两个物理接口 : 2 线在线串行编程 (In-Circuit Serial Programming, ICSP ) 4 线联合测试行为组织 (Joint Test Action Group, JTAG) 更多信息, 请参见第 4.0 节 连接到器件 这两种方法都可以使用可下载的编程执行程序 (Programming Executive, PE) PE 可从目标器件 RAM 中执行并对编程器隐藏器件编程详细信息 它还可以免除与数据传输关联的开销并提高总数据吞吐量 Microchip 已经开发了可与任何外部编程器配合使用的 PE( 更多信息, 请参见第 16.0 节 编程执行程序 ) 第 3.0 节 编程步骤 说明了高级编程步骤, 并简要介绍了每个步骤 有关详细介绍, 可参见本文档的对应小节 有关编程命令 EJTAG 和 DC 规范的更多信息, 请参见以下小节 : 第 18.0 节 配置存储区器件 ID 和唯一器件标识符 第 19.0 节 TAP 控制器 第 20.0 节 交流 / 直流特性和时序要求 3.0 编程步骤 所有工具编程器都必须执行一系列常用步骤, 与实际使用的方法无关 图 3-1 显示了用于 PIC32MM 器件编程的一系列步骤 图 3-1: 编程流程图 开始 进入 ICSP 模式 ( 仅 2 线必需 ) 检查器件状态 擦除器件 进入串行执行模式 2.2 增强型 JTAG (EJTAG) 2 线 ICSP 和 4 线 JTAG 接口使用 EJTAG 协议来与编程器交换数据 本文档按需提供了此协议的工作原理, 但建议高级用户访问 Imagination Technologies Limited 网站 ( 以了解更多信息 2.3 数据大小 数据大小定义如下 : 双字 :64 位 单字 :32 位 半字 :16 位 四分之一字 :8 位 一个字节 :8 位 否 下载 PE ( 可选 ) 下载数据块 启动闪存写入 完成 是 校验器件 退出编程模式 完成 DS D_CN 第 2 页

3 下面按顺序列出了编程步骤, 并简要介绍了每个步骤 有关各个步骤的更多详细信息, 请参见以下小节 1. 连接到目标器件 为确保成功编程, 必须将所有必要的引脚都连接到对应的信号 更多信息, 请参见本文档中的第 4.0 节 连接到器件 2. 将目标器件置于编程模式 对于 2 线编程方法, 必须在执行任何其他步骤之前将目标器件置于特殊的编程模式 注 : 对于 4 线编程方法, 第 2 步并非必要步骤 更多信息, 请参见第 7.0 节 进入 2 线 ICSP 模式 3. 检查器件的状态 第 3 步用于检查器件状态, 以确保准备好接收来自编程器的信息 更多信息, 请参见第 8.0 节 检查器件状态 4. 擦除目标器件 如果器件中的目标存储块为非空白, 或器件处于代码保护状态, 则必须在对任何新数据进行编程之前执行擦除步骤 更多信息, 请参见第 9.0 节 擦除器件 5. 进入编程模式 第 5 步用于校验器件是否未被代码保护, 并引导 TAP 控制器, 以开始将数据发送到 PIC32MM CPU 并从其接收数据 更多信息, 请参见第 10.0 节 进入串行执行模式 6. 下载编程执行程序 (PE) PE 是可下载到目标器件 RAM 中的一小段可执行代码 它将接收实际数据并对其进行编程 注 : 如果使用的编程方法不需要 PE, 则第 6 步并非必要步骤 更多信息, 请参见第 11.0 节 下载编程执行程序 (PE) 7. 下载要编程的数据块 不管是否需要 PE, 所有方法都必须将所需编程数据下载到 RAM 中的存储块中 更多信息, 请参见第 12.0 节 下载数据块 8. 启动闪存写入 将每个数据块下载到 RAM 中后, 必须启动编程序列, 以将其编程到目标器件的闪存中 更多信息, 请参见第 13.0 节 启动闪存行写入 9. 重复第 7 步和第 8 步, 直到所有数据块都已下载并编程 10. 校验程序存储器 在将所有编程数据和配置位都编程后, 应对目标器件存储器执行读回操作并校验其内容是否与编程数据匹配 更多信息, 请参见第 14.0 节 校验器件存储器 11. 退出编程模式 只有在目标器件断开电源并向目标器件重新加电, 或执行退出编程序列之后, 新编程的数据才会有效 更多信息, 请参见第 15.0 节 退出编程模式 DS D_CN 第 3 页

4 4.0 连接到器件 为存储器内容的连接和编程提供了两个可用的物理接口 ( 见图 4-1) 对于所有编程接口, 都必须对目标器件供电并连接所有必需信号 此外, 还必须使能接口, 如 4 线 JTAG 接口通过其配置位使能, 2 线 ICSP 接口则通过特殊初始化序列使能 在默认情况下, 出厂的空白器件会使能 JTAG 接口 有关如何使能 ICSP, 请参见第 7.0 节 进入 2 线 ICSP 模式 图 4-1: 编程接口 线 JTAG 接口 其中一个可用的接口是 4 线 JTAG (IEEE ) 端口 表 4-1 列出了必需的引脚连接 此接口使用以下四条通信线来将数据传输到要编程的 PIC32MM 器件以及从其接收数据 : 测试时钟输入 (Test Clock Input, TCK) 测试模式选择输入 (Test Mode Select Input, TMS) 测试数据输入 (Test Data Input, TDI) 测试数据输出 (Test Data Output, TDO) 有关信号与器件引脚之间的连接, 请参见特定器件的数据手册 2 线 ICSP 测试时钟输入 (TCK) 编程器 或 4 线 JTAG PIC32MM TCK 是通过指令寄存器 (Instruction Register,IR) 或选定数据寄存器控制 TAP 控制器更新和数据移位的时钟 TCK 在频率和相位上都不依赖于处理器时钟 + MCLR VDD VSS 和 VCAP 测试模式选择输入 (TMS) TMS 是 TAP 控制器的控制信号 将在 TCK 的上升沿对此信号进行采样 测试数据输入 (TDI) TDI 是指令寄存器或选定数据寄存器的测试数据输入 在某些 TAP 控制器状态下, 将在 TCK 的上升沿对此信号进行采样 测试数据输出 (TDO) TDO 是来自指令寄存器或数据寄存器的测试数据输出 此信号在 TCK 的下降沿发生改变 TDO 只有在移出数据时才会被驱动, 否则 TDO 处于三态 表 4-1: 4 线接口引脚 器件引脚名称引脚类型引脚说明 MCLR I 编程使能 VDD 和 AVDD (1) P 电源 VSS 和 AVSS (1) P 地 VCAP P 滤波电容连接 TDI I 测试数据输入 TDO O 测试数据输出 TCK I 测试时钟 TMS I 测试模式选择 图注 : I = 输入 O = 输出 P = 电源 注 1: 所有电源和地引脚都必须连接, 包括模拟电源 (AVDD) 和地 (AVSS) DS D_CN 第 4 页

5 4.2 2 线 ICSP 接口 另一个可用的接口是 2 线 ICSP 端口 表 4-2 列出了必需的引脚连接 此接口使用以下两条通信线将数据传输到要编程的 PIC32MM 器件以及从其接收数据 : 串行编程时钟 (PGECx) 串行编程数据 (PGEDx) 以下两个小节介绍了这两个信号 有关信号与芯片引脚之间的连接, 请参见特定器件的数据手册 串行编程时钟 (PGECx) PGECx 是通过指令寄存器或选定数据寄存器控制 TAP 控制器更新和数据移位的时钟 PGECx 在频率和相位上都不依赖于处理器时钟 串行编程数据 (PGEDx) PGEDx 是指令寄存器或选定数据寄存器的数据输入 / 输出 它也是 TAP 控制器的控制信号 在某些 TAP 控制器状态下, 将在 PGECx 的下降沿对此信号进行采样 表 4-2: 2 线接口引脚 器件引脚名称 编程器引脚名称 引脚类型 引脚说明 MCLR MCLR P 编程使能 VDD 和 AVDD (1) VDD P 电源 VSS 和 AVSS (1) VSS P 地 VCAP (2) N/A P 滤波电容连接 PGECx (2) PGEC I 编程引脚对 : 串行时钟 PGEDx (2) PGED I/O 编程引脚对 : 串行数据 图注 : I = 输入 O = 输出 P = 电源 注 1: 所有电源和地引脚都必须连接, 包括模拟电源 (AVDD) 和地 (AVSS) 2: 可以使用特定器件上任何一对可用的编程引脚, 但是引脚必须成对使用 (PGED1 必须与 PGEC1 一起使用, 以此类推 ) DS D_CN 第 5 页

6 4.3 电源要求 中的器件为双电源设计 其中一个为内核供电, 另一个为外设和 I/O 引脚供电 所有器件都包含一个用于低压内核电源的片上稳压器, 因此无需附加外部稳压器 为确保器件正常运行, 需要一个称为 VCAP 的外部电容 有关器件的电源要求, 请参见特定器件数据手册中的第 20.0 节 交流 / 直流特性和时序要求 和 电气特性 章节 图 4-2: 电源连接 3.3V (1) CEFC (10 F, 典型值 ) PIC32MM AVDD VDD VCAP VSS AVSS 线 JTAG 与 ICSP 通过 CPU 内核中的 EJTAG 模块完成编程 EJTAG 与一组完整的 JTAG 引脚连接, 或者与精简的 ICSP 模式 2 线转 4 线 EJTAG 接口连接 在两种模式下,PIC32MM 闪存的编程都是通过 ETAP 控制器完成 TAP 控制器使用 TMS 引脚来确定是否应该在 TDI 和 TDO 之间的移位路径中访问指令寄存器或数据寄存器 ( 参见图 5-1) 用于编程的基本 EJTAG 概念是使用一个称为 DMSEG 的特殊存储区 (0xFF 到 0xFF2FFFFF), 该区域只有在处理器以调试模式运行时才可用 所有指令以串行方式移入内部缓冲区, 然后装入指令寄存器中, 并由 CPU 执行 指令通过 ETAP 状态机以 32 位字馈送 图 5-1: TMS TAP 控制器 TAP 控制器 TCK 注 1: 这是典型的工作电压 有关 VDD 和 VCAP 的完整工作范围, 请参见第 20.0 节 交流 / 直流特性和时序要求 TDO TDI 指令 数据和控制寄存器 DS D_CN 第 6 页

7 5.1 编程接口 图 5-2 显示了 PIC32MM 器件中的基本编程接口 后续小节中提供了有关每个接口模块的说明 图 5-2: 基本 PIC32MM 编程接口框图 TMS PIC32MM 共用 JTAG 编程器 TCK TDI ETAP CPU VDD VSS TDO 或 MTAP 闪存控制器 总线 MCLR MPLAB REAL ICE 在线仿真器 PGECx PGEDx 2 线转 4 线 闪存 ETAP 此模块以串行方式将指令和数据馈送到 CPU 中 MTAP 除了 EJTAG TAP (ETAP) 控制器, PIC32MM 器件还使用另一个专有 TAP 控制器来执行其他操作 Microchip TAP (MTAP) 控制器支持与编程相关的两条指令 : MTAP_COMMAND 和 TAP 切换指令 有关完整的指令列表, 请参见表 19-1 MTAP_COMMAND 指令为 JTAG 探针提供了通过其数据寄存器将命令发送到器件的机制 编程器通过 SendCommand 伪操作移入 MTAP_COMMAND 指令, 然后通过 XferData 伪操作发送 MTAP_COMMAND DR 命令 ( 有关具体命令, 请参见表 19-2) 探针无需为移入数据寄存器的每条命令都发出 MTAP_COMMAND 指令 线转 4 线此模块可将 2 线 ICSP 接口转换为 4 线 JTAG 接口 CPU CPU 通过内部振荡器以 8 MHz 的速率执行指令 闪存控制器闪存控制器用于控制器件上闪存的擦除和编程 闪存 PIC32MM 器件闪存分为两个逻辑闪存分区, 包括引导闪存 (Boot Flash Memory,BFM) 和程序闪存 (Program Flash Memory,PFM) BFM 从地址 0x1FC00000 开始, PFM 则从地址 0x1D 开始 每个闪存分区都可分成多页, 页表示可以擦除的最小存储块 页大小为 256 字 (1024 字节 ) 512 字 (2048 字节 ) 1024 字 (4096 字节 ) 或 4096 字 (16,384 字节 ), 具体取决于器件 行大小表示使用行编程命令编程的字数 一页内通常有 8 行 ; 因此, 页大小为 和 4096 字的器件的行大小分别为 和 512 字 表 5-1 显示了每个器件系列的 PFM BFM 行和页大小 BFM 的某些存储单元保留用作器件配置寄存器 ; 更多信息, 请参见第 18.0 节 配置存储区器件 ID 和唯一器件标识符 DS D_CN 第 7 页

8 表 5-1: 代码存储区大小 PIC32MM 器件 PIC32MM0016/0032/0064/ 0128/0256GPL0XX 行大小 ( 字 ) 页大小 ( 字 ) x1FC x1FC016FF (5.75K) 引导闪存地址 ( 字节 ) (1) 编程执行 (2,3) RIPE_20_aabbcc.hex 注 1: 程序闪存地址的范围基于程序闪存大小, 具体如下所示 : 0x1D x1D003FFF (16 KB) 0x1D x1D007FFF (32 KB) 0x1D x1D00FFFF (64 KB) 0x1D x1D01FFFF (128 KB) 0x1D x1D03FFFF (256 KB) 0x1D x1D07FFFF (512 KB) 0x1D x1D0FFFFF (1024 KB) 0x1D x1D1FFFFF (2048 KB) 并非每个系列都支持所有的程序闪存大小 2: 编程执行程序可以从 Microchip 网站的相关产品页面获取, 也可能位于以下 MPLAB X IDE 安装文件夹中 : \Microchip\MPLABX\mplab_ide\mplablibs\modules\ext\REALICE.jar \Microchip\MPLABX\mplab_ide\mplablibs\modules\ext\ICD3.jar \Microchip\MPLABX\mplab_ide\mplablibs\modules\ext\PICKIT3.jar 3: 文件名的最后几个字符 aabbcc 因文件版本而异 DS D_CN 第 8 页

9 5.2 4 线 JTAG 详细信息 4 线接口使用标准的 JTAG (IEEE ) 接口信号 TCK: 测试时钟 驱动数据输入 / 输出 TMS: 测试模式选择 选择工作模式 TDI: 测试数据输入 输入器件的数据 TDO: 测试数据输出 输出器件的数据 由于只有一条数据线可用, 因此必须采用串行传输协议 ( 如 SPI) 时钟输入位于 TCK 引脚 通过 TMS 引脚逐位操控状态机来执行配置 在 TDI 和 TDO 引脚上每个 TCK 时钟脉冲输入和输出一位数据 可以装载不同的指令模式, 以读取芯片 ID 或操控芯片功能 传送到 TDI 的数据必须在 TCK 上升沿之前的芯片特定建立时间内以及 TCK 上升沿之后的保持时间内保持有效 TDO 数据在 TCK 下降沿之后的芯片特定时间内保持有效 ( 请参见图 5-3) 图 5-3: 4 线 JTAG 接口 TCK TMS TDI ilsb imsb TDO olsb omsb DS D_CN 第 9 页

10 5.3 2 线 ICSP 详细信息 在 ICSP 模式下,2 线 ICSP 信号以时分复用的方式移入 2 线转 4 线模块 然后, 2 线转 4 线模块将转换信号, 使其相当于 TAP 控制器的 4 线 JTAG 端口 相 ICSP 在 4 相 ICSP 模式下,TDI TDO 和 TMS 器件引脚在四个时钟内复用到 PGEDx( 见图 5-4) 先移入最低有效位 (Least Significant bit,lsb) TDI 和 TMS 在 PGECx 的下降沿进行采样, 而 TDO 则在 PGECx 的下降沿进行驱动 读取和写入数据传输都使用 4 相 ICSP 模式 图 5-4: 2 线 4 相 TCK TMS TDI IR0 IR4 TDO 1 x PGECx PGEDx ptdo = 1 TDI = IR0 TMS = 0 ntdo = 0 DS D_CN 第 10 页

11 6.0 伪操作 为简化编程详细信息的说明, 所有操作都将使用伪操作进行说明 伪代码说明中使用了多个函数 这些函数可用于提高伪代码的可读性 抽象特定于实现的行为, 或同时用于这两者 通过伪操作传递参数时, 将使用以下语法 : 5 h0x03 发送 3 的 5 位十六进制值 6 b 发送 31 的 6 位二进制值本节定义了这些函数, 包括以下操作 : SetMode (mode) SendCommand (command) odata = XferData (idata) odata = XferFastData (idata) odata = XferInstruction (instruction) * odata = ReadFromAddress (address) 6.1 SetMode 伪操作 格式 : SetMode (mode) 用途 : 将 EJTAG 状态机设置为特定状态 说明 : 模式的值随时钟移入到器件的 TMS 信号引脚 TDI 设置为 0, TDO 会被忽略 限制 : 无 示例 : SetMode (6 b011111) 图 6-1: SetMode 4 线 模式 = 6 b TCK TMS TDI TDO 图 6-2: SetMode 2 线 模式 = 6 b PGECx PGEDx TDI = 0 TMS = 1 TDO = 1 TDI = 0 TMS = 0 TDO = x DS D_CN 第 11 页

12 6.2 SendCommand 伪操作 格式 : SendCommand (command) 用途 : 发送命令以选择特定 TAP 寄存器 说明 ( 按顺序 ): 1. 将 TMS 头部移入器件, 以选择移位 IR 状态 2. 将 TMS 信号保持为低电平时, 将命令移入器件的 TDI 引脚 3. 在将 TMS 设置为高电平时, 移入命令的最后一位即最高有效位 (Most Significant bit, MSb) 4. 将 TMS 尾部移入器件的 TMS 引脚, 使 TAP 控制器恢复为运行 / 测试空闲状态 限制 : 无 示例 : SendCommand (5 h0x07) 图 6-3: SendCommand 4 线 TMS 头部 = 1100 命令 = 5 h0x07 命令 (MSb) + TMS = 1 TMS 尾部 = 10 TCK TMS TDI ilsb imsb TDO 1 x 图 6-4: SendCommand 2 线 (4 相 ) TMS 头部 = 1100 命令 (5 h0x07)+ TMS = 0 命令 (MSb)+ TMS = 1 TMS 尾部 = 10 PGECx PGEDx TDI = 0 TMS = 1 TDO = x TDI = ilsb TMS = 0 TDO = x TDI = imsb TMS = 1 TDO = x TDI = 0 TMS = 1 TDO = x DS D_CN 第 12 页

13 6.3 XferData 伪操作 格式 : odata = XferData (idata) 用途 : 将数据移入和移出命令选择的寄存器 说明 ( 按顺序 ): 1. 将 TMS 头部移入器件, 以选择移位 DR 状态 2. 将 TMS 信号保持为低电平时, 将数据移入 / 移出器件的 TDI/TDO 引脚 3. 在将 TMS 设置为高电平时, 移入 / 移出数据的最后一位即 MSb 4. 将 TMS 尾部移入器件的 TMS 引脚, 使 TAP 控制器恢复为运行 / 测试空闲状态 限制 : 无 示例 : odata = XferData (32 h0x12) 图 6-5: XferData 4 线 TMS 头部 = 100 数据 (32 h0x12) 数据 (MSb)+ TMS = 1 TMS 尾部 = 10 TCK TMS TDI ilsb imsb TDO olsb omsb 图 6-6: XferData 2 线 (4 相 ) TMS 头部 = 100 PGEC PGED TDI = 0 TMS = 1 TDO = x TDI = 0 TMS = 0 TDO = x TDI = 0 TMS = 0 TDO = olsb 数据 (31 h0x12)+ TMS = 0 数据 (MSb)+ TMS 尾部 = 1 TDI = ilsb TMS = 0 TDO = olsb + 1 TDI = imsb TMS = 1 TDO = x TMS 尾部 = 10 TDI = 0 TMS = 1 TDO = x TDI = 0 TMS = 0 TDO = x DS D_CN 第 13 页

14 6.4 XferFastData 伪操作 格式 : odata = XferFastData (idata) 用途 : 将 32 位数据快速输入 / 输出器件 说明 ( 按顺序 ): 1. 将 TMS 头部移入器件, 以选择移位 DR 状态 注 : 对于 2 线 (4 相 ) 在最后一个时钟, 移入 TMS 头部的同时, opracc 位从 TDO 移出 如果 opracc 的值不是 1, 则必须重复整个操作 2. 移入 PrACC 位的输入值, 即 0 注 : 对于 2 线 (4 相 ) 在此操作期间,TDO 将成为输出数据的 LSb 移入输入数据剩余的 31 位, 并移出输出数据的 31 位 对于输入数据的最后一位, 将设置 TMS 尾部 = 1 限制 : 必须先发送 SendCommand (ETAP_FASTDATA), 以选择 Fastdata 寄存器, 如例 6-1 中所示 有关命令的详细说明, 请参见表 19-4 例 6-1: SendCommand // Select the Fastdata Register SendCommand(ETAP_FASTDATA) // Send/Receive 32-bit Data odata = XferFastData(32 h0x12) 3. 移入 TMS 尾部 = 10, 使 TAP 控制器恢复为运行 / 测试空闲状态 图 6-7: XferFastData 4 线 TMS 头部 = 100 PRACC 数据 (32 h0x12) 数据 (MSb)+ TMS = 1 TMS 尾部 = 10 TCK TMS TDI 0 ilsb imsb TDO 1 olsb omsb DS D_CN 第 14 页

15 图 6-8: XferFastData 2 线 (4 相 ) TMS 头部 = 100 PGECx PGEDx TDI = 0 TMS = 1 TDO = x TDI = 0 TMS = 0 TDO = x TDI = 0 TMS = 0 TDO = opracc PrACC 数据 (31 h12)+ TMS = 0 数据 (MSb)+ TMS 尾部 = 1 TDI = 0 TMS = 0 TDO = olsb TDI = ilsb TMS = 0 TDO = olsb + 1 TDI = imsb TMS = 1 TDO = x TMS 尾部 = 10 TDI = 0 TMS = 1 TDO = x TDI = 0 TMS = 0 TDO = x DS D_CN 第 15 页

16 6.5 XferInstruction 伪操作 格式 : XferInstruction (instruction) 用途 : 发送用于器件执行的 32 位数据 说明 : 将指令移入器件, 然后由 CPU 执行 限制 : 器件必须处于调试模式 例 6-2: PIC32MM 器件的 XferInstruction XferInstruction (instruction) { // Select Control Register SendCommand(ETAP_CONTROL); // Wait until CPU is ready // Check if Processor Access bit (bit 18) is set do { controlval = XferData(32 h0x0004c000); } while( PrAcc(contorlVal<18>) is not 1 ); // Select Data Register SendCommand(ETAP_DATA); // Send the instruction XferData(instruction); } // Tell CPU to execute instruction SendCommand(ETAP_CONTROL); XferData(32 h0x0000c000); DS D_CN 第 16 页

17 6.6 ReadFromAddress 伪操作 格式 : odata = ReadFromAddress (address) 用途 : 从器件存储器读取 32 位数据 说明 : 从存储器中 address 参数指定的地址读取 32 位数据 限制 : 器件必须处于调试模式 例 6-3: ReadFromAddress ReadFromAddress (address) { // Load Fast Data register address to s3 instruction = 0x000041B3; instruction = (0xff200000&0xffff0000); XferInstruction(instruction); // lui s3, <FAST_DATA_REG_ADDRESS(31:16)> - set address of fast data register // Load memory address to be read into t0 instruction = 0x000041A8; instruction = (address&0xffff0000); XferInstruction(instruction); // lui t0, <DATA_ADDRESS(31:16)> - set address of data instruction = 0x ; instruction = (address<<16)&0xffff0000; XferInstruction(instruction); // ori t0, <DATA_ADDRESS(15:0)> - set address of data // Read data XferInstruction(0x0000FD28); // lw t1, 0(t0) // Store data into Fast Data register XferInstruction(0x0000F933); // sw t1, 0(s3) - store data to fast data register XferInstruction(0x0C000C00); // 2 nops // Shift out the data SendCommand(ETAP_FASTDATA); odata = XferFastData(32'h0x ); return odata; } DS D_CN 第 17 页

18 7.0 进入 2 线 ICSP 模式 可以使用任何一对 2 线 PGEDx 和 PGECx 引脚进行编程, 但是, 它们必须成对使用 PGED1 必须与 PGEC1 一起使用, 以此类推 注 : 如果使用的是 4 线 JTAG 接口, 则不必执行以下步骤 进入 2 线 ICSP 模式需要执行以下步骤 : 1. 将 MCLR 引脚短暂地驱动为高电平, 然后再驱动为低电平 2. 将 32 位密钥序列随时钟移入到 PGEDx 引脚 3. 然后将 MCLR 驱动为高电平并保持一段指定的时间 更多时序详细信息, 请参见第 20.0 节 交流 / 直流特性和时序要求 加到 MCLR 的编程电压为 VIH, 对于 PIC32MM 器件而言, 该电压实际就是 VDD 对于 VIH 没有最短保持时间要求 在移除 VIH 后, 必须经过至少 P18 时间间隔才能将密钥序列移入 PGEDx 引脚 该密钥序列为一个特定的 32 位形式 : ( 首字母缩写词 MCHP, 使用 ASCII 表示 ) 只有在密钥序列有效时, 器件才能进入编程 / 校验模式 首先必须移入高 4 位的 MSb 一旦密钥序列完全移入, 就必须将 VIH 加到 MCLR 并在 2 线 ICSP 接口下始终保持该电压 必须经过至少 P19 和 P7 的时间间隔才能将数据移入 PGEDx 引脚 在 P7 之前出现在 PGEDx 引脚上的信号被解析为无效 成功进入 2 线 ICSP 模式后, 就可以执行后续小节中所述的编程操作 在 2 线增强型 ICSP 模式下, 所有未用的 I/O 引脚都被置于高阻态 注 : 进入 ICSP 模式后将器件置于 复位 状态, 以阻止指令执行 要解除 复位 状态, 必须发出 MCHP_DE_ASSERT_RST 命令 图 7-1: 进入增强型 ICSP 模式 MCLR P6 P14 P20 VIH VIH P19 P7 VDD PGEDx PGECx P18 编程 / 校验进入码 = 0X4D b31 b30 b29 b28 b27 b3 b2 b1 b0 P1A P1B DS D_CN 第 18 页

19 8.0 检查器件状态 在对器件进行编程之前, 编程器必须先检查器件状态, 以确保其准备好接收信息 图 8-1: 检查器件状态 将 MCLR 设置为低电平 SetMode (6 b011111) 4 线 SendCommand (MTAP_SW_MTAP) SendCommand (MTAP_COMMAND) 线接口 要使用 4 线 JTAG 接口检查器件状态, 需要执行以下步骤 将 MCLR 置为有效保持器件在复位状态, 以阻止代码执行 1. 将 MCLR 引脚设置为低电平 2. 通过 SetMode (6 b011111) 强制芯片 TAP 控制器进入运行测试 / 空闲状态 3. SendCommand (MTAP_SW_MTAP) 4. SendCommand (MTAP_COMMAND) 5. statusval = XferData (MCHP_STATUS) 6. 如果 CFGRDY (statusval<3>) 不为 1 且 FCBUSY (statusval<2>) 不为 0, 则转到第 5 步 注 : 如果使用的是 4 线接口, 则必须存在配置字所选择的振荡器源, 才能访问闪存 在未编程器件中, 振荡器源是内部 FRC, 可通过它访问闪存 如果已将配置字重新编程为选择外部振荡器源, 则必须存在该振荡器源, 才能访问闪存 有关使用配置字设置选择振荡器的详细信息, 请参见特定器件数据手册中的 特殊功能 章节 线接口 statusval = XferData (MCHP_STATUS) 否 FCBUSY = 0 CFGRDY = 1 完成 是 要使用 2 线接口检查器件状态, 需要执行以下步骤 : 1. 通过 SetMode (6 b011111) 强制芯片 TAP 控制 器进入运行测试 / 空闲状态 2. SendCommand (MTAP_SW_MTAP) 3. SendCommand (MTAP_COMMAND) 4. statusval = XferData (MCHP_STATUS) 5. 如果 CFGRDY (statusval<3>) 不为 1 且 FCBUSY (statusval<2>) 不为 0, 则转到第 4 步 注 : 如果 CFGRDY 和 FCBUSY 未在 10 ms 内进入正确状态, 则说明未正确执行序列或者器件已损坏 DS D_CN 第 19 页

20 9.0 擦除器件 在对器件进行编程前, 必须先将其擦除 擦除操作会向闪存中写入全 1, 使其准备好编程新的一组数据 擦除器件后, 可以通过执行 空白检查 操作进行校验 更多信息, 请参见第 9.1 节 空白检查 擦除闪存程序存储器 ( 程序闪存 引导闪存和配置存储区 ) 的步骤包括选择 MTAP 和发送 MCHP_ERASE 命令 然后, 编程器必须通过读取和校验 MCHP_STATUS 值中的位, 等待擦除操作完成 图 9-1 显示了执行整片擦除的过程 注 : 器件 ID 存储单元为只读, 无法擦除 因此, 整片擦除对这些存储单元没有影响 图 9-1: 擦除器件 选择 MTAP SendCommand (MTAP_SW_MTAP) 将 MTAP 置于命令模式 SendCommand (MTAP_COMMAND) 要擦除目标器件, 需要完成以下步骤 : 1. SendCommand (MTAP_SW_MTAP) 2. SendCommand (MTAP_COMMAND) 3. XferData (MCHP_ERASE) 4. XferData (MCHP_DE_ASSERT_RST) 5. 延时 10 ms 6. statusval = XferData (MCHP_STATUS) 7. 如果 CFGRDY(statusVal<3>) 不为 1 且 FCBUSY (statusval<2>) 不为 0, 则转到第 5 步 注 : 整片擦除操作是自定时操作 如果未在指定 的整片擦除时间内正确设置 FCBUSY 和 CFGRDY 位, 则说明未正确执行序列或者器 件已损坏 9.1 空白检查 术语 空白检查 的含义是校验器件是否已被成功擦除且没有已编程的存储单元 空白或已擦除的存储单元始终读为 1 器件配置寄存器将被空白检查忽略 另外, 所有未实现的存储空间都应该被空白检查忽略 发出整片擦除命令 XferData (MCHP_ERASE) XferData (MCHP_DE_ASSERT_RST) 10 毫秒延时 读取擦除状态 statusval = XferData (MCHP_STATUS) 否 FCBUSY = 0 CFGRDY = 1 是 完成 DS D_CN 第 20 页

21 10.0 进入串行执行模式 串行执行模式可通过 JTAG 接口将指令馈送到 CPU 在对器件进行编程前, 必须先将器件置于串行执行模式 如果器件处于代码保护状态, 则必须在进入测试串行执行模式之前执行整片擦除 有关详细信息, 请参见第 9.0 节 擦除器件 图 10-1: 进入串行执行模式 选择 MTAP SendCommand (MTAP_SW_MTAP) 将 MTAP 置于命令模式 SendCommand (MTAP_COMMAND) 读取代码保护状态 statusval = XferData (MCHP_STATUS) CPS = 1 是 否 将复位置为有效 XferData (MCHP_ASSERT_RST) 选择 ETAP SendCommand (MTAP_SW_ETAP) 无法进入必须先擦除 2 线 将 CPU 置于串行执行模式 SendCommand (ETAP_EJTAGBOOT) 线接口 进入 4 线串行执行模式需要执行以下步骤 : 注 : 假定 MCLR 在前面的 检查器件状态 步骤 ( 见图 8-1) 中已驱动为低电平 1. SendCommand (MTAP_SW_MTAP) 2. SendCommand (MTAP_COMMAND) 3. statusval = XferData (MCHP_STATUS) 4. 如果 CPS (statusval<7>) 不为 1, 则必须先擦 除器件 5. SendCommand (MTAP_SW_ETAP) 6. SendCommand (ETAP_EJTAGBOOT) 7. 将 MCLR 设置为高电平 线接口 进入 2 线串行执行模式需要执行以下步骤 : 1. SendCommand (MTAP_SW_MTAP) 2. SendCommand (MTAP_COMMAND) 3. statusval = XferData (MCHP_STATUS) 4. 如果 CPS (statusval<7>) 不为 1, 则必须先擦 除器件 5. XferData (MCHP_ASSERT_RST) 6. SendCommand (MTAP_SW_ETAP) 7. SendCommand (ETAP_EJTAGBOOT) 8. SendCommand (MTAP_SW_MTAP) 9. SendCommand (MTAP_COMMAND) 10. XferData (MCHP_DE_ASSERT_RST) 11. SendCommand (MTAP_SW_ETAP) 选择 MTAP SendCommand (MTAP_SW_MTAP) 将 MCLR 设置为高电平 4 线 将 MTAP 置于命令模式 SendCommand (MTAP_COMMAND) 解除复位 XferData (MCHP_DE_ASSERT_RST) 选择 ETAP SendCommand (MCHP_SW_ETAP) 2 线 DS D_CN 第 21 页

22 11.0 下载编程执行程序 (PE) PE 使用一个简单的命令集和通信协议为编程器提供了对 PIC32MM 器件进行编程和校验的机制 PE 驻留在 RAM 存储器中, 由 CPU 执行以对器件编程 PE 可提供以下几项基本功能 : 读存储器 擦除存储器 对存储器编程 空白检查 读取执行程序固件版本 获取闪存存储单元的循环冗余校验 (Cyclic Redundancy Check, CRC) PE 执行编程和校验器件所需的低级任务 这允许编程器通过发出相应的命令和数据来对器件编程 第 16.2 节 PE 命令集 提供了每条命令的详细说明 PE 使用器件的数据 RAM 来存放变量和执行程序 运行 PE 后, 数据 RAM 中的内容就无法确定了 将 PE 装入数据 RAM 中之后, 可以使用表 16-2 中所示的命令集对 进行编程 图 11-1: 下载 PE 将 PE 装载程序写入 RAM 装载 PE 将 PE 装入存储器是一个分为两步的过程 : 1. 将 PE 装载程序装入数据 RAM (PE 装载程序将 PE 二进制文件装入数据 RAM 的适当位置, 在完成后跳转到编程执行程序, 并开始执行它 ) 2. 将 PE 二进制代码馈送到 PE 装载程序 DS D_CN 第 22 页

23 表 11-1 列出了下载 PE 所需的步骤 表 11-1: 下载 PE 操作 操作数 第 1 步 : 设置 PE 的 PIC32MMRAM 地址 PIC32MM 内核 执行的指令序列为 : lui a0, 0xa000 ori a0, a0, 0x800 XferInstruction 0xA00041A4 XferInstruction 0x 第 2 步 : 装载 PE_loader 重复此步骤 ( 第 2 步 ), 直到整 个 PE_loader 都装入 PIC32MM 存储器中 在操作 数字段中, <PE_loader hi++> 表示表 11-2 中所示的 PE_loader 操作码的 MSb 31 到 16 同 样, <PE_loader lo++> 表示表 11-2 中所示 的 PE_loader 操作码的 LSb 15 到 0 ++ 符号 表示当连续执行这些操作时, 将从表 11-2 中所示 PE_loader 的操作码列表中传输新字 PIC32MM 内核执行的指令序列为 : lui a2, <PE_loader hi++> ori a2, a2, <PE_loader lo++> sw a2, 0(a0) addiu a0, a0, 4 XferInstruction 0x<PE_loader hi++>41a6 XferInstruction 0x<PE_loader lo++>50c6 XferInstruction 0x6E42EB40 第 3 步 : 跳转到 PE_loader PIC32MM 内核执行的指令序 列为 : lui t9, 0xa000 ori t9, t9,0x800 jr t9 nop XferInstruction 0xA00041B9 XferInstruction 0x XferInstruction 0x0C 第 4 步 : 使用 PE_loader 装载 PE 重复此步骤 ( 第 4 步 ) 的最后一个指令, 直到整个 PE 都装入 PIC32MM 存储器中 在此步骤中, 将提供一个 Intel Hex 格 式的 PE 文件, 您每次需要解析多个 32 位字并将其 传输到 PIC32MM 存储器中 ( 参见附录 B: Hex 文件格式 ) PIC32MM 执行的指令序列如表 11-2 中所示 SendCommand ETAP_FASTDATA XferFastData PE_ADDRESS ( 来自 PE Hex 文件的 PE 程序块的地址 ) XferFastData PE_SIZE ( 来自 PE Hex 文件的程序 块的 32 位字数 ) XferFastData 来自 PE Hex 文件的 PE 软件操作码 (PE 指令 ) 第 5 步 : 跳转到 PE 幻数 (0xDEAD0000) 指示 PE_loader PE 已完全装入存储器 当 PE_loader 识别幻数 时, 将跳转到 PE XferFastData 0x XferFastData 0xDEAD0000 表 11-2: PE 装载程序操作码 操作码 指令 0xDEAD41A7 lui a3, 0xdead 0xFF2041A6 lui a2, 0xff20 0xFF2041A5 lui a1, 0xff20 here1 0x69E06A60 lw a0, 0(a2) lw v1, 0(a2) 0x000C94E3 beq v1, a3, <here3> 0x8DFA0C00 nop beqz v1, <here1> here2 lw v0, 0(a1) 0xE9406DBE addiu v1, v1,-1 sw v0, 0(a0) 0xADFB6E42 addiu a0, a0, 4 bnez v1, <here2> 0xCFF20C00 nop b <here1> 0x0C000C00 nop; nop here3 0xA00041A2 lui v0, 0xa000 0x ori v0, v0, 0x901 0x0C jr v0 nop DS D_CN 第 23 页

24 12.0 下载数据块 要将数据块编程到 PIC32MM 器件中, 必须将其装入 SRAM 中 12.1 不使用 PE 要在不使用 PE 的情况下对存储块进行编程, 必须先将数据块写入 RAM 此方法要求编程器传输带有嵌入 ( 立即数 ) 数据的实际机器指令, 以将数据块写入器件的内部 RAM 存储器 图 12-1: 不使用 PE 下载数据 bufaddr = RAM 缓冲区地址 将 32 位立即数数据写入 bufaddr 递增 bufaddr 下载数据块需要执行以下步骤 : 1. XferInstruction (opcode) 2. 重复第 1 步, 直到最后一条指令传输到 CPU 中 表 12-1: 操作码 12.2 使用 PE 下载数据操作码 指令 第 1 步 : 将 SRAM 基地址初始化为 0xA xA00041A4 lui a0, 0xA000 第 2 步 : 将要编程的整行数据写入系统 SRAM 0x<DATA(31:16)>41A5 lui a1, <DATA(31:16)>; 0x<DATA(15:0)>50A5 ori a1, <DATA(15:0)>; 0x<OFFSET>F8A4 sw a1, <OFFSET>(a0); //OFFSET increments by 4 0x0C000C00 Two NOPs 第 3 步 : 重复第 2 步, 直到装入一行数据 使用 PE 时, 将通过两条命令处理第 12.0 节 下载数据块 和第 13.0 节 启动闪存行写入 中的步骤 : ROW_PROGRAM 和 PROGRAM ROW_PROGRAM 命令可对单行闪存数据进行编程, PROGRAM 命令则可以对多行闪存数据进行编程 这两条命令在第 16.0 节 编程执行程序 中有详细说明 否 完成 DS D_CN 第 24 页

25 13.0 启动闪存行写入 一旦将一行数据下载到器件的 SRAM 中, 就必须启动编程序列来将数据块写入闪存中 有关启动闪存行写入的操作码和指令, 请参见表 使用 PE 使用 PE 时, 数据会立即从 SRAM 写入闪存中 不需要进一步的操作 13.2 不使用 PE 对闪存执行的写入操作是通过 NVMCON 寄存器控制的 编程的执行过程如下 : 设置 NVMCON 选择写入操作的类型, 并通过将 WR 控制位 (NVMCON<15>) 置 1 启动编程序列 图 13-1: 不使用 PE 启动闪存写入取消对控制寄存器的保护选择写入操作将地址装入 NVM 寄存器解锁闪存控制器启动操作 完成 DS D_CN 第 25 页

26 在闪存写入步骤 ( 见表 13-1) 中, 使用了行编程方法来对闪存进行编程, 因为这通常是最便捷的方法 此外, 还提供了双字编程方法, 根据您的应用, 可能需要使用此方法 有关更多信息, 请参见特定器件数据手册中的 闪存程序存储器 章节和 PIC32 系列参考手册 的相关章节 启动闪存写入需要执行以下步骤 : 1. XferInstruction (opcode) 2. 重复第 1 步, 直到最后一条指令传输到 CPU 中 表 13-1: 操作 启动闪存行写入操作码 操作数 第 1 步 : 初始化常量 寄存器 a1 和 a2 设置为 WREN = 1 或 NVMOP<3:0> = 0011, 且 WR = 1 寄存器 s1 和 s2 设置为解锁数据值, 且 s0 初始化为 0 ori a1, $0, 0x4003 ori a2, $0, 0x8000 lui s1, 0xaa99 ori s1, s1, 0x6655 lui s2, 0x5566 ori s2, s2, 0x99aa lui s0, 0x0000 XferInstruction 0x400350A0 XferInstruction 0x800050C0 XferInstruction 0xAA9941B1 XferInstruction 0x XferInstruction 0x556641B2 XferInstruction 0x99AA5252 XferInstruction 0x000041B0 第 2 步 : 将寄存器 a0 设置为 NVM 控制器的基地址 (0xBF80_2380) 寄存器 s3 设置为用于禁止 NVMBPB 中写保护的值 lui a0, 0xbf80 ori a0, a0, 0x2380 ori s3, $0, 0x8000 /* BWPAUNLK bit mask */ XferInstruction 0xBF8041A4 XferInstruction 0x XferInstruction 0x 第 3 步 : 解锁并禁止引导闪存写保护 sw s1, 16(a0) /* NVMKEY = 0xaa */ sw s2, 16(a0) /* NVMKEY = 0x556699aa */ sw s3, 112(a0) /*BWPAUNLK bit (NVMBPB register) = 1*/ nop XferInstruction 0xBF8041A4 XferInstruction 0x XferInstruction 0x 表 13-1: 启动闪存行写入操作码 ( 续 ) 操作操作数第 4 步 : 使用要编程的闪存行的地址设置 NVMADDR 寄存器 lui t0, <FLASH_ROW_ADDR(31:16)> ori t0, t0, <FLASH_ROW_ADDR(15:0)> sw t0, 32(a0) XferInstruction 0x<FLASH_ROW_ADDR(31:16)>41A8 XferInstruction 0x<FLASH_ROW_ADDR(15:0)>5108 XferInstruction 0x0020F904 第 5 步 : 使用物理源 SRAM 地址设置 NVMSRCADDR 寄存器 ori s0, $0, <RAM_ADDR(15:0)> sw s0, 80(a0) XferInstruction 0x<RAM_ADDR(15:0)>5200 XferInstruction 0x0050FA04 第 6 步 : 设置 NVMCON 寄存器进行写保护 sw a1, 0(a0) /* NVMCON = 0x4003 */ delay (6 μs) XferInstruction 0x0C00EAC0 第 7 步 : 解锁 NVMCON 寄存器并启动写操作 (WR 位 = 1) sw s1, 16(a0) /* NVMKEY = 0xaa */ sw s2, 16(a0) /* NVMKEY = 0x556699aa */ sw a2, 8(a0) /* NVMCONSET = 0x8000 */ XferInstruction 0xFA44E8C4 XferInstruction 0xEB 第 8 步 : 读取 NVMCON 寄存器, 直到 WR 位 (NVMCON<15>) 清零 ReadFromAddress 0xBF 第 9 步 : 在 WR 位 (NVMCON<15>) 中发现 0 后至少等待 500 ns, 然后再写入任意 NVM 寄存器 这需要在执行过程中插入 NOP 指令 nop nop nop nop XferInstruction 0x0C000C00 XferInstruction 0x0C000C00 第 10 步 : 清零 WREN 位 (NVMCONM<14>) ori a3, $0, 0x4000 sw a3, 4(a0) nop XferInstruction 0x400050E0 XferInstruction 0x0C00EBC1 DS D_CN 第 26 页

27 14.0 校验器件存储器 校验的步骤涉及读回代码存储空间并将读到的值与存储在编程器缓冲区中的副本作比较 使用其余代码校验配置寄存器 注 : 由于配置寄存器包含器件代码保护位, 因此应在写入后立即对代码存储区进行校验 ( 如果使能代码保护 ) 这是因为如果代码保护位清零后发生器件复位, 将无法读取或校验器件 14.1 使用 PE 校验存储器 存储器校验使用 GET_CRC 命令来执行 表 16-2 列出了操作码和指令 14.2 不使用 PE 校验存储器 读取闪存是通过从 Fastdata 寄存器执行一系列读访问来执行的 表 19-4 显示了 EJTAG 编程详细信息, 包括用于执行处理器访问操作的地址和操作码数据 图 14-2: 不使用 PE 校验存储器 读取存储单元 ( 通过使用 ReadFromAddress 伪操作 ) 校验存储单元 图 14-1: 使用 PE 校验存储器 发出校验命令 否 完成 接收响应 使用 PE 校验存储器需要执行以下步骤 : 1. XferFastData (GET_CRC) 2. XferFastData (start_address) 3. XferFastData (length) 4. valcksum = XferFastData (32 h0x00) 校验 valcksum 是否与编程器缓冲区中保存的副本的校验和相匹配 校验存储器需要执行以下步骤 : 1. XferInstruction (opcode) 2. 重复第 1 步, 直到最后一条指令传输到 CPU 中 3. 校验 valread 是否与编程器缓冲区中保存的副本 相匹配 4. 对每个存储单元重复第 1-3 步 表 14-1: 校验器件操作码 操作码 指令 第 1 步 : 初始化一些常量 3c13ff20 lui $s3, 0xFF20 第 2 步 : 读取存储单元 3c08<ADDR> lui $t0, <FLASH_WORD_ADDR(31:16)> 3508<ADDR> ori $t0, <FLASH_WORD_ADDR(15:0)> 第 3 步 : 写入 Fastdata 寄存器存储单元 8d lw $t1, 0($t0) ae sw $t1, 0($s3) 第 4 步 : 从 Fastdata 寄存器 0xFF 读取数据 第 5 步 : 重复第 2-4 步, 直到读取完所有配置存储单元 DS D_CN 第 27 页

28 15.0 退出编程模式 对器件进行编程后, 必须使器件退出编程模式, 以开始正确执行其新的程序存储器内容 线接口 通过将 VIH 从 MCLR 移除, 可退出编程模式, 如图 15-1 所示 退出操作的唯一要求是在最后一个时钟和编程信号之后的 P16 时间间隔后移除 VIH 图 15-1: 4 线退出编程模式 线接口 通过将 VIH 从 MCLR 移除, 可退出编程模式, 如图 15-2 所示 退出操作的唯一要求是在 PGECx 和 PGEDx 引脚上最后一个时钟和编程信号之后的 P16 时间间隔后移除 VIH 图 15-2: MCLR 2 线退出编程模式 P16 P17 VIH P16 VDD MCLR PGEDx VIH VDD TCK TMS PGECx PGEDx = 输入 TDI TDO 退出编程模式需要执行以下步骤 : 1. SetMode (5 b11111) 2. 将 MCLR 置为有效 3. 断开电源 ( 如果器件已通电 ) 退出编程模式需要执行以下步骤 : 1. SetMode (5 b11111) 2. 将 MCLR 置为有效 3. 在 PGECx 上发出时钟脉冲 4. 断开电源 ( 如果器件已通电 ) DS D_CN 第 28 页

29 16.0 编程执行程序 注 : 编程执行程序 (PE) 随附于您安装的 MPLAB X IDE 中 要下载器件对应的 PE 文件, 请访问 Microchip 网站 ( 上的相关产品页面 16.1 PE 通信 编程器和 PE 存在主从关系, 其中编程器是主编程设备, 而 PE 是从设备 所有通信都是由编程器以命令形式发起的 PE 一次只能接收一个命令 相应地, 在接收并处理命令后,PE 将向编程器发送一个响应 线 ICSP EJTAG 速率 在 ICSP 模式下,器件使用内部快速 RC (FRC) 振荡器工作, 其标称频率为 8MHz 通信概述 编程器和 PE 使用 EJTAG 地址 数据和 Fastdata 寄存器进行通信 尤其是, 编程器使用 Fastdata 寄存器将命令和数据传输到 PE 编程器使用地址和数据寄存器接收来自 PE 的响应 接收响应的伪操作如下面的 GetPEResponse 伪操作所示 : 格式 : response = GetPEResponse() 用途 : 使编程器从 PE 接收 32 位响应值 例 16-1: GetPEResponse 示例 WORD GetPEResponse() { WORD response; // Wait until CPU is ready SendCommand(ETAP_CONTROL); // Check if Proc.Access bit (bit 18) is set do { controlval=xferdata(32 h0x0004c000 ); } while(pracc(contorlval<18>) is not 1 ); // Select Data Register SendCommand(ETAP_DATA); // Receive Response response = XferData(0); // Tell CPU to execute instruction SendCommand(ETAP_CONTROL); XferData(32 h0x0000c000); // Return 32-bit response return response; } 编程器和 PE 之间的典型通信序列如表 16-1 中所示 序列在编程器将命令和可选附加数据发送到 PE 时开始, 然后 PE 会执行命令 PE 完成命令执行时, 会将响应发送回编程器 响应可以有多个 例如, 如果编程器发送 READ 命令, 响应将包含读取的数据 表 16-1: PE 的通信序列 操作 操作数 第 1 步 : 将命令和可选数据从编程器发送到 PE XferFastData (Command data len) XferFastData.. optional data.. 第 2 步 : 编程器读取来自 PE 的响应 GetPEResponse response GetPEResponse... response... DS D_CN 第 29 页

30 16.2 PE 命令集 表 16-2 提供了 PE 命令集的详细信息, 如每条命令的操作码 助记符和简短说明 在第 节 ROW_PROGRAM 命令 到第 节 DOUBLE_WORD_PROGRAM 命令 中详细说明了每条命令的功能 每接收到一条命令,PE 就会向编程器发送一个响应 该响应指示命令是否已被正确处理, 其中包含所有必需的响应数据或错误数据 命令格式所有 PE 命令都具有由 32 位头和命令所需的所有数据组成的通用格式 ( 见图 16-1) 32 位头由用于标识命令的 16 位操作码字段以及 16 位命令操作数字段组成 操作数字段的使用因命令而异 注 : 有些命令没有操作数信息 ; 但是, 必须发送操作数字段, 且编程执行程序将忽略该数据 图 16-1: 命令格式 操作码 操作数 ( 可选 ) 命令数据高位字 ( 如果需要 ) 命令数据低位字 ( 如果需要 ) 操作码字段中的命令必须与表 16-2 中所列命令集中的一个命令相匹配 如果接收到的命令与列表中的任何命令都不匹配, 将返回 NACK 响应, 如表 16-3 中所示 PE 使用命令操作数字段来确定要读取或写入的字节数 如果该字段的值不正确, PE 将无法正确地接收命令 表 16-2: PE 命令集 操作码 助记符 说明 0x0 ROW_PROGRAM (1) 对指定地址处的一行闪存进行编程 0x1 READ 从指定地址开始读取存储器的 N 个 32 位字 (N < 65,536) 0x2 PROGRAM 从指定地址开始对闪存进行编程 0x4 CHIP_ERASE 对整个芯片进行芯片擦除 0x5 PAGE_ERASE 从指定地址擦除代码存储区页 0x6 BLANK_CHECK 代码空白检查 0x7 EXEC_VERSION 读取 PE 软件版本 0x8 GET_CRC 获取闪存的 CRC 0x9 PROGRAM_CLUSTER 将指定的字节数编程到指定地址 0xA GET_DEVICEID 返回器件的硬件 ID 0xC GET_CHECKSUM 获取闪存的校验和 0xE DOUBLE_WORD_PGRM 对指定地址处的闪存的两个字进行编程 注 1: 关于每个器件的行大小, 请参见表 5-1 DS D_CN 第 30 页

31 响应格式 PE 响应集如表 16-3 中所示 所有 PE 响应都具有由 32 位头和响应所需的所有数据组成的通用格式 ( 见图 16-2) 图 16-2: 响应格式 最后一个命令 响应码 Data_High_1 Data_Low_1 Data_High_N Data_Low_N Last_Cmd 字段 Last_Cmd 是响应的第一个字中的一个 16 位字段, 该字段指示 PE 处理的命令 它可以用来校验 PE 是否正确地接收了编程器发送的命令 响应码 响应码指示最后一个命令是成功还是失败, 或者命令是否为无法识别的值 响应码的值如表 16-3 中所示 表 16-3: 响应值 操作码 助记符 说明 0x0 PASS 命令已成功处理 0x2 FAIL 命令处理失败 0x3 NACK 命令未知 可选数据对于某些命令 ( 如读取 ), 响应头后面可能会跟随可选数据 可选数据的 32 位字数量取决于最后一个命令操作及其参数 ROW_PROGRAM 命令 ROW_PROGRAM 命令可指示 PE 对指定地址处的一行数据进行编程 要编程到存储器中的数据位于命令字 Data_1 至 Data_N 中, 必须使用表 16-4 给出的指令字打包格式对它们进行打包 ( 此命令需要整行数据 ) 图 16-3: ROW_PROGRAM 命令 操作码 操作数 Addr_High Addr_Low Data_High_1 Data_Low_1 Data_High_N Data_Low_N 表 16-4: 预期的响应 (1 字 ): ROW_PROGRAM 格式 字段 说明 操作码 0x0 操作数 不使用 Addr_High 32 位目标地址的高 16 位 Addr_Low 32 位目标地址的低 16 位 Data_High_1 数据字 1 的高 16 位 Data_Low_1 数据字 1 的低 16 位 Data_High_N 数据字 2 至 N 的高 16 位 Data_Low_N 数据字 2 至 N 的低 16 位 图 16-4: ROW_PROGRAM 响应 最后一个命令 响应码 DS D_CN 第 31 页

32 READ 命令 READ 命令指示 PE 从 Addr_Low 和 Addr_High 字段指定的 32 位地址开始, 从存储器读取在操作数字段中指定的 N 个 32 位字 此命令可用于读取闪存和配置字 作为对该命令的响应返回的所有数据都使用表 16-5 中所述的数据打包格式 图 16-5: READ 命令 操作码 操作数 Addr_High Addr_Low 表 16-5: 操作码操作数 字段 Addr_Low Addr_High 预期的响应 : READ 格式 说明 0x1 要读取的 32 位字的数量 (N) ( 最大为 65,535) 32 位源地址的低 16 位 32 位源地址的高 16 位 图 16-6: READ 响应 最后一个命令 响应码 Data_High_1 Data_Low_1 Data_High_N Data_Low_N PROGRAM 命令 PROGRAM 命令指示 PE 从 Addr_Low 和 Addr_High 字段指定的 32 位地址开始对闪存 ( 包括配置字 ) 进行编程 一个 32 位长度字段指定要编程的字节数 该地址必须与闪存行大小边界对齐, 且长度必须是闪存行大小的倍数 有关器件行大小, 请参见表 5-1 图 16-7: PROGRAM 命令 操作码 操作数 Addr_High Addr_Low Length_High Length_Low Data_High_1 Data_Low_1 Data_High_N Data_Low_N 表 16-6: 字段 操作码操作数 Addr_Low Addr_High Length_Low Length_High Data_Low_N Data_High_N PROGRAM 格式 说明 0x2 不使用 32 位目标地址的低 16 位 32 位目标地址的高 16 位长度的低 16 位长度的高 16 位数据字 2 至 N 的低 16 位数据字 2 至 N 的高 16 位 注 : 读取未实现的存储区将导致 PE 复位 确保只访问特定器件上存在的存储单元 DS D_CN 第 32 页

33 以下是三个编程情形 : 要编程的数据长度等于单个闪存行的大小 要编程的数据长度等于两个闪存行的大小 要编程的数据长度大于两个闪存行的大小当数据长度等于以字节为单位的行大小时, PE 将从探针接收数据块, 并立即将此命令的响应发送回探针 PE 将对其接收的每行数据做出响应 如果命令的数据长度等于单行, 将生成单个 PE 响应 如果数据长度等于两行, PE 将等待, 以接收这两行数据, 然后为每个数据行发送连续响应 如果数据长度大于两行, PE 将在接收前两行数据后发送第一行的响应 接收后续数据行包后将发送后续响应 响应将比数据滞后一行 接收最后一行数据时, PE 将发出倒数第二个数据行的连续响应, 后面跟随最后一行的响应 如果 PE 在任何块的编程中遇到错误, 它将向探针发送故障状态, 并中止 PROGRAM 命令 接收到故障状态时, 探针必须停止发送数据 PE 将不会处理此命令来自探针的任何其他数据 该过程如图 16-9 中所示 注 : 如果 PROGRAM 命令失败, 则编程器应使用 READ 命令从闪存中读取失败的行 然后, 编程器应将从闪存接收的行与其本地副本逐字比较, 以确定闪存编程失败的地址 此命令的响应与其他命令的响应稍有不同 响应的 16 个 MSb 包含目标地址的 16 个 LSb, 其中最后一个块已编程 这有助于探针和 PE 在发送和接收数据及响应时保持正确同步 预期的响应 (1 字 ): 图 16-8: PROGRAM 响应 最后一个块的目标地址的低 16 位 响应码 DS D_CN 第 33 页

34 图 16-9: PROGRAM 命令算法 开始 数据等于单行数据等于两行数据大于两行 发送一行数据 发送第一行数据 发送第一行数据 接收 ( 目标地址状态值的低 16 位 ) 发送第二行数据 发送第二行数据 接收第 1 行状态 接收第 1 行状态 接收第 2 行状态 发送第 3 行数据 接收第 2 行状态 发送第 N 行数据 接收第 N-1 行状态 接收第 N 行状态 完成 DS D_CN 第 34 页

35 CHIP_ERASE 命令 CHIP_ERASE 命令擦除整个芯片, 包括配置块 在执行擦除后, 整个闪存将包含 0xFFFFFFFF 图 16-10: CHIP_ERASE 命令 操作码 操作数 PAGE_ERASE 命令 PAGE_ERASE 命令从指定基地址擦除代码存储区的指定页数 指定的基地址必须为 0x400 或 0x100 的倍数, 具体取决于器件 在执行擦除后, 代码存储区的所有目标字都将包含 0xFFFFFFFF 图 16-12: PAGE_ERASE 命令 操作码 表 16-7: 字段操作码操作数 Addr_Low Addr_High CHIP_ERASE 格式说明 0x4 不使用 32 位目标地址的低 16 位 32 位目标地址的高 16 位 操作数 Addr_High Addr_Low 表 16-8: PAGE_ERASE 格式 预期的响应 (1 字 ): 图 16-11: CHIP_ERASE 响应 最后一个命令 字段操作码操作数 Addr_Low Addr_High 说明 0x5 要擦除的页数 32 位目标地址的低 16 位 32 位目标地址的高 16 位 响应码 预期的响应 (1 字 ): 图 16-13: PAGE_ERASE 响应 最后一个命令 响应码 DS D_CN 第 35 页

36 BLANK_CHECK 命令 BLANK_CHECK 命令查询 PE, 以确定代码存储区和代码保护配置位 (GCP 和 GWRP) 的内容是否为空白 ( 包含全 1) 图 16-14: BLANK_CHECK 命令 操作码 操作数 Addr_High Addr_Low Length_High Length_Low EXEC_VERSION 命令 EXEC_VERSION 查询 RAM 中存储的 PE 软件的版本 图 16-16: EXEC_VERSION 命令 操作码 操作数 表 16-10: EXEC_VERSION 格式 字段 说明 操作码 0x7 操作数 不使用 预期的响应 (1 字 ): 图 16-17: EXEC_VERSION 响应 表 16-9: 字段操作码操作数地址长度 0x6 BLANK_CHECK 格式 说明 不使用空白检查的起始地址要检查的程序存储单元数 ( 以字节为单位 ) 最后一个命令 版本号 预期的响应 ( 空白器件为 1 字 ): 图 16-15: BLANK_CHECK 响应 最后一个命令 响应码 DS D_CN 第 36 页

37 GET_CRC 命令 GET_CRC 使用查表方法计算从指定地址开始指定长度的缓冲区的 CRC CRC 详细信息如下 : CRC-CCITT, 16 位 多项式 :X^16+X^12+X^5+1, Hex 0x 种子 :0xFFFF 高字节 (Most Significant Byte, MSB) 首先移入 注 : 在响应中, 只有 CRC 的最低 16 位是有效的 图 16-18: GET_CRC 命令 预期的响应 (2 字 ): 操作码 操作数 Addr_High Addr_Low Length_High 表 16-11: 字段 操作码 操作数地址长度 0x8 Length_Low GET_CRC 格式 说明 不使用计算 CRC 的起始地址进行 CRC 计算的缓冲区的长度 ( 以字节数为单位 ) 图 16-19: GET_CRC 响应 最后一个命令 响应码 CRC_High CRC_Low PROGRAM_CLUSTER 命令 PROGRAM_CLUSTER 将指定的字节数编程到指定地址 该地址必须按 64 位对齐, 且字节数必须是 64 位字的倍数 图 16-20: PROGRAM_CLUSTER 命令 操作码 操作数 Addr_High Addr_Low Length_High Length_Low 表 16-12: 字段操作码操作数地址长度 注 : 预期的响应 (1 字 ): PROGRAM_CLUSTER 格式 说明 0x9 不使用编程的起始地址要编程的存储区长度 ( 以字节数为单位 ) 如果 PROGRAM_CLUSTER 命令失败, 则编程器应使用 READ 命令从闪存中读取失败的行 然后, 编程器应将从闪存接收的行与其本地副本逐字比较, 以确定闪存编程失败的地址 图 16-21: PROGRAM_CLUSTER 响应 最后一个命令 响应码 DS D_CN 第 37 页

38 GET_DEVICEID 命令 GET_DEVICEID 命令返回器件的硬件 ID 图 16-22: GET_DEVICEID 命令 操作码 操作数 表 16-13: GET_DEVICEID 格式 字段 说明 操作码 0xA 操作数 不使用 预期的响应 (1 字 ): 图 16-23: GET_DEVICEID 响应 最后一个命令 器件 ID GET_CHECKSUM 命令 GET_CHECKSUM 返回所有字节的总和, 从地址参数开始一直到长度参数 结果为一个 32 位字 图 16-24: GET_CHECKSUM 命令 操作码 操作数 Addr_High Addr_Low Length_High 表 16-14: Length_Low GET_CHECKSUM 格式 字段 说明 操作码 0x0C 操作数 不使用 Addr_High 用于计算校验和的数据的 32 位起始地 址的高 16 位 Addr_Low 用于计算校验和的数据的 32 位起始地 址的低 16 位 Length_High 用于计算校验和的数据的 32 位长度的 高 16 位 ( 以字节为单位 ) Length_Low 用于计算校验和的数据的 32 位长度的 低 16 位 ( 以字节为单位 ) 预期的响应 (1 字 ): 图 16-25: GET_CHECKSUM 响应 最后一个命令 响应码 Checksum_High Checksum_Low DS D_CN 第 38 页

39 DOUBLE_WORD_PROGRAM 命令 DOUBLE_WORD_PROGRAM 指示 PE 对指定地址处的两个 32 位字进行编程 该地址必须是一个对齐的两字边界 (bit 0 必须为 0) 如果不是, 该命令将返回 FAIL 响应值, 且不对任何数据进行编程 图 16-26: DOUBLE_WORD_PROGRAM 命令 操作码 操作数 Addr_High Addr_Low Data0_High Data0_Low Data1_High Data1_Low 表 16-15: 字段 操作码 操作数 Addr_High Addr_Low Data0_High Data0_Low Data1_High Data1_Low 0x0E 预期的响应 (1 字 ): 图 16-27: DOUBLE_WORD_PROGRAM 响应 16.3 JTAGEN 配置位编程 DOUBLE_WORD_PROGRAM 格式 说明 不使用 32 位起始地址的高 16 位 32 位起始地址的低 16 位数据字 0 的高 16 位数据字 0 的低 16 位数据字 1 的高 16 位数据字 1 的低 16 位 最后一个命令 响应码 对于 PIC32MM00XXGPL0XX 系列器件, 如果 FICD 或 AFICD 配置字中的 JTAGEN 配置位已编程, 则必须紧接着任何 PROGRAM 命令 ( 如 DOUBLE_WORD_PROGRAM 或 ROW_PROGRAM) 选择 MCHP TAP 控制器 这可以通过 SendCommand(MTAP_SW_MTAP) 伪操作完成 在 400 µs 后, 可以通过调用 SendCommand(MTAP_SW_ETAP) 伪操作再次选择 EJTAG TAP 控制器 DS D_CN 第 39 页

40 17.0 校验和 17.1 原理 校验和的计算方式为 : 对程序闪存 引导闪存 ( 除器件配置字外 ) 带适用掩码的器件 ID 寄存器和带适用掩码的器件配置字中的所有字节 (8 位数量 ) 进行 32 位求和 然后, 将计算该和的二进制补码 这个最终的 32 位数就是校验和 17.2 掩码值 器件配置的掩码值是通过将所有未实现位设置为 0, 并将所有已实现位设置为 1 计算得出 例如, 寄存器 17-1 显示了 PIC32MM0064GPL036 器件的 FICD 寄存器 此寄存器的掩码值为 : mask_value_fcid = 0xFFFFFFF4 寄存器 17-1: PIC32MM0064GPL036 的 FICD 寄存器 位范围 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 31:24 23:16 15:8 7:0 r-0 r-1 r-1 r-1 r-1 r-1 r-1 R/P-1 BWP r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 r-1 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 ICESEL<1:0> FJTAGEN DEBUG<1:0> 图注 : P = 可编程位 r = 保留位 R = 可读位 W = 可写位 U = 未实现位, 读为 0 -n = POR 时的值 1 = 置 1 0 = 清零 x = 未知 表 17-1 列出了要在 PIC32MM 器件校验和计算中使用的器件配置寄存器和器件 ID 寄存器的掩码值 表 17-1: PIC32MM 器件的器件配置寄存器掩码值 配置字 FDEVOPT FICD FPOR FWDT FOSCEL FSEC DEVID 寄存器掩码 0xFFFFFFFF 0xFFFFFFFC 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0x3FFFFFFF 0x0FFFF000 DS D_CN 第 40 页

41 17.3 算法 图 17-1 给出了计算 PIC32MM 器件校验和的高级算法的示例, 该示例说明了得出校验和的方法 这仅仅是一个说明如何实现实际计算的示例 最终使用的方法由软件开发人员自行决定 如前所述, PIC32MM 校验和的计算方式为 : 对程序闪存 引导闪存 ( 除器件配置字外 ) 带适用掩码的器件 ID 寄存器和带适用掩码的器件配置字中的所有字节 (8 位量 ) 进行 32 位求和 然后, 将计算该和的二进制补码 这个最终的 32 位数就是校验和 器件配置和器件 ID 寄存器的掩码值的计算方法如前面的第 17.2 节 掩码值 中所述 在将器件配置寄存器值的字节加到校验和之前, 需要使用适当掩码值来执行这些寄存器值的算术与运算 同样, 在将器件 ID 寄存器的字节加到校验和之前, 需要使用适当掩码值来执行该寄存器的算术与运算 ( 更多信息, 请参见第 18.0 节 配置存储区器件 ID 和唯一器件标识符 ) 图 17-1: 校验和计算的高级算法 PIC32MM_CHECKSUM 读取 tmpbuffer 中的程序闪存 引导闪存 ( 包括 DEVCFG 寄存器 ) 和 DEVID 寄存器 将 DEVCFG 和 DEVID 掩码应用到 tmpbuffer 中的对应存储单元 tmpchecksum(32 位量 )= 0 完成 tmpbuffer 中所有字节 (8 位量 ) 的处理? 否 tmpchecksum = tmpchecksum + tmpbuffer 中的当前字节值 (8 位量 ) 是 校验和 (32 位量 )= tmpchecksum 的二进制补码 完成 DS D_CN 第 41 页

42 用于计算 PIC32MM 器件校验和的公式如公式 17-1 中所示 公式 17-1: 校验和公式 校验和 = 二进制补码 (PF + BF + DCR + DIR) 其中 : PF = 程序闪存中所有字节的 32 位求和 BF = 引导闪存 ( 器件配置寄存器除外 ) 中所有字节的 32 位求和 DCR = 各字节的 32 位求和 (FDEVOPT + FICD + FPOR + FWDT + FOSCSEL + FSEC) DIR = 字节的 32 位求和 MASKID = 来自表 17-1 的掩码值 17.4 校验和计算的示例 以下五节说明了如何使用公式 17-1 计算 PIC32MM0064GPL036 器件的校验和 对此校验和计算示例进行了以下假定 : 程序闪存和引导闪存处于已擦除状态 ( 所有字节为 0xFF) 器件配置处于器件的默认状态 ( 未进行任何配置更改 ) 公式右侧的每一项 (PF BF DCR 和 DIR) 都需要单独计算 得出值后, 就可以计算校验和的最终值 计算校验和公式中的 PF 程序闪存的大小为 64 KB, 相当于 字节 由于假定程序闪存处于已擦除状态, 因此 PF 的值可通过以下计算求得 : PF = 0xFF + 0xFF 次 PF = 0x00FF0000 (32 位数 ) 计算校验和公式中的 BF 引导闪存的大小为 6 KB, 相当于 6144 字节 但是, 最后 256 字节是器件配置寄存器和保留的存储单元, 需单独处理 因此, 我们在此步骤中考虑的引导闪存中的字节数为 5888 由于假定引导闪存处于已擦除状态, 因此 BF 的值可通过以下计算求得 : BF = 0xFF + 0xFF 次 BF = 0x0016E900 (32 位数 ) 计算校验和公式中的 DCR 由于器件配置寄存器处于其默认状态, 因此通过相应配置寄存器的值 ( 如 PIC32MM 内核所读取 ) 其各自的掩码值 应用掩码得出的值和字节的 32 位求和 ( 全部如表 17-2 中所示 ) 可以得到字节的 32 位求和的总和 根据表 17-2, DCR 的值为 : DCR = 0x000003D6 (32 位数 ) 表 17-2: DCR 计算示例 寄存器 POR 默认值 掩码 POR 默认值和掩码 字节的 32 位求和 FDEVOPT FFFFFFFF FFFFFFFF FFFFFFFF 0x000003FC FICD FFFFFFFF FFFFFFFC FFFFFFFC 0x000003F9 FPOR FFFFFFFF FFFFFFFF FFFFFFFF 0x000003FC FWDT FFFFFFFF FFFFFFFF FFFFFFFF 0x000003FC FOSCEL FFFFFFFF FFFFFFFF FFFFFFFF 0x000003FC FSEC FFFFFFFF 3FFFFFFF 3FFFFFFF 0x C 字节的 32 位求和的总和 = 0x DS D_CN 第 42 页

43 计算校验和公式中的 DIR 器件 ID 寄存器的值 其掩码值 应用掩码得出的值和字节的 32 位求和如表 17-3 中所示 根据表 17-3, DIR 的值为 : DIR = 0x (32 位数 ) 表 17-3: DIR 计算示例 寄存器 POR 默认值 掩码 POR 默认值和掩码 字节的 32 位求和 DEVID 0x x0FFFF000 0x x000000F 完成校验和计算 在前面几节中得出的值 (PF BF DCR 和 DIR) 用于计算校验和值 执行前面几节中得出的 PF BF DCR 和 DIR 的 32 位求和, 然后将其存储在一个称为 temp 的变量中, 如例 17-1 中所示 器件处于代码保护状态时的校验和值 由于器件配置字在 PIC32MM 器件处于代码保护状态时不可读取, 因此对于所有器件而言校验和值均为零 例 17-1: 校验和计算过程 1. 首先, temp = PF + BF + DCR + DIR, 即 : temp = 0x00FF x0016E x x000000F7 2. 将全部四个值相加可得到 temp 等于 0x C 3. 然后, 计算 temp 的二进制反码, 称为 temp1: temp1 = 二进制补码 (temp), 现在等于 0xFEE9FEE3 校验和 = 二进制补码 (temp), 即校验和 = temp1 + 1, 得到 0xFEE9FEE4 DS D_CN 第 43 页

44 18.0 配置存储区器件 ID 和唯一器件标识符 PIC32MM 器件具有多个功能, 旨在最大程度提高应用灵活性和可靠性, 并通过消除外部元件最大限度降低成本 这些功能可通过每个器件的特定配置位进行配置 有关可用功能 配置位和器件 ID 寄存器的完整列表, 请参见特定器件数据手册中的 特殊功能 章节 有关特定器件的当前硅片版本和版本 ID, 请参见相关系列硅片勘误表和数据手册澄清 这些文档可通过访问 Microchip 网站 并导航到以下位置获取 : 文档 > 勘误表 18.1 器件 ID 器件 ID 存储区可用于确定芯片的型号和生产信息 该存储区只读, 并且能在使能代码保护时读取 DEVID 寄存器可识别器件的具体部件编号 器件芯片版本和制造 ID 表 18-1 列出了每个器件的标识信息 表 18-2 给出了器件 ID 寄存器, 表 18-3 介绍了每个寄存器的位域 表 18-1: 器件 ID 器件 PIC32MM0016GPL020 PIC32MM0032GPL020 PIC32MM0064GPL020 PIC32MM0016GPL028 PIC32MM0032GPL028 PIC32MM0064GPL028 PIC32MM0016GPL036 PIC32MM0032GPL036 PIC32MM0064GPL036 PIC32MM0064GPM028 PIC32MM0128GPM028 PIC32MM0256GPM028 PIC32MM0064GPM036 PIC32MM0128GPM036 PIC32MM0256GPM036 PIC32MM0064GPM048 PIC32MM0128GPM048 PIC32MM0256GPM048 PIC32MM0064GPM064 PIC32MM0128GPM064 PIC32MM0256GPM064 DEVID 0x6B04 0x6B0C 0x6B14 0x6B02 0x6B0A 0x6B12 0x6B06 0x6B0B 0x6B16 0x7708 0x7710 0x7718 0x770A 0x7712 0x771A 0x772C 0x7734 0x773C 0x770E 0x7716 0x771E 表 18-2: PIC32MM 器件 ID 寄存器 地址 名称 Bit 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 0xBF803B20 ID VER<3:0> DEVID<15:4> DEVID<3:0> 制造 ID<11:0> 表 18-3: 器件 ID 位域说明 位域 VER<3:0> DEVID<15:0> 制造 ID<11:0> 器件硅片版本对每个器件 ID 进行编码 0x053 说明 DS D_CN 第 44 页

45 18.2 器件唯一标识符 (UDID) 在最终制造过程中, 会为所有 PIC32MM 器件单独编码器件唯一标识符 (Unique Device Identifier, UDID) 整片擦除命令或其他任何用户可使用的方法都无法擦除 UDID 在需要对 Microchip 器件进行制造追踪的应用中, 可以利用该功能来实现该目的 应用制造商也可以将它用于可能需要唯一标识的任意应用场合, 例如 : 追踪器件 唯一序列号 唯一安全密钥 UDID 包含 5 个连续的 32 位只读存储单元, 它们位于器件配置空间的地址 0x1FC41840 至 0x1FC41850 这些数据组合在一起, 构成一个 160 位标识符 表 18-4 列出了标识符字的地址 表 18-4: UDID 地址 UDID 地址 说明 注 : 在对配置字进行编程后, 器件复位将导致向配置寄存器中装载新值 因此, 编程器应在器件校验之前对配置字进行编程 最后一个步骤是对代码保护配置字进行编程 这些配置字可确定振荡器源 如果使用 2 线增强型 ICSP 模式, 将忽略配置字, 且器件将总是使用 FRC ; 但是, 在 4 线模式中, 情况并非如此 如果在复位后器件中并不存在的配置字选择了振荡器源, 则编程器将无法在器件复位后对器件执行闪存操作 有关使用配置字选择振荡器的详细信息, 请参见特定器件数据手册中的 特殊功能 章节 表 18-5: 在不进行擦除的情况下多次写入闪存单元将违反闪存规范, 并且可能缩短闪存分区的使用寿命 由于 ECC 实现, 用不同的数据重写闪存单元将导致在读取该存储单元时发生 ECC 错误 主要配置字 UDID1 0x1FC41840 UDID 字 1 配置字 物理地址 UDID2 0x1FC41844 UDID 字 2 UDID3 0x1FC41848 UDID 字 3 UDID4 0x1FC4184C UDID 字 4 UDID5 0x1FC41850 UDID 字 5 注 : 给定部件的 UDID 值仅在其器件系列中保持唯一 有关系列中的器件列表, 请参见器件数据手册中的系列器件表 ( 表 1) 18.3 器件配置 在 PIC32MM 器件中, 配置字可在执行任何代码之前选择在器件复位时设置的各种器件配置 这些值位于引导闪存 (BFM) 的高地址存储单元, 且由于它们是程序存储器的一部分, 因此将与可执行代码和程序常量一起包含在编程文件中 表 18-1 至表 18-5 中列出了这些配置字的名称和存储单元 表 18-5 列出了 器件的配置字存储单元 发生上电复位 (Power-on Reset, POR) 或任何复位时, 会将配置字从引导闪存复制到其对应的配置寄存器 配置位只能编程为 0 ( 未编程状态 = 1) (1) 0x1FC017C0 BCFG4 (2) FDEVOPT 0x1FC017C4 FICD 0x1FC017C8 BCFG3 (2) FPOR 0x1FC017CC FWDT 0x1FC017D0 BCFG2 (2) FOSCEL 0x1FC017D4 FSEC 0x1FC017D8 BCFG1 (2) (1) 0x1FC017DC FSIGN 0x1FC017E0 BCFG0 (2) (1) 0x1FC017E4 注 1: 这些存储单元不包含器件配置信息, 但必须进行编程, 因为它们是通过配置信息共享的双字的一部分 建议使用值 0xFFFFFFFF 对它们进行编程 2: 每个 BCFGx 包含组成一个双字的 2 个闪存单元 双字中的两个存储单元都必须通过一个双字或一个行编程操作一起进行编程 DS D_CN 第 45 页

46 表 18-6: 配置字 备用配置字 物理地址 (1) 0x1FC01740 ABCFG4 (2) AFDEVOPT 0x1FC01744 AFICD 0x1FC01748 ABCFG3 (2) AFPOR 0x1FC0174C AFWDT 0x1FC01750 ABCFG2 (2) AFOSCEL 0x1FC01754 AFSEC 0x1FC01758 ABCFG1 (2) (1) 0x1FC0175C AFSIGN 0x1FC01760 ABCFG0 (2) (1) 0x1FC01764 注 1: 这些存储单元不包含器件配置信息, 但必须进行编程, 因为它们是通过配置信息共享的双字的一部分 建议使用值 0xFFFFFFFF 对它们进行编程 2: 每个 BCFGx 包含组成一个双字的 2 个闪存单元 双字中的两个存储单元都必须通过一个双字或一个行编程操作一起进行编程 18.4 器件代码保护位 (CP) 器件具有代码保护功能, 可防止外部编程器件读取闪存 使能代码保护之后, 只能使用整片擦除命令 (MCHP_ERASE) 擦除器件来禁止此功能 对选择使用代码保护的器件进行编程时, 必须在使能代码保护之前对编程器件执行校验 使能代码保护应该是编程过程的最后一步 代码保护使能位的位置因器件而异 有关详细信息, 请参见特定器件数据手册中的 特殊功能 章节 注 : 使能代码保护之后, 无法再读取闪存, 而只能使用整片擦除命令 (MCHP_ERASE) 通过外部编程器禁止闪存 18.5 程序写保护位 (PWP) 器件具有写保护功能, 可防止在程序执行期间擦除或写入指定的引导和程序闪存 写保护通过闪存控制器中的 SFR 实现 外部编程器对器件进行初始化期间需要执行某些步骤, 然后才能对闪存进行编程 有关详细信息, 请参见特定器件数据手册中的 闪存程序存储器 章节 配置寄存器编程 配置寄存器必须先擦除才能重新写入 未执行擦除操作就重新编程将违反闪存规范, 损害闪存耐用性, 并产生 ECC 错误 备用配置字 PIC32MM 器件包含两组配置字 : 主配置字和备用配置字 主配置字在器件复位后从闪存读取 如果在读取过程中发生不可纠正的 ECC 错误, 将读取备用配置字 在典型的应用中, 主和备用配置字应编程为相同的值 为了计算校验和, 将仅使用主配置字 DS D_CN 第 46 页

47 19.0 TAP 控制器 表 19-1: MCHP TAP 指令 命令值说明 MTAP_COMMAND 5 h0x07 TDI 和 TDO 连接到 MCHP 命令移位寄存器 ( 见表 19-2) MTAP_SW_MTAP MTAP_SW_ETAP 5 h0x04 将 TAP 控制器切换为 Microchip TAP 控制器 5 h0x05 将 TAP 控制器切换为 EJTAG TAP 控制器 MTAP_IDCODE 5 h0x01 选择芯片标识数据寄存器 19.1 Microchip TAP 控制器 (MTAP) MTAP_COMMAND 指令 MTAP_COMMAND 选择 MCHP 命令移位寄存器 有关可用命令, 请参见表 MCHP_STATUS 指令 MCHP_STATUS 返回 Microchip TAP 控制器的 8 位状态值 表 19-3 提供返回的状态值的格式 MCHP_ASSERT_RST 指令 MCHP_ASSERT_RST 执行持久性器件复位 它类似于将 MCLR 置为有效并保持有效 其关联的状态位为 DEVRST MCHP_DE_ASSERT_RST 指令 MCHP_DE_ASSERT_RST 取消持久性器件复位 它类似于将 MCLR 置为无效 其关联的状态位为 DEVRST MCHP_ERASE 指令 MCHP_ERASE 执行整片擦除 CHIP_ERASE 命令将一个请求闪存控制器执行擦除的内部位置 1 一旦控制器变为繁忙状态 ( 通过 FCBUSY ( 状态位 ) 指示 ), 内部位将清零 MTAP_SW_MTAP 指令 MTAP_SW_MTAP 将 TAP 指令集切换为 MCHP TAP 指令集 MTAP_SW_ETAP 指令 MTAP_SW_ETAP 将 TAP 指令集有效切换为 EJTAG TAP 指令集 为此, 它会将 EJTAG TAP 控制器保持在运行测试 / 空闲状态, 直到 MCHP TAP 控制器对 MTAP_SW_ETAP 指令进行解码 MTAP_IDCODE 指令 MTAP_IDCODE 返回存储在 DEVID 寄存器中的值 DS D_CN 第 47 页

48 表 19-2: MTAP_COMMAND DR 命令 命令值说明 MCHP_STATUS 8 h0x00 NOP 和返回状态 MCHP_ASSERT_RST 8 h0xd1 请求复位控制器将器件复位置为有效 MCHP_DE_ASSERT_RST 8 h0xd0 取消器件复位请求, 如果没有其他请求复位的源 ( 如 MCLR), 这会使 复位控制器将器件复位置为无效 MCHP_ERASE 8 h0xfc 使闪存控制器执行整片擦除 表 19-3: MCHP 状态值 位范围 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 7:0 CPS 0 NVMERR 0 CFGRDY FCBUSY 0 DEVRST bit 7 CPS: 代码保护状态位 1 = 器件未被代码保护 0 = 器件被代码保护 bit 6 未实现 : 读为 0 bit 5 NVMERR:NVMCON 状态位 1 = 在 NVM 操作期间发生错误 0 = 在 NVM 操作期间未发生错误 bit 4 未实现 : 读为 0 bit 3 bit 2 CFGRDY: 代码保护状态位 1 = 配置已读取且 CP 为有效 0 = 配置未读取 FCBUSY: 闪存控制器忙状态位 1 = 闪存控制器正忙 ( 正在擦除 ) 0 = 闪存控制器不忙 ( 擦除未开始或已完成 ) bit 1 未实现 : 读为 0 bit 0 DEVRST: 器件复位状态位 1 = 器件复位有效 0 = 器件复位无效 表 19-4: EJTAG TAP 指令 命令 值 说明 ETAP_ADDRESS 5 h0x08 选择地址寄存器 ETAP_DATA 5 h0x09 选择数据寄存器 ETAP_CONTROL 5 h0x0a 选择 EJTAG 控制寄存器 ETAP_EJTAGBOOT 5 h0x0c 将 EjtagBrk ProbEn 和 ProbTrap 设置为 1, 作为复位值 ETAP_FASTDATA 5 h0x0e 选择数据寄存器和 Fastdata 寄存器 DS D_CN 第 48 页

49 19.2 EJTAG TAP 控制器 ETAP_ADDRESS 命令 ETAP_ADDRESS 可选择地址寄存器 只读地址寄存器提供处理器访问的地址 如果处理器访问处于待处理状态, 则在该寄存器中读取的值为有效, 否则该值处于未定义状态 该寄存器的两个或三个最低有效字节 (Least Significant Byte, LSB) 与 EJTAG 控制寄存器的 Psz<1:0> 位域一起用于指示待处理的处理器访问传输的大小和数据位置 这些位并非直接取自装载 / 存储所引用的地址 ETAP_DATA 命令 ETAP_DATA 选择数据寄存器 读 / 写数据寄存器用于处理器访问期间的操作码和数据传输 只有当处理器写访问处于待处理状态, 在该寄存器中读取的值才为有效, 在这种情况下, 数据寄存器将保留存储的值 只有处理器将在之后完成待处理读访问时, 才会使用写入到数据寄存器中的值, 在这种情况下, 写入的数据值为取出或装载的值 此行为暗示数据寄存器并非之前写入的值可以在之后读取的存储单元 ETAP_CONTROL 命令 ETAP_CONTROL 选择 EJTAG 控制寄存器 EJTAG 控制寄存器 (EJTAG Control Register, ECR) 处理以下各项操作 : 处理器复位 软复位指示 调试模式指示 访问开始 完成和大小以及读 / 写指示 ECR 还提供以下功能 : 控制调试向量地址和处理的处理器器访问的指示 可发出调试中断请求 指示处理器的低功耗模式 支持依赖于实现的处理器和外设复位 EJTAG 控制寄存器 (ECR) 除非发生了复位, 否则将不会在 更新 -DR 状态中更新 / 写入 EJTAG 控制寄存器 ( 见寄存器 19-1), 也就是说,Rocc(bit 31) 已经为 0, 或将被同时写入为 0 此条件可确保在复位后正确处理处理器访问 在处理器被从处理器时钟域中移除若干个 TCK 周期后, 处理器的复位可通过 TCK 域中的 Rocc 位进行指示, 以便能够在两个时钟域之间实现正确同步 除非定义了其他行为, 否则在寄存器中可读 / 写 (Read/ Write, R/W) 的位将在后续读取时返回其写入的值 内部同步可确保写入的值为紧接之后的读取进行更新, 即使 TAP 控制器采取从 更新 -DR 到 捕捉 -DR 状态的最短路径时也是如此 DS D_CN 第 49 页

50 寄存器 19-1: ECR:EJTAG 控制寄存器 位范围 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 31:24 23:16 15:8 7:0 R/W-0 R-0 R-0 U-0 U-0 U-0 U-0 U-0 Rocc Psz<1:0> R-0 R-0 R-0 R/W-0 R-0 R/W-0 U-0 R/W-0 VPED Doze Halt PerRst PrnW PrACC PrRst R/W-0 R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 ProbEn ProbTrap EjtagBrk U-0 U-0 U-0 U-0 R-0 U-0 U-0 U-0 DM 图注 : R = 可读位 W = 可写位 U = 未实现位, 读为 0 -n = POR 时的值 1 = 置 1 0 = 清零 x = 未知 bit 请参见注 1 bit 未实现 : 读为 0 bit 请参见注 1 bit 18 PrACC: 待处理的处理器访问和控制位此位指示待处理的处理器访问, 并控制待处理的处理器访问的完成 写入 0 可完成待处理的处理器访问 写入 1 则将忽略 成功的 Fastdata 访问会将此位清零 1 = 待处理的处理器访问 0 = 无待处理的预处理器访问 bit 17 未实现 : 读为 0 bit 16 请参见注 1 bit 15 bit 14 ProbEn: 处理器访问处理控制位此位控制探针通过处理处理器访问而处理 DMSEG 段访问的位置 1 = 探针处理处理器访问 0 = 探针不处理处理器访问 ProbTrap: 调试异常向量地址控制位此位控制调试异常向量的地址 1 = 0xFF = 0xBFC00480 bit 13 未实现 : 读为 0 bit 12 EjtagBrk: 调试中断异常请求位 此位可在写为 1 时向处理器请求调试中断异常 写入 0 则将忽略 1 = 调试中断异常请求处于待处理状态 0 = 调试中断异常请求未处于待处理状态 bit 11-4 未实现 : 读为 0 bit 3 请参见注 1 bit 2-0 未实现 : 读为 0 注 1: 有关这些位的说明, 请参见 Imagination Technologies Limited 网站 ( DS D_CN 第 50 页

51 ETAP_EJTAGBOOT 命令 ETAP_EJTAGBOOT 命令使处理器在复位后从调试异常向量取代码 这使编程器可以将指令发送到处理器执行, 而不是使处理器从正常的复位向量取指令 在设置内部 EJTAGBOOT 指示之后是 EjtagBrk ProbTrap 和 ProbEn 的复位值 如果 EJTAGBOOT 指令已给出, 且内部 EJTAGBOOT 指示处于有效状态, 则这三个位的复位值将被置 1(1); 否则复位值将被清零 (0) 这些位置 1 的结果为 : 如将 EjtagBrk 置 1, 则将在紧接处理器从 EJTAGBOOT 指令复位后请求调试中断异常 将从 EJTAG 存储区执行调试处理程序, 因为 ProbTrap 被置 1, 指示 EJTAG 存储区中的调试向量位于 0xFF ProbEn 被置 1 将指示处理器访问的处理完成此配置后, 将发生中断异常, 且处理器将在 0xFF 从 DMSEG 取处理程序 在 ProbEn 置 1 后, 处理器将等待探针探针提供指令 ETAP_FASTDATA 命令 ETAP_FASTDATA 命令提供了在处理器和探针之间快速传输数据的机制 Fastdata 寄存器的宽度为一位 在快速数据访问期间, 将写入和读取 Fastdata 寄存器 ( 即移入一位, 并移出一位 ) 在快速数据访问期间, 移入的 Fastdata 寄存器值可指定是否应完成快速数据访问 移出的值是一个标志, 用于指示快速数据访问是否成功 ( 如果请求完成 ) 快速数据访问用于 DMSEG 段 ( 探针上 ) 和目标存储器 ( 处理器上 ) 之间的高效块传输 上传 定义为一个处理器从目标存储器装载并存储到 DMSEG 段的序列 下载 是指一个处理器从 DMSEG 段装载并存储到目标存储器的序列 快速数据区 指定可用于上传和下载的 DMSEG 段地址的合法范围 (0xFF 到 0xFF20000F) 数据和 Fastdata 寄存器 ( 使用 FASTDATA 指令选择 ) 可高效地完成待处理快速数据区的访问 在快速数据上传和下载期间, 处理器将在访问快速数据区时暂停 PrACC ( 处理器访问待处理 ) 位将变为 1, 这表示需要使用探针才能完成访问 上传和下载访问的尝试方式都是, 移入一个零 SPrAcc 值 ( 以请求完成访问 ) 并移出 SPrAcc, 以查看尝试是否成功 ( 即存在一个待处理访问并且使用了合法的快速数据区地址 ) 下载也将移入用于满足从 DMSEG 段快速数据区的装载的数据, 同时上传将移出存储到 DMSEG 段快速数据区的数据 如上文所述, 以下两个条件必须为真, 快速数据访问才能成功 : PrACC 必须为 1 ( 即必须存在待处理的处理器访问 ) 快速数据操作必须使用 DMSEG 段中的有效快速数据区地址 (0xFF 到 0xFF20000F) DS D_CN 第 51 页

52 20.0 交流 / 直流特性和时序要求 表 20-1: 交流 / 直流特性和时序要求 标准工作条件工作温度 :0ºC 到 +70ºC 建议在 +25ºC 下编程 参数编号 符号特性最小值最大值单位条件 D111 VDD 编程时的电源电压 V 见注 1 D113 IDDP 编程时的电源电流 ma 见注 1 D114 IPEAK 启动期间的瞬时峰值电流 ma 见注 1 D031 VIL 输入低电压 V 见注 1 D041 VIH 输入高电压 V 见注 1 D080 VOL 输出低电压 V 见注 1 D090 VOH 输出高电压 V 见注 1 D012 CIO I/O 引脚 (PGEDx) 上的容性负载 pf 见注 1 D013 CF VCAP 上的滤波电容值 F 见注 1 P1 TPGC 串行时钟 (PGECx) 周期 100 ns P1A TPGCL 串行时钟 (PGECx) 的低电平时间 40 ns P1B TPGCH 串行时钟 (PGECx) 的高电平时间 40 ns P6 TSET2 VDD 到 MCLR 的建立时间 100 ns P7 THLD2 在 MCLR 后输入数据的保持时间 500 ns P9A TDLY4 PE 命令处理时间 40 s P9B TDLY5 PE 将 PGEDx 驱动为 到 PE 释放 PGEDx 之间的 延时 15 s P11 TDLY7 整片擦除时间 ms 见注 1 P12 TDLY8 页擦除时间 ms 见注 1 P13 TDLY9 行编程时间 ms 见注 1 P14 TR 进入 ICSP 模式的 MCLR 上升时间 1.0 s P15 TVALID PGECx 后的数据输出有效时间 10 ns P16 TDLY8 最后一个 PGECx 和 MCLR 之间的延时 0 s P17 THLD3 MCLR 到 VDD 的时间 100 ns P18 TKEY1 从第一个 MCLR 到向 PGEDx 输入密钥序列的第 40 ns 一个 PGECx 之间的延时 P19 TKEY2 从向 PGEDx 输入密钥序列的最后一个 PGECx 到 40 ns 第二个 MCLR 之间的延时 P20 TMCLRH MCLR 高电平时间 500 µs 注 1: 有关此参数的最小值和最大值, 请参见特定器件数据手册中的 电气特性 章节 DS D_CN 第 52 页

53 附录 A: 图 A-1: PFM PIC32MM 闪存映射 闪存映射 0x1D 程序闪存 附录 B: HEX 文件格式 闪存编程器可处理 Microchip 开发工具所使用的标准十六进制 (Hex) 文件 支持的格式为 Intel HEX32 格式 (INHX32) 有关 Hex 文件格式的更多信息, 请参见 MPASM 汇编器 MPLINK 目标链接器和 MPLIB 目标库管理器用户指南 (DS33014L_CN) 中的第 小节 Hex 文件格式 Hex 文件的基本格式为 : :BBAAAATTHHHH...HHHHCC 每条数据记录以 9 个字符的前缀开始, 并总是以 2 个字符的校验和结尾 不管什么格式, 所有记录均以 : 开始 各个元素如下所述 BB 是一个两位的十六进制字节计数, 表示出现在行中的数据字节数 将此数值除以二就可以得到每行的字数 AAAA 是一个四位的十六进制地址, 表示数据记录的开始地址 格式为高字节在前, 低字节在后 地址值翻倍, 因为此格式仅支持 8 位 将此值除以二就可以得到实际的器件地址 TT 是一个两位记录类型, 对于数据记录为 00, 对于文件结束 (End-of-File, EOF) 记录为 01, 对于延长的地址记录为 04 HHHH 是一个四位的十六进制数据字 格式为低字节在前, 高字节在后 在 TT 后将有 BB/2 个数据字 CC 是一个两位的十六进制校验和, 是行记录中所有之前字节的总和的二进制补码 0x1D007FFF BFM 引导页 1 引导页 2 引导页 3 器件配置 0x1FC x1FC007FF 0x1FC x1FC00FFF 0x1FC x1FC x1FC017FF 注 : 所示的存储器映射仅供参考 有关器件的存储器映射, 请参见特定器件数据手册中的 存储器构成 章节 DS D_CN 第 53 页

54 附录 C: 版本历史 版本 A (2015 年 9 月 ) 这是支持 PIC32MMXXXXGPLXXX 器件的文档的初始版本 版本 B (2015 年 10 月 ) 添加了 PIC32MMXXXXGPMXXX 器件 版本 C (2016 年 5 月 ) 添加第 16.3 节 JTAGEN 配置位编程 并更新了表 18.1 从文档中删除了 PIC32MM0XXXGPM0XX 器件 版本 D (2017 年 3 月 ) 在第 1.0 节 器件概述 列表中新增了器件 在表 18-1 中新增了器件 更新了第 5.3 节 2 线 ICSP 详细信息 删除了第 小节 2 相 ICSP 删除了图 5-5 和图 6-8 DS D_CN 第 54 页

55 请注意以下有关 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 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2009 认证 Microchip 的 PIC MCU 与 dspic DSC KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品严格遵守公司的质量体系流程 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS == 商标 Microchip 的名称和徽标组合 Microchip 徽标 AnyRate AVR AVR 徽标 AVR Freaks BeaconThings BitCloud CryptoMemory CryptoRF dspic FlashFlex flexpwr Heldo JukeBlox KEELOQ KEELOQ 徽标 Kleer LANCheck LINK MD maxstylus maxtouch MediaLB megaavr MOST MOST 徽标 MPLAB OptoLyzer PIC picopower PICSTART PIC32 徽标 Prochip Designer QTouch RightTouch SAM-BA SpyNIC SST SST 徽标 SuperFlash tinyavr UNI/O 及 XMEGA 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 ClockWorks The Embedded Control Solutions Company EtherSynch Hyper Speed Control HyperLight Load IntelliMOS mtouch Precision Edge 和 Quiet-Wire 均为 Microchip Technology Inc. 在美国的注册商标 Adjacent Key Suppression AKS Analog-for-the-Digital Age Any Capacitor AnyIn AnyOut BodyCom chipkit chipkit 徽标 CodeGuard CryptoAuthentication CryptoCompanion CryptoController dspicdem dspicdem.net Dynamic Average Matching DAM ECAN EtherGREEN In-Circuit Serial Programming ICSP Inter-Chip Connectivity JitterBlocker KleerNet KleerNet 徽标 Mindi MiWi motorbench MPASM MPF MPLAB Certified 徽标 MPLIB MPLINK MultiTRAK NetDetach Omniscient Code Generation PICDEM PICDEM.net PICkit PICtail PureSilicon QMatrix RightTouch 徽标 REAL ICE Ripple Blocker SAM-ICE Serial Quad I/O SMART-I.S. SQI SuperSwitcher SuperSwitcher II Total Endurance TSHARC USBCheck VariSense ViewSpan WiperLock Wireless DNA 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 为 Microchip Technology Inc. 在美国的服务标记 Silicon Storage Technology 为 Microchip Technology Inc. 在除美国外的国家或地区的注册商标 GestIC 为 Microchip Technology Inc. 的子公司 Microchip Technology Germany II GmbH & Co. & KG 在除美国外的国家或地区的注册商标 在此提及的所有其他商标均为各持有公司所有 2018, Microchip Technology Inc. 版权所有 ISBN: DS D_CN 第 55 页

PIC32MX Flash Programming Specification

PIC32MX Flash Programming Specification 闪存编程规范 1.0 器件概述 本文档定义了 系列 32 位单片机的编程规范 本编程规范旨在用于指导开发人员使用外部编程器工具 对于正在开发 器件应用程序的客户应使用已提供器件编程支持的开发工具 主要讨论的主题包括 : 图 2-1: 外部编程器 编程系统设置 目标 器件 CPU 第 1.0 节 器件概述 第 2.0 节 编程概述 第 3.0 节 编程步骤 第 4.0 节 连接至器件 第 5.0 节

More information

PIC32MX Flash Programming Specification

PIC32MX Flash Programming Specification 闪存编程规范 1.0 器件概述 本文档定义了 系列 32 位单片机的编程规范 本编程规范旨在用于指导开发人员使用外部编程器工具 对于正在开发 器件应用程序的客户应使用已提供器件编程支持的开发工具 主要讨论的主题包括 : 图 2-1: 外部编程器 编程系统设置 目标 器件 CPU 第 1.0 节 器件概述 第 2.0 节 编程概述 第 3.0 节 编程步骤 第 4.0 节 连接至器件 第 5.0 节

More information

untitled

untitled C 8051 MCU SPI EEPROM Alexandru Valeanu Microchip Technology Inc. Microchip Technology 25XXX EEPROM SPI 25XXX EEPROM SO 25XXX EEPROM 3MHz 20 MHz SPI HOLD 25XXX EEPROM EEPROM MCU HOLD 25XXX EEPROM SPI EEPROM

More information

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide 跟踪接口工具包规范 跟踪接口工具包 简介 MPLAB REAL ICE 在线仿真器跟踪接口工具包 (AC2446) 可与具有跟踪连接器的 PIC32 接插模块 (PIM)( 表 1-1) 配合使用 具有跟踪连接器的 PIC32 PIM 支持 PIC32 指令跟踪 请参见仿真器文档了解关于 PIC32 指令跟踪的更多信息 表 1-1: PIC32 PIM 列表 * PIM 编号 PIM 名称 跟踪连接器

More information

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系 什么是 ICM? 如何将 ICM 用于加密 简介 完整性检查监控器 (Integrity Check Monitor,ICM) 是一个 DMA 控制器, 可使用 Cortex M7 MCU 内存 (ICM 描述符区 ) 中的传输描述符在多个存储区上执行哈希计算 ICM 集成了用于哈希的安全哈希算法 (Secure Hash Algorithm,SHA) 引擎 基于 SHA 的哈希适合用于密码验证 质询哈希身份验证

More information

00872a.book

00872a.book 从 MCP2510 升 级 至 MCP2515 作 者 : 介 绍 Pat Richards Microchip Technology Inc. 开 发 MCP2510 独 立 CAN 控 制 器 的 初 衷 是 赋 予 CAN 系 统 和 模 块 设 计 人 员 更 多 的 灵 活 性, 允 许 他 们 为 自 己 的 应 用 选 择 最 好 的 处 理 器 使 用 MCP2510 不 会 使 设

More information

PIC24 MSSP FRM Rev A.book

PIC24 MSSP FRM Rev A.book 58 MSSP 58.1... 58-2 58.2... 58-2 58.3... 58-12 58.4 SPI... 58-13 58.5 I2C... 58-22 58.6 /... 58-58 58.7... 58-58 58.8... 58-59 58.9... 58-60 58.10... 58-61 58 MSSP 2012 Microchip Technology Inc. DS30627A_CN

More information

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP 在 v2013-06-15 MLA USB 设备和主机协议栈中更新 PIC32MX 支持 TB3109 简介 我们提供适合 PIC32MX MCU 的 Microchip 应用程序库 (Microchip Libraries for Applications,MLA), 但未计划向 MLA 添加新功能 v2013-06-15 MLA USB 协议栈本质上支持所有适用的 PIC32MX MCU 器件

More information

How To Configure the Memory Protection Unit

How To Configure the Memory Protection Unit 如何配置存储器保护单元 (MPU) 简介 存储器保护单元 (Memory Protection Unit,MPU) 是 Cortex -M7 内核提供的一个可选组件, 用于保护存储器 它根据权限和访问规则将存储器映射分为许多区域 本文档旨在让用户熟悉 MPU 存储区的配置, 此配置由 Microchip 基于 Cortex-M7 的 MCU 提供 MPU 的特性如下 : 防止不可信应用程序出于侵犯知识产权目的对受保护存储区进行访问

More information

什么是 SSC? 如何为音频应用配置 SSC TB3175 简介 同步串行控制器 (Synchronous Serial Controller,SSC) 是一种串行同步通信模块, 可用于 Microchip 32 位 ARM Cortex -M3 Cortex -M4 和 Cortex -M7 系列

什么是 SSC? 如何为音频应用配置 SSC TB3175 简介 同步串行控制器 (Synchronous Serial Controller,SSC) 是一种串行同步通信模块, 可用于 Microchip 32 位 ARM Cortex -M3 Cortex -M4 和 Cortex -M7 系列 什么是 SSC? 如何为音频应用配置 SSC 简介 同步串行控制器 (Synchronous Serial Controller,SSC) 是一种串行同步通信模块, 可用于 Microchip 32 位 ARM Cortex -M3 Cortex -M4 和 Cortex -M7 系列单片机 (MCU) SSC 支持音频和电信应用中常用的多个同步通信协议, 如 I 2 S(Inter-IC Sound,

More information

01262B.book

01262B.book 使用 C30 编译器实现单片机与片外串行 SRAM 的通信 作者 : 引言 Martin Bowman Microchip Technology Inc. 适用于 Microchip 的 dspic DSC 和 PIC24 系列单片机的 C30 编译器为寻址外部存储器提供了一个解决方案 该编译器支持这样的功能, 即允许用户按照访问 MCU 的片内存储器的方式来访问外部存储器 本应用笔记主要介绍如何使用

More information

ADC Gain and Offset Error Calibration on ARM® Cortex®-M0+ Based MCUs

ADC Gain and Offset Error Calibration on ARM® Cortex®-M0+ Based MCUs 基于 Arm Cortex -M0+ 的 MCU 上的 ADC 增益误差和失调误差校准 简介 本技术简介对 ADC 中的增益误差和失调误差进行了简要介绍 它还介绍了一种在带有 Arm Cortex - M0+ 内核的 SAM 系列单片机 (MCU) 中校准增益误差和失调误差的方法 在 SAM Cortex -M0 + MCU 中,ADC 增益和失调误差可通过硬件进行补偿, 从而降低了补偿这些 ADC

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

MCP47x6_DaughterBoard.book

MCP47x6_DaughterBoard.book MCP47X6 PICtail Plus 子 板 用 户 指 南 DS51932B_CN 请 注 意 以 下 有 关 Microchip 器 件 代 码 保 护 功 能 的 要 点 : Microchip 的 产 品 均 达 到 Microchip 数 据 手 册 中 所 述 的 技 术 指 标 Microchip 确 信 : 在 正 常 使 用 的 情 况 下, Microchip 系 列 产 品

More information

untitled

untitled PICkit MCP3422 DS51781A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology

More information

untitled

untitled MCP3421 SOT23-6 DS51793A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology

More information

TB3178

TB3178 如何利用 Cortex -M0+ 单片机实现更快的数学计算 简介 工业和家用电器市场中的各种应用要求使用数学运算来实现不同的算法和计算 基于 Cortex -M0+ 的单片机包含加法 减法和乘法指令 Cortex-M0+ 架构没有用于除法运算的汇编指令, 除法逻辑可以根据不同的编译器而变化 基于 Arm Cortex-M0+ 的单片机 (MCU) 具有一个可配置选项, 可通过该选项使用快速乘法器进行乘法运算

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

TB3172

TB3172 如何使用 Cortex -M7 单片机中的 XDMAC 功能在音频应用中实现 乒乓 缓冲法 简介 音频系统应用可能会产生与实时系统相关的典型生产者 - 消费者问题 时序约束包括延迟时间 采样率 采样周期和实时响应 为了解决音频时间难题, 应用通常使用 乒乓 (Ping-Pong) 数据缓冲法 乒乓 法使用两个缓冲区 : 一个缓冲区从源读取数据, 另一个缓冲区将数据提交到目标 提交到目标后, 两个缓冲区的角色互换

More information

What is TWI? How to Configure the TWI for I2C Communication

What is TWI? How to Configure the TWI for I2C Communication 什么是 TWI? 如何为 I2C 通信配置 TWI? 简介 双线接口 (Two-Wire Interface,TWI) 与 I2C 接口很类似, 只是略有不同 TWI 外设通过由一根时钟线和一根数据线构成的独特双线总线提供元件接口 TWI 可用于与 I²C 兼容的器件, 例如实时时钟 (RTC) 存储器和传感器 与 I2C 类似,TWI 也支持标准速度 ( 最高 100 khz) 和高速 ( 最高

More information

How to Achieve Deterministic Code Performance Using a Cortex™-M Cache Controller

How to Achieve Deterministic Code Performance Using a Cortex™-M Cache Controller 如何使用 Cortex -M 高速缓存控制器实现确定性代码性能 简介 在基于单片机的嵌入式应用中, 软件存储在非易失性存储器 ( 通常是闪存 ) 中并从中运行 闪存虽然为存储和执行代码提供了一种有效的介质, 但从闪存中执行时, 许多因素会限制确定性代码性能 影响确定性代码行为的一个重要因素是系统总线矩阵的复杂性 从 SRAM 中运行代码时, 由于与闪存相同的原因, 也会出现确定性代码性能问题 非确定性代码性能主要是由于代码从存储器传播到

More information

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8 Version History 日期 版本 2016/8/4 1.00 2016/9/2 1.01 2016/11/29 1.02 2017/2/16 1.03 2017/6/9 1.04 2018/6/27 1.05 2018/8/8 1.06 新增 MG196 PBGA256S 封装信息 ; 修改 SSPI 模式的配置功能 ; 增加 QN88 封装信息 2019/3/27 1.07 增加电源供电要求

More information

How to Customize ASFv3 SAM-BA Bootloader on Cortex-M0+ Microcontrollers

How to Customize ASFv3 SAM-BA Bootloader on Cortex-M0+ Microcontrollers 如何在 Cortex -M0+ 单片机中自定义 ASFv3 SAM-BA 自举程序 简介 SAM Boot Assistant(SAM-BA ) 允许通过 USB 或 UART 主机进行系统内编程 (In-System Programming,ISP), 无需任何外部编程接口 通常情况下, 在基于 ROM 的 SAM MCU 中, 内部 ROM 都包含 SAM-BA 监视器固件, 而所有基于 Cortex

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

应用笔记 使用非对称 PKI 的节点验证示例 ATECC508A 简介 node-auth-basic.atsln 项目是一个一体化示例, 它演示了使用 CryptoAuthentication 器件 ( 例如,ATECC508A) 的公钥 非对称技术的节点验证序列的各个阶段 将演示的各个节点验证阶

应用笔记 使用非对称 PKI 的节点验证示例 ATECC508A 简介 node-auth-basic.atsln 项目是一个一体化示例, 它演示了使用 CryptoAuthentication 器件 ( 例如,ATECC508A) 的公钥 非对称技术的节点验证序列的各个阶段 将演示的各个节点验证阶 应用笔记 使用非对称 PKI 的节点验证示例 ATECC508A 简介 node-auth-basic.atsln 项目是一个一体化示例, 它演示了使用 CryptoAuthentication 器件 ( 例如,ATECC508A) 的公钥 非对称技术的节点验证序列的各个阶段 将演示的各个节点验证阶段如下 : 使用设备和签署者证书及密钥配置 ATECC508A 通过存储在 ATECC508A 中的数据重建

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma = 25 = 3V) VDD

T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma = 25 = 3V) VDD 1/16 T stg -40 to 125 C V cc 3.8V V dc RH 0 to 100 %RH T a -40 to +125 C -0.3 to 3.6V V -0.3 to VDD+0.3 V -10 to +10 ma (@T = 25 C, @Vdd = 3V) VDD 1.8 3.0 3.6 V (1) 0.08 0.3 µa Idd 300 450 500 µa 0.25

More information

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit 采用 XLP 技术的全功能低引脚数单片机产品简介 说明 : 单片机具有模拟 内核独立外设以及通信外设特性, 并结合了超低功耗 (extreme Low Power,XLP) 技术, 适用于一系列广泛的通用和低功耗应用 外设引脚选择 (Peripheral Pin Select, PPS) 功能可以在使用数字外设 ( 和通信 ) 时进行引脚映射, 以增加应用设计的灵活性 内核特性 : 优化的 C 编译器

More information

33023A.book(31027A_cn.fm)

33023A.book(31027A_cn.fm) 第 27 章器件配置位 目录 本章包括以下一些主要内容 : 27.1 简介... 27-2 27.2 配置字位... 27-4 27.3 编程校验 / 代码保护... 27-8 27.4 识别码 ID 的位置... 27-9 27.5 设计技巧... 27-10 27.6 相关应用笔记... 27-11 27.7 版本历史... 27-12 27 器件配置位 2004 Microchip Technology

More information

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

MUGI Ver Copyright c 2001, 2002 Hitachi, Ltd. All rights reserved. 1

MUGI Ver Copyright c 2001, 2002 Hitachi, Ltd. All rights reserved. 1 MUGI Ver. 1.3 2002 5 8 1 1 3 2 3 2.1 Panama... 4 2.2... 5 3 5 3.1... 5 3.2... 5 3.3... 6 3.3.1... 6 3.3.2... 6 3.3.3... 7 3.3.4... 7 4 8 4.1... 8 4.2... 8 4.3... 9 4.3.1... 9 4.3.2... 9 4.4... 9 4.4.1

More information

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上 PIC 单片机的窗口看门狗定时器 TB3123 作者 : Ashutosh Tiwari Microchip Technology Inc. 简介 窗口看门狗定时器 (Windowed Watchdog Timer, WWDT) 是 PIC 单片机的增强型看门狗定时器 该定时器是 PIC 单片机现有看门狗定时器 (Watchdog Timer, WDT) 的扩展 Microchip 的 WDT 具有可配置的时间阈值上限和固定的时间阈值下限

More information

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到特定引脚 ( 例如 : 引脚 RC5 上的 PWM1 输出 ) PPS 允许开发人员从大量输出引脚中进行选择, 这提供了以下优势

More information

+00DE _01EN.book

+00DE _01EN.book TCS-NET MODBUS TCS-NET Modbus TCB-IFMB640TLE 1...... 2 2 RS 485... 3 3... 3 4... 4 5... 4 6... 5 7... 6 8... 16 TCS-NET Modbus 1 http://www.modbus-ida.org/ >=3.5 8 8 N*8 ( N = 252.) 16 >= 3.5 Modbus-Master

More information

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x 115 AVR W.V. Awdrey ATMEL AVR PIC AVR PIC AVR RISC AVR PIC AVR AVR AVR AVR AVR ATtiny15 AVR AVR AVR RAM ROM 121 116 122 ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r31 3 16 X Y Z 6-1 118 7 0

More information

SMSC LAN8700 Datasheet

SMSC LAN8700 Datasheet Microchip LAN9252 SDK 与 Beckhoff EtherCAT SSC 集成 AN1916 作者 : Kansal Mariam Banu Shaick Ibrahim Microchip Technology Inc. 简介 Microchip LAN9252 是一款集成双以太网 PHY 的 2/3 端口 EtherCAT 从控制器 (EtherCAT Slave Controller,ESC)

More information

untitled

untitled N1113 8051MU I 2 EEPROM lexandru Valeanu Microchip Technology Inc. Microchip Technology 24XXX EEPROM 2 SL 24XXX EEPROM 24XXX EEPROM I 2 100 khz 1MHz 24XXX EEPROM 2 I 2 EEPROM 128 512 b 100 khz 1MHz 1.7V

More information

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 60929 规范的一部分, 具体与数控可调光荧光镇流器有关 本文档结合 DALI 通信应用笔记 (AN1465A) (ww1.microchip.com/downloads/cn/appnotes/

More information

Section 5. Flash Programming

Section 5. Flash  Programming 第 5 章闪存编程 目录 本章包括下列主题 : 5.1 简介...5-2 5.2 表指令操作... 5-2 5.3 控制寄存器... 5-5 5.4 运行时自编程 (RTSP)... 5-8 5.5 寄存器映射... 5-16 5.6 相关应用笔记... 5-17 5.7 版本历史... 5-18 5 闪存编程 2011 Microchip Technology Inc. DS70609C_CN 第

More information

33023A.book(31001A_cn.fm)

33023A.book(31001A_cn.fm) 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 面 一 些 主 要 内 容 : 1.1 简 介...1-2 1.2 本 手 册 的 宗 旨... 1-3 1.3 器 件 结 构... 1-4 1.4 开 发 支 持... 1-6 1.5 器 件 种 类... 1-7 1.6 格 式 和 符 号 的 约 定... 1-12 1.7 相 关 文 档... 1-14 1.8 相 关 应 用 笔

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

Using the ATECC508A to Perform Asymmetric Authentication of a Remote Device

Using the ATECC508A to Perform Asymmetric Authentication of a Remote Device 采用 ATECC508A 执行远程设备的非对称身份验证 简介 本应用程序将演示如何通过主机 (Curiosity PIC32MZ EF 开发板和使用加密模块 ATECC508A 的 Secure click 板 ) 使用非对称身份验证方法对远程设备进行身份验证, 其中主机通过远程设备的公钥来验证远程设备的签名 本应用程序允许使用配置数据和密钥数据向配置添加信息并配置 Secure click 板 应用程序流程通过交互式用户界面上的串行终端程序

More information

目 录 简 介 3 培 训 对 象 5 培 训 费 用 5 报 名 方 法 6 付 款 优 惠 6 报 名 及 付 款 的 注 意 事 项 7 住 宿 及 用 餐 安 排 9 交 通 安 排 9 着 装 要 求 9 大 会 签 到 10 开 发 工 具 特 价 销 售 10 赞 助 伙 伴 展 览

目 录 简 介 3 培 训 对 象 5 培 训 费 用 5 报 名 方 法 6 付 款 优 惠 6 报 名 及 付 款 的 注 意 事 项 7 住 宿 及 用 餐 安 排 9 交 通 安 排 9 着 装 要 求 9 大 会 签 到 10 开 发 工 具 特 价 销 售 10 赞 助 伙 伴 展 览 Microchip 第 十 七 屇 Microchip 第 十 七 屇 嵌 入 式 控 制 工 程 师 的 盛 会 MASTERs Conference 网 上 在 线 报 名 会 议 指 南 Inspire. Inform. Innovate. http://www.microchip.com/cm 全 球 技 术 支 持 : http://support.microchip.com 国 内 技

More information

untitled

untitled EDM12864-GR 1 24 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3 4. -------------------------------------------------------6

More information

PIC24 intro.fm

PIC24 intro.fm 1 第 1 章简介 简介 目录 本章包括下列主题 : 1.1 简介... 1-2 1.2 手册目标... 1-2 1.3 器件结构... 1-2 1.4 开发支持... 1-4 1.5 样式和符号约定... 1-4 1.6 相关文档... 1-6 1.7 版本历史... 1-7 2008 Microchip Technology Inc. 超前信息 DS39718A_CN 第 1-1 页 PIC24F

More information

a.book

a.book 采用独立于内核的外设实现 控制的 /40/48/4 引脚单片机产品简介 说明 : 单片机提供超低功耗 (extreme Low-Power,XLP) 驱动能力, 外加独立于内核的外设和智能模拟功能 由于集成了电荷泵 控制背光的 I/O 驱动以及带备用电池的实时时钟 / 日历 (Real Time Clock/Calendar, ), 因此它们特别适合于电池供电的 应用 主动时钟微调的 HFINTOSC

More information

39697b.book

39697b.book 第 9 章看门狗定时器 (WDT) 目录 本章包括下列主题 : 9.1 简介...9-2 9.2 WDT 工作原理... 9-3 9.3 寄存器映射... 9-7 9.4 设计技巧... 9-8 9.5 相关应用笔记... 9-9 9.6 版本历史... 9-10 9 看门狗定时器 (WDT) 2010 Microchip Technology Inc. DS39697B_CN 第 9-1 页 PIC24F

More information

41632B.book

41632B.book 互 补 波 形 发 生 器 (CWG) 可 配 置 逻 辑 单 元 (CLC) 和 数 控 振 荡 器 (NCO) 外 设 技 巧 与 诀 窍 简 介 Microchip 致 力 于 不 断 向 客 户 提 供 体 积 更 小 速 度 更 快 使 用 更 简 便 与 运 行 更 可 靠 的 创 新 产 品 我 们 的 闪 存 PIC MCU 已 广 泛 应 用 于 日 常 生 活 中 从 烟 雾 探

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

61146A.book

61146A.book PIC32 2008 Microchip Technology Inc. DS61146A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip

More information

采用ATECC508A执行远程设备的对称身份验证

采用ATECC508A执行远程设备的对称身份验证 采用 ATECC508A 执行远程设备的对称身份验证 AN2617 简介 本应用程序演示了如何通过主机 ( 使用 ATECC508A 加密模块的 Curiosity PIC32MZ EF 开发板和 Secure click 板 ) 使用对称身份验证方法对远程设备进行身份验证, 其中主机和远程设备共享相同的密钥 本应用程序允许使用配置数据和密钥数据向配置添加信息并配置 Secure click 板 应用程序流程通过交互式用户界面控制台上的串行终端程序

More information

61115f_cn.book

61115f_cn.book 第 3 章存储器构成 目录 本章包括下列主题 : 3.1 简介... 3-2 3.2 控制寄存器... 3-2 3.3 存储器布局... 3-12 3.4 地址映射... 3-14 3.5 总线矩阵... 3-27 3.6 I/O 引脚控制... 3-31 3.7 节能和调试模式下的操作... 3-31 3.8 代码示例... 3-31 3.9 相关应用笔记... 3-32 3.10 版本历史...

More information

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO 使用 Microchip 的 dspic 数字信号控制器 (DSC) 和模拟器件实现脉冲血氧仪设计 作者 : Zhang Feng Microchip Technology Inc. 简介 脉冲血氧仪是一种用于监测患者血氧饱和度和心率的非侵入式医疗设备 本应用笔记演示了如何使用 Microchip 的 dspic 数字信号控制器 (Digital Signal Controller, DSC) 和模拟器件来实现高精度脉冲血氧仪

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

Microsoft Word - Delta Controller ASCII_RTU_SC

Microsoft Word - Delta Controller ASCII_RTU_SC Delta Controller ASCII/RTU ( 适用台达变频器 伺服驱动器 PLC 温度控制器 ) 人机默认值通讯速率 :9600, 7, None, 2 (ASCII); 9600, 8, None, 2 (RTU) 控制器站号 :1 控制区 / 状态区 :None/None 控制器接线的说明 Delta Servo a. RS-232(DOP-A/AE/AS, DOP-B 系列适用 )

More information

CTMU Temperature Measurement AN.book

CTMU Temperature Measurement AN.book 利用 PIC MCU 中的 CTMU 测量温度 TB3016 作者 : 最新一代 PIC24F 和 PIC18F 器件包含的充电时间测量单元 (Charge Time Measurement Unit,CTMU) 使用恒流源来计算电容值的变化以及事件的间隔时间 运用半导体物理学的基本原理, 同样的电流源也可用来测量温度 这允许使用普通而廉价的二极管来取代相对昂贵的热敏电阻和温度传感器 本技术简介描述了使用

More information

What Can the 8-bit AVR® Core Do for You?

What Can the 8-bit AVR® Core Do for You? 8 位 AVR 内核可以做什么? 简介 作者 :Microchip Technology Inc. 的 Lloyd D. Clark 博士 8 位 AVR 单片机内核可以执行 100 多条不同的指令, 其中的许多指令可在一个时钟周期内执行 AVR 内核 (megaavr 器件以及 tinyavr 0 和 1 系列器件 ) 的现代化实现中包含双周期硬件乘法器 但是, 如何将原始处理能力转化为实际的应用性能并非总是一目了然,

More information

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi MICROCHIP EVM Board : APP001 1-1. APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pin 16 I/O Extension Interface 1-2. APP001 Block_A Block_B

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

01018A.book

01018A.book 使用 C18 编译器进行 SPI 串行 EEPROM 与 PIC18 单片机的接口设计 作者 : 引言 Chris Parris Microchip Technology Inc. Microchip Technology 生产的 25XXX 系列串行 EEPROM 兼容 SPI 通信标准, 最大时钟频率范围从 3MHz 到 20 MHz 许多时候, 在设计利用串行 EEPROM 器件的应用时, 使用非专用

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

01277A_cn.book

01277A_cn.book 使用 C32 编译器进行串行 SRAM 器件与 PIC32 MCU 的接口设计 作者 : 引言 Pinakin K Makwana Microchip Technology Inc. Microchip 的串行 SRAM 产品线提供了向应用添加附加 RAM 的一种新方法 这些器件采用 8 引脚小型封装以及 SPI 接口, 使设计人员提升系统的灵活性 Microchip Technology 的 23XXXX

More information

untitled

untitled XILINX Platform Cbale USB www.hseda.com ...... Platform Cable USB Compatible.................. impact.........1 platform Cable USB Compatible.........1...1...1...1...1...1 Platform Cable USB Compatible

More information

* r p . 4 6 12 3 5 7 8 9bk bm btbsbrbqbp bo bn bl [ ] [ ] [ ] [ ] [SET] 1 2 3 4 5 6 7. cmcl ck 8 9 0 bk bl bm bn bo 1 2 1 2+ - bp bq 8 2 4 6 br r bs p bt ck cl cm 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12 ... 3... 3... 3... 3... 4 1JTAG ICE PC... 4 2JTAG ICE... 4 3... 4 4... 4 5JTAG... 5 6ISP... 5 IDE... 6 1 AVR STUDIO... 6 2 JTAGICE... 6 3JTAGICE... 12 4.... 16 5.... 17 6. JTAG ICE... 19 ISP... 20 1PonyProg2000...

More information

从ATmega48P/88P/168P移植到ATmega48PB/88PB/168PB

从ATmega48P/88P/168P移植到ATmega48PB/88PB/168PB 从 ATmega48P/88P/168P 移植到 ATmega48PB/88PB/168PB 功能 ATmega48PB/88PB/168PB 增加了几种新功能 : 新增四个 GPIO 引脚 移除一对 GND 和 VCC, 并用两个额外的 GPIO 引脚替换 此前只有 ADC 输入通道的两个引脚现与 GPIO 复用 USART 起始帧检测在所有休眠模式中均可用 新增模拟比较器输出至引脚 新增序列号

More information

00975A.book

00975A.book 使用 MSSP 模块进行 Microwire 串行 EEPROM 与 PIC16 器件的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 目前市场上有许多种单片机用在嵌入式控制系统设计中, 这些嵌入式控制系统中的很大一部分都要用到非易失性存储器 由于串行 EEPROM 具有封装尺寸小, 存储容量灵活, 对 I/O 引脚要求低, 和低功耗低成本等特点,

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

R/W

R/W (HD44780 KS0066 ) 3 3 5 6 10 14 HD44780/KS0066 16 2 LCM 8 1 40 4 LCD HD44780/KS0066 HD44100 IC PCB 0.1 CMOS 1. 2. 3. 4. 5. RH60% 6. 1. 2. 3. PCB 3 4. 5. 6. 1. 280 C 2. 3 4s 3. 4. 5. 3 5 1. 2. IC 3. DC-DC

More information

dsPIC30F SMPS Flash Programming Specification

dsPIC30F SMPS Flash Programming Specification dspic30f SMPS 闪存编程规范 1.0 概述与适用范围 本文档定义了 dspic30f 开关电源 (Switched Mode Power Supply,SMPS) 和数字电源转换系列数字信号控制器 (Digital Signal Controller, DSC) 器件的编程规范 本编程规范仅供使用第三方工具对 dspic30f SMPS 器件进行编程的开发人员使用 使用 dspic30f

More information

61127c_cn.book

61127c_cn.book 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 列 主 题 : 1.1 简 介... 1-2 1.2 本 手 册 的 目 标... 1-2 1.3 器 件 结 构... 1-2 1.4 开 发 支 持... 1-4 1.5 样 式 和 符 号 约 定... 1-4 1.6 相 关 文 档... 1-6 1.7 版 本 历 史... 1-7 2010 Microchip Technology

More information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

PIC 单片机的信号测量定时器 TB3129 作者 : 摘要 Ashutosh Tiwari Microchip Technology Inc. 本技术简介介绍了灵活且非常有用的信号测量定时器 (Signal Measurement Timer,SMT) SMT 是一个具有高级时钟和门控逻辑的 24

PIC 单片机的信号测量定时器 TB3129 作者 : 摘要 Ashutosh Tiwari Microchip Technology Inc. 本技术简介介绍了灵活且非常有用的信号测量定时器 (Signal Measurement Timer,SMT) SMT 是一个具有高级时钟和门控逻辑的 24 PIC 单片机的信号测量定时器 作者 : 摘要 Ashutosh Tiwari Microchip Technology Inc. 本技术简介介绍了灵活且非常有用的信号测量定时器 (Signal Measurement Timer,SMT) SMT 是一个具有高级时钟和门控逻辑的 24 位计数器 / 定时器, 在许多 PIC 单片机上可用 它可以测量各种数字信号参数, 例如脉宽 频率 占空比和两个信号边沿之间的时间差

More information

21928a.book

21928a.book PS080, PowerTool 800 开发软件用户指南 2005 Microchip Technology Inc. DS21928A_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一

More information

Section1_16bit Arc.ppt

Section1_16bit Arc.ppt 16-bit Elite Program 2009 Summer Section-1 Microchip 16-bit 2005 Microchip Technology Incorporated. All Rights Reserved. Slide 1 MCU CPU (NOP),, (Data Memory), I/O CPU w. ALU/Working Reg. Data Mem. Data

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

0507A_Auto Tech_Microchip

0507A_Auto Tech_Microchip 汽 车 无 线 安 全 接 入 技 术 解 决 方 案 Youbok Lee 主 任 工 程 师 Willie Fitzgerald 产 品 营 销 总 监 Microchip Technology Inc. 引 言 全 球 汽 车 半 导 体 面 临 极 大 的 市 场 机 会, 而 汽 车 设 计 工 程 师 正 在 应 对 高 性 价 比 的 性 能 增 强 功 耗 小 尺 寸 和 安 全 性

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

untitled

untitled MCP3421 DS51683A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology Inc. Microchip

More information

第 卷 第 期 年 月 半 导 体 学 报! " # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% )

第 卷 第 期 年 月 半 导 体 学 报!  # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% ) 第 卷 第 期 年 月!"# $%&'%' $!&'#%#$1/#1 $'! /18103 2?/03101?/18103 /3 0,?/0301.13 )*+!!! '!,!! -.&' $!'! 4%%&1)/1(7%&)03(%)%&,%*(1&0)%$-0*,%30)17*1*)0(+1(1+&1*+*),)1; &113(%44(10&.0701&0-&00*/)%;()1%-1+%&0)0*1*)%

More information

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

Microsoft Word - LMB402CBC-AppNote-V0.1.doc LMB402CBC 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本描述日期编者 0.1 新版本 2006-02-09 杨军 http://www.topwaysz.com 1 / 1 目录 1 概述 3 2 硬件接口 3 3 软件特性 3 3.1 控制器接口信号说明 3 3.2 模块指令系统 4 4 显示数据存储器的地址 4 5 字符发生器 CGRAM 的地址 5 6 应用举例 5 6.1

More information

,,, PCB, AR M VxWorks DSP,,,,,,,,,,, (CIP) /,,.:,2005 ISBN TP36 CIP (2005) : ( 10 ) : : (010 ) : (010)

,,, PCB, AR M VxWorks DSP,,,,,,,,,,, (CIP) /,,.:,2005 ISBN TP36 CIP (2005) : ( 10 ) : : (010 ) : (010) ,,, PCB, AR M VxWorks DSP,,,,,,,,,,, (CIP) /,,.:,2005 ISBN 7-5635-1099-0...............TP36 CIP (2005)076733 : ( 10 ) :100876 : (010 )62282185 : (010)62283578 : publish@bupt.edu.cn : : : 787 mm960 mm 1/

More information

00966A.book

00966A.book SPI 串行 EEPROM 与 PICmicro 单片机的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 目前市场上有许多种单片机用在嵌入式控制系统设计中, 这些嵌入式控制系统中的很大一部分都要用到非易失性存储器 由于串行 EEPROM 具有封装尺寸小, 存储容量灵活, 对 I/O 引脚要求低, 和低功耗低成本等特点, 已成为非易失性存储器的首选

More information

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V VISHAY GE NERAL SEMICONDUCTOR 瞬态电压抑制器 应用笔记 用于汽车电子保护的瞬态电压抑制器 (TVS) Soo Man (Sweetman) Kim, Vishay I) TVS 的重要参数 TVS 功率等级 TVS Vishay TVS 10 μs/1000 μs (Bellcore 1089) 1 TVS ESD 8 μs/20 μs 2 1 10 µs 10 µs/1000

More information

21498c_cn.book

21498c_cn.book 精密温度 - 电压转换器 特性 工作电压范围 : - TC147:2.7V 至 4.4V - TC147A:2.5V 至 5.5V 宽温度测量范围 : - -4 C 至 +125 C 温度转换精度高 : - 在 25 C 时为 ±2 C ( 最大值 ) 线性温度斜率 :1 mv/ C ( 典型值 ) 提供 3 引脚 SOT-23B 封装 低工作电流 : - 35 µa 典型值 应用 移动电话 电源过热关断控制

More information

mdt1030

mdt1030 深圳市英锐恩科技有限公司 第 1 页 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 Micon MDT1030 产品用户参考手册 全球销售及服务联系信息 : 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 室 Enroo-Tech Technologies CO., Limited Light-Tech

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

untitled

untitled FBC0409 V1.0 1.0 05.06.22 SIA 2005 SIA SIA SIA SIA SIA 114 86-24-23970133 HTTP://WWW.SIA.CN YANG@SIA.CN 2 ...5...5...6 PIN...6...7 1 CPU...8 2...8 4...8 5 DMA...9 7....9 8...9 9...10 A...10 B...10...11.

More information

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica CP Chip Power ARM Cortex-M3 (STM32F) ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplication and hardware

More information

01476A.book

01476A.book 结合 CLC 和 NCO 实现高分辨率 PWM AN1476 作者 : 简介 Cobus Van Eeden Microchip Technology Inc. 虽然许多应用可以使用分辨率低于 8 位的 PWM, 但是有一些应用 ( 例如灯具调光 ) 由于人眼灵敏度的原因需要较高分辨率 背景 传统的 PWM 使用定时器来生成规则的开关频率 (T PWM ), 然后使用纹波计数器来确定在脉冲结束之前,

More information

文件名

文件名 MICROCHIP PIC10F200/202/204/206 6 8 FLASH PIC10F200 PIC10F202 PIC10F204 PIC10F206 RISC CPU 33 12 8 8 4MHz 1 s 4MHz 1% TM ICSP TM ICD POR DRT WDT RC MCLR I/O /CMOS < 350 A @ 2V 4 MHz 100 na @ 2V FLASH 10000

More information

xilinx FPGA 串口设计笔记 在设计中, 需要用 FPGA 读取 GPS 内部的信息,GPS 的通信方式为串口, 所以在 FPGA 中移植了串口程序 本次移植的程序源代码是特权的串口程序, 本以为移植应该很快就能完成, 但其中还是出了一写小问题, 耽误了不少的时间, 下面将问题进行一个总结!

xilinx FPGA 串口设计笔记 在设计中, 需要用 FPGA 读取 GPS 内部的信息,GPS 的通信方式为串口, 所以在 FPGA 中移植了串口程序 本次移植的程序源代码是特权的串口程序, 本以为移植应该很快就能完成, 但其中还是出了一写小问题, 耽误了不少的时间, 下面将问题进行一个总结! xilinx FPGA 串口设计笔记 在设计中, 需要用 FPGA 读取 GPS 内部的信息,GPS 的通信方式为串口, 所以在 FPGA 中移植了串口程序 本次移植的程序源代码是特权的串口程序, 本以为移植应该很快就能完成, 但其中还是出了一写小问题, 耽误了不少的时间, 下面将问题进行一个总结! 以下是串口的时序 : 在设计中, 耽误时间最长的问题就是数据老是出错, 为了找出问题的所在, 用示波器观察了

More information

Microsoft Word - AN3259C

Microsoft Word - AN3259C www.maxim-ic.com.cn 应用笔记 3259 DS31256 Envoy - 寄存器转储列程 概述本应用笔记提供了将 DS31256 的寄存器 排队程序 描述符和 FIFO RAM 的内容转储到一个文件的程序代码 这些数据在 DS31256 无法正常工作时非常关键, 为进一步的研究和调试提供了重要信息 例如, 寄存器数据经过转储后可以显示每个 DS31256 寄存器的设置 为了保证正确地设置器件,

More information

Tel:010-62981668-2930 1

Tel:010-62981668-2930  1 Access 93C46 with SPI function V1.0.0 Jan. 31, 2005 http://www.sunplusmcu.com Tel:010-62981668-2930 http://www.sunplusmcu.com E-mail:mcu@sunplus.com.cn 1 0 0...2 1...3 2...4 2.1...4 2.2...5 3...6 3.1 AT93C46...6

More information

PIC32 系列参考手册 注 : 本系列参考手册章节旨在用作对器件数据手册的补充 根据不同的器件型号, 本手册章节可能并不适用于所有 PIC32 器件 请参见当前器件数据手册中 存储器构成 章节开头部分的注, 以检查本文档是否支持您所使用的器件 器件数据手册和系列参考手册章节可从 Microchip

PIC32 系列参考手册 注 : 本系列参考手册章节旨在用作对器件数据手册的补充 根据不同的器件型号, 本手册章节可能并不适用于所有 PIC32 器件 请参见当前器件数据手册中 存储器构成 章节开头部分的注, 以检查本文档是否支持您所使用的器件 器件数据手册和系列参考手册章节可从 Microchip 第 48 章存储器构成和权限 目录 本章包括下列主题 : 48.1 简介... 48-2 48.2 控制寄存器... 48-3 48.3 存储器布局... 48-13 48.4 系统总线... 48-16 48.5 系统总线仲裁... 48-18 48.6 访问权限... 48-19 48.7 复位的影响... 48-21 48.8 节能模式下的操作... 48-21 48.9 调试模式... 48-21

More information