提高 MSP430G 系列单片机的 Flash 擦写寿命的方法
• 在嵌入式软件处理上需加入合适的校验机制,保证写入数据的正确性并监Flash 是否已经失效。 2.2 划分子页方案 在Flash 中划分出至少2 个页(Page)用作模拟EEPROM,根据应用需求将需写入EEPROM 进行保存的变量数据划分成一个定长的数组(子页),例如16 个字节或者32 字节,将页划分成若干子页后,需对Flash 中的所有子页按照地址顺序进行逐次编号。每个子页的第一个字节通常用来指示该子页的状态,子页状态可以为:空、已写入或者失效。 在芯片上电初始化时,首先查找出第一个尚未写入数据的子页,并进行标识,在进行写EEPROM操作时,应用程序需将待写入EEPROM 子页的所有数据按照事先约定好的顺序整理好,再一次性将所有变量数据写入空的子页中,最后将模拟EEPROM 的操作指针指向下一个空闲的子页,等待下一次写入。待将一个页的数据写满后,再进行一次擦除操作。需要处理好指向子页的指针的跳转。 每个页存在3 种可能状态: 擦除态:该页是空的。 已写满数据状态:该页已经写满数据。 有效页状态:该页包含着有效数据并且该页尚未写满,仍可向子页写入数据。 图三介绍了使用子页的方式实现Flash 模拟EEPROM的数据处理方法。 2.2.1 软件描述 在软件实现上,为了便于软件处理,建议定义一些关键宏定义和结构体,指定Flash 模拟EEPROM 的起始、结束地址、页的大小、子页的大小、每个页的子页数目等参数,同时将需要操作的参数封装起来,便于软件操作和管理,不建议定义许多离散的标志变量。 在软件操作上,Flash 模拟EEPROM模块需要提供几个API 接口给应用程序调用。 • 通过typedef 关键字定义设备类型,typedef unsigned char u8; • ChkFstPowerOnInfo()用于检测芯片是否为第一次上电并初始化EEPROM 参数到内存,原型如下。 Void ChkFstPowerOnInfo(void); • FlashWrite()用于写Flash,传递的形参包括指向待写入数据的指针,待写入数据在子页中的起始字节编号,写入数据的长度,原型如下。 void FlashWrite( u8 *array, u8 startNum, u8 length ); • FlashErase()用于擦除Flash,传递的形参是子页的编号,在擦除函数中需要根据子页的编号判断是否需要执行页的擦除操作,原型如下。 void FlashErase(u8 seg_sn); 2.2.2 软件流程图 软件启动后,初始化模拟EEPROM流程图描述如下。 调用API,向模拟EEPROM 写入数据的软件流程如图五所示。在软件处理中,要特别注意目标指针的切换和保证写入数据的正确性,在代码空间允许的情况下,可以增加一些校验算法来保证。 采用划分子页的方案总结如下。 • 每次写入模拟EEPROM的数据长度为定长,即为子页的长度。 • 软件需要定义一个存储变量结构体,用于刷新和同步模拟EEPROM内容。在将数据写入模拟EEPROM之前,程序员需要按照约定的数据格式,在内存中将所有的目标存储变量进行整理。 • 在软件处理上,需要计算当前写入和下一次写入的物理地址;在每一次执行写入操作后,根据子页长度大小,将指向子页的目的操作指针自动累加。 • 待一个页(Page)写满后,需要将最后更新的模拟EEPROM数据拷贝到下一个页,再对写满页执行一次擦除操作。 • 在嵌入式软件处理上需加入合适的校验机制,保证写入数据的正确性并监测用于模拟EEPROM功能的Flash 子页是否已经失效。 2.3 两种方案的对比分析 两种方案的对比分析见表二。 表二 两种方案的对比分析 3. 实际的嵌入式应用 根据软件需要,建议采用字节(8bit)做为操作的最小粒度,适用性会更广泛。 3.1 Flash 存储器擦写寿命的提升对于MSP430G 系列的Flash 存储器,可以保证至少10000 次的编程和擦除寿命。如图六所示。 图六 MSP430G 系列单片机Flash 编程和擦除寿命 采用划分小页结合至少分配2 个大页的操作方式,则可以大大增加Flash 模拟EEPROM 的擦写寿命。例如,对于MSP430G 系列单片机,如果将每个小页的尺寸划分为16 字节,采用2 个大页(每页512 字节)作为模拟EEPROM 使用,则可以提供64 个操作子页((512/16)x2=64),可以保证至少640000 次的擦写寿命。 3.2 掉电时的异常处理 如果正在进行Flash 数据存储时发生掉电,数据可能会保存不成功,存在异常。为了增强健壮性,在软件处理上,需要考虑设备异常掉电等可能会导致Flash 擦写失败的情况。 在软件处理中,当成功保存Flash 数据后,再写入该子页的状态标志。单片机上电后,用户程序将查找最后一次写入的子页,再将该子页的数据内容并恢复到内存中的数据结构中。 4. 系统可靠性设计 4.1 时钟源的选择 由于驱动Flash 的时钟源(A
擦写 寿命 方法 Flash 单片机 MSP430G 系列 提高 相关文章:
- 基于PNX1501的NandFlash在线烧录系统 (06-05)
- AVR内部EEPROM擦写次数测试程序(12-02)
- 提高MSP430G系列单片机的Flash擦写寿命的方法(12-06)
- 基于 DSP的嵌入式系统通过地址映射方式实现片外FLASH擦写(12-12)
- 变频器使用寿命延长的方法(12-12)
- 手把手教你学单片机(01-16)