找回密码
 立即注册
查看: 86|回复: 12

关于掉电中断保存数据,是否可以这样操作

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-09-14 08:11:59
已绑定手机

18

主题

64

回帖

844

积分

高级会员

积分
844
发表于 3 天前 | 显示全部楼层 |阅读模式

因为擦除比较耗时。所以,上电后读出上次的数据后,直接先擦除该扇区。


然后在掉电中断服务中不执行擦除,只写入,如此是不是会更保险一些?
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:182
  • 最近打卡:2025-09-14 09:47:40

778

主题

1万

回帖

1万

积分

管理员

积分
19093
发表于 3 天前 | 显示全部楼层
回复

使用道具 举报 送花

3

主题

1987

回帖

822

积分

等待验证会员

积分
822
发表于 3 天前 | 显示全部楼层
关于掉电中断保存数据的操作逻辑,您提出的思路在工程实践中具有一定的合理性,但在实际应用中仍需结合具体场景和芯片特性进行综合评估。以下从技术原理、操作流程、风险点及优化建议等方面进行分析,供您参考。

一、基本操作流程分析

1.1 正常上电流程

您提出的方法中,上电后首先读取上次保存的数据,然后立即擦除该扇区,为后续写入做准备。这种方式可以将耗时的擦除操作提前到系统初始化阶段,从而在掉电中断发生时,仅需执行写入操作,避免因中断服务程序中执行擦除而导致的响应延迟或数据丢失风险。

1.2 掉电中断服务流程

在掉电中断中,仅执行写入操作而不进行擦除,理论上可以提高中断响应速度和数据保存的可靠性。因为擦除操作通常耗时较长(毫秒级甚至更久),在掉电瞬间若系统电源不稳定,擦除过程可能无法完成,导致数据损坏或扇区损坏。

二、潜在风险与问题

2.1 上电擦除失败的风险

如果在上电阶段执行擦除操作,而系统在此阶段发生异常(如复位、断电、看门狗触发等),可能导致擦除未完成或部分完成,进而导致原有数据丢失。这种情况下,如果没有备份机制,将造成数据不可恢复。

2.2 数据一致性问题

若在掉电中断中仅执行写入操作,而目标扇区尚未被擦除(如上电后擦除失败或中断未执行),则写入操作会失败(Flash写入前必须先擦除),导致数据保存失败。

2.3 多次写入与扇区寿命问题

若未合理管理写入地址或未使用磨损均衡算法,频繁写入可能导致Flash扇区寿命缩短。Flash擦写次数有限(通常为10万次左右),需注意扇区使用策略。

三、建议优化方案

为提升系统可靠性,建议采用以下优化措施:

3.1 引入双缓冲机制

使用两个独立的Flash扇区作为数据缓存区,交替使用。例如:
扇区A用于当前数据存储;
上电后读取扇区A数据,擦除扇区B;
掉电中断时写入扇区B;
下次上电后切换为主扇区B,擦除扇区A。

该方法可有效避免擦除与写入冲突,提高数据安全性。

3.2 增加状态标志与校验机制

在每个扇区头部或尾部添加状态标志(如“有效”、“无效”、“正在写入”)和CRC校验值,用于判断数据是否完整、有效。掉电中断处理时可依据状态标志决定是否执行写入或跳过。

3.3 使用掉电检测电路与电容储能

在硬件层面增加掉电检测电路,并配合储能电容,确保在电源切断前有足够时间完成关键数据写入。此方式可显著提高中断服务的可靠性。

3.4 分段写入与原子操作设计

若数据量较大,建议将数据分段写入,并在每次写入后更新状态标志。确保即使在写入中途掉电,也能恢复到上一个完整状态。

四、结论

您提出的“上电擦除、掉电只写”的思路,在特定场景下确实可以提升中断响应速度和数据保存效率。但需注意以下几点:
擦除操作应尽量安排在系统稳定阶段,避免在掉电中断中执行;
掉电中断中应避免耗时操作,确保在有限时间内完成数据写入;
引入数据状态管理和冗余机制,提升系统容错能力;
结合硬件设计优化掉电响应时间,提高整体可靠性。

综上所述,该方案具有一定的可行性,但需结合具体应用场景、芯片特性及系统设计进行综合评估与验证,以确保数据完整性和系统稳定性。

如需进一步讨论具体实现细节或代码示例,欢迎继续交流。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2025-09-13 08:52:59

33

主题

2544

回帖

5535

积分

论坛元老

积分
5535
发表于 3 天前 | 显示全部楼层
是不是还可以留一个备份区域。使用不同的扇区,保留上一次的数据。防止掉电写入失效导致数据丢失
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:557
  • 最近打卡:2025-09-13 09:55:03
已绑定手机

86

主题

6117

回帖

1万

积分

超级版主

积分
11308
发表于 3 天前 | 显示全部楼层
确实不擦除速度更快,但还是建议用比较器提前判断电源状态,万一出现电源抖动或上电波形不满足单调性等问题怎么办
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-09-14 08:11:59
已绑定手机

18

主题

64

回帖

844

积分

高级会员

积分
844
发表于 3 天前 | 显示全部楼层
_奶*** 发表于 2025-9-11 14:44
是不是还可以留一个备份区域。使用不同的扇区,保留上一次的数据。防止掉电写入失效导致数据丢失 ...

怎样判定数据是丢失了?难道还要加个CRC校验?
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-09-14 08:11:59
已绑定手机

18

主题

64

回帖

844

积分

高级会员

积分
844
发表于 3 天前 | 显示全部楼层
目前是没有任何校验的
刚测试了读出后就擦除,掉电中断只写入的方法,看起来和之前一样的效果,都可以用。
这意思就是说3.0V的时候中断,芯片在3V以下还在运行并且能写入EEPROM。
那么实际上低到多少V时芯片就彻底不工作了呢?
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:139
  • 最近打卡:2025-09-14 08:11:59
已绑定手机

18

主题

64

回帖

844

积分

高级会员

积分
844
发表于 3 天前 | 显示全部楼层
xiaob*** 发表于 2025-9-11 18:17
目前是没有任何校验的
刚测试了读出后就擦除,掉电中断只写入的方法,看起来和之前一样的效果,都可以用。
...

看资料是1.9V。
就是从3V下降到1.9V的时间,不能太短了。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:128
  • 最近打卡:2025-09-12 08:32:01
已绑定手机

17

主题

491

回帖

1625

积分

金牌会员

积分
1625
发表于 前天 09:16 | 显示全部楼层
修改后,直接擦除保存
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:485
  • 最近打卡:2025-09-14 00:02:05
已绑定手机

153

主题

1874

回帖

2422

积分

金牌会员

积分
2422
发表于 前天 21:50 | 显示全部楼层
你这个方法是小电容正确方案
大电容忽略
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-14 13:21 , Processed in 0.156640 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表