ICSP(In-Circuit Serial Programming)即在线串行编程,经过坚持RB6和RB7引脚为低电平,VDD 为编程电压,并将MCLR(VPP)引脚电压从VIL增加到VIHH,器材便进入编程/校验形式。此刻,RB6为编程时钟线,RB7为编程数据线。在该形式下,RB6和RB7都是施密特触发器输入,当RB7驱动数据时,它是CMOS输出驱动。
复位后,为使器材进入编程/校验形式,程序计数器(PC)指向00h地址。然后可向器材发送一个6位的指令,依据这一指令是装入仍是读出,14位编程数据将被供给给器材或是从器材中读出。可是在线串行编程形式下,看门狗定时器电路不能发生器材复位。
硬件电路
在线串行编程电路应该留意以下问题:
1) MCLR/VPP引脚与电路其它部分相阻隔
一般规划中MCLR/VPP引脚与RC电路相连,上拉电阻接VDD,电容接地。VPP电压有必要与电路的其它部分阻隔,依据电容器的巨细,RC电路或许影响ICSP的操作。因而当RC电路与MCLR/VPP相连时,可以运用了肖特基型二极管来阻隔电路。当对PICmicro ® 单片机编程时,MCLR/VPP引脚将被一起驱动至大约13V,因而运用电路有必要与编程器供给的编程电压阻隔。
2) RB6和RB7的负载
RB6和RB7引脚用于PICmicro®单片机的串行编程。RB6是时钟线,RB7是数据线。RB6由编程器驱动,RB7是双向引脚,编程时由编程器驱动,校验时由PICmicro®单片机驱动。这两个引脚有必要与电路的其它部分阻隔,然后在编程时不会对信号发生影响。将RB6和RB7与电路其它部分阻隔时有必要考虑编程器的输出阻抗。阻隔电路有必要使RB6可以作为PICmicro®单片机的输入,而RB7可以作为双向引脚(PICmicro® 单片机和编程器都能驱动它)。
为简化接口规划,运用microchip引荐的I/O引脚的最佳办法:将RB6/RB7专用于ICSP;这些端口作为输出时,具有极轻的负载;选用阻隔电路,使信号满意ICSP标准。
3) VDD、MCLR/VPP、RB6和RB7引脚的电容问题
编程引脚的总电容将影响编程器输出信号的上升速率。典型电路中,一般在VDD和地之间接有几百微法的滤波电容以按捺噪声和电源电压动摇。可是这种电容需求编程器有必要具有适当强的驱动才干,才干满意VDD上升速率的要求。大多数编程器只能对PICmicro®单片机进行编程,而不能驱动整个运用电路。一种解决方案是在编程器和运用电路之间加一块驱动电路板。驱动电路板有独立的电源,应该满意VPP和VDD引脚电压上升速率的要求,并可为整个运用电路供电。RB6和RB7是否需求缓冲取决于详细的运用。
4) VDD的最小和最大作业电压
Microchip 编程标准规则器材应在5V电压下编程。假如运用电路只能在3V电压下作业,那么需求一些特别的办法。例如在编程时将PICmicro®单片机与其它运用电路彻底阻隔。另一个问题是,有必要在运用电路的最小和最大作业电压下对器材进行校验。例如,在一个运用三个1.5V电池供电的体系中,其作业电压规模是2.7V到4.5V。而编程器有必要在5V电压下对器材进行编程,而且有必要在2.7V和4.5V电压下对程序存储器进行校验,以确保编程正确。这样可以确保PICmicro® 单片机在整个作业电压规模内都能正常作业。
5) PICmicro®单片机的振动器
PIC单片机在代码执行前振动器上电推迟定时器要等候1024个振动周期。RC振动器不需求上电推迟时间,因而不运用上电推迟定时器。编程器有必要在RC振动器振动4次之前,令MCLR/VPP到达进入编程形式所需的电压。假如RC振动器振动了4次或4次以上,程序计数器将会增加到一个不确定的值X。假如这时器材进入编程形式,程序计数器不为零,编程器将从偏移量X开端烧写代码。有一些办法可以补偿MCLR/VPP的低上升速率问题。榜首种办法是先不接RC振动器的电阻,对器材编程后再接入R电阻。另一种办法是在编程时用编程接口将 PICmicro® 的OSC1引脚短接到地,这样在编程期间便不会发生振动。
归纳考虑以上状况,运用最简方法完成PIC18F4550的ICSP衔接电路。在电路中,增加了由RD0和RD1口驱动的发光二极管,由此来验证烧写电路是否可以正常作业。
关于ICSP接口与PIKkit™ 3衔接的如下图所示,有必要使PIKkit™ 3与ICSP的引脚对应。
PIC单片机在线串行编程(%&&&&&%SP)的完成