新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 提高MSP430G单片机的Flash擦写寿命的方法

提高MSP430G单片机的Flash擦写寿命的方法

作者:时间:2014-01-14来源:网络收藏

下图以采用两个页模拟EEPROM的方式为例,描述了页状态字的在页0 和页1 之间的切换过程。提高MSP430G单片机的Flash擦写寿命的方法

采用这种方式,用户不知道数据刷新的频率。

下面的图例以采用两个页模拟EEPROM 的应用方式为例进行描述。为了方便获取模拟EEPROM数据和更新数据内容,每个存储变量元素都在 里定义了一个操作单元,在该操作单元中对每个存

储变量元素都分配一个虚拟操作地址,即一个EEPROM 操作单元包含一个虚拟地址单元和一个数据单元。当需要修改数据单元内容时,新的数据内容和之前分配的虚拟地址一同写入一个新的模拟EEPROM存储器单元中,同时返回最新修改的数据内容。EEPROM存储单元格式描述如图二。提高MSP430G单片机的Flash擦写寿命的方法

使用虚拟地址加数据的方案总结如下。

• 为每一个目标存储变量分配一个虚拟地址,该虚拟地址需一同存入 中。当读取存储变量内容时,需根据该变量的虚拟地址搜索虚拟EEPROM并返回最后更新的内容。

• 在软件处理上,需要记录下一次写入的物理目的地址;在每一次执行写入操作后,根据EEPROM存储单元大小(操作粒度),将目的操作指针自动累加。

• 当一个页(Page)写满后,需要将所有变量的EEPROM数据拷贝到下一个页,再执行该页的擦除操作。

• 在嵌入式软件处理上需加入合适的校验机制,保证写入数据的正确性并监 是否已经失效。

2.2 划分子页方案

在Flash 中划分出至少2 个页(Page)用作模拟EEPROM,根据应用需求将需写入EEPROM 进行保存的变量数据划分成一个定长的数组(子页),例如16 个字节或者32 字节,将页划分成若干子页后,需对Flash 中的所有子页按照地址顺序进行逐次编号。每个子页的第一个字节通常用来指示该子页的状态,子页状态可以为:空、已写入或者失效。

在芯片上电初始化时,首先查找出第一个尚未写入数据的子页,并进行标识,在进行写EEPROM操作时,应用程序需将待写入EEPROM 子页的所有数据按照事先约定好的顺序整理好,再一次性将所有变量数据写入空的子页中,最后将模拟EEPROM 的操作指针指向下一个空闲的子页,等待下一次写入。待将一个页的数据写满后,再进行一次擦除操作。需要处理好指向子页的指针的跳转。

每个页存在3 种可能状态:

擦除态:该页是空的。

已写满数据状态:该页已经写满数据。

有效页状态:该页包含着有效数据并且该页尚未写满,仍可向子页写入数据。

图三介绍了使用子页的方式实现Flash 模拟EEPROM的数据处理方法。提高MSP430G单片机的Flash擦写寿命的方法

2.2.1 软件描述

在软件实现上,为了便于软件处理,建议定义一些关键宏定义和结构体,指定Flash 模拟EEPROM 的起始、结束地址、页的大小、子页的大小、每个页的子页数目等参数,同时将需要操作的参数封装起来,便于软件操作和管理,不建议定义许多离散的标志变量。提高MSP430G单片机的Flash擦写寿命的方法 提高MSP430G单片机的Flash擦写寿命的方法

在软件操作上,Flash 模拟EEPROM模块需要提供几个API 接口给应用程序调用。

• 通过typedef 关键字定义设备类型,typedef unsigned char u8;

• ChkFstPowerOnInfo()用于检测芯片是否为第一次上电并初始化EEPROM 参数到内存,原型如下。



评论


相关推荐

技术专区

关闭