超实用单片机FLASH算法,存数据再不担心掉电丢失了

作者: 畅感科技分类: 极客DIY 发布时间: 2023-12-12 19:50:26 浏览:8474 次

超实用单片机FLASH算法,存数据再不担心掉电丢失了

AI视频小助理:
一、如何使用FLASH操作的技巧来防止掉电丢失,通过提取两个页作为一个代理配置页和代理数据页,保障用户数据页不丢失。 00:01 - 介绍单片机flash操作的小技巧,防止掉电丢失 00:57 - 演示如何实现防掉电,包括擦除、替换、写入等操作 02:32 - 单片机初始化时调用flash代理初始化函数,恢复掉电导致的数据丢失 二、如何使用代理数据来防止单片机掉电数据丢失,通过解析下一步数据来擦除代理数据和配置,最后覆盖到数据业务中。 03:01 - 解析下一步数据,读出用户数据业务的收地址,擦除代理数据 03:19 - 擦除代理配置业,避免每次初始化都进行擦除 03:38 - 代码封装代理读写和初始化函数,方便实现掉电保护 --本内容由AI视频小助理生成,关注解锁AI助理,由@汝等自为之 召唤发送

2018050109:
做为程序员,咱们画个流程图吧,看了几遍才大概明白,请问:要改55,第一次读回Ram中,写到代理数据页中这个过程掉电了,代理数据页是废数据。55这个数据要怎么恢复。如果你不考虑这个情况,为啥要操作这么多步,直接写要改的页也是一样的效果。

【回复】这种情况单纯软件很难决,需要使用外部掉电绝掉电检测电路检测 掉电中断写入数据(掉电后单片机由储能电容供电,储能电容一般维持几十毫秒 数据就能全部写入flash)[doge]
【回复】主要是解决的问题是——有些重要数据,可以接受新数据未写成功,但不能接受新数据未写入而旧数据也丢失了的情况。
【回复】回复 @畅感科技 :那其实可以分ab页,加个全局crc32校验和递增index就行
WatchDoger:
将数据做crc检验放到保存数据末尾,写这两份数据到Flash,上电再读出这两份数据,分别做crc检验和末尾校验码对比,用正确的覆盖错误flash数据,都错了就恢复为出厂值,产品上是这么做的

【回复】flash 中读出的两个数据,怎么知道哪个是正确的
【回复】回复 @麻瓜奇遇-吃饭威龙 :利用校验码验证数据是否正确
【回复】重要数据,写三处。3选2
Zaxife:
24C02不香了么?非得用占用总线的FLASH存数据?[笑哭]

【回复】成本,而且flash和EEPROM存储原理不一样用途也不一样,如果只是很久更变一次数据存储,flash就足够,经常更变数据存储,flash就不适合了,用EEPROM适合,不用擦除页就可以在上面写。
【回复】使用场景不一样,片内存储少量的系统数据还是为了节省成本
【回复】回复 @Zaxife :单片机和老板有一个能跑
乡下老朋友:
我一步就完成了,你还在想第几步掉电

simpleTTTTTT:
将数据做crc检验放到保存数据末尾,写这两份数据到Flash,上电再读出这两份数据,分别做crc检验和末尾校验码对比,用正确的覆盖错误flash数据,都错了就恢复为出厂值,产品上是这么做的did

【回复】有没有可能上电时两份数据都检验成功了,但是分不清哪个是新配置的数据
请不要回答:
个人愚见,掉电时正在存储数据,不管是标记还是数据,如果存储失败下次上电最多恢复为历史数据,难道数据可以恢复成没有写入成功的数据?没有物理上的措施,仅靠软件是解决不了的吧。

【回复】主要是解决的问题是——有些重要数据,可以接受新数据未写成功,但不能接受新数据未写入而旧数据也丢失了的情况。
【回复】他就是实现这个简单的功能,没啥特别的,反而他这个视频做的挺麻烦。
好低俗:
防止存储过程中掉电丢失数据,只要不去擦除存在有效数据的页面就好了。还有些flash会掉程序呢

-韩跑跑_:
我用过类似的,好用,反正就是保存历史数据,最新保存数据校验失败,前一次的数据肯定有效

风之伤544:
掉电写内部flash已经干坏过几次单片机了,另外读写flash对实时性影响很大,加个at24吧,不贵

【回复】读写影响不大的,擦除才需要大量时间,读写都是微秒级别的。擦除我目前是在初始化的时候判断是否需要擦除,剩余容量小于100条记录空间时才进行擦除。
萌新一枚娃:
共享下 flash的操作 函数呗 感谢大佬[tv_doge][tv_doge]

FLASH 实用 单片机 嵌入式 编程 掉电丢失 数据 开源 MCU 一学就会的技能点

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!