导言
C8051Fxxx系列高速SoC单片机是由美国Cygnal公司开发的彻底集成的混合信号体系级芯片,具有与8051兼容的微处理器内核。C8051Fxxx单片机有大容量的Flash存储器,用于存储程序代码和非易失性数据,可在运用编程。以 C8051F120为例,C8051F120x 和C8051F13x 系列MCU内部有128 KB(C8051F12x 和C8051F130/1)或64 KB(C8051F132/3)的在运用可编程Flash 存储器,用于程序代码和非易失性数据存储;别的还有256字节的Flash页,能够用于数据存储。能够经过JTAG接口对Flash存储器进行在运用编程,或由运用软件运用MOVX 指令编程。用C8051F120 MCU做成的产品到了用户处之后,用软件经过串口就能够为产品进行Flash程序的更新。笔者经过试验,在用户操作界面的PC机及C8051F120的单片机控制体系之间,经过串行口进行C8051F120 单片机控制程序的主动晋级及程序加密。用户只要从互联网上下载控制程序,即可完成单片机程序的主动晋级。该计划处理了晋级进程意外中止、长途晋级传输误码等要害技术问题,避免了传统固件晋级需求替换主机、主板或芯片等问题,节省了人力和资金等资源,已在实践体系中运用并遭到用户好评。以下以64 KB Flash为例,扼要介绍单片机方针程序的预备及主动晋级的制造进程。
1主动晋级的完成办法
C8051Fxxx系列单片机将Flash程序区按512字节为一页(page)来安排。在删去控制程序区时,首要屏蔽一切中止,使能程序删去位 PSEE(PSCTL.1),一起使能PSWE(PSCTL=0x03, 即PSWE = 1, PSEE = 1,页擦除形式) ,用C51言语的一个指针指向Falsh程序区。如:
char xdata * data address=0x0000;
每擦除一页地址指针加512,依此操作可删去一切的程序页。删去部分程序如下:
while(address<0x0F800) {//0xF800=62KB
*address = 0x00; //向扇区空写,发动擦除操作
for (i=0;i<10;i++);
address =address +512;
}
这样就把62 KB的Flash的旧程序删去了。实践上便是运用汇编言语中MOVX指令在每一页的任一地址写0FFH,就能够将该页的一切字节都置为0FFH,然后完成了该页的删去。
擦除去所选的区域后要关掉对Flash的写操作,不然可因其他环境形成程序的丢掉:
PSCTL &= ~0x03;// PSWE = 0; PSEE = 0
FLSCL&=~0x01;//封闭Flash写/擦除
1.1更新程序的办法
在接纳新程序部分,写入一握手程序块,以确保程序的可靠性。握手的协议可自己界说,其间包含一些需求知道的信息,如长度、头部、尾部等。
相同,“char xdata *data address=0x0000;”指向要写的区域。
FLSCL |= 0x01;//使能Flash写/擦除
PSCTL |= 0x01; // PSWE = 1
然后经过串口用查询的办法取得新的程序代码。
while(len–) {
*address++= Get_COM_Code();
}
PSCTL=00; // PSWE = 0; PSEE = 0
FLSCL =00;
1.2运转新程序
在更新完程序后,有两种办法能够从头运转程序;断电再上电和软件复位。 C8051F120内部有复位寄存器,经过使能该寄存器,能够完成软件复位。