2214|2

73

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[N32L43X评测]7.Flash的循环读写 [复制链接]

 

一个具有人机交互的项目除了显示,按键操作,存储数据是少不了的。最早学习51单片机的时候都是用AT240x的EEPROM,虽然用起来很方便,但是占空间啊。现在用户们都是尽量压缩体积,让产品看起来更小巧精致,这样Flash模拟EEPROM就应运而生了。

虽然Flash与EEPROM都可以读写,但是底层驱动还是有区别的,EEPROM可以任意地址读写,Flash就有所区别了。

读取数据时,可以任意地址读取

写入数据时分两种情况:

1.数据地址未使用(空),可以直接写入数据

2.数据地址被使用(有数据),需要先擦除Page(每个Page大小根据单片机型号有区别,N32G435系列和N32L43系列是2K/Page,其他可以对照芯片手册查),写入。

 

这就是Flash稍微操作不便的地方,普通存储的数据一般也就十几个字节,想多次修改就需要擦除整个Page(2K),然后写入;对其他未使用的空间是种浪费,也影响Flash的寿命。既然这样就改变使用思路,采取空间换时间的方法,既然一个Page有2K的空间,就把数据依次的写入这个Page里,等这个Page满了再全部擦除,再写入。对N32来说,未使用的Flash读取的数值为0xFFFFFFFF,那就可以以此判断是否使用,更安全的做法是在数据的头或结尾加一个特定的字段,根据特定字段和未使用的字段判断该地址是否为空。

这样每次初始化的时候可以根据结尾数据获取未使用的地址,每次写入操作后更新未使用地址。

 

方法确定,下面就是敲代码了,首先就是根据单片机定义Page大小,使用的用于保存数据的大小(part),地址。

       

这是测试结果

   

7.Flash.rar

501.75 KB, 下载次数: 26

最新回复

这样得防断电和跑飞。   详情 回复 发表于 2022-8-3 18:43
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

来学习一下Flash的循环读写,

采取空间换时间的方法,既然一个Page有2K的空间,就把数据依次的写入这个Page里,等这个Page满了再全部擦除,再写入。这个方法很好

点评

这样得防断电和跑飞。  详情 回复 发表于 2022-8-3 18:43
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 
Jacktang 发表于 2022-7-31 23:23 来学习一下Flash的循环读写, 采取空间换时间的方法,既然一个Page有2K的空间,就把数据依次的写入这个P ...

这样得防断电和跑飞。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表