×
嵌入式 > 嵌入式开发 > 详情

MSP430单片机Flash存储器的特性及应用

发布时间:2021-01-11 发布时间:
|
概述

单片机为核心的仪表常要考虑发生突然掉电时的数据保存问题,一般有两种对策:一是用后备电源维持单片机持续工作,称为硬保护;另一种是在检测到掉电后,在电源完全失效前保护现场数据,上电后再恢复工作,称为软保护。本文主要讨论后者。

本文引用地址:/zixunimg/eepwimg/www.eepw.com.cn/article/201611/320134.htm

目前,设计掉电软保护功能时,数据存储介质常选用两类:一类是E2PROM,但写入时间较长,难以写入较多数据;另一类是带有后备电池的小容量SRAM构成的非易失性存储器,写入速度快,但增加了电路的复杂性。掉电电压的检测电路可用分立元件构成,也可用专用芯片来实现。前者增加了电路复杂性且降低了系统可靠性;后者增加了成本。

TI公司的Flash型单片机MSP430F11x1系列、MSP430F13x系列和MSP430F14x系列具有片内的Flash存储器。可以用于实现仪表的掉电数据保护,同时可以简化系统结构,提高系统可靠性。

本文采用TI公司的Flash型16位超低功耗单片机MSP430F1121,利用其片内的Flash存储器和模拟比较器,只需外接1组分压电阻进行分压取样,即可实现系统的掉电软保护。

一、 MSP430F11x1、MSP430F13x 和MSP430F14x简介

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存储器特性

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 F1121 Flash存储器结构

Flash存储器按段分布:主存储器每段为512个字节,共8段(0~7段);信息存储器每段为128个字节,共2段(A,B段)。最小擦除单位为1段。主存储器和信息存储器的特性除分段大小外基本相同。

2 Flash存储器控制寄存器

有3个16位控制寄存器:FCTL1,FCTL2,FCTL3。为了防止误操作,写入时高字节必须为0A5H,但读出时为096H。

(1) Flash控制寄存器1(FCTL1)

定义对Flash存储器的擦/写操作。

Erase 和MEras 位控制擦除操作,置位后,往定义的区域范围内任一地址进行写操作(写入任意数)后该段即被擦除。前者每次只擦除一段,后者擦除所有段。

WRT和SEG WRT位控制写操作:前者每次写1个字节,后者可在段内连续写入。

(2) Flash控制寄存器2(FCTL2)

定义Flash时钟发生器的时钟源和频率,一般可取上电复位时的缺省值。

(3) Flash控制寄存器3(FCTL3)

指示对Flash存储器操作过程中的出错状态。

其中,较重要的是BUSY位,置位表示不能对Flash存储器操作;否则会出错。在每次进行擦/写操作前都要测试该位。

3 Flash存储器擦除、读和写操作

进行擦/写操作的编程电压(VPP)由片内产生;擦/写时钟由Flash时钟发生器产生。在擦/写时不能有中断产生,也不能执行位于将被擦/写区域的程序。如果想要保留原数据,应在擦除前先把数据转存入RAM中,擦除后再写回。

擦除时,先在FCTL2中设定时钟;如果没有特殊要求,可用上电时的缺省值。然后测FCTL3的BUSY位。等到BUSY复位,在FCTL1中设定Erase(1段擦除)或MEras位(多段擦除),再往目标地址范围内任一地址写入任意数据后,即完成对这一段的擦除。

写入操作类似于擦除操作,只是往目标地址中写入的是实际值。

对Flash存储器的读操作与RAM和ROM完全一样。

三、 掉电保护应用实例

1. 硬件设计

掉电保护功能是针对一个工业时间继电器设计的,有关部分的电路如图4所示。电源电压为5V,稳压电压为3.3V加至F1121的VCC。比较器A的反向输入端(P2.4)取自分压电阻(图中分压值为2ue0100V);同向输入端为参考电压,设为内部电压(由软件设定,这里为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 胡大可ue010MSP430系列超低功耗16位单片机原理与应用.北京:北京航空航天大学出版社,2000



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
一只老鸟的嵌入式ARM学习心得