资料介绍
在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了实现上述功能的软件流程。1. 嵌入式Flash 存储介质与EEPROM 的主要特性对比电可擦除和编程只读存储器(EEPROM)是在绝大多数嵌入式应用中都会使用到的用于保存非易失性数据的关键器件,用于在程序运行期间保存数据。Flash 闪存(Flash Memory,简称为"Flash")是一种非易失性( Non-Volatile )存储器,广泛应用于各种嵌入式处理器中,用于存储程序代码。由于硬件成本原因,在许多嵌入式处理器中并没有集成EEPROM 模块,通常我们可以采用在片内Flash 存储器中保存非易失性数据的应用方式来达到使用要求。对一些普通的应用场合,这种使用方式可以满足要求。表一 EEPROM与Flash 对比分析1.1 写访问时间由于EEPROM 和Flash 的工作特性不同,所以写访问时间也不相同。Flash 具有更短的写访问时间,所以更适用于对存储速度有要求的场合。1.2 写方法外置EEPROM和采用Flash 模拟EEPROM的最大不同之处在于写的方法。EEPROM:对EEPROM 的写操作不需要额外的操作,只需要提供电源供给;但是一旦启动写操作流程后,写操作不能够被打断。所以需要外接电容器等措施来保证在芯片掉电时能够维持供电,保证完成数据操作。Flash 模拟EEPROM:当芯片上电后,写操作可以被电源掉电和芯片复位打断。和EEPROM 相比,需要应用设计者增加相关的处理来应对可能存在的异常。1.3 擦写时间EEPROM和采用Flash 模拟EEPROM在擦除时间上存在很大的差异。与Flash 不同,EEPROM 在进行写操作之前不要擦除操作。由于Flash 需要几个毫秒时间进行擦除操作,所以如果在进行擦除操作的过程中出现电源掉电的情况,需要软件做相关的保护处理。为了设计一个健壮的Flash 存储器的管理软件,需要深入的了解和掌握Flash 存储器的擦除过程特性。2. 增加Flash 模拟EEPROM 擦写寿命的方法可以根据用户的需求采用不同的方法实现Flash 存储器模拟EEPROM。2.1 虚拟地址加数据方案通常需要两个页以上的Flash 空间来模拟EEPROM。上电后,初始化代码先查找出有效页,同时将另外一个页初始化为擦除状况,以提供字节写的能力,并用作备份和随时准备执行写入操作。需要存储EEPROM 的变量数据首先写入有效页,当有效页写满后,需将所有数据的最后状态保存到备份页,并切换到备份页进行操作。每一页的第一个字节通常用来指示该页的状态。每个页存在3 种可能状态:擦除态:该页是空的。已写满数据状态:该页已经写满数据,准备切换到下一个页进行操作。有效页状态:该页包含着有效数据并且标示状态尚未改变,所有的有效数据全部拷贝到了已经擦除的页。下图以采用两个页模拟EEPROM的方式为例,描述了页状态字的在页0 和页1 之间的切换过程。采用这种方式,用户不知道数据刷新的频率。下面的图例以采用两个页模拟EEPROM 的应用方式为例进行描述。为了方便获取模拟EEPROM数据和更新数据内容,每个存储变量元素都在Flash 里定义了一个操作单元,在该操作单元中对每个存储变量元素都分配一个虚拟操作地址,即一个EEPROM 操作单元包含一个虚拟地址单元和一个数据单元。当需要修改数据单元内容时,新的数据内容和之前分配的虚拟地址一同写入一个新的模拟EEPROM存储器单元中,同时返回最新修改的数据内容。EEPROM存储单元格式描述如图二。使用虚拟地址加数据的方案总结如下。• 为每一个目标存储变量分配一个虚拟地址,该虚拟地址需一同存入Flash 中。当读取存储变量内容时,需根据该变量的虚拟地址搜索虚拟EEPROM并返回最后更新的内容。• 在软件处理上,需要记录下一次写入的物理目的地址;在每一次执行写入操作后,根据EEPROM存储单元大小(操作粒度),将目的操作指针自动累加。• 当一个页(Page)写满后,需要将所有变量的EEPROM数据拷贝到下一个页,再执行该页的擦除操作。• 在嵌入式软件处理上需加入合适的校验机制,保证写入数据的正确性并监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 的时钟源(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的编写、擦除寿命,并且满足高可靠性的应用设计,用户可以结合具体的应用进行选择。(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 提高MSP430G系列单片机的Flash擦写寿命的方法
- MSP430系列单片机(1)——基本知识
- 单片机MSP430系列的CCS基础知识 45次下载
- MSP430单片机的框架程序资料免费下载 9次下载
- MSP430单片机定时器的学习笔记资料免费下载
- MSP430单片机的开发总结详细资料免费下载 20次下载
- MSP430单片机的命名规则详细资料免费下载 12次下载
- MSP430系列超低功耗16位单片机原理与应用的详细资料说明 16次下载
- 如何学习msp430单片机 24次下载
- 关于MSP430系列单片机及MSP430F449单片机在医疗仪器中的应用 11次下载
- MSP430单片机硬件设计及接口技术 63次下载
- MSP430系列单片机及MSP430F449单片机在医疗仪器中的应用 9次下载
- MSP430单片机实践篇之MSP430单片机ADC模数转换操作 43次下载
- MSP430F2系列16位超低功耗单片机模块原理5 5次下载
- MSP430系列flash型超低功耗16位单片机
- 单片机中EEPROM和FLASH的区别是什么 3w次阅读
- MSP430系列单片机与51单片机的区别及优劣势对比 3.5w次阅读
- 如何提高MSP430单片机的操作效率 1242次阅读
- MSP430单片机的LED驱动电路原理解析 6064次阅读
- 基于MSP430系列单片机的常用程序编写总结 4001次阅读
- MSP430系列单片机特性及应用领域介绍 9142次阅读
- 基于msp430f149单片机下74hc14n应用电路 8363次阅读
- 略谈MSP43单片机端口 1847次阅读
- MSP430单片机定时器A结构及其应用范例 3928次阅读
- MSP430单片机的选型及系列介绍 1.6w次阅读
- MSP430低功耗运行模式原理分析及应用 8864次阅读
- MSP430单片机的端口介绍 5296次阅读
- MSP430G2553的原理图 1w次阅读
- MSP430低功耗原理及其在海温测量中的应用 2258次阅读
- 单片机FLASH与RAM、ROM的关系 1.3w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多