leecny2012 发表于 2012-5-25 20:57:08

请问往flash里写数据,不擦除,然后不停的写0xff

这样写flash可以写多少次?

xivisi 发表于 2012-5-25 21:06:12

理论上 无限次,flash初始化所有位为1,写1进去无作用

cddyy 发表于 2012-5-25 21:15:35

FLASH只能由1独立变成0,如果需要从0变成1,须擦除,那就是一片数据区全部变成1,当是1的时候,写1完全无作用。

marshallemon 发表于 2012-5-25 21:17:50

擦除才会变成1

leecny2012 发表于 2012-5-25 21:18:54

我就是想知道写0xff会不会导致flash损坏。因为我每次只写一个字节,而一次就要必须写256或512个字节,所以我就把不要写数据的字节写0xff,这样就不会改写flash中的数据。但是这样,写512个字节就要对某512个字节写512次,这样是否会影响寿命。

蜂巢 发表于 2012-5-25 21:49:23

flash在擦除时会变为1.写入数据时才会变为0.所以只写0xff不会减寿命的。

leecny2012 发表于 2012-6-2 18:31:21

如果有数据,我往里写0xff会不会更改该数据?

malsvent 发表于 2012-6-2 18:44:32

0xff无写入动作
直接跳过该位置

leecny2012 发表于 2012-6-2 18:56:25

我现在做的这个居然把flash里的0写成了1,你说怪不怪

leecny2012 发表于 2012-6-2 18:56:47

我用的是lpc1768芯片里的flash

leecny2012 发表于 2012-6-2 19:07:10

谁说不能把0写成1,往里丢的是0xff,真把1写进去了

leecny2012 发表于 2012-6-2 19:11:28

22275

leecny2012 发表于 2012-6-2 19:12:10

PT100测量电路连接错了。

leecny2012 发表于 2012-6-2 19:12:53

大家注意那个0706变成了0746,我往那个06里写的可是FF啊,怎么会多个4出来呢?

jathenal 发表于 2012-6-2 19:29:29

为避免概念混淆,对Flash的操作不妨定义为擦除、编程
如前面各位所说,擦除是0变1的过程,编程是1变0的过程,单独执行哪个都不会影响flash寿命,经历一个擦写循环才会影响寿命
如果lz说的写是指编程,则结果是写入的数据和原数据取与,写0xff不会改变原值
如果这个写是“擦写”,即擦除+编程的组合,则最后结果就是要写入的数据
对于lz说的IAP应用,可以检查一下所调用的ROM API到底是何种操作
一般情况下都是擦除后再编程,特殊应用下才会对相同区域进行不对称的擦除和编程

leecny2012 发表于 2012-6-2 21:45:30

我已经说了,是在没有擦除的情况下,对一个已有数据的字节比如"06"这个字节写了ff,它确实修改了该字节为46,有图为证,是单步运行的结果。

twitter 发表于 2012-6-2 21:57:09

本帖最后由 twitter 于 2012-6-2 21:58 编辑

jathenal 发表于 2012-6-2 19:29 static/image/common/back.gif
为避免概念混淆,对Flash的操作不妨定义为擦除、编程
如前面各位所说,擦除是0变1的过程,编程是1变0的过程 ...

LPC的ARM,IAP功能擦除和编程是分成2个操作的,好像没有合并这2步的IAP功能的。而且楼主显然没有用擦除就直接编程0xFF了。
页: [1]
查看完整版本: 请问往flash里写数据,不擦除,然后不停的写0xff