基于单片机ISP技术原理及在线编程器的实现
以ATMEL公司的AT89S51/AT89S52单片机为例,介绍ISP技术原理,及ISP在线编程器的实现方法。
AT89S51/AT89S52单片机的ISP引脚共有4个:RST、MOSI、MISO和SCK。
各引脚的功能如下:RST为在线编程输入控制端,仅在ISP下载过程中保持高电平,在系统正常工作时该引脚为系统复位端,保持低电平状态。MOSI为主机输出/从机输入的数据端,系统正常工作时,该引脚为通用I/OP1.5口线。MISO为主机输入/从机输出的数据端。系统正常工作时,该引脚为通用1/0P1.6口线。SCK为串行编程的时钟端,可实现主、从机时序的同步,该时钟频率不得超过系统时钟的1/16。
系统正常工作时,该引脚为通用I/OPl.7口线。AT89S51/AT89S52单片机的ISP引脚功能如下图所示。
ISP下载是基于串行传输方式,并且符合SPI协议。在SPI协议中,数据的发送和接收是同步进行的,即在同步时钟的作用下,在发送数据的同时也接收数据。
ISP的时序如下图所示。每一字节的数据都是低位在先,高位在后,在串行时钟的作用下逐位传输。在传输过程中,数据是在时钟输入端为高电平时有效,在时钟输入端低电平时更新数据,在编写ISP下载程序时务必注意这一点。
ISP下载功能的指令集如下表所示。
使用上述指令时,需注意以下事项:
1.要进行ISP编程,首先要确保RST引脚为高电平,且该高电平一直持续到整个编程过程结束。
2.ISP编程操作是通过不同的指令实现的,以编程使能命令作为其他命令的前导命令,必须首先执行编程使能命令,再执行其他命令。例如要擦除芯片,首先执行编程使能命令,然后执行芯片擦除命令,这样才能完成操作擦除。
3.各个命令有自己的格式,使用不同命令时,必须严格按照命令的格式进行,例如在芯片擦除命令中,虽然有2个多字节可为任意数据,但也要发送。
4.ISP数据传输符合SPI协议,虽然在发送数据的同时也接收数据,但接收数据的取舍是由用户决定。
5.在ISP编程中尤其是写Flash的过程中,最好不要被意外情况中断,比如断电,或者RST引脚电压变低,这样容易造成芯片内部的Flash永久性损坏。
AT89S51/AT89S52单片机的在线编程(ISP)电路设计如下:计算机并行接口共有25个口线,丰要包括数据端口DO—D7(端口发地址为378H,用于数据输出);状态端口Busy、nAck.PE、Select、nError(端口地址为379H,用于数据输入);控制端口nSelin、nlnit、AnrtoFeed、nStrobe(端口地址为37AH,用于输出控制)。从中选出4个口线来模拟ISP所需的引脚,非常灵活,只需考虑数据的输入、输出方向及操作方便,但要注意同一端口的数据方向必须一致,例如数据端口是8位同时操作的,只能全部作为输入或输出,而不能将一部分作输入,另一端分作输出。电路下图可实现ISP(在系统编程)的功能。
该电路在计算机并行接口部分,用第⑥脚模拟SCK、第⑦脚模拟MOSI,第⑨脚模拟RST、第⑩脚模拟MISO。用第④脚来控制驱动隔离电路SN74AS244的使能端。注意不同端口操作地址不同,这涉及程序的编写。下图中UIB的引脚A2、A3、A4并接是为了增大驱动能力,上拉电阻是为了确保空闲时的电平状态。该电路制作出的实物如右图所示。
不同的在线编程电路对应于不同的硬件电路,在程序实现上也有区别。本文的硬件电路设计完全依照共享软件Easy51Pro来完成设计的,故可上网下载此共享软件来实现在线编程,并目,下载后无须安装即可直接运行该程序以实现ISP(在线编程)的功能。