PIC 微控制器文档指南/文档结构开发工具制造
一旦处理器架构、选择的编程语言和开发工具的文档被获取,就该查看在目标控制器上进行代码开发所需的硬件工具以及有关生产目的的闪存编程信息。主要文档区域之前已被识别为
- 微控制器或 DSC 文档
- 编程语言工具文档
- 集成开发环境 (IDE) 文档(如果使用)
- 硬件调试器和/或程序员文档
- 闪存程序存储器编程文档
在本节中,我们将更详细地研究最后两点。
硬件调试器和程序员文档帮助我们了解可用工具的功能和局限性,这些工具是调试我们将在目标硬件上开发的应用程序所需的。这涵盖了从可用调试断点的数量和支持调试所需的控制器资源到推荐的电路以确保在制造过程中成功进行在线编程的各个方面。
对于那些热衷于开发自己的编程工具的人,无论是用于他们自己的制造设施还是用于销售 PIC® 系列微控制器的编程工具,都必须仔细研究程序存储器编程文档。
调试和编程可以分为两个核心组;调试器和在线仿真器,它们也可以用作程序员;以及只有编程功能的工具。所有这些工具主要设计为与 MPLAB® IDE 或其他专有 Windows GUI 软件配合使用,尽管偶尔也提供命令行界面。
最新一代的调试器和在线仿真器支持几乎所有当前的 Microchip 控制器产品组合,并在 MPLAB® IDE 中具有相同的视觉界面。决定使用哪个工具取决于您从工具中需要的调试功能,这些功能是否也受您想要使用的微控制器支持,以及您愿意花多少钱。以下表格比较了三种主要的当前工具,PICkit™ 3、ICD 3 和 REAL ICE™。
特征 | PICkit™ 3 | MPLAB® ICD 3 | MPLAB® REAL ICE™ |
---|---|---|---|
USB 速度 | 完整 (12Mbps) |
完整/高 (12/480Mbps) |
完整/高 (12/480Mbps) |
USB 供电 | 是 | 是 | 是 |
可以为目标供电 | 是 (30mA @ 1.8V-5.0V) |
是 (100mA @ 3.0V-5.0V) |
否 |
断点 | 简单 | 复杂 | 复杂 |
软件断点 | 否 | 是 | 是 |
独立编程 支持 |
是 | 否 | 否 |
原生跟踪 | 否 | 否 | 是 |
其他跟踪(通过串行 接口) |
否 | 否 | 是 |
数据捕获/运行时监视 | 否 | 否 | 是 |
逻辑/探针触发 | 否 | 否 | 是 |
高速调试接口 支持 |
否 | 否 | 是 |
支持光隔离调试 | 否 | 否 | 是 |
该表格仅对三种主要工具进行特征比较,如果您试图为特定微控制器或特定应用程序选择工具,则没有多大帮助。以下尝试更全面地描述每个工具,并列出相应的文档
- PICkit™ 3 - 一款入门级工具,价格最低,适合所有预算。适合与所有三种系列的控制器一起使用,尽管对较大的 PIC18、PIC24、dsPIC 和 PIC32 器件的闪存进行编程要慢得多(512kB 内存需要 35 秒,而 ICD 3 或 REAL ICE™ 则需要 10 秒),而不是功能更丰富的 ICD 3 和 REAL ICE™。非常适合在较小的内存类型 8 位系列器件上进行开发,这些器件通常无法从其他两种调试工具的先进调试功能中受益。
- ICD 3 - 一款中级入门调试工具,适合预算较高的用户。适合在所有控制器系列上进行一般到复杂的代码开发。强烈建议用于 PIC18、16 位和 32 位开发,在这些开发中可以利用更先进的调试功能,并且可以更快地编程更大的闪存内存。
- REAL ICE™ - 高端调试工具,非常适合开发复杂的应用程序。探针输入和输出可用于生成或响应外部信号。仪表化跟踪对于分析复杂或多线程应用程序中的代码流非常有价值。通过添加“性能包” [sic],调试数据和跟踪信息可以在 REAL ICE™ 和目标控制器之间以更高的速度传输。此调试器与“性能包”和“光隔离器”模块一起使用,是唯一适合在高压应用程序中调试微控制器的调试选项。
提示!- 如果安装了 MPLAB® IDE,则它包含所有这些工具的特定版本信息。查看 [DRIVE]:\<INSTALL PATH>\Microchip\MPLAB IDE\Readmes。 “Device Support.html” 文件列出了所有当前支持的工具对每个微控制器的支持状态! |
---|
有一些工具仍然在文档、帮助文件和软件工具(如 MPLAB™ IDE)中引用。这些工具将在此处简要提及,并附带注释,说明在您获得这些工具之一的情况下在哪里可以找到相关文档。
- PICkit™ 2 - PICkit™ 3 的前身。在 PICkit™ 3 推出之前,它支持大多数系列的微控制器。之后,对未来新推出的微控制器的支持将减少甚至逐步淘汰。PICkit™ 2 最初被设计为纯粹的预算型编程工具,在其产品生命周期的后期才获得了调试功能。作为编程工具,它由自己的 Windows GUI 支持,使其无需 MPLAB® IDE 即可使用。具有适用于生产编程或与第三方软件(例如 MatrixMultimedias FlowCode 开发环境)一起使用的命令行工具,以及“Programmer-To-Go”模式,允许 PICkit™ 2 作为独立编程器使用(即,无需连接到主机 PC),只要目标电路为工具提供电源。目前,这是 Windows、Linux 和 MAC OS 下唯一的工具支持。
- 文档 - 所有相关文档和软件都可以在 www.microchip.com/pickit2 找到。
- ICD 2 - ICD 3 的前身。第一个“低成本”在线调试工具,允许开发人员在实际使用的微控制器上调试应用程序,同时该微控制器被物理焊接在应用程序电路中。目标微控制器需要一个匹配的“调试模块”(在芯片上实现),才能使调试功能正常工作,并且还需要两个 I/O 引脚用于与工具的数据连接。通过 MPLAB® IDE 支持调试和编程功能。随着 ICD 3 的推出,预计对新发布的微控制器的进一步主要支持将很少或根本没有。
- 文档 - 所有相关文档都可以在 www.microchip.com/icd2 找到。
- ICE 2000 - 一款硬件全功能仿真器,具有硬件断点支持、跟踪和全速仿真功能。支持几乎所有 PIC12、PIC16、PIC17 和早期 PIC18 微控制器。与 PC 的连接使用并行接口。该设备由三个部分组成:“POD”,仿真器的主要部分,连接到 PC;“处理器模块”,支持一小部分或类似设备系列;以及“设备适配器”,它允许处理器适配器连接到电路,以代替计划使用的微控制器设备。由于该工具的复杂性,购买成本非常高,并且迁移到另一个控制器设备需要在匹配的设备适配器、处理器模块或两者上进行进一步的投资。该工具不再进行进一步的开发。
- 文档 - 所有相关文档都可以在 www.microchip.com/ice2000 找到。
- ICE 4000 - 本质上是 ICE4000 的下一代在线仿真器,支持 PIC18 和当时新推出的 16 位 dsPIC30 设备。具有改进的供电电压支持、更深的跟踪缓冲区、无限断点、外部触发输入和信号输出,用于与外部工具(例如示波器)同步,以及 USB 接口连接到 PC。它的接受度和使用范围从未像 ICE2000 那样广泛,部分原因是它与 ICE 2000 类似的高购买和维护成本,部分原因是新推出的、价格明显更低的 ICD 2 的吸引力,尽管它的调试能力相对较低。该工具不再进行进一步的开发。
- 文档 - 所有相关文档都可以在 www.microchip.com/ice4000 找到。
编程工具
[edit | edit source]由于所有调试工具都具有纯编程模式,因此对专用编程工具的需求有所降低。但是,对于需要纯编程设备的情况,Microchip 目前提供三种不同的编程工具。主要工具是 MPLAB® PM3,适用于小型生产运行的生产编程环境。大型生产运行由来自各种第三方合作伙伴的编程器或成组编程器支持。[9] 下表总结了当前支持的三种编程工具的主要功能。
特征 | MPLAB® PM3 | PICSTART® Plus | PRO MATE® II |
---|---|---|---|
USB 接口 | 是 - 全速 (12Mbps) |
否 | 否 |
RS-232 接口 | 是 | 是 | 是 |
在线串行编程 (ICSP) | 是 - 本机支持 | 否 | 是 - 需要适配器 |
PC 主机模式 | 是 | 是 | 是 |
安全编程模式 | 是 | 否 | 是 |
独立编程模式 | 是 | 否 | 是 |
DIP ZIF 插座 | 否 | 是 | 否 |
可互换 编程插座 |
是 | 有限 - 需要适配器 |
是 |
串行化模式 | 是 | 否 | 是 |
DOS 命令行支持 | 是 | 否 | 是 |
以下内容更详细地介绍了各个编程工具。
- MPLAB® PM3 - 一款全功能编程工具,支持(除少数例外)Microchip 制造的所有微控制器产品。通过可互换的编程插座,可以对微控制器交付的各种封装进行编程。对于已经焊接在电路板上的控制器,也支持通过 ICSP 接口进行在线编程。多个“.hex”文件可以保存在 SD 或 MCC 卡上,允许独立运行。一个“安全模式”允许编程器将 PM3 的功能降低到仅编程,非常适合在生产线上使用,通过简化功能来避免错误或访问系统上保存的其他“.hex”文件。串行化和 DOS 命令行允许在无需使用 MPLAB® IDE 的情况下进一步执行功能。对于希望从 PROMATE® II 迁移到 PM3 的用户,提供了一个适配器,允许 PROMATE® II 编程插座与 PM3 一起使用。
- 快速入门海报 - 以海报格式显示的简单“入门”信息 - DS51450
- 用户指南 - 详细描述工具的编程模式和功能 - DS51464
- ICSP™ 设计指南 - 另外以海报格式提供的文档,提供有关对已焊接在电路板上的控制器的在线串行编程 (ICSP™) 的重要设计信息 - DS51474
所有 PM3 文档都可以在 PM3 产品页面上找到:www.microchip.com/pm3
- PICSTART® Plus - 一款入门级编程工具,非常适合 DIP/DIL 封装的设备。还提供带有不同类型封装的备用插座的适配器板。适用于 PIC10、PIC12、PIC16、PIC17 和早期 PIC18 产品(不包括“K”或“J”类型)。
- 用户指南 - 详细描述在 MPLAB® IDE 环境中使用该工具进行编程 - DS51028
所有 PICSTART® Plus 文档都可以在 PICSTART® Plus 产品页面上找到:http://www.microchip.com/picstartplus
- PROMATE® II - PM3 的前身,PROMATE® II 现在不再出售,但未来一段时间内仍将提供支持和配件。功能不如 PM3 丰富,RS-232 接口限制了当前可用的大型闪存设备的编程速度。适用于 PIC10、PIC12、PIC16、PIC17、早期 PIC18 产品(不包括“K”或“J”类型)和 dsPIC30。
- 用户指南 - 详细解释 PROMATE® II 的编程功能、设置和用法 - DS30082
所有 PROMATE® II 文档都可以在 PROMATE® II 产品页面上找到:http://www.microchip.com/promateii
提示!- 如果安装了 MPLAB® IDE,则它包含所有这些工具的特定版本信息。查看 [DRIVE]:\<INSTALL PATH>\Microchip\MPLAB IDE\Readmes。 “Device Support.html” 文件列出了所有当前支持的工具对每个微控制器的支持状态! |
---|
成熟的编程工具
[edit | edit source]使用 MPLAB® IDE 时,还会提到名为 PICkit™ 1 的编程器。PICkit™ 1 是当前 PICkit™ 3(和 PICkit™ 2)工具的前身,但仅提供编程功能,并且目标是支持少数 PIC10、PIC12 和 PIC16 闪存微控制器。该工具附带一个 PIC12F675 和一组教程,允许用户进行汇编编程的第一步,并展示如何配置和使用一些关键外设模块。可视化编程界面是 MPLAB® IDE。该工具最初是为提供低成本的微控制器开发入门而开发的,现在不再积极开发。有关该工具的更多信息以及文档链接,请访问 http://www.microchip.com/pickit1
闪存程序存储器编程文档
[edit | edit source]我们将在此讨论的最后一组通用文档是描述微控制器闪存编程过程的文档。关于如何对闪存进行编程,文档中主要涵盖了三个目的,即
- 生产编程器的编程过程
- 如何为生产准备在线编程接口
- 如何在运行的应用程序中修改闪存的内容
以下将更详细地讨论这三个目的以及相关的文档。
生产编程器的编程过程
[edit | edit source]如果您打算使用您制造的编程工具来支持 Microchip 的微控制器,或者您打算为生产线制造或实现自己的编程工具,您需要检查编程协议文档,以了解如何访问闪存以及如何将指令编程到闪存中。有四种潜在的方法,所有这些方法都是基于串行的方法,用于对 PIC 微控制器的闪存进行编程。
- ICSP™ - 电路内串行编程是闪存编程的标准接口。 使用控制器的两个 GPIO 引脚(一个作为时钟,另一个作为双向数据线)作为通信接口,将所需的指令传输到控制器,并使用专门定义的协议编程到闪存中。 协议特定于一种微控制器系列,因为每个系列的闪存的存储器宽度不同。 编程模式通过将时钟和数据线保持为低电平(通常命名为 PGC 和 PGD)并对 MCLR/VPP 引脚施加高电压来进入,其中“高电压”对于 8 位产品在 8.0V 到 13.5V 范围内,对于 16 位和 32 位产品则为电源电压 (VDD)。 确切的电压在“编程规范”文档中指定。 进入编程模式后,就可以写入和读取微控制器的闪存,直到最后一个编程命令完成后从 MCLR/VPP 引脚移除高电压,退出编程模式。 所有基于闪存的 PIC 都提供 ICSP™。
- 低电压 ICSP™ - 低电压电路内编程使用相同的通信接口和协议,但不需要 MCLR/VPP 引脚上的高电压信号,这在设计中可能难以实现。 相反,时钟和数据引脚必须保持为低电平,同时第三个引脚 PGM 保持为高电平,然后将 MCLR/VPP 引脚拉高到微控制器的标准工作电压。 并非所有微控制器都支持低电压 ICSP™,如果支持,控制器配置位寄存器中的低电压编程位 LVP 必须设置为“1”。 如果此位被清除为“0”,则必须使用正常的高电压 ICSP™ 方法将此位再次设置为“1”。 大多数 8 位产品都提供低电压 ICSP™。
- 增强型 ICSP™ - 增强型 ICSP™ 使用相同的编程接口,结合一个编程执行程序 (PE),这是一个小型固件,以简化编程过程。 编程执行程序接管了低级编程过程,允许编程工具专注于执行更高级别的编程命令,例如“读取内存”和“空白检查”,否则这些命令必须由编程工具和可能的宿主 PC 系统承担。 这导致更快的编程时间,并且在编程过程中编程工具侧的开销更少。 PE 在 16 位控制器中从闪存执行,进入编程模式时可能已经可用,也可能不可用。 32 位控制器的 PE 必须在进入编程模式后下载到 RAM。 dsPIC30、dsPIC33、PIC24 和 PIC32 系列提供增强型 ICSP™。
- 增强型 JTAG - PIC32 系列是 Microchip 目前唯一支持通过 JTAG 接口进行闪存编程的微控制器系列。 JTAG 接口编程协议与 PIC32 上的 ICSP™ 几乎相同,因为在这两种情况下,通信都通过 JTAG 接口的 TAP 控制器进行。 如果需要,增强型 JTAG 也可以像前面提到的增强型 ICSP™ 一样使用编程执行程序。
不幸的是,闪存编程的文档并不总是针对整个微控制器系列,而通常是针对系列中的一小部分控制器。 为了让您了解可能会遇到什么,以下列出了一些示例文档。
- 来自基线系列:PIC10F200/202/204/206 内存编程规范 - DS41228
- 来自中端系列:PIC16F/LF182X/PIC12F/LF1822 内存编程规范 - DS41390
- 来自高性能系列:PIC18FX220/X320 闪存微控制器编程规范 - DS39592
- 来自 16 位 MCU 系列:PIC24FJXXXGA0XX 闪存编程规范 - DS39768
- 来自 16 位 DSC 系列:dsPIC30F 闪存编程规范 - DS70102
- 来自 32 位系列:PIC32MX 闪存编程规范 - DS61145
用于生产编程的电路内编程接口
[edit | edit source]ICSP™ 接口非常容易实现,只需要连接到微控制器的 PGC 和 PGD 引脚,以及连接到 MCLR/VPP 引脚即可。 此外,编程工具或调试器还需要连接到 GND 和 VDD,以完成电气连接,并在编程前检测电源电压和可用性。 尽管看起来很简单,但尝试在一个电气电路中编程微控制器实际上要复杂一些,因为 PGC 和 PGD 引脚也可能用作电路中的 GPIO 引脚,而 MCLR/VPP 可能连接到系统中的其他电路。 为了确保成功编程(这同样适用于调试),必须确保遵循基本的设计原则。 这些原则包括
- 不要将电容器连接到 MCLR/VPP、PGC 或 PGD,因为这会影响 ICSP™ 通信协议中使用的快速信号转换。
- 不要在 PGC 或 PGD 上使用上拉电阻,因为这些电阻会与大多数工具中的内部下拉电阻一起充当分压器。
- 不要在微控制器和编程工具之间的 PGC 或 PGD 连接中使用二极管,因为它是双向通信接口。
- 许多文档建议在 MCLR/VPP 和其余电路之间使用肖特基二极管,以保护主电路免受施加到此引脚上的高电压进入编程模式的影响。
每个编程器和调试器文档在其“用户指南”中都提供了推荐的指南,说明在与该工具结合使用时实现 ICSP™ 接口的最佳方法,建议您在完成计划应用程序的硬件设计之前仔细阅读。 工具的“快速入门海报”也通常涵盖此主题。 此外,在您选择的微控制器的规格书中搜索“ICSP”一词,将提供更多建议和建议。 最后,网站上还有一些其他文档专门讨论编程接口,例如
- TB016 - 如何使用 PIC16F8X FLASH MCU 实现 ICSP™ - DS91016
修改运行应用程序中的闪存内容
[edit | edit source]除了基线产品外,所有 PIC 微控制器系列都能够在其应用程序运行时修改其自己的闪存程序存储器的内容。 实现方式、文档方式和命名方式取决于微控制器系列。 以下提供了一些指导,说明在哪里查找以及在哪些文档中找到更多信息
- 中端和增强型中端设备 - 通过执行对 EEPROM 寄存器的写入来实现程序闪存的自写,以擦除和重写所需位置。 重要的是要注意,控制器在写入自己的程序存储器时无法执行自己的代码,程序执行将在几毫秒的时间内停止。 此外,请仔细注意规格书中的参考汇编代码,需要非常特定的代码序列才能启用擦除和写入过程。 请参阅设备的规格书,并搜索通常名为“数据 EEPROM 和闪存程序存储器控制”的章节。
- 高性能设备 - 这些设备使用一种称为“表读取和表写入”的过程,该过程结合使用特殊的寄存器和特殊的“表写入”汇编指令来修改程序闪存的内容。 与中端系列一样,控制器必须等待写入过程完成才能继续执行代码,这可能需要几毫秒才能完成。 写入内存所需的代码也需要非常特定的序列,并在规格书中以汇编代码的形式提供。 请参阅设备的规格书,并搜索通常名为“闪存程序存储器”的章节,并继续阅读“写入闪存程序存储器”或类似部分。
- 16 位 MCU 和 DSC 设备 - 尽管这些设备使用与高性能 8 位系列相同的“表读取和表写入”过程,但自写功能被称为运行时自编程或 RTSP。 与其他系列一样,控制器必须等待写入过程完成才能继续执行代码,这可能需要几毫秒才能完成。 闪存自编程所需的汇编代码序列也至关重要,参考代码在规格书中提供。 请参阅设备的规格书,并搜索通常名为“RTSP 操作”的部分,该部分通常位于“闪存程序存储器”章节中。
- 32 位设备 - 与它们的 16 位同类产品一样,32 位系列的自写功能也称为运行时自编程或 RTSP。 与其他系列一样,控制器必须等待写入过程完成才能继续执行代码,这可能需要几毫秒才能完成。 请参阅设备的规格书,并搜索通常名为“RTSP 操作”的部分,或在 PIC32MX 系列参考手册中搜索相同的术语。
参考文献
[edit | edit source]- ↑ http://www.microchip.com/pickit3
- ↑ http://www.microchip.com/pickit3
- ↑ http://search.microchip.com/searchapp/searchparts.aspx?q=DS41370&id=3
- ↑ http://www.microchip.com/ICD3
- ↑ http://search.microchip.com/searchapp/searchhome.aspx?id=2&q=DS51766
- ↑ http://search.microchip.com/searchapp/searchhome.aspx?id=2&q=DS51764
- ↑ http://www.microchip.com/REALICE
- ↑ http://search.microchip.com/searchapp/searchhome.aspx?id=2&q=DS51616
- ↑ http://www.microchip.com/3rdparty