这个问题,其实从STM32各个型号的datasheet就可以看出来.
对比了几个文档之后,我发现STM32F10x系列的不同型号,他们的最少擦写寿命不一样.仔细对比了下,原来是版本的问题.在老版本中,写的内容如下:
这是老版本的表述,就说最少是1K次,典型的是10K次.而后面的新版本,其内容如下:
新版本的把最少次数改为了10K次,这样的话,我们可以认为STM32的FLASH擦写周期在1W次左右.所以大家可以算算,每天擦写100次,那么需要100天.但是你能每天刷100次么?除非你想测试STM32的flash寿命,呵呵.否则,顶多就是30次的样子.这样算来,每天擦30次,从不间断,能用一年左右. 但是你能一年平均每天都擦30次么?
你找到答案了吗?
如果你的flash被擦写的部分仅仅是数据的存入(一般来说都是如此),那影响的是你系统的工作状态,比如,某页记录有你设备工作时长,影响的是你的系统开机后读取不到正确的工作时长,也记录不了。你的程序还是能跑的。
你说的擦了一万次,一般是把那一个页擦坏了,你看正点原子例程里,写某一页flash前是有检查这一页flash的好坏的。很少会整个片子的flash被擦坏,但也不是没有。同时也不是说某一个页(这里只是指记录数据的区域)坏了程序就跑不了,只是程序会受影响,如上面我的举例。连程序都跑不了的情况很少,也不是没有,这个就要看具体情况,特别是保存code代码的那一段flash坏了,那程序肯定就挂了。
擦写次数的意义在于:
1.官方保证在次数限制内是可靠的,设计产品的时候按照官方保证的次数产品的稳定性就可以得到保证,最普遍的例如flash模拟EEPROM,需要用到两页轮询写还是10页轮询写就跟产品要求有关了,另外不同的产品flash擦写次数也是不同的,例如stm8s和8L
2.讨论调试会不会刷坏flash一点意义都没有,有些还是OTP的呢,芯片并不是玩具
一周热门 更多>