Flash模拟EEPROM操作应用指南
工作原理
Flash和 EPROM的主要区别在于可擦单元大小,EEPROM可以字节擦写,而Flash只能块(扇区)擦除。这意味着如果在一个Flash扇区上存储多个参数时,扇区的擦除次数是该扇区上所有存储参数修改次数的总和,因此用作参数存储器时,Flash相比EEPROM更容易写坏。
解决这个问题的方法是,不再将参数存储在Flash的固定地址,而是给每个参数分配一个唯一的数字用作虚拟地址,将参数写入Flash时同时将虚拟地址写入Flash。
举例说明,执行如下的伪代码,将产生下图所示的存储效果:
注:上图中空格表示未写入,其值实为0xFF
Flash存储器被划分为2个字一组的存储单元,执行EE_Write时,将参数的值写入存储单元的前一个字,参数的虚拟地址写入存储单元的后一个字。
读取参数时,不再去固定的Flash地址读取,而是从存储页的尾部向前逐个存储单元读取,检查该单元中存储的虚拟地址是否等于 EE_Read调用中指定的虚拟地址EE_ADDR_Speed。若不等,则继续向前搜索;若相等,则说明找到了参数 Speed在存储器中存储的最新设定值。
由于参数不必存储在Flash中的固定地址,因此不必每次修改参数的值时都擦除Flash,而是只要Flash扇区未写满,就可以直接在后续空白地址写入参数的新值。这样将大幅减少Flash的擦除次数,降低Flash被写坏的风险。
页拷贝
当存储页写满时,可以将所有所有参数读入RAM,擦除存储页,然后再将所有参数写入Flash中。但若在此过程中发生掉电,就会导致所有参数丢失。
为解决这个问题,可以使用两个存储页,存储页的第一个存储单元存储该页的状态。如下图所示第一个存储页已满:
若此时执行EE_Write(EE_ADDR_Speed, 0x1900),可将第二个存储页状态改为Receiving,表示正在从Active页拷贝数据。然后将本次要写的数据写入。
接下来,搜索Active页中的所有存储参数,将每个参数的最新值拷贝到Receiving页中。等所有参数拷贝完成后,将第一个页擦除(页状态自动变为 Erased),最后将第二个页状态改为Active。
后面,所有的参数读写操作均在第二页上即可。
这样操作,可以保证即使在过程中发生突然掉电,也不会损坏存储的参数值:
1、若在将第二页标记为Receiving时突然掉电,则只是丢失参数Speed的最新设定值,其他参数不受影响,读取参数Speed会读取到它的前一个设定值。
2、若在第二页标记为Receiving之后,从Active页向Receiving页拷贝参数的过程中突然掉电,则下次上电后会发现同时存在Active页和Receiving页,重新执行参数拷贝即可。
3、若在参数拷贝完,Active页擦除后,Receiving页还未被修改为Active时突然掉电,则下次上电后会发现有一个Receiving 页,但没有Activ 页,只需要将Receiving页状态改为Active即可。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由ll转载自华芯微特32位MCU公众号,原文标题为:芯课堂 | Flash 模拟 EEPROM,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】如何使用JFLASH擦除、写入及读取华芯微特指定型号MCU
本文介绍了华芯微特MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作。
【经验】华芯微特SWM341/SWM34S系列MCU环境配置指南
华芯微特MCU的系列之SWM341&SWM34S,内核相同,34S在341基础上内置了SDRAM。341芯片使用M33内核,基于ARM-V8指令集的架构,对应的工具版本有更高的要求。本文中华芯微特将为大家介绍SWM341/SWM34S系列MCU环境配置指南。
华芯微特SWM341 ISP模式参考
本文介绍华芯微特SWM341MCU ISP模式。
华芯微特(Synwit)32位MCU选型表
目录- 32位微控制器
型号- SWM19SC9T6-50,SWM241PBT7-80,SWM260PBT7-80,SWM181RCT6-50,SWM211,SWM21DC8U7-50,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM201C6T7-50,SWM341CET7-50,SWM190CBT7-50,SWM201,SWM320VET7-50,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM32SRET6-50,SWM190RBT7-50,SWM241CBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
【技术】LVGL按钮的讲解
LVGL按钮是简单的矩形对象。它们源自容器,因此也可以提供布局和配合。此外,可以启用它以在单击时自动进入检查状态。本文华芯微特将对LVGL按钮进行详细的讲解。
华芯微特MCU 32 位微控制器产品列表
型号- SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM181C9T6-50,SWM22PE8S7-63,SWM241KBT7-80,SWM221EBS7-63,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM166,SWM221,SWM320,SWM341,SWM241,SWM221KBU7-50,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM166D8U6-40,SWM32SRET6-50,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM181CBT6-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
【应用】华芯微特高速吹风筒电机控制解决方案,主频可达90MHz,具有堵转、过流、过压、过温保护等功能
随着生活品质的提高,人们对吹风机的要求不只是将头发吹干,与此同时还要求不伤发、能养发的功能需求,华芯微特目前推出了2款高速吹风筒电机控制解决方案(即SWM211C8T7-50,SWM211G6S7-65),具有堵转、过流、过压、过温保护等功能。
华芯微特(Synwit)32位MCU选型指南
目录- 公司介绍&产品分类 TFT-LCD 显示和人机界面(HMI)用微控制器 电机专用微控制器 大家电 & 工控通用微控制器 32位微控制器选型表
型号- SWM34X,SWM320 SERIES,SWM 201C6T7-50,SWM19SCBT6-50,SWM190 SERIES,SWM 201 系列,SWM32SRET6,SWM181CCT6-50,SWM260KBT7-80,SWM190KBT6-80,SWM201G6S7-65,SWM 201,SWM 201G6S7-65,SWM 19S 系列,SWM201,SWM260 SERIES,SWM320,SWM19S,SWM160,SWM20PG6S6,SWM20D,SWM32SRET6-50,SWM 20PG6S6-65,SWM 190,SWM181CBT6-50,SWM260CBT7-50,SWM260PBT7-80,SWM 260 系列,SWM32S,SWM181 SERIES,SWM181RCT6-50,SWM20P,SWM260CBT7,SWM160C8T7-50,SWM190CBT6-50,SWM20G,SWM 190 系列,SWM 260,SWM 181,SWM201 SERIES,SWM320RET7-50,SWM181DBU6-40,SWM181CBT6,SWM160 SERIES,SWM 341,SWM 341 系列,SWM190 系列,SWM201C6T7-50,SWM 181 系列,SWM320VET7-50,SWM341,SWM190RBT6-50,SWM20PG6S6-65,SWM260,SWM181,SWM320CET7-50,SWM190
华芯微特主控芯片SWM34S系列助力智能阀门控制器屏驱显示,适用于10.1寸及以下TFT屏
阀门控制器是一种用于控制阀门开闭状态的设备。它可以通过接收信号,控制阀门的开度,从而实现对流体的控制和调节。智能阀门控制器带有一个显示屏,用以设置和显示阀门调节的各类参数。该显示屏从传统的断码屏,逐步升级为TFT彩屏。本文推荐华芯微特主控芯片SWM34S。
使用华芯微特SWM341系列MCU环境配置
SWM341是华芯微特的其中一款MCU,341和341+内置SDRAM的34S系列,其内核相同。本文中华芯微特来为大家介绍使用SWM341系列MCU环境配置,希望对各位工程师朋友有所帮助。
华芯微特基于SWM166系列主控制器的车载无线充电器应用方案介绍
汽车车载无线充作为一种绝佳的无线充电应用场景,无需频繁插拔充电线,是增加行车安全、提高车主生活品质的一大利器,极大的改善了车内手机使用和充电的体验。本文介绍基于SWM166系列的车载无线充电器应用方案。
华芯微特SWM341系列主控制器LIN接口应用指南
LIN(Local Interconnect Network)是一种基于UART数据格式、主从结构的低成本通信总线,通常用于车门、雨刮器、车灯等对通信速率要求不高的应用场景。本文基于华芯微特SWM341系列主控制器介绍LIN接口应用。
以华芯微特SWM341/SWM34S系列MCU芯片,介绍从软件层面降低MCU功耗的方法
随着集成电路技术的飞速发展,MCU的功耗问题逐渐成为设计和应用中必须考虑的关键因素。低功耗设计对于提高电路可靠性、降低成本以及延长电池寿命具有至关重要的作用。本文档主要是以华芯微特SWM341/SWM34S系列芯片,介绍从软件层面降低MCU功耗的方法分享。
电子商城
登录 | 立即注册
提交评论