名人堂再聚首 2023-11-01 17:55 采纳率: 52.8%
浏览 10
已结题

N32G031的Flash擦写问题

有个问题要请教下:

目前一个用N32G031单片机的项目要在运行时保存一些实时信息,而且要掉电保存,信息量很少,就1个字节,用几个比特保存一些开关状态。这款单片机没有EEPROM,只有Flash可以存储这些掉电后需要保存的信息,但Flashca擦除次数有限,看手册是10万次,如果频繁读写肯定有问题。

我的想法是:只有当运行时的信息(也就是开关状态)和Flash保存的信息不同时才保存,其他情况只是读取和比较,但是这种做法有没有什么安全漏洞?万一外部有设备控制那些开关不停的切换状态,那岂不是Flash也会频繁擦写?

请教下各位有没有什么好的办法来确保Flash读写的安全?不让其频繁擦除,要考虑最坏的情况,谢谢了!

  • 写回答

2条回答 默认 最新

  • BH5HPD 2023-11-04 09:46
    关注

    1、首先,确需频繁保存重要数据的,还是外加EEPROM芯片,乃至无成本要求时使用铁电。
    2、内部FLASH可模拟EEPROM,可以去参考如ST的FLASH模拟EEPROM代码,做了一定的内存均衡手段。
    3、上述方法仍然有寿命限制,通常为一百万次,如果按照一秒一次读写来算,一天就是八万多次,十几天寿命到头。
    4、虽然常温情况下,普通EE寿命实际可达二百~三百万次以上,但可能无法达到标称100年存储,甚至几个月就无法读出数据。
    5、至于掉电检测,N32G031系列MCU内部有比较器,可通过比较器状态+定时器查询+低功耗(可选)的方式进行迟滞掉电检测,然后进行数据保存
    6、注意,如果使用FLASH,那么MCU在上电初始化时就应擦除对应的扇区,以避免在掉电时去擦除,从而导致擦写时间长,来不及保存。
    7、若使用掉电检测,其平时MCU运行时,可以不进行保存,在RAM中即可,但是前提条件是掉电检测需要可靠,这样就无需考虑读写寿命问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line