首页资源分类嵌入式处理器PIC > PIC中档单片机系列-在线串行编程 14页

PIC中档单片机系列-在线串行编程 14页

已有 445526个资源

下载专区

文档信息举报收藏

标    签:PIC

分    享:

文档简介

PIC中档单片机系列-在线串行编程 14页

文档预览

第 28 章 在线串行编程 目录 本章包括下面一些主要内容: 28.1 简介.............................................................................................................................. 28-2 28.2 进入在线串行编程模式 ................................................................................................. 28-3 28.3 应用电路....................................................................................................................... 28-4 28.4 编程器 .......................................................................................................................... 28-6 28.5 编程环境....................................................................................................................... 28-6 28.6 其它优点....................................................................................................................... 28-7 28.7 PICmicro® OTP 型单片机的现场编程.......................................................................... 28-8 28.8 FLASH 型 PICmicro® 单片机的现场编程................................................................... 28-10 28.9 设计技巧..................................................................................................................... 28-12 28.10 相关应用笔记 ............................................................................................................. 28-13 28.11 版本历史..................................................................................................................... 28-14 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-1 页 PICmicro 中档单片机系列 28.1 简介 所有中档系列单片机都可以在最终应用电路中在线串行编程 (In-Circuit Serial Programming™, ICSP™)。ICSP™ 只需使用五根线,其中时钟和数据线各 1 根,另外三根线作为电源、地和编程 电压线。 在线串行编程有利于降低库存开销和加快产品上市。在你的产品中嵌入空白的 Microchip单片机, 作为一个备用的设计。当接到订单后,便可以在很短的时间内用最新版本的固件对这些产品进行 编程、测试,然后交货。这种方法也减少了旧固件版本引起的报废库存。 这种生产方法有利于快 速根据用户要求定制产品。 大部分人认为只能在装配线上通过 ICSP™ 对 PICmicro® OTP 单片机进行一次编程,这是不正确 的。实际上,可以采用一定的方法对 OTP 器件进行多次编程,这与固件大小有关。下文将对这 个方法进行介绍,该方法提供了一种类似于 EEPROM 或闪存存储器的现场升级固件的手段。 DS31028A_CN 第 28-2 页  2004 Microchip Technology Inc. 28.2 第 28 章 ICSP 进入在线串行编程模式 通过保持 RB6 和 RB7 引脚为低电平, VDD 为编程电压,并将 MCLR (VPP) 引脚电压从 VIL 增加 到 VIHH( 见编程规范 ),器件便进入编程 / 校验模式。此时, RB6 为编程时钟线,RB7 为编程数 据线。在该模式下,RB6 和 RB7 都是施密特触发器输入,当 RB7 驱动数据时,它是 CMOS 输 出驱动。 复位后,为使器件进入编程 / 校验模式,程序计数器 (PC) 指向 00h 地址。然后可向器件发送一 个 6 位的命令,根据这一命令是装入还是读出, 14 位编程数据将被提供给器件或是从器件中读 出。有关串行编程的完整细节,请参考器件的编程规范。 在线串行编程模式下, 看门狗定时器电路不能产生器件复位。 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-3 页 PICmicro 中档单片机系列 28.3 应用电路 应用电路必须设计为使所有编程信号直接连接到 PICmicro® 单片机的相关引脚上。图 28-1 给出 了一个典型的 ICSP 连接电路。应用电路必须解决以下问题: • MCLR/VPP 引脚与电路其它部分相隔离 • RB6 和 RB7 的负载 • VDD、MCLR/VPP、 RB6 和 RB7 引脚的电容问题 • VDD 的最小和最大工作电压 • PICmicro® 单片机的振荡器 • 与编程器的接口 MCLR/VPP 引脚通常与 RC 电路相连,上拉电阻接 VDD,电容接地。VPP 电压必须与电路的其它 部分隔离 ( 大多数情况下电阻不起隔离电路的作用 ),根据电容器的大小,RC 电路可能影响 ICSP 的操作。因此当 RC 电路与 MCLR/VPP 相连时,推荐采用图 28-1 所示的电路,其中使用了肖特 基型二极管。MCLR/VPP 的另一个问题是当对 PICmicro ® 单片机编程时,该引脚将被同时驱动 至大约 13V 和地,因此应用电路必须与编程器提供的编程电压隔离。 RB6 和 RB7 引脚用于 PICmicro® 单片机的串行编程。RB6 是时钟线,RB7 是数据线。 RB6 由 编程器驱动,RB7 是双向引脚,编程时由编程器驱动,校验时由 PICmicro® 单片机驱动。这两个 引脚必须与应用电路的其它部分隔离,从而在编程时不会对信号产生影响。 将 RB6 和 RB7 与电 路其它部分隔离时必须考虑编程器的输出阻抗。隔离电路必须使 RB6 能够作为 PICmicro® 单片 机 的 输 入,而 RB7 能 够 作 为 双 向 引 脚 (PICmicro® 单 片 机 和 编 程 器 都 能 驱 动 它 )。 例 如, PRO MATE® II 的输出阻抗为 1kΩ。如果设计允许,应用电路不要使用这些引脚。对于大多数应 用,如果需要使用这些引脚,设计人员可以考虑信号是否需要缓冲。设计人员必须考虑 RB6 和 RB7 连接哪种类型的电路,然后决定如何隔离这些引脚。图 28-1 没有给出应用电路中隔离 RB6 和 RB7 的电路,因为隔离电路的设计与具体的应用有很大关系。 为简化接口设计,下面列出在应用中使用这些 I/O 引脚的最佳方法 (按最佳顺序排列): 1. 将 RB6/RB7 专用于 ICSPTM。 2. 这些端口作为输出时,具有极轻的负载。 3. 采用隔离电路,使信号满足 ICSP 规范。 图 28-1: 在线串行编程 (ICSPTM)的典型应用电路 应用 PCB PIC16CXXX VDD VDD MCLR/VPP ICSPTM 连接器 VDD VSS RB7 RB6 到应用电路 隔离电路 DS31028A_CN 第 28-4 页  2004 Microchip Technology Inc. 第 28 章 ICSP 编程引脚的总电容将影响编程器输出信号的上升速率。典型电路中,一般在 VDD 和地之间接有几 百微法的滤波电容以抑制噪声和电源电压波动。但是这种电容需要编程器必须具有相当强的驱动 能力,才能满足 VDD 上升速率的要求。大多数编程器只能对 PICmicro® 单片机进行编程,而不 能驱动整个应用电路。一种解决方案是在编程器和应用电路之间加一块驱动电路板。该驱动电路 板有独立的电源,可以满足 VPP 和 VDD 引脚电压上升速率的要求,并可为整个应用电路供电。 RB6 和 RB7 是否需要缓冲取决于具体的应用。作为示例,图 28-2 给出了一个驱动电路板原理 图。 注: 必须在用户的应用电路中对该驱动电路板进行测试,以确定编程信号时序对应用电 路的影响。如果应用电路的 VDD、VPP、RB6 或 RB7 引脚负载过重,电路可能需要 做出一些更改。 Microchip 编程规范规定器件应在 5V 电压下编程。如果应用电路只能在 3V 电压下工作,那么需 要一些特殊的措施。例如在编程时将 PICmicro® 单片机与其它应用电路完全隔离。另一个问题 是,必须在应用电路的最小和最大工作电压下对器件进行校验。例如, 在一个使用三个 1.5V 电 池供电的系统中,其工作电压范围是 2.7V 到 4.5V。而编程器必须在 5V 电压下对器件进行编程, 并且必须在 2.7V 和 4.5V 电压下对程序存储器进行校验,以确保编程正确。这样可以保证 PICmicro® 单片机在整个工作电压范围内都能正常工作。 最后一个问题是关于应用电路中的振荡器。在单片机执行任何代码前,MCLR/VPP 的电压必须升 高到特定值,以便进入编程模式。 PICmicro® 单片机的晶体模式不用考虑这一问题,因为在代码 执行前振荡器上电延迟定时器要等候 1024 个振荡周期。 RC 振荡器不需要上电延迟时间,因此 不使用上电延迟定时器。编程器必须在 RC 振荡器振荡 4 次之前,令 MCLR/VPP 达到进入编程模 式所需的电压。如果 RC 振荡器振荡了 4 次或 4 次以上,程序计数器将会增加到一个不确定的值 X。如果这时器件进入编程模式,程序计数器不为零,编程器将从偏移量 X 开始烧写代码。有一 些方法可以弥补 MCLR/VPP 的低上升速率问题。第一种方法是先不接 RC 振荡器的电阻,对器件 编程后再接入 R 电阻。另一种方法是在编程时用编程接口将 PICmicro® 的 OSC1 引脚短接到地, 这样在编程期间便不会产生振荡。 剩下的就是如何将应用电路与编程器相连。这在很大程度上取决于编程环境,将在相应章节中加 以讨论。 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-5 页 PICmicro 中档单片机系列 28.4 28.5 编程器 另一个需要考虑的是编程器。 PIC16CXXX 系列单片机只支持串行编程,因此所有支持该系列器 件的编程器都支持 ICSP。编程器的一个问题是它的驱动能力。前面已经讨论过,编程器必须提 供 ICSP 信号所需的上升速率和驱动应用电路所需的电流。图 28-2 给出了一个驱动板的例子,该 原理图中没有包含 RB6 和 RB7 的缓冲电路。建议你针对具体应用,考虑是否需要缓冲。编程器 的另一个问题是:应该在哪些 VDD 电压值下校验 PICmicro® 单片机程序存储器中的内容。例如, PRO MATE® II 可在指定器件的最小和最大 VDD 工作电压下校验程序存储器内容,因而被认为是 品质优良的生产编程器。而 PICSTART® Plus 只能在 5V 电压下进行校验,因此只能用于样机编 程。 Microchip 编程规范要求:必须在应用电路的最小和最大 VDD 工作电压下对程序存储器的内 容进行校验,这样可确保单片机能适应 VDD 电压的变化。 另外还可以使用几家第三方的编程器。使用时必须根据这些编程器的特点及其是否适用于编程环 境来加以选择。在 Microchip Development Systems Ordering Guide (DS30177) 里,提供了关于 Microchip 所有开发工具的详细信息。 Microchip Third Party Guide (DS00104) 提供了所有第三 方工具开发工具提供商的信息。选择编程器时,可以查阅这两份参考资料。包括并行或串行 PC 主机连接、独立编程以及单个或量产编程器等许多选择。第三方开发工具提供商包括 Advanced Transdata Corporation、BP Microsystems、Data I/O、Emulation Technology 和 Logical Devices 等。 编程环境 编程环境决定了选择哪种类型的编程器、编程器电缆长度及其应用电路接口。有些编程器适用于 手工装配线,而另一些编程器可能适用于自动装配线。有时可能需要量产编程器,实现对多个系 统同时编程。 编程器和应用电路之间的物理距离会影响每个编程信号的负载电容,这会直接影响到对信号上升 速率和电流的驱动能力。编程电缆应尽可能地短,并且要正确地进行端接和屏蔽,否则信号反射 和噪声会破坏编程信号。 最后,编程器的应用电路接口取决于装配线和应用电路本身的尺寸。用一个简单的插座就可以将 应用电路和编程器连接起来, 这种方法适用于手工装配线,技术员可通过插座将编程器电缆插在 电路板上。另一种方法是使用弹簧测试针(通常称为 pogo pin)。应用电路的每个编程信号都在 板上有相应的焊盘测试点。此外还需有一个带有弹簧针的夹具,夹具的探针与应用电路板上焊盘 测试点的位置互相吻合。将夹具和应用电路板相互对齐时,弹簧针即与焊盘点相连。这种方法适 合于自动装配线。 在考虑了应用电路、编程器和编程环境的各种问题之后,就可以建立一条基于 ICSP 的高质量和 可靠生产线了。 DS31028A_CN 第 28-6 页  2004 Microchip Technology Inc. 第 28 章 ICSP 28.6 其它优点 ICSPTM 还具有其它一些优点,例如标定和产品序列化。 如果程序存储器容量足够,可以将标定 数据放在程序存储器中而不是外部串行 EEPROM 中,这可以降低成本和提高可靠性。例如,如 果应用系统使用了热敏电阻,对于不同的系统来说,热敏电阻的值不同。可以将标定数据以表格 的形式存储在程序存储器中,以便单片机对外部元件的容差作补偿 (用软件实现)。采用软件标 定技术,可以在不影响系统性能的情况下降低系统的成本。但是这与 ICSPTM 有什么关系呢 ? 假 设完成标定功能的固件已经烧写到 PICmicro® 单片机中。标定数据通过标定夹具传送。当传送完 所有的标定数据时,夹具将单片机置于编程模式,并将标定数据编程到 PICmicro® 单片机中。应 用笔记 AN656, In-Circuit Serial ProgrammingTM of Calibration Parameters Using a PICmicro® Microcontroller 介绍了如何实现这种标定数据编程。 ICSPTM 的另一个优点是可以实现产品序列化。每个应用产品都可以烧写进一个唯一的或随机的 序列号。具有唯一序列号的这种应用适用于安全系统。一般的系统使用 DIP 开关来设定序列号。 而现在通过 ICSPTM 可以将序列号烧写到程序存储器中,这样可以降低整个系统的成本并且减小 篡改序列号的可能性。 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-7 页 PICmicro 中档单片机系列 28.7 PICmicro® OTP 型单片机的现场编程 OTP 型器件通常不能再编程,但是 PICmicro® 单片机架构具有这样的灵活性,只要单片机的程序 存储器容量至少是固件的两倍,而且单片机没有代码保护。如果目标单片机没有足够的程序存储 器空间, 可以换用程序存储器容量更大的单片机, Microchip 提供了具有相同外设功能而程序存 储器容量不同 (从 0.5K 到 8K)的一系列单片机。 PIC16CXXX 单片机有两个矢量,即复位矢量和中断矢量,其地址分别为 0x0000 和 0x0004。当 PICmicro® 单片机复位时,将从 0x0000 开始执行代码;而中断响应时,将从 0x0004 开始执行代 码。例 28-2 的第一列是第一次写入 PICmicro® 单片机的代码。例 28-2 的第二列是第二次写入 PICmicro® 单片机的代码。 例 28-2 表明,如果对PICmicro® 单片机进行第二次编程,存储单元0x0000的内容由goto Main (0x2808) 变成了全 0,这正好是一个空操作。该存储单元不能被再次写入新操作码 (0x2860) ,因 为对 OTP 型器件编程时,只能将 1 变为 0,而不能将 0 变成 1。下一个存储单元 0x0001 由原来 的空白 ( 即全 1) 变成 goto Main (0x2860)。当发生复位时,PICmicro® 单片机执行地址 0x0000 中的空操作,然后执行 goto Main 指令跳转到主程序。在 该例中, 0x005A 之后的所有存储单 元在初始编程时都是空白的,因而对 PICmicro® 单片机 进行第二次编程时,可以将代码写入这些 单元。对中断向量 (0x0004)的第二次编程与上述类似。 对于程序存储器超过 2K 字的 PICmicro® 单片机,这种方法要略做改动。由于对超过 2K 字时, 存在程序存储器分页的问题。 goto Main 和 goto ISR 指令要按照例 28-1 所示作改动。 例 28-1: 程序存储器分页 movlw movwf PCLATH goto Main movlw movwf PCLATH goto ISR 这样一次可编程(OTP)型 PICmicro® 单片机便具有了类似 EEPROM 或闪存程序存储器的特性。 DS31028A_CN 第 28-8 页  2004 Microchip Technology Inc. 第 28 章 ICSP 例 28-2: 两次编程的列表文件 First Program CycleSecond Program Cycle _________________________________________________________________________________________ ProgOpcodeAssembly |ProgOpcodeAssembly Mem Instruction |MemInstruction ----------------------------------------------------------------------------------------- 00002808goto Main;Main loop |00000000nop 00013FFF; at 0x0008 |00012860goto Main; Main now 00023FFF |00023FFF; at 0x0060 00033FFF |00033FFF 00042848goto ISR; ISR at |00040000nop 00053FFF; 0x0048 |000528A8goto ISR; ISR now at 00063FFF |00063FFF; 0x00A8 00073FFF |00073FFF 00081683bsf STATUS,RP0 |00081683bsf STATUS,RP0 00093007movlw 0x07 |00093007movlw 0x07 000A009Fmovwf ADCON1 |000A009Fmovwf ADCON1 . |. . |. . |. 00481C0Cbtfss PIR1,RBIF |00481C0Cbtfss PIR1,RBIF 0049284Egoto EndISR |0049284Egoto EndISR 004A1806btfsc PORTB,0 |004A1806btfsc PORTB,0 . |. . |. . |. 00603FFF |00601683bsf STATUS,RP0 00613FFF |00613005movlw 0x05 00623FFF |0062009Fmovwf ADCON1 . |. . |. . |. 00A83FFF |00A81C0Cbtfss PIR1,RBIF 00A93FFF |00A928AEgoto EndISR 00AA3FFF |00AA1806btfsc PORTB,0 . |. . |. . |. ----------------------------------------------------------------------------------------- 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-9 页 PICmicro 中档单片机系列 28.8 FLASH 型 PICmicro® 单片机的现场编程 因为 FLASH 型 PICmicro® 单片机 内置了 ICSPTM 接口电路,所以对其很容易实现现场再编程。 即使有代码保护,也可以对 FLASH 单片机进行再编程。由便携式电脑和编程器就可构成一个 ICSPTM 编程平台。技术人员将 ICSP 接口电缆插到应用电路上,通过运行编程软件就可将新固 件下载到 FLASH 型 PICmicro® 单片机中。 应用系统的另一个问题是如何升级和保证无故障 (bug)运行。当希望给应用系统增加新功能时,通过 ICSP,可以将系统现有的程序现场升级到 最新固件版本。 DS31028A_CN 第 28-10 页  2004 Microchip Technology Inc. DS31028A_CN 第 28-11 页  2004 Microchip Technology Inc. 2 3 VDD U1A 11 R5 1 100 4 TLE2144A C3 0.1 +15V 6 5 VPP JP1 1 2 3 4 5 插座 JP2 1 2 插座 U1B R10 7 100 TLE2144A VPP VDD RB7 RB6 +15V ICSP 28 U1D 13 R6 14 12 100 TLE2144A C7 0.001 1 2 Q1 2N2907 3 R7 100 +8V 1 2 Q3 2N2222 3 R1 5.1k U1C 9 R9 8 10 100 TLE2144A C8 0.001 1 2 Q2 2N2907 3 R8 100 +15V 1 2 Q4 2N2222 3 R2 5.1k R3 PVDD 1 R4 PVPP 1 PVDD C6 0.1 14 1 RB6 2 U2A 74HC126 3 PRB6 7 U2B 4 74HC126 5 6 10 U2C 74HC126 9 8 13 U2D 74HC126 12 11 PVPP PVDD RB7 PRB6 JP3 1 2 3 4 5 插座 +15V VR1 LM7808 1 VIN VOUT 2 C5 0.1 GND 3 +8V C9 C4 100 0.1 注: 电阻单位是欧姆, 电容单位是微法。 驱动电路板原理图示例 图 28-2: 第 28 章 ICSP PICmicro 中档单片机系列 28.9 设计技巧 问 1: 在线串行编程时 , 为什么整个程序在程序存储器中的位置发生了偏移? 答 1: 如果 MCLR 引脚的电压上升速率不够快,器件电压在正常工作电压范围内,则程序计数器 (PC) 的值就会增加 (即 PC 值不再是零)。此时 PC 指向的具体位置,由在进入编程模式前已运行的 时钟次数决定。 问 2: 答 2: 通过自己设计的插座将 PRO MATE II 编程信号与应用电路板相连时,为什么有时 进行 ICSPTM 编程时 , 会出现编程错误? 编程电压或时序可能不对,这可能是由于: • 应用板电路 • 从编程器到目标电路板的电缆长度 • VDD 上的大电容影响了电压或时序 DS31028A_CN 第 28-12 页  2004 Microchip Technology Inc. 第 28 章 ICSP 28.10 相关应用笔记 本部分列出了与本章内容相关的应用笔记。这些应用笔记并非都是专门针对中档单片机系列而写 的 (即有些针对低档系列,有些针对高档系列),但是其概念是相近的,通过适当修改并受到一 定的限制即可使用。目前与在线串行编程相关的应用笔记有: 标题 In-Circuit Serial ProgrammingTM of Calibration Parameters using a PICmicro® In-Circuit Serial ProgrammingTM Guide 应用笔记 # AN656 DS30277 28 ICSP  2004 Microchip Technology Inc. DS31028A_CN 第 28-13 页 PICmicro 中档单片机系列 28.11 版本历史 版本 A 这是描述在线串行编程的初始发行版。 DS31028A_CN 第 28-14 页  2004 Microchip Technology Inc.

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