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

采用划分子页的方案总结如下。
• 每次写入模拟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 的时钟源(ACLK、MCLK、SMCLK)和时钟频率可以设定,为了保证在将数据写入模拟EEPROM时的可靠性,建议在将Flash 的时钟频率降低后,再对其进行操作。例如将Flash 的时钟频率降低到1MHz 后,进行写入操作。需要注意,在降低了时钟频率后,若此时钟源也是定时器(Timer)的时钟源,则可能会影响到定时器的定时准确性,需要软件上做好处理。
4.2 代码在RAM中运行
由于向Flash 写入数据操作是通过执行Flash 中程序代码,对Flash 进行擦除和编程操作。由于对Flash 的编程需要mcu 内部执行一个升压操作,所以如果有足够的内存空间,建议将编程、擦除等关键代码拷贝到RAM中运行,可以使用关键字__ramfunc 指定,如下图七所示。

图七 使用关键字__ramfunc 将程序指定到Ram 中运行
5. 总结
本文从软件方面,以及安全性方面探讨了使用MSP430G 系列单片机在使用Flash 模拟EEPROM方面的应用,提供了两种不同的方式供选择。两种方式都可以大幅度提高模拟EEPROM的编写、擦除寿命,并且满足高可靠性的应用设计,用户可以结合具体的应用进行选择。
pos机相关文章:pos机原理
评论