stm32的FLASH存储功能

[复制链接]
1841|7
 楼主| wangtao8067227 发表于 2015-1-24 17:24 | 显示全部楼层 |阅读模式
最近在用stm32做一带存储功能的电路板,想通过芯片自带flash实现存储。我是想实现这样的功能:擦除flash作为存储空间,采集一组数据就存在这个空间内,实现数据存储100组采集数据,当在100组存储空间存满后,擦除第1组数,再存入新数据。
但是,在我实际编写代码的过程中发现,stm32的flash只能以一页为单位进行擦除,在存储空间数据存满时,需要进行擦除才能继续写入。那么在进行擦除后,这个存储空间内100组存储数据也会对应丢失啊?那么怎么才能实现呢?请大家指导一下,推荐一些flash的源代码或者是flash存储管理的书籍就更好了!!
mmuuss586 发表于 2015-1-24 17:38 | 显示全部楼层

楼主重复发帖了,已在ST版块回复了;
 楼主| wangtao8067227 发表于 2015-1-24 17:58 | 显示全部楼层
谢谢,这是我的首次发帖
 楼主| wangtao8067227 发表于 2015-1-24 18:05 | 显示全部楼层
假如在0x0800 0000地址处存储一个变量a的对应数据,需要擦除后才能写入。那么变量a的数值改变后,需要擦写一页flash存储空间才能进行存储,这是不是有点麻烦了?有什么更好的解决办法不?
 楼主| wangtao8067227 发表于 2015-1-24 23:13 | 显示全部楼层
wangtao8067227 发表于 2015-1-24 18:05
假如在0x0800 0000地址处存储一个变量a的对应数据,需要擦除后才能写入。那么变量a的数值改变后,需要擦写 ...

谢谢,我感觉你说的挺有道理的。但是断电的情况下,咋个办呢?
mcuisp 发表于 2015-1-25 18:50 | 显示全部楼层
一般会用2页或更多页,做类似环形的存储。
写满一页A后,继续写就到下一页B。
直到下一页B写了一定量的数据,再擦除第一页A。
这样就不会丢数据了。
 楼主| wangtao8067227 发表于 2015-1-27 13:36 来自手机 | 显示全部楼层
查阅了多个资料后,我也感觉楼上是合理的方案。但是个人感觉,底层的存储管理要想做的比较完善比较麻烦。比如:要存储800字节的数据,数据实现不断更新,每天更新100次,还要在调用数据时方便查询最近相关的数据,flash存储管理需要下大功夫才能实现
footprint01 发表于 2016-4-5 10:49 | 显示全部楼层
主程序也在FLASH,对FLASH进行读写,会不会影响到主程序的内容.如何知道主程序占用了哪些地址?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

30

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部