概述
以单片机为中心的外表常要考虑发生忽然掉电时的数据保存问题,一般有两种对策:一是用后备电源坚持单片机继续作业,称为硬维护;另一种是在检测到掉电后,在电源彻底失效前维护现场数据,上电后再康复作业,称为软维护。本文首要评论后者。
现在,规划掉电软维护功用时,数据存储介质常选用两类:一类是E2PROM,但写入时刻较长,难以写入较多数据;另一类是带有后备电池的小容量SRAM构成的非易失性存储器,写入速度快,但增加了电路的复杂性。掉电电压的检测电路可用分立元件构成,也可用专用芯片来完结。前者增加了电路复杂性且降低了体系牢靠性;后者增加了本钱。
TI公司的Flash型单片机MSP430F11x1系列、MSP430F13x系列和MSP430F14x系列具有片内的Flash存储器。能够用于完结外表的掉电数据维护,一起能够简化体系结构,进步体系牢靠性。
本文选用TI公司的Flash型16位超低功耗单片机MSP430F1121,运用其片内的Flash存储器和模仿比较器,只需外接1组分压电阻进行分压取样,即可完结体系的掉电软维护。
一、
MSP430F11x1为20引脚,选用SOWB封装,如图1所示。它有14位具有中止功用的I/O端口;有1个16位的WatchDog,可用作体系故障复位或定时器;有1个带有3组捕捉/比较寄存器的16位定时器Timer_A。有1个模仿电压比较器Compare_A;它的定时器和比较器功用丰厚,能够完结多种用处。例如,外接电阻和电容后能够构成1个高精度的A/D转换器。
MSP430F13x和MSP430F14x同为64引脚,选用PQFP封装,芯片为1cm2的正方形,如图2所示。它有48位I/O端口;有1个16位的WatchDog;有2个带有多组捕捉/比较寄存器的16位定时器Timer_A、Timer_B;有1个模仿比较器Compare_A;有1~2个串行接口;有1个12位的多通道A/D转换器。F14x还具有1个硬件乘法器,可完结16位乘16位的操作。
二、
Flash型单片机的作业电压为1.8~3.6V。可外接32kHz~8MHz晶振,并由内部DCO振荡器完结主时钟。有5种低功耗形式,在2.2V、32kHz晶振、1MHz主频、活动形式时作业电流为160μA;当仅坚持RAM数据时为0.1μA。它的Flash存储器运用尤为便利。
F1121片内除256B RAM外,还有4KB+256B的Falsh存储器。Flash存储器为分段结构,分为主存储器(main memory)和信息存储器(information memory),如图3所示。F13x和F14x的片内存储容量更大,RAM在256B到2KB之间,Flash储存器在8KB到60KB之间,也包括主存储器和信息存储器,分段办法及操控办法与F1121相同。
Flash存储器首要用作程序存储器,可经JTAG接口下载程序。程序运转时能对其间的1段或多段进行擦/写操作,因而兼有数据存储器功用。Flash存储器的擦/写次数为105次,数据在室温下可保存100年。
以下针对具体的使用,具体介绍F1121的Flash存储器用法。
1
Flash存储器按段散布:主存储器每段为512个字节,共8段(0~7段);信息存储器每段为128个字节,共2段(A,B段)。最小擦除单位为1段。主存储器和信息存储器的特性除分段巨细外根本相同。
2
有3个16位操控寄存器:FCTL1,FCTL2,FCTL3。为了避免误操作,写入时高字节有必要为0A5H,但读出时为096H。
(1)
界说对Flash存储器的擦/写操作。
Erase 和MEras 位操控擦除操作,置位后,往界说的区域范围内任一地址进行写操作(写入恣意数)后该段即被擦除。前者每次只擦除一段,后者擦除一切段。
WRT和SEG WRT位操控写操作:前者每次写1个字节,后者可在段内接连写入。
(2)
界说Flash时钟发生器的时钟源和频率,一般可取上电复位时的缺省值。
(3)
指示对Flash存储器操作过程中的犯错状况。
其间,较重要的是BUSY位,置位表明不能对Flash存储器操作;不然会犯错。在每次进行擦/写操作前都要测验该位。
3
进行擦/写操作的编程电压(VPP)由片内发生;擦/写时钟由Flash时钟发生器发生。在擦/写时不能有中止发生,也不能履行坐落将被擦/写区域的程序。假如想要保存原数据,应在擦除前先把数据转存入RAM中,擦除后再写回。
擦除时,先在FCTL2中设定时钟;假如没有特殊要求,可用上电时的缺省值。然后测FCTL3的BUSY位。比及BUSY复位,在FCTL1中设定Erase(1段擦除)或MEras位(多段擦除),再往方针地址范围内任一地址写入恣意数据后,即完结对这一段的擦除。
写入操作类似于擦除操作,仅仅往方针地址中写入的是实践值。
对Flash存储器的读操作与RAM和ROM彻底相同。
三、
1.
掉电维护功用是针对一个工业时刻继电器规划的,有关部分的电路如图4所示。电源电压为5V,稳压电压为3.3V加至F1121的VCC。比较器A的反向输入端(P2.4)取自分压电阻(图平分压值为20V);同向输入端为参阅电压,设为内部电压(由软件设定,这儿为VCC/2,即1.65V)。正常作业时比较器A输出为低,由图中参数可算出。当电源电压降为4.125V时,VCC仍稳定在3.3V;但比较器A输出将翻转,发生中止。
Flash存储器写入时电压有必要坚持在2.7~3.6V,因而2.7V是处理的下限。1段(512个字节)的写入时刻为3ms。据此,可选择适宜的电容,由RC放电电路可得:
式中,V0= 3.3V,V(t)=2.7V,t=3ms,R=5MΩ,则:
经实践测验,在取C=1μF时即能正常作业。为牢靠起见,可取C=10μF。假如写入的数据较多,需求更长的处理时刻,能够加大%&&&&&%容量,并在供电回路中串接二极管,以约束反向放电。
从正常作业状况到临界状况,电压有0.875V(5.0V-4.125V)的缓冲,因而,电源电压的变化将不会引起误操作。
2.
程序分为上电复位初始化程序和掉电中止处理程序,如图5及图6所示。
程序初始化时,有必要先读取掉电维护标志来决议程序流向,然后把掉电标志复位。在中止处理程序中,对Flash存储器写入数据前都应先擦除标志所在区域;但为节约中止处理时刻,可在初始化时预先进行擦除操作,以备下一次的掉电处理写入。
掉电处理程序中有必要完结两件事:掉电维护标志置位(也应写在Flash存储器中);将待维护数据写入Flash存储器中。一般可把数据存入信息存储器中,假如数据量大,可写入没有被程序占用的主存储器中。写入时要封闭一切中止,一起对原体系当时履行的程序作相应的现场维护处理。
使用掉电维护功用的工业时刻继电器,需保存16字节预置参数和16字节掉电瞬间运转状况参量以及1字节的掉电维护标志,即总的保存数据为33字节。其间,16字节的预置参数在运转过程中设定,一起已写入B段中。因而,中止处理程序只须将17字节的状况参量写入A段中。经屡次实践断电实验,工业时刻继电器均能在从头上电时正确康复断电时的维护数据。
参阅文献
1