STM32 FLASH的擦写寿命

2019-07-24 12:59发布

    这个问题,其实从STM32各个型号的datasheet就可以看出来.     对比了几个文档之后,我发现STM32F10x系列的不同型号,他们的最少擦写寿命不一样.仔细对比了下,原来是版本的问题.在老版本中,写的内容如下:

    这是老版本的表述,就说最少是1K次,典型的是10K次.而后面的新版本,其内容如下:


     新版本的把最少次数改为了10K次,这样的话,我们可以认为STM32的FLASH擦写周期在1W次左右.所以大家可以算算,每天擦写100次,那么需要100天.但是你能每天刷100次么?除非你想测试STM32的flash寿命,呵呵.否则,顶多就是30次的样子.这样算来,每天擦30次,从不间断,能用一年左右. 但是你能一年平均每天都擦30次么?
    


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
34条回答
动次打次歌
2019-07-28 13:55
xyzjacky 发表于 2018-5-24 15:53
想请教一下,一般我们说的擦写一万次,到底是指的擦一万次,还是写一万次?
因为擦一页,这一页可以写很 ...

我的理解是写SD卡和Flash应该不能算一回事,SD卡U盘这类存储设备为了提高寿命,应该是有软件算法在里面的,而写Flash的话是直接写到物理地址的,写哪个地址哪个地址的寿命就减少一次,至于是不是整页的寿命都减少一次我觉得不需要过多的在乎,就暂且认为只是写入的地址寿命减少的话,我的建议如下
   对于不同的应用,如果写入的数据量很少,可以开辟一页的地址循环写入,只擦写一次,待写满后全部擦除再从头开始写,单页的写入次数就是1page/写入的字节大小,至于要开辟多大,根据需求决定
   如果写入数据很多比如1K,那就开辟多页,最少两页来循环写入,多少页也根据需求选择
   说一个我自己的应用,需求是需要存储256字节的数据而且要频繁修改,flash单页是512的,我开辟了15页来循环写,(因为我要频繁的擦写,5页的寿命全部写满可能也不够,保险起见就取了15页,反正空间够用),每次上电先查找掉电前的page编号,选定为当前page,需要写入数据的时候先读取当前page到内存,该写后写入下一个page,写完第15页时指针到第一个page重写开始写,如此循环
   最后注意的问题,每个芯片的flash特性不同,我遇到的大多数都支持字节、双字节、四字节写,整页擦除、扇区擦除等,有些支持页写,这样就比较方便了使用我那样的方法,还有需要注意指针的对齐问题,不然会出错,如果还要什么问题可以随时问我

一周热门 更多>