迪文科技论坛

 找回密码
 立即注册
搜索
楼主: hzpyl

【提问】合格数量和不合格数量,如何掉电保存?

[复制链接]

1

主题

18

回帖

479

积分

中级会员

Rank: 3Rank: 3

积分
479
发表于 2021-8-10 10:53:53 | 显示全部楼层
那这个做个均衡擦写就可以提高寿命了,只是可能会出现刚刚擦除还没写入就失败了,所以要做个备份写入,,,,其实我试过st的flash寿命超过10万我写了30w差不多,不晓得是不是姿势不对
回复

使用道具 举报

15

主题

155

回帖

3491

积分

论坛元老

Rank: 8Rank: 8

积分
3491
 楼主| 发表于 2021-8-10 13:18:03 | 显示全部楼层
Lreamy 发表于 2021-8-10 10:16
我可能也没有说清楚,看你的数据长度是多少,从001000开始往后占多少空间,每次实际上只擦除了这一段空间 ...

请问,擦除的最少多少字节?
回复

使用道具 举报

0

主题

655

回帖

7546

积分

论坛元老

Rank: 8Rank: 8

积分
7546
发表于 2021-8-10 14:07:53 | 显示全部楼层
hzpyl 发表于 2021-8-10 13:18
请问,擦除的最少多少字节?

数据库最小单元两个字长
沧海横流,方显英雄本色。
回复

使用道具 举报

15

主题

155

回帖

3491

积分

论坛元老

Rank: 8Rank: 8

积分
3491
 楼主| 发表于 2021-8-10 14:24:49 | 显示全部楼层
Lreamy 发表于 2021-8-10 14:07
数据库最小单元两个字长

按我以前的知识, Flash擦除都是按块的,譬如1024字节、或更大。
回复

使用道具 举报

0

主题

655

回帖

7546

积分

论坛元老

Rank: 8Rank: 8

积分
7546
发表于 2021-8-10 14:50:34 | 显示全部楼层
hzpyl 发表于 2021-8-10 14:24
按我以前的知识, Flash擦除都是按块的,譬如1024字节、或更大。

Nor Flash空间为320KB,分为80个区间,每个区间对应4KB存储器
沧海横流,方显英雄本色。
回复

使用道具 举报

15

主题

155

回帖

3491

积分

论坛元老

Rank: 8Rank: 8

积分
3491
 楼主| 发表于 2021-8-10 15:20:40 | 显示全部楼层
Lreamy 发表于 2021-8-10 14:50
Nor Flash空间为320KB,分为80个区间,每个区间对应4KB存储器

一般的单片机,Flash擦除后都为0xFF,11111111B,
是1的位,可以改为0,
但是0的位,不能改为1,  那怕改1个位,都要擦除整个区间,

若每个区间是4KB, 只要改1个位,都要擦除整个4KB区间,

迪文单片机,是不是也是这样的?

回复

使用道具 举报

0

主题

655

回帖

7546

积分

论坛元老

Rank: 8Rank: 8

积分
7546
发表于 2021-8-10 15:29:51 | 显示全部楼层
hzpyl 发表于 2021-8-10 15:20
一般的单片机,Flash擦除后都为0xFF,11111111B,
是1的位,可以改为0,
但是0的位,不能改为1,  那怕改 ...

是的,是这样的
沧海横流,方显英雄本色。
回复

使用道具 举报

15

主题

155

回帖

3491

积分

论坛元老

Rank: 8Rank: 8

积分
3491
 楼主| 发表于 2021-8-10 15:44:56 | 显示全部楼层
为了提高擦除寿命,可用一次擦除,多次写的方法。
譬如,我们经常变化的参数为5个,  0x01,0x02,0x03,0x04,0x05, 0xA5,0x5A (A55A为结束标志)
每次保存,都在前一次的后面,保存满后,擦除一次就够了。
这样,4K扇区,可以保存584次,寿命提高很多。

只要把擦除和保存,分成2个指令,我们用户就可实现。
回复

使用道具 举报

1

主题

5

回帖

118

积分

注册会员

Rank: 2

积分
118
发表于 2023-4-26 14:14:09 | 显示全部楼层
Lreamy 发表于 2021-8-10 09:13
Nor Flash不是每次都擦除整个扇区的,只是针对你写入的地址,为了提高擦除寿命,可以自行分区,对某一块F ...

请问这个擦除是自动擦除么?
比如我写数据 0x01,0x02,0x03,0x04,0x05, 0xA5,0x5A 到地址 0x001000,那我下次再次往这个地址写数据,他是会自动擦除么?还是说需要先进行一个擦除的命令?如果需要先擦除的话?是怎么操作的
回复

使用道具 举报

0

主题

932

回帖

6205

积分

论坛元老

Rank: 8Rank: 8

积分
6205
发表于 2023-4-26 14:30:04 | 显示全部楼层
小坑kk 发表于 2023-4-26 14:14
请问这个擦除是自动擦除么?
比如我写数据 0x01,0x02,0x03,0x04,0x05, 0xA5,0x5A 到地址 0x001000,那我 ...

同一个地址区间,再次写进去的话会覆盖掉之前的数据。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-25 21:39 , Processed in 0.079880 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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