1 引言
火灾报警系统一般由火灾报警控制器、探测器、手动报警按钮、输入输出模块等组成,系统中大量使用各种单片机,各种单片机都需要烧录程序。对单片机的程序烧录传统上是采用并行烧录器。这种方法要求先把芯片放在烧录器的夹座上进行烧录,然后取下芯片再安装到电路板上。如果要进行反复烧录,则往往要在电路板上为芯片配一个DIP或PLCC的底座。显然,这要占用比较大的面积,而且插拔也不方便。对于贴片封装,比如QFP,焊到电路板上之后,如果发现程序有误则应当重新烧录,取下来却不是件容易的事情,往往只能报废。由于以上种种原因,各种在线烧录方式得到广泛的应用。
2 ISP、IAP烧录方式简介
2.1 ISP
ISP的全名为In System Programming,即在系统编程。通俗的讲就是编程时不需要将微控制器MCU从系统目标系统中移出,结合系统中一系列内部的硬件资源,可实现通过串口对微控制器进行编程。
2.2 IAP
IAP的全名为In Application Programing,即在应用编程,即程序可以在运行过程中修改自己的代码。许多支持IAP功能的单片机把某一部分FLASH作为EEPROM使用,这样做的危险是在修改过程中,误操作有可能改写自身代码,有一定的风险,在火灾报警系统中不建议使用。
3 ISP编程与传统的编程器比较的优点
(1)在系统编程不需要移出微控制器。
(2)去掉CPU插座,芯片直接焊接在印制板上,可靠性大大提高。
(3)不需并行编程器,仅需用较少的口线,例如串口TXD和RXD,结合上位机软件免费就可实现PC对其编程,硬件电路非常简单。
4 几种不同单片机ISP介绍
4.1 MCS51系列单片机ISP MCS51系列单片机是应用非常广泛的微处理器,在全球有很多衍生产品。最初的MCS51单片机没有内置Flash,必须通过外置EPROM来存放程序。上世纪九十年代出现以Atmel公司的AT89C51为代表的内置FLASH的单片机,大大减少了外围电路,降低了产品成本,为MCS51单片机焕发出了新的生机。这种单片机依然采用编程器的方式进行程序烧录。
随着元器件小型化的发展,需要使用封装面积更小的表面贴器件,然而表面贴器件不适合编程器编程,于是以SST89E516RD2、P89V51RD2为代表具有ISP功能的单片机应运而生。下面以P89V51RD2为例进行介绍。
P89V51RD2器件含有2个内部Flash存储模块,可实现对器件在系统编程(ISP)和在应用中编程(IAP)。模块0有64K字节,用来存放用户代码;模块1有8K字节,用来存放Philips提供的ISP/IAP程序,在出厂时,该程序已被固化到模块1中。在使用P89V51RD2时,只需要将用户代码写入模块0中即可。
在系统编程特性包含了一系列内部的硬件资源,与内部固件的结合可实现通过串口对P89V51RD2的远程编程。固件由PHILIPS提供并嵌入到每一个芯片当中。ISP功能使用芯片的5个管脚(Vdd、Vss、TxD、RxD、RST),只需要一个小的连接器就可实现通过外部电路使用该特性的应用接口。
用户在搭建硬件电路时,需要引出串口以便和PC机通信,如图1所示。在搭建好硬件电路后,将串口和PC机相连,上电后就可使用ISP功能下载程序了。
4.2 ATmega系列单片机ISP原理
Atmega系列单片机的ISP程序固化在BOOTROM中,不能够修改。Atmel公司的单片机ISP方式采用6线进行编程,分别是电源、地、MISO数据输入、MOSI(数据输出)、RESET(复位)、SCK(时钟)。
向ATmega48串行写入数据时,数据在SCK的上升沿得以锁存。从ATmega48读取数据时,数据在SCK的下降沿输出。在串行编程模式下对ATmega48进行编程及校验时,应遵循以下的步骤:
(1)上电顺序:在RESET及SCK为“0”时,向VCC及GND供电。在一些系统中,编程器不能保证在上电时SCK保持为低。在这种情况下,SCK拉低之后应在RESET加一正脉冲,而且这个脉冲至少要维持2个CPU时钟周期。
(2)上电之后等待至少20ms,然后向MOSI引脚输入串行编程使能指令以使能串行编程。
(3)通信不同步将造成串行编程指令不工作。同步之后,在发送编程使能指令的第三个字节时,第二个字节的内容0x53将被反馈回来。不论反馈的内容正确与否,指令的4个字节必须全部传输。如果0x53未被反馈,则需要向RESET提供一个正脉冲以开始新的编程使能指令。
(4)Flash的编程以一次一页的方式进行。在执行加载程序存储页指令时,通过6LSB的地址信息,数据以字节为单位加载到存储页。
(5)提供了地址及数据信息之后,适合的写指令将以字节为单位对EEPROM编程。EEPROM存储单元总是在写入新数据之前自动擦除。
(6)可通过读指令来校验任何一个存储单元的内容。数据从串行输出口MISO输出。
(7)编程结束后可以将RESET拉高开始正常操作。
4.3 PIC系列单片机ISP原理
PIC系列单片机支持ISP功能,如图2所示,需要用到电源分别是电源、地、RB7数据、RESET(复位)、RB6(时钟)。与MEGA系列单片机不同,少了一个数据线,只有一个数据线,因此这个数据线是双向的,因此在设计电路时应当把这个数据线设计为输入输出方式。
5 ISP技术在异地软件升级的应用
火灾报警控制器大都采用了MCS51系列单片机,可采用计算机下载程序,但远程升级比较困难。笔者设计了一种适合远程下载的编程模块,可升级各种具有ISP功能的MCS51单片机,使用前将程序导入升级模块,然后就可以带着它去用户现场升级程序了,非常方便。
6 ISP在大规模生产中的应用
目前,国内火灾探测器、报警按钮、模块等产品大多采用ATMEL、PIC、EM系列单片机,若通过传统方式编程,每个芯片编程的时间最少30秒,生产效率极低。采用ISP编程方式自制测试针床,把编程和线路板测试结合起来,使编程、测试的总时间缩短到10秒,可大大提高生产效率。