0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何提高FLASH使用寿命以实现EEPROM的功能呢 ?

冬至子 来源:麦芽二糖 作者:麦芽二糖 2023-10-23 17:44 次阅读

一、

stm32的FLASH擦除是按整页或者整扇区擦除的,不同芯片的页或者扇区(下边统称为页)的大小是不一样的,有1K,16K,64K,128K等大小。

现在我们想要 存3个不同16bit变量的数据,1秒存一次 ,如果不做任何算法,将这3个变量存到3个不同的页的16bit地址,每次更改变量内容都要擦除一次整页(但是我们只使用了16bit的空间),根据芯片数据手册可知,保证性能的情况下flash最少擦除次数为10K,1万次。

我们就按1万次计算,理论上不到3小时我们使用的16bit地址就有损坏的风险。而且要存储的变量个数也有限,我们芯片不可能有那么多页,H7系列也就16页。所以需要一些算法处理,充分利用页的空间。

图片

二、EEPROM组件原理分析

还是上边说的存储情况,存3个不同16bit变量的数据,1秒存一次。

先说一下其大致思路,开辟两块连续大小相同的页,分别为page0,page1,假如我们选用F4的芯片,选用第2页和第3页,均为16K。每个变量分配一个16bit的虚拟地址,同16bit数据一起存储,虚拟地址为了读取数据方便。

三个变量首先在page0存储,存满page0之后,将这3个变量最新的数据复制到page1,然后擦除page0,接下来在page1中存储,page1存满之后,将3个变量最新的数据复制到page0,然后擦除page1,就这样循环存储。

我们粗略的计算一下保证flash的可靠性的前提下,可以使用的时间,2个页共32K,也就是每存32K的数据,page0,page1各擦除一次,我们存的是16bit数据+16bit的虚拟地址,那就是每存8K的16bit数据,page0,page1各擦除一次,这是3个变量,那么每个变量平均存2730次时,擦除一次页,flash擦除寿命按1万次计算,16bit变量1秒存一次,可以存2730100001秒=>7583小时=>315天,这是每天不间断的使用,如果每天只使用8小时,大概可以使用2.5年。如果每天使用8小时,变量每10秒存一次,大概可以使用25年。这样就充分利用了页空间。

这里需要注意变量个数,和存储周期,如果周期太快或者变量个数太多,可以增加页,如果增加页还是不满足,那就只能加专用存储芯片了。

下面看一下具体是怎么实现的:

每个页都有3个状态:

  • ERASED:当期页已擦除。
  • RECEIVE_DATA:页正在从另一个满页接收(复制)数据。
  • VALID_PAGE:页中包含有效数据,并且在将所有有效数据完全传输到已擦除页之前,此状态不会改变。

根据官方提供的这个表,结合程序看,逻辑就很清晰了。

1.jpg

推荐看此表的顺序:自上而下,从左到右。先看同一列,自上而下,再看不同列,从左到右。一定要结合程序实际过一遍,那样更深刻。

注:page0格式化是指,将page0设置为VALID_PAGE状态。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348746
  • EEPROM
    +关注

    关注

    9

    文章

    927

    浏览量

    80318
  • 存储芯片
    +关注

    关注

    11

    文章

    796

    浏览量

    42451
  • Flash存储
    +关注

    关注

    0

    文章

    38

    浏览量

    8235
