OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3465|回复: 12

想问下大家如何利用flash存储可以改变的参数,且掉电后重启设置是近一次设置的参数!

[复制链接]

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
发表于 2020-6-15 08:52:42 | 显示全部楼层 |阅读模式
5金钱

最佳答案

查看完整内容[请看2#楼]

我手头上没现成代码,之前写过W25Q128的驱动,记得它的datasheet里面有明确说过这个。这个操作也不复杂,逻辑大概就是:擦除函数(地址),写入函数(地址,数据)不过擦除有个最小单位,注意一下根据需求进行FLASH地址的划分就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2020-6-15 08:52:43 | 显示全部楼层
mynameisqgj 发表于 2020-6-17 14:33
你好,请问我能参考哈你的代码嘛?我实在弄不出来

我手头上没现成代码,之前写过W25Q128的驱动,记得它的datasheet里面有明确说过这个。这个操作也不复杂,逻辑大概就是:擦除函数(地址),写入函数(地址,数据)不过擦除有个最小单位,注意一下根据需求进行FLASH地址的划分就好了
世界和平
回复

使用道具 举报

5

主题

356

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4675
金钱
4675
注册时间
2019-4-30
在线时间
904 小时
发表于 2020-6-15 10:18:18 | 显示全部楼层
掉电监测,监测到之后马上写进flash。用个稍微大一点点的电容就可以起到一个很不错对的延时
回复

使用道具 举报

4

主题

98

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2018-5-25
在线时间
900 小时
发表于 2020-6-15 13:16:18 | 显示全部楼层
定义一个结构体,一个开头码,四字节的递增序列号,数据,校验CRC,循环写入即可
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-6-15 19:22:54 | 显示全部楼层
修改时保存,然后重启判读
回复

使用道具 举报

1

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2019-3-21
在线时间
103 小时
发表于 2020-6-15 20:52:22 | 显示全部楼层
你改变的时候就写一次,不过感觉这样不太好,也可以开个定时器,每隔一段时间保存一次
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-6-15 22:02:59 | 显示全部楼层
WYW6 发表于 2020-6-15 20:52
你改变的时候就写一次,不过感觉这样不太好,也可以开个定时器,每隔一段时间保存一次

试过改变就写入,但是断电之后,查看变量还是我第一次写入的值。不知道是不是没进行重启判断
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-6-15 22:03:32 | 显示全部楼层
三叶草 发表于 2020-6-15 19:22
修改时保存,然后重启判读

重启如何判读呢?设置一个标志吗?请教一下
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-6-15 22:10:01 | 显示全部楼层
WYW6 发表于 2020-6-15 20:52
你改变的时候就写一次,不过感觉这样不太好,也可以开个定时器,每隔一段时间保存一次

我的思路是把先写入,需要时读出来,然后改变变量的值,改变后又写入了,但是我断电之后查看变量的值是我刚开始最先写入的值,并不是改变的值,不知道我那个环节出来问题。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-16 01:22:36 | 显示全部楼层
自己写代码实现
回复

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2020-6-17 10:43:27 | 显示全部楼层
flash在同一个地址再次写之前得先擦除
世界和平
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-6-17 14:33:20 | 显示全部楼层
礼拜天真好 发表于 2020-6-17 10:43
flash在同一个地址再次写之前得先擦除

你好,请问我能参考哈你的代码嘛?我实在弄不出来
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2020-3-3
在线时间
85 小时
 楼主| 发表于 2020-6-18 15:29:36 | 显示全部楼层
礼拜天真好 发表于 2020-6-17 18:40
我手头上没现成代码,之前写过W25Q128的驱动,记得它的datasheet里面有明确说过这个。这个操作也不复杂, ...

谢谢,已经弄出来了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 08:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表