编程技术是通过单片机的接口对其内部的Flash存储器进行编程,已经编程的器件可以通过该技术擦除芯片或者再次编程,ISP技术给开发者或者系统维护人员带来极大的方便。继SST公司推出具备ISP功能的Flash Flex51系列微控制器之后,Philips、Winbond、LG、Atmel、SyncMOS等公司相继推出具备ISP功能的51系列微控制器。其中,SyncMOS公司开发的具备ISP功能的单片机使用8052内核,以其扩展的多项功能、更多外部接口、合理的价格和良好的技术支持而得到广泛的使用。
1 SM5964的主要特点
与标准80C52相比,SM5964具有以下特点:
◆ 编程电压为5 V;
◆ 集成了64 KB片内Flash存储器;
◆ 实现ISP功能下载程序空间可设置为N×200H(N=0~8);
◆ 具有256字节的片内RAM和768字节的片内扩展RAM;
◆ 对PLCC和QFP封装型号增加了P4口,即P4.0~P4.3;
◆ 内部5通道的SPWM技术,即P1.3~P1.7;
◆ 复位后,若硬件检测程序存储器空间0000H地址为空(0FFH),则可自动执行ISP功能程序。
2 SM5964的存储器结构
2.1 程序存储器
SM5964内部具有64 KB的Flash存储器,作为程序存储器。其地址范围为00000H~0FFFFH,其中包括最大可配置到4 KB的执行ISP功能的下载程序空间(地址为0F000H~0FFFFH)。
ISP程序空间被分为N×200H字节(N=0,1,…,8)。N为0时表示不配置下载程序,64 KB Flash存储器将全部用于应用程序;N为1时表示0FE00H~0FFFFH共有512字节配置给下载程序空间来使用;而N=8则表示下载程序空间达到最大配置,为4 KB。N的大小只能通过商用编程器来配置,一旦在编程器上配置了N≠0,那么在系统中便无法再改变ISP空间的配置。
2.2 数据存储器
SM5964在标准的256字节片内数据存储器的基础上增加了768字节的片内扩展数据存储器Expanded RAM(ERAM),这使得片内数据存储器的总容量达到1 KB。768字节的片内数据存储器的地址为0000H~02FFH,可以通过MOVX指令访问。
3 与ISP功能有关的特殊功能寄存器
与ISP功能有关的特殊功能寄存器如表1所列。

表1 与ISP功能有关的特殊功能寄存器
① ISPFAH存放Flash存储器高8位地址,ISPFAL存放Flash存储器低8位地址。ISPFAH和 ISPFAL为ISP编程提供了Flash存储器的地址。如果提供的地址为ISP程序空间的地址时,则不能对该存储空间进行擦除或者再次编程的操作。
② ISPFD存放编程数据。
③ ISPFC为Flash控制寄存器,在编程时将起关键作用。ISPFC的2~6位保留未用。

START为ISP功能启动位。START=1,即启动ISP功能,具体功能由F1、F0决定,如表2所列。START=0时,ISP操作无效。
START位在默认状态下是只读的,只有顺序向ISPFD写入三个特殊的数据55H、AAH和55H后,才能改变STAR位的值。当START置1后,SM2965硬件将自动锁存地址和数据,并获得程序指针控制权,直到ISP功能结束、START自动复位为0为止。下载程序中无须检查START的状态。

表2
ISP具体功能执行ISP功能时,需要指定Flash存储器地址。执行字节编程功能时,Flash存储器地址为编程字节的目标地址;而执行页面擦除功能时,该地址则为该页面内的任一地址,Flash存储器的一个页面为512字节。执行整片擦除和芯片写保护的地址为0000H~0FFFFH范围内任一地址。执行整片擦除时,SM5964将擦除ISP下载程序空间外的所有Flash存储器;而执行芯片写保护功能时,SM2965存储器将读出内容全部为“00H”。
④ SCONF为系统控制寄存器,只有位2与ISP功能有关,3~6位保留未用。

ISPE设置为0可屏蔽全部ISP功能,因此在执行应用程序时将ISPE设置为0,从而有效防止Flash存储器的内容被非法改写。
4 ISP技术在SM5964上的应用
4.1硬件电路
SM5964的ISP开发灵活方便,硬件上不需要任何辅助配件,应用系统线路无须做任何变动;可由设计者自定义任何编程通信协议,经计算机或简单工具通过任何I/O口或串口送入SM5964中,不像其他具有ISP的MCU那样必须针对特定的引脚和特殊的时序协议才能实现。
在多数串口通信中,只需要发送数据和接收数据两种信号,SM5964的串口就能够满足以上两种信号,因此使用SM5964的串口与主机组成的系统相连,可以把应用程序方便地下载到SM5964的Flash中。需要注意的是,SM5964的串口产生的信号电平是TTL电平,不能满足串口RS232C的要求,可以通过电平转换芯片完成信号的转换。
4.2 ISP技术的软件编写
有两种途径可以执行ISP功能的下载程序: 一种是在SM5964上电后,由硬件判别程序存储器0000H地址中的数据是否为“空”(即0FFH);如果为空,则自动跳转到下载程序的入口地址,执行下载程序。另一种是从应用程序直接跳转到下载程序入口地址来执行下载程序;下载程序执行完毕后,可以通过硬件复位、看门狗复位或直接跳到0000H地址来启动应用程序。
通过串行口中断来实现ISP技术的下载程序的流程如图1所示,通过通信协议可以实现芯片擦除、页面擦除、ISP编程和芯片保护的功能。而PC控制ISP的流程与下载程序流程基本相似,但功能正好相反,当下载程序接收数据时,就要求PC发送数据。

图1 ISP下载程序流程
5总结
ISP技术的出现改变了硬件开发的流程,实现了硬件开发的软件化,硬件功能的改变随时可以通过升级来实现。ISP技术为用户提供了传统技术无法达到的灵活性,除了串口通信外,使用中也可以选择其他通信方式,如I2C、RF、IR、CAN、LAN以及Internet。若通过调制解调装置连接到 Internet,则可实现产品的远程升级和调试诊断。随着ISP技术的进一步发展,它必将对产品的设计、升级和维护产生重要的影响。