《在线串行编程_cn.pdf》由会员分享,可在线阅读,更多相关《在线串行编程_cn.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 2004 Microchip Technology Inc.DS31028A_CN 第 28-1 页ICSP28第第 28 章章 在线串行编程在线串行编程目录目录本章包括下面一些主要内容:28.1简介.28-228.2进入在线串行编程模式.28-328.3应用电路.28-428.4编程器.28-628.5编程环境.28-628.6其它优点.28-728.7PICmicro OTP 型单片机的现场编程.28-828.8FLASH 型 PICmicro 单片机的现场编程.28-1028.9设计技巧.28-1228.10 相关应用笔记.28-1328.11 版本历史.28-14PICmicro 中
2、档单片机系列中档单片机系列DS31028A_CN 第 28-2 页 2004 Microchip Technology Inc.28.1 简介简介所有中档系列单片机都可以在最终应用电路中在线串行编程(In-Circuit Serial Programming,ICSP)。ICSP 只需使用五根线,其中时钟和数据线各 1 根,另外三根线作为电源、地和编程电压线。在线串行编程有利于降低库存开销和加快产品上市。在你的产品中嵌入空白的 Microchip单片机,作为一个备用的设计。当接到订单后,便可以在很短的时间内用最新版本的固件对这些产品进行编程、测试,然后交货。这种方法也减少了旧固件版本引起的报废
3、库存。这种生产方法有利于快速根据用户要求定制产品。大部分人认为只能在装配线上通过 ICSP 对 PICmicro OTP 单片机进行一次编程,这是不正确的。实际上,可以采用一定的方法对 OTP 器件进行多次编程,这与固件大小有关。下文将对这个方法进行介绍,该方法提供了一种类似于 EEPROM 或闪存存储器的现场升级固件的手段。2004 Microchip Technology Inc.DS31028A_CN 第 28-3 页第第 28 章章 ICSPICSP2828.2 进入在线串行编程模式进入在线串行编程模式通过保持 RB6 和 RB7 引脚为低电平,VDD为编程电压,并将 MCLR(VPP
4、)引脚电压从 VIL 增加到 VIHH(见编程规范),器件便进入编程/校验模式。此时,RB6 为编程时钟线,RB7 为编程数据线。在该模式下,RB6 和 RB7 都是施密特触发器输入,当 RB7 驱动数据时,它是 CMOS 输出驱动。复位后,为使器件进入编程/校验模式,程序计数器(PC)指向 00h 地址。然后可向器件发送一个 6 位的命令,根据这一命令是装入还是读出,14 位编程数据将被提供给器件或是从器件中读出。有关串行编程的完整细节,请参考器件的编程规范。在线串行编程模式下,看门狗定时器电路不能产生器件复位。PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-
5、4 页 2004 Microchip Technology Inc.28.3 应用电路应用电路应用电路必须设计为使所有编程信号直接连接到 PICmicro单片机的相关引脚上。图 28-1 给出了一个典型的 ICSP 连接电路。应用电路必须解决以下问题:MCLR/VPP引脚与电路其它部分相隔离 RB6 和 RB7 的负载 VDD、MCLR/VPP、RB6 和 RB7 引脚的电容问题 VDD的最小和最大工作电压 PICmicro单片机的振荡器 与编程器的接口MCLR/VPP引脚通常与 RC 电路相连,上拉电阻接 VDD,电容接地。VPP电压必须与电路的其它部分隔离(大多数情况下电阻不起隔离电路的作
6、用),根据电容器的大小,RC 电路可能影响 ICSP的操作。因此当 RC 电路与 MCLR/VPP相连时,推荐采用图 28-1 所示的电路,其中使用了肖特基型二极管。MCLR/VPP的另一个问题是当对 PICmicro 单片机编程时,该引脚将被同时驱动至大约 13V 和地,因此应用电路必须与编程器提供的编程电压隔离。RB6 和 RB7 引脚用于 PICmicro单片机的串行编程。RB6 是时钟线,RB7 是数据线。RB6 由编程器驱动,RB7 是双向引脚,编程时由编程器驱动,校验时由 PICmicro单片机驱动。这两个引脚必须与应用电路的其它部分隔离,从而在编程时不会对信号产生影响。将 RB6
7、 和 RB7 与电路其它部分隔离时必须考虑编程器的输出阻抗。隔离电路必须使 RB6 能够作为 PICmicro单片机的输入,而 RB7 能够作为双向引脚(PICmicro单片机和编程器都能驱动它)。例如,PRO MATE II 的输出阻抗为 1k。如果设计允许,应用电路不要使用这些引脚。对于大多数应用,如果需要使用这些引脚,设计人员可以考虑信号是否需要缓冲。设计人员必须考虑 RB6 和RB7 连接哪种类型的电路,然后决定如何隔离这些引脚。图 28-1 没有给出应用电路中隔离 RB6和 RB7 的电路,因为隔离电路的设计与具体的应用有很大关系。为简化接口设计,下面列出在应用中使用这些 I/O 引
8、脚的最佳方法(按最佳顺序排列):1.将 RB6/RB7 专用于 ICSPTM。2.这些端口作为输出时,具有极轻的负载。3.采用隔离电路,使信号满足 ICSP 规范。图图 28-1:在线串行编程(:在线串行编程(ICSPTM)的典型应用电路)的典型应用电路 应用应用 PCBPIC16CXXXMCLR/VPPVDDVSSRB7RB6VDDVDD 到应用电路隔离电路ICSPTM连接器 2004 Microchip Technology Inc.DS31028A_CN 第 28-5 页第第 28 章章 ICSPICSP28编程引脚的总电容将影响编程器输出信号的上升速率。典型电路中,一般在 VDD和地之
9、间接有几百微法的滤波电容以抑制噪声和电源电压波动。但是这种电容需要编程器必须具有相当强的驱动能力,才能满足 VDD上升速率的要求。大多数编程器只能对 PICmicro单片机进行编程,而不能驱动整个应用电路。一种解决方案是在编程器和应用电路之间加一块驱动电路板。该驱动电路板有独立的电源,可以满足 VPP和 VDD引脚电压上升速率的要求,并可为整个应用电路供电。RB6 和 RB7 是否需要缓冲取决于具体的应用。作为示例,图 28-2 给出了一个驱动电路板原理图。Microchip 编程规范规定器件应在 5V 电压下编程。如果应用电路只能在 3V 电压下工作,那么需要一些特殊的措施。例如在编程时将
10、PICmicro单片机与其它应用电路完全隔离。另一个问题是,必须在应用电路的最小和最大工作电压下对器件进行校验。例如,在一个使用三个 1.5V 电池供电的系统中,其工作电压范围是 2.7V 到 4.5V。而编程器必须在 5V 电压下对器件进行编程,并且必须在 2.7V 和 4.5V 电压下对程序存储器进行校验,以确保编程正确。这样可以保证PICmicro单片机在整个工作电压范围内都能正常工作。最后一个问题是关于应用电路中的振荡器。在单片机执行任何代码前,MCLR/VPP 的电压必须升高到特定值,以便进入编程模式。PICmicro单片机的晶体模式不用考虑这一问题,因为在代码执行前振荡器上电延迟定
11、时器要等候 1024 个振荡周期。RC 振荡器不需要上电延迟时间,因此不使用上电延迟定时器。编程器必须在 RC 振荡器振荡 4 次之前,令 MCLR/VPP 达到进入编程模式所需的电压。如果 RC 振荡器振荡了 4 次或 4 次以上,程序计数器将会增加到一个不确定的值X。如果这时器件进入编程模式,程序计数器不为零,编程器将从偏移量 X 开始烧写代码。有一些方法可以弥补 MCLR/VPP的低上升速率问题。第一种方法是先不接 RC 振荡器的电阻,对器件编程后再接入 R 电阻。另一种方法是在编程时用编程接口将 PICmicro的 OSC1 引脚短接到地,这样在编程期间便不会产生振荡。剩下的就是如何将
12、应用电路与编程器相连。这在很大程度上取决于编程环境,将在相应章节中加以讨论。注:注:必须在用户的应用电路中对该驱动电路板进行测试,以确定编程信号时序对应用电路的影响。如果应用电路的 VDD、VPP、RB6 或 RB7 引脚负载过重,电路可能需要做出一些更改。PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-6 页 2004 Microchip Technology Inc.28.4 编程器编程器另一个需要考虑的是编程器。PIC16CXXX 系列单片机只支持串行编程,因此所有支持该系列器件的编程器都支持 ICSP。编程器的一个问题是它的驱动能力。前面已经讨论过,编程
13、器必须提供 ICSP 信号所需的上升速率和驱动应用电路所需的电流。图 28-2 给出了一个驱动板的例子,该原理图中没有包含 RB6 和 RB7 的缓冲电路。建议你针对具体应用,考虑是否需要缓冲。编程器的另一个问题是:应该在哪些 VDD电压值下校验 PICmicro单片机程序存储器中的内容。例如,PRO MATE II 可在指定器件的最小和最大 VDD工作电压下校验程序存储器内容,因而被认为是品质优良的生产编程器。而 PICSTART Plus 只能在 5V 电压下进行校验,因此只能用于样机编程。Microchip 编程规范要求:必须在应用电路的最小和最大 VDD工作电压下对程序存储器的内容进行
14、校验,这样可确保单片机能适应 VDD电压的变化。另外还可以使用几家第三方的编程器。使用时必须根据这些编程器的特点及其是否适用于编程环境来加以选择。在 Microchip Development Systems Ordering Guide(DS30177)里,提供了关于Microchip 所有开发工具的详细信息。Microchip Third Party Guide(DS00104)提供了所有第三方工具开发工具提供商的信息。选择编程器时,可以查阅这两份参考资料。包括并行或串行 PC主机连接、独立编程以及单个或量产编程器等许多选择。第三方开发工具提供商包括 AdvancedTransdata C
15、orporation、BP Microsystems、Data I/O、Emulation Technology 和Logical Devices等。28.5 编程环境编程环境编程环境决定了选择哪种类型的编程器、编程器电缆长度及其应用电路接口。有些编程器适用于手工装配线,而另一些编程器可能适用于自动装配线。有时可能需要量产编程器,实现对多个系统同时编程。编程器和应用电路之间的物理距离会影响每个编程信号的负载电容,这会直接影响到对信号上升速率和电流的驱动能力。编程电缆应尽可能地短,并且要正确地进行端接和屏蔽,否则信号反射和噪声会破坏编程信号。最后,编程器的应用电路接口取决于装配线和应用电路本身的
16、尺寸。用一个简单的插座就可以将应用电路和编程器连接起来,这种方法适用于手工装配线,技术员可通过插座将编程器电缆插在电路板上。另一种方法是使用弹簧测试针(通常称为 pogo pin)。应用电路的每个编程信号都在板上有相应的焊盘测试点。此外还需有一个带有弹簧针的夹具,夹具的探针与应用电路板上焊盘测试点的位置互相吻合。将夹具和应用电路板相互对齐时,弹簧针即与焊盘点相连。这种方法适合于自动装配线。在考虑了应用电路、编程器和编程环境的各种问题之后,就可以建立一条基于 ICSP 的高质量和可靠生产线了。2004 Microchip Technology Inc.DS31028A_CN 第 28-7 页第第
17、 28 章章 ICSPICSP2828.6 其它优点其它优点ICSPTM还具有其它一些优点,例如标定和产品序列化。如果程序存储器容量足够,可以将标定数据放在程序存储器中而不是外部串行 EEPROM 中,这可以降低成本和提高可靠性。例如,如果应用系统使用了热敏电阻,对于不同的系统来说,热敏电阻的值不同。可以将标定数据以表格的形式存储在程序存储器中,以便单片机对外部元件的容差作补偿(用软件实现)。采用软件标定技术,可以在不影响系统性能的情况下降低系统的成本。但是这与 ICSPTM有什么关系呢?假设完成标定功能的固件已经烧写到 PICmicro单片机中。标定数据通过标定夹具传送。当传送完所有的标定数
18、据时,夹具将单片机置于编程模式,并将标定数据编程到 PICmicro单片机中。应用笔记 AN656,In-Circuit Serial ProgrammingTM of Calibration Parameters Using a PICmicroMicrocontroller 介绍了如何实现这种标定数据编程。ICSPTM 的另一个优点是可以实现产品序列化。每个应用产品都可以烧写进一个唯一的或随机的序列号。具有唯一序列号的这种应用适用于安全系统。一般的系统使用 DIP 开关来设定序列号。而现在通过 ICSPTM可以将序列号烧写到程序存储器中,这样可以降低整个系统的成本并且减小篡改序列号的可能性
19、。PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-8 页 2004 Microchip Technology Inc.28.7 PICmicro OTP 型单片机的现场编程型单片机的现场编程OTP 型器件通常不能再编程,但是 PICmicro 单片机架构具有这样的灵活性,只要单片机的程序存储器容量至少是固件的两倍,而且单片机没有代码保护。如果目标单片机没有足够的程序存储器空间,可以换用程序存储器容量更大的单片机,Microchip 提供了具有相同外设功能而程序存储器容量不同(从 0.5K 到 8K)的一系列单片机。PIC16CXXX 单片机有两个矢量,即复位矢量
20、和中断矢量,其地址分别为 0 x0000 和 0 x0004。当PICmicro单片机复位时,将从 0 x0000 开始执行代码;而中断响应时,将从 0 x0004 开始执行代码。例 28-2 的第一列是第一次写入 PICmicro单片机的代码。例 28-2 的第二列是第二次写入PICmicro 单片机的代码。例 28-2 表明,如果对PICmicro 单片机进行第二次编程,存储单元0 x0000的内容由goto Main(0 x2808)变成了全 0,这正好是一个空操作。该存储单元不能被再次写入新操作码(0 x2860),因为对 OTP 型器件编程时,只能将 1 变为 0,而不能将 0 变成
21、 1。下一个存储单元 0 x0001 由原来的空白(即全 1)变成 goto Main(0 x2860)。当发生复位时,PICmicro单片机执行地址 0 x0000中的空操作,然后执行 goto Main 指令跳转到主程序。在 该例中,0 x005A 之后的所有存储单元在初始编程时都是空白的,因而对 PICmicro单片机 进行第二次编程时,可以将代码写入这些单元。对中断向量(0 x0004)的第二次编程与上述类似。对于程序存储器超过 2K 字的 PICmicro单片机,这种方法要略做改动。由于对超过 2K 字时,存在程序存储器分页的问题。goto Main 和 goto ISR 指令要按照
22、例 28-1 所示作改动。例例 28-1:程序存储器分页:程序存储器分页 这样一次可编程(OTP)型PICmicro单片机便具有了类似EEPROM或闪存程序存储器的特性。movlw movlw movwf PCLATHmovwf PCLATHgoto Maingoto ISR 2004 Microchip Technology Inc.DS31028A_CN 第 28-9 页第第 28 章章 ICSPICSP28例例 28-2:两次编程的列表文件:两次编程的列表文件 First Program CycleSecond Program Cycle_ProgOpcodeAssembly|ProgO
23、pcodeAssemblyMemInstruction|MemInstruction-00002808goto Main;Main loop|00000000nop00013FFF;at 0 x0008|00012860goto Main;Main now00023FFF|00023FFF;at 0 x006000033FFF|00033FFF00042848goto ISR;ISR at|00040000nop00053FFF;0 x0048|000528A8goto ISR;ISR now at00063FFF|00063FFF;0 x00A800073FFF|00073FFF000816
24、83bsf STATUS,RP0|00081683bsf STATUS,RP000093007movlw 0 x07|00093007movlw 0 x07000A009Fmovwf ADCON1|000A009Fmovwf ADCON1.|.|.|.00481C0Cbtfss PIR1,RBIF|00481C0Cbtfss PIR1,RBIF0049284Egoto EndISR|0049284Egoto EndISR004A1806btfsc PORTB,0|004A1806btfsc PORTB,0.|.|.|.00603FFF|00601683bsf STATUS,RP000613FF
25、F|00613005movlw 0 x0500623FFF|0062009Fmovwf ADCON1 .|.|.|.00A83FFF|00A81C0Cbtfss PIR1,RBIF00A93FFF|00A928AEgoto EndISR00AA3FFF|00AA1806btfsc PORTB,0.|.|.|.-PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-10 页 2004 Microchip Technology Inc.28.8 FLASH 型型 PICmicro单片机的现场编程单片机的现场编程因为 FLASH 型 PICmicro单片机 内置了 ICSP
26、TM接口电路,所以对其很容易实现现场再编程。即使有代码保护,也可以对 FLASH 单片机进行再编程。由便携式电脑和编程器就可构成一个ICSPTM 编程平台。技术人员将 ICSP 接口电缆插到应用电路上,通过运行编程软件就可将新固件下载到 FLASH 型 PICmicro单片机中。应用系统的另一个问题是如何升级和保证无故障(bug)运行。当希望给应用系统增加新功能时,通过 ICSP,可以将系统现有的程序现场升级到最新固件版本。2004 Microchip Technology Inc.DS31028A_CN 第 28-11 页第第 28 章章 ICSPICSP28图图 28-2:驱动电路板原理图
27、示例:驱动电路板原理图示例 C60.1PRB6PVDD 231147U2A74HC126 564U2B74HC126R31RB6+8VPVDDR6100R71003 21Q12N29071 23Q32N2222 12 1314U1DTLE2144AR5100C70.001VDD 3 2 1411U1ATLE2144AC30.1+15VR15.1kR81003 21Q22N2907R41PVPP 9810U2C74HC126 121113U2D74HC126RB7PRB6PVPPPVDD12345JP3插座+15VR25.1kR91001 23Q42N2222 10 9 8U1CTLE2144A
28、R10100C80.001RB7VPPVPPVDD12345JP1插座 5 6 7U1BTLE2144ARB6+15V12JP2插座C50.1VIN 1GND3VOUT 2VR1LM7808C9100+15VC40.1+8V注注:电阻单位是欧姆,电容单位是微法。PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-12 页 2004 Microchip Technology Inc.28.9 设计技巧设计技巧问问 1:在线串行编程时在线串行编程时,为什么整个程序在程序存储器中的位置发生了偏移?为什么整个程序在程序存储器中的位置发生了偏移?答答 1:如果 MCLR 引脚
29、的电压上升速率不够快,器件电压在正常工作电压范围内,则程序计数器(PC)的值就会增加(即 PC 值不再是零)。此时 PC 指向的具体位置,由在进入编程模式前已运行的时钟次数决定。问问 2:通过自己设计的插座将通过自己设计的插座将PRO MATE II 编程信号与应用电路板相连时,为什么有时进行编程信号与应用电路板相连时,为什么有时进行ICSPTM编程时编程时,会出现编程错误?会出现编程错误?答答 2:编程电压或时序可能不对,这可能是由于:应用板电路 从编程器到目标电路板的电缆长度 VDD上的大电容影响了电压或时序 2004 Microchip Technology Inc.DS31028A_C
30、N 第 28-13 页第第 28 章章 ICSPICSP2828.10 相关应用笔记相关应用笔记本部分列出了与本章内容相关的应用笔记。这些应用笔记并非都是专门针对中档单片机系列而写的(即有些针对低档系列,有些针对高档系列),但是其概念是相近的,通过适当修改并受到一定的限制即可使用。目前与在线串行编程相关的应用笔记有:标题应用笔记标题应用笔记#In-Circuit Serial ProgrammingTM of Calibration Parameters using a PICmicroAN656In-Circuit Serial ProgrammingTM GuideDS30277PICmicro 中档单片机系列中档单片机系列DS31028A_CN 第 28-14 页 2004 Microchip Technology Inc.28.11 版本历史版本版本历史版本 A 这是描述在线串行编程的初始发行版。