微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430单片机Flash存储器的特性及应用

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

时间:11-23 来源:互联网 点击:
概述

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

目前,设计掉电软保护功能时,数据存储介质常选用两类:一类是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存储

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top