当前位置:   article > 正文

stm32 Flash 简单应用 减少擦除 提高寿命_stm32f103rct6 flash寿命

stm32f103rct6 flash寿命

不是很完善,若非专用程序不推荐使用,仅仅开阔一下思路。

发现已经擦除的Sector内(比如我用的2KperSector)一次写操作之后可以追加进行第二次写,向后顺延写一直是可行的。这样比写之前先读已有到缓冲,追加new content到缓冲再擦除,写缓冲方式即节省缓冲也节省了好多次擦除。

Stm32Flash(具体F103RCT6)本身的制约因素

目前参照pdf写操作只有一种方式Bit16写也就是2Byte写,必须保证Address是偶数(Shoud内部有对齐)否则奇数地址导致HardFault impreciserr总线错误。

解决实现

由于上面的原因,加了个中间判断,保证每次写的长度是偶数,这样也就确保了下层的Program2Byte都是偶数地址。
我读取使用时如果原来的一段数据是奇数个,但读回来会多个填充的内容,偶数不影响。我在用时对填充的内容不敏感,比如数据都是Ascii,填充‘\0’,’\r’都没啥影响。 如果是像文件这样追加的话,不是独立成段成帧显然不合适了。
这样做一定要检查好代码稳定可靠,可以在写入之前assert参数合法,不然直接HartFault就挂了。
想想ST设计的时候能提供Flash Byte写就好了。
我的实际使用是模拟一个Stack在Flash上每次push pop 都以Record为单位的,Record不定长,内容Ascii 所以强行填充成偶数没影响,还没移植过文件系统后面准备用,这样会消耗些Heap,对file来说一会append,一会删一部分,操作都sync。这样段擦处频率应该是不是很高,有知情人士解答一下吗。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/676299
推荐阅读
相关标签
  

闽ICP备14008679号