收藏 人收藏

    评论

    相关推荐

    怎么延长电表使用寿命

    据网络上无法访问,服务部门将得到通知。另外,远程抄表使得LCD不再那么重要,而且其故障最终会由客户上报。 电能计量精度是最后一个关键任务参数,现在可对其加以有效监测,实现智能电表使用寿命的延长。通过部署非侵入式实时精度监测技术,智能电表可以创造更多价值,并
    发表于 07-24 08:15

    实现数据的掉电保存是eeprom更好还是flash更好呢?

    想要实现数据的掉电保存,现在由两种方案,一种是硬件上加上eeprom,一种是用flash配置为eeprom。但是看了相关资料,flash只支
    发表于 09-17 15:06

    Flash存储器的使用寿命有什么办法延长吗?

    的、针对嵌入式应用的文件系统,实现Flash存储器的损耗均衡,并且实现数据的有效管理,对于提高使用寿命具有一定的意义。
    发表于 08-16 07:06

    MSP430G系列单片机的Flash擦写寿命怎么提高

    Flash,可用于存储非易失性数据,但是由于 FlashEEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求...那么诀窍来了~~
    发表于 10-18 09:00

    FLASH寿命有限,次数写多了会坏怎么解决

    30W次,也就是保守估计半年左右就会挂掉一片FLASH! 这样肯定是不行的,那么怎样才能提高FLASH使用寿命
    发表于 05-04 05:55

    AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能

    本帖最后由 贪玩 于 2022-2-16 21:41 编辑 AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能当前诸多嵌入式应用场景都需要用到
    发表于 08-15 14:23

    如何提高调节阀的寿命

    损坏位置转移到辅助位置,保护阀芯和阀座的密封面和节流面。  5.增长节流通道提高寿命法增长节流通道简单的就是加厚阀座,使阀座孔增长,形成更长的节流通道。  6.改变流向、提高使用寿命
    发表于 12-10 15:56

    非易失性存储器FlashEEPROM之间的差异与优缺点

    。根据闪存的类型,闪存的使用寿命会缩短,大多数闪存产品在磨损开始恶化存储完整性之前,能够承受大约10000至1000000次擦除/写入循环。就大小和成本而言,闪存具有比EEPROM更小的存储单元尺寸,并且实现成本更低。原作者:宇
    发表于 04-07 16:42

    STM8的内部flash使用寿命有多长?

    STM8的内部flash使用寿命有多长
    发表于 10-12 07:06

    延长Flash存储嚣使用寿命的研究

    延长Flash存储嚣使用寿命的研究 引 言    随着嵌入式系统在数码相机、数字摄像机、移动电话、MP3音乐播放器等移动设备中越来越广泛的应用,Flash存储器
    发表于 12-15 17:13 1196次阅读
    延长<b class='flag-5'>Flash</b>存储嚣<b class='flag-5'>使用寿命</b>的研究

    如何提高光伏逆变器的使用寿命

    光伏逆变器是电子产品,受内部电子元器件的限制,必然是有一定的寿命。光伏逆变器的寿命是由产品的质量,安装使用环境,后期运维保养等多方面决定。那么如何通过正确地安装使用和后期的运维保养来提高逆变器
    发表于 11-17 17:00 725次阅读

    AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能

    AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能当前诸多嵌入式应用场景都需要用到 EEPROM 作为非易失性的数据
    发表于 11-18 16:21 14次下载
    AN0002—AT32 MCU如何使用片上<b class='flag-5'>Flash</b>来<b class='flag-5'>实现</b><b class='flag-5'>EEPROM</b><b class='flag-5'>功能</b>

    延长EEPROM使用寿命的程序优化方法

    延长EEPROM使用寿命的程序优化方法
    发表于 12-07 21:06 9次下载
    延长<b class='flag-5'>EEPROM</b><b class='flag-5'>使用寿命</b>的程序优化方法

    如何提高光伏逆变器的使用寿命

    光伏逆变器是电子产品,受内部电子元器件的限制,必然是有一定的寿命。光伏逆变器的寿命是由产品的质量,安装使用环境,后期运维保养等多方面决定。那么如何通过正确地安装使用和后期的运维保养来提高逆变器
    的头像 发表于 11-17 16:21 617次阅读
    如何<b class='flag-5'>提高</b>光伏逆变器的<b class='flag-5'>使用寿命</b>?

    用STM32_FLASH模拟实现EEPROM功能

    在工业应用中经常使用EEPROM来存储数据,为降低成本、节省PCB空间,外部EEPROM可以用片内Flash加上特定的软件算法代替。
    的头像 发表于 10-23 17:40 1314次阅读
    用STM32_<b class='flag-5'>FLASH</b>模拟<b class='flag-5'>实现</b><b class='flag-5'>EEPROM</b><b class='flag-5'>功能</b>