打印

stm32的FLASH存储功能

[复制链接]
1203|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存储空间才能进行存储,这是不是有点麻烦了?有什么更好的解决办法不?

使用特权

评论回复
5
wangtao8067227|  楼主 | 2015-1-24 23:13 | 只看该作者
wangtao8067227 发表于 2015-1-24 18:05
假如在0x0800 0000地址处存储一个变量a的对应数据,需要擦除后才能写入。那么变量a的数值改变后,需要擦写 ...

谢谢,我感觉你说的挺有道理的。但是断电的情况下,咋个办呢?

使用特权

评论回复
6
mcuisp| | 2015-1-25 18:50 | 只看该作者
一般会用2页或更多页,做类似环形的存储。
写满一页A后,继续写就到下一页B。
直到下一页B写了一定量的数据,再擦除第一页A。
这样就不会丢数据了。

使用特权

评论回复
7
wangtao8067227|  楼主 | 2015-1-27 13:36 | 只看该作者
查阅了多个资料后,我也感觉楼上是合理的方案。但是个人感觉,底层的存储管理要想做的比较完善比较麻烦。比如:要存储800字节的数据,数据实现不断更新,每天更新100次,还要在调用数据时方便查询最近相关的数据,flash存储管理需要下大功夫才能实现

使用特权

评论回复
8
footprint01| | 2016-4-5 10:49 | 只看该作者
主程序也在FLASH,对FLASH进行读写,会不会影响到主程序的内容.如何知道主程序占用了哪些地址?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

30

帖子

1

粉丝