W78E516B在系统可编程的应用
Application of ISP based on W78E516B
张卫东
(武汉建科科技有限公司,武汉,430074)
摘要:在系统可编程技术(ISP)是二十世纪九十年代迅速发展起来的一种新技术,它的出现,使得硬件设计逐步软件化,硬件结构的通用性日益增强。本文以台湾华邦电子公司(Winbond)的W78E516B为例介绍ISP器件的结构及在系统可编程技术的实现方法,并给出了部分C51源程序。
关键词: 单片机、在系统可编程
Abstract:The ISP,as a new technique,has been developed in 1990’s。By ISP,the structure of hardware became more universal。This paper introduces the Application of ISP based on W78E516B ,and some C51 programs have been put forward。
Key Words: Single-cell MPU ISP
在系统可编程技术(In-system Programming,以下简称ISP)的出现是对传统编程方法的突破。ISP技术是指用户在设计的目标系统中或印刷电路板上,为重新配置逻辑或实现新的功能,而对器件进行编程或反复编程的能力。ISP技术的出现和发展开创了数字电子系统设计技术新的一页。ISP技术无需编程器和较高的编程电压,打破了先编程后装配的惯例,形成产品后还可以在系统内反复编程,使具有可多次编程或反复编程的微控制器的优越性得以更充分的发挥。尤其是在互联网时代,依据系统环境和需要,经调制解调装置(MODEM)、串行口或专用的编程接口就能够通过软件控制,实现系统远程升级和调试,提高产品的适应性,延长产品生存周期,经济效益显著。
1 W78E516B的结构组成及特性
W78E516B是Winbond生产的与Intel的8052指令集兼容的8位微控制器,内部含有两部分可在线更新的Flash EPROM,64K的主Flash EPROM和4K的辅Flash EPROM,用于在系统编程。主Flash里的程序可被辅Flash里的加载程序更新,辅Flash里的程序也可被主Flash里的加载程序更新。
W78E516B有二种省电工作方式:空闲方式和掉电方式, 空闲方式将处理器的时钟关闭但外设继续工作,掉电方式则关闭晶体振荡器以获得最小功耗。
W78E516B具有以下特性:
(1) 全静态设计,最高工作频率为40MHz,必要时外部时钟可降至0Hz。
(2) 64KB Flash EPROM存储应用程序(APROM),4KB Flash EPROM内的程序可用来更新应用程序(LDROM);单片机正常启动时,运行64KB Flash EPROM内的应用程序。
(3) 512字节的片内RAM(包括256字节AUX-RAM,可由软件选择),分成2个存储单元:256字节高速暂存和256字节辅存,通过不同的寻址方式来访问。RAM 中的0H~127H同8052一样直接或间接寻址,地址指针是被选中的寄存器单元中的R0和R1。RAM中的128H~255H同8052一样只能间接寻址,地址指针是被选中的寄存器单元中的R0和R1。AUX-RAM 中的0H~255H采用外部数据存储器的方式间接寻址,用MOVX指令,地址指针是选中寄存器单元的R0和R1以及DPTR寄存器。在CHCON寄存器中的第4位置位后,AUX-RAM有效,访问AUX-RAM使用“MOVX@Ri”指令。当执行内部程序存储器的指令时,访问AUX-RAM不会影响P0、P2、WR和RD。AUX-RAM在复位后失效。
(4) 程序存储器和数据存储器可寻址空间范围都是64KB。
(5) 4个8位双向口:P0~P3,1个4位双向多用途编程口P4(只有PLCC44封装和PQFP44封装的具有)。
(6) 3个16位的定时器/计数器:T0、T1、T2。T0和T1功能与8051相同,T2是一个16位定时器/计数器,它由T2CON配置和控制,T2能作为外部时钟计数器,也能作为内部定时器,这取决于T2CON的C/T2位的配置情况。T2有3种操作方式:清零、自动重写、波特率发生器,在清零和自动重写方式时,时钟频率与T0和T1相同。
(7) 具有一个全双工串行通讯口。
(8) 具有6个中断源和2级中断能力。
(9) 具有编程后的编码保护功能。
(10)目前提供三种封装形式:DIP40、PLCC44、PQFP44。
2 W78E516B的在系统可编程原理
⑴ ISP操作实现过程
单片机正常工作时执行APROM中的程序,如果APROM中的程序需要修改,用户需要设置CHPCON寄存器的相关位来激活在系统编程模式。缺省情况下,CHPCON只具有只读属性,必须依次向寄存器CHPENR中写入值87H、59H,才能使CHPCON可写,写入其他值后则关闭CHPCON的写特性。在器件处于空闲模式下,W78E516B可以完成所有的包括进入/退出在系统编程模式、编程、擦除、读等ISP操作。所有的ISP操作都是在空闲模式下完成的,所以器件需要适当的时间完成ISP操作,这就需要设置合适的计时中断,以便完成操作后退出空闲模式。激活CHPCON的写特性后,并设置CHPCON寄存器和相应的中断时间后,系统进入了空闲模式。当定时器中断到来时,转入LDROM中执行程序更新服务程序。当APROM中的内容被完全更新后,将CHPCON的第0、1、7位设置为逻辑1,通过软件复位的方式返回APROM执行其中的新程序。在应用程序需要频繁更新的情况下,这种在系统编程方式使工作简单而高效。
W78E516B处于在系统可编程模式时,APROM和LDROM可以被反复编程和检验。向Flash EPROM中完整、正确地写入新代码后,可以通过设置安全性寄存器(security register)将代码保护起来。安全性寄存器在LDROM空间的地址是0FFFFH,当它的各个位被从1编程为0后就不能再被改变,将它们重新置位的惟一方式是执行全部擦除操作,这样就能保证其安全性。
微控制器上电后从64KB APROM中启动。64KB APROM中,包括了在系统编程子程序,还有其他检测记录系统的子程序。微控制器通过读取按键输入,决定是否进行在系统编程。64KB
APROM中的程序应该始终包含是否进入ISP的子程序,以使系统具有进入下一次在系统编程的能力。4KB LDROM中的程序主要作用是接收来自PC机的下载数据,并控制各项ISP操作。执行在系统编程时,利用SFRAL、SFRAH、SFRFD、SFRCN这几个特殊功能寄存器,选择在系统编程的地址单元,准备待写入的数据,选择待执行的操作类型。当从F04BOOT模式启动时,软件复位失效,必须硬件复位,在系统编程的数据由在此期间仍能正常工作的串行通信口进入。这部分流程如图1所示。
⑵ W78E516B的 ISP功能特点
W78E516B在ISP功能方面具有突出的优点:
ⅰ. 开发灵活性。可由设计者自定任何编程通信协议,经计算机或简单工具,将要修改的程序通过任何I/O口或UART口送入单片机内,不能像其他具有ISP功能的芯片那样,而必须针对其特定引脚及特殊的TIMMING协议来实现。
ⅱ. 操作连续性。市场上目前具有ISP功能的单片机在执行ISP操作时(在未带配件的情况下)必须停止其他操作;而有些应用希望此时UART或Timer/Counter等功能仍然能够运作。W78E516B可以满足这种要求。因为在执行ISP操作时只是控制权从64KB
APROM变换到4KB LDROM,故仍可由4KB中的程序来继续操作控制。
ⅲ. 断电时具有存储数据能力。因W78E516B拥有2块大小不同的闪速存储器,其中1块可用于存储断电后仍必须被单片机保留的数据,因此,设计者可减少外接EE2PROM芯片的线路与成本。
除具有上述特点外, W78E516在执行ISP操作时不需辅以任何配件,受到用户的欢迎。
ⅳ. 互相编程。通过设置在系统可编程控制寄存器的位1-FBOOTSL为1或0,可以选择要编程的对象是64K的APROM还是4K的LDROM,也就是说既可以在系统更新APROM,也可以在系统更新LDROM。
3 应用实例
静力触探数据自动采集仪是岩土工程测试领域常用的仪器设备,我们在开发该仪器的过程中使用了W78E516B作为核心处理器,它灵活的在系统线可编程技术给该仪器的应用软件升级换代提供了非常方便的手段。通过一根RS232通讯线就可以方便的从PC机中下载应用软件到微处理器中,从而实现了该仪器的远程升级功能。静力触探自动测试仪与PC机的通信采用RS-232标准,且只使用了该标准中的TXD、RXD以及地线3根连线,电平转换由MAX232专用芯片完成。PC机上的终端程序经串行通信将新应用程序的二进制代码以数据形式下载到微控制器中,由LDROM中的软件控制64KB
APROM中的程序代码的擦除、写入。
实现ISP操作的软件由两部分组成:一是微控制器部分(包括APROM和LDROM中的程序),用C51编写;二是PC机部分,由Microsoft
Visual Basic开发,主要应用MSCOMM控件与W78E516B通信,完成数据下载。本文后面给出了LDROM中的C51程序共参考。首先用编程器将APROM.HEX写入主Flash,
LDROM.HEX写入辅Flash,使用RS232通讯线将静力触探仪和PC机的串口连起来。打开PC机上的终端程序, 选择所使用的串口,设置波特率为9600bps,数据位8位,奇偶位无,停止位无,流控为XON/XOFF或无,然后打开静力触探仪的电源,运行主程序,选择软件升级操作,此时终端程序提示选择要写入的文件,然后执行下载升级,升级一旦结束,微处理器将自动软件复位,重新执行新的应用程序。
4 结束语
ISP技术高度的灵活性使同一种硬件结构能够实现多种系统功能,成为多功能硬件,减少了系统所需电路板的品种,简化了生产流程;多功能硬件还能够减少板上元件数目和系统电路板数目,使系统成本显著降低。在静力触探自动测试仪中,它代替了以前软件升级的复杂过程,简化了操作流程,提高了作业效率。此外,ISP技术也为其他许多领域带来了变革。总之,在系统编程技术具有广阔的开发应用前景。
附:LDROM中的源程序供参考
// LDROM.C,Compiler:Keil uVision2,V2.20a
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h>
#include <stdio.h>
//定义W78E516B寄存器地址
sfr CHPCON = 0xBF;
sfr CHPENR = 0xF6;
sfr SFRAL = 0xC4;
sfr SFRAH = 0xC5;
sfr SFRFD = 0xC6;
sfr SFRCN = 0xC7;
void Program_ Flash (uint Laddress, uchar Ldata);//地址,数据
uchar Hex_Value( uchar *p);
uint Download_File(void);
main()
{
// 设置串行口和波特率9600,采用11.0592MHz晶振
T2CON=0x34;
RCAP2H = 0xFF;
RCAP2L=0xDC
SCON = 0x52;
puts("\nPlease Choice the File.");}
CHPENR = 0x00;
// 擦除64KAPROM内的数据
TL0 = -(15000%256);
TH0 = -(15000/256);
SFRCN = 0x22;
TR0 = 1;
PCON = 0x01;
// 开始编程
Download_File();
puts("Soft updated.");
//重启动单片机
CHPENR = 0x87;
CHPENR = 0x59;
CHPCON = 0x83;//1000 0011
TL0 = 0xFE;
TH0 = 0xFF;
TR0 = 1;
PCON = 0x01;
}
void T0_Interrupt(void) interrupt 1
{ TR0 = 0;}
//编程操作
void Program_ Flash (uint Laddress, uchar Ldata)
{ SFRFD = Ldata;
SFRAH = Laddress /256;
SFRAL = Laddress %256;
SFRCN = 0x21;
TL0 = -(50%256);
TH0 = -(50/256);
TR0 = 1;
PCON = 0x01;
}
uchar *getdata(uchar *s)
{ unsigned char *ss;
ss=s;
while(1)
{ *s=getkey();|
if( *s == 8 && s!=ss) {s--;continue;}
if( *s == '\n'|| *s==0x0d)
{ *s = '\0'; return ss;}
s++;
}
*(s-1)='\0';
return ss;
}
uint Download_File(void)
{ uchar s[60];
uchar *p;
uchar rlength;
ulong raddress;
uchar rtype;
uchar rdata;
uint rchecksum = 0;
while(1) {
getdata(s);
p=s;
if(*p!=':')
{return(-1); }
p++;
rlength = Hex_Value(p);
p=p+2;
raddress = Hex_Value(p);
p=p+2;
raddress = raddress*256 + Hex_Value(p);
p=p+2;
rtype =Hex_Value(p);
if(rtype == 0x01)
{ putchar('#');
return 0;
}
p=p+2;
while( rlength --) {
rdata = Hex_Value (p);
Program_ Flash (raddress,rdata);
p=p+2;
rchecksum=rchecksum+rdata;
raddress++;
}
putchar('#');
}
}
uchar Hex_Value( uchar *p)
{ uchar k,i;
k=*p; p++; i=*p; p++;
if(k>='0' && k<='9') k=k-'0';
else k=k-'A'+10;
if(i>='0' && i<='9') i=i-'0';
else i=i-'A'+10;
return k*16+i;
}
参考文献:
1、W78E516B DataSheet ,Revision A5, Publication Release Date:June 21,2002; Winbond Electronics corp.
2、曹善会,联华电子试验室网站,http://etiantai.51.net/lianhua/index.htm