Flash非典用法 菜鸟可以多一种思路 老鸟勿笑~

[复制链接]
3690|13
 楼主| ayl439 发表于 2010-4-28 14:30 | 显示全部楼层 |阅读模式
该非典用法基于Flash的存储机制,可能众多老鸟都很清楚,这里介绍给更广大的菜鸟,在设计的时候也好多一种思路。已经用于俺的一个小项目了。

即:Flash表面上看来,写的时候只能以字节为单位进行,且某字节写了以后如果不进行擦除操作无法第二次写,否则会出错。     这是通常大家都知道的。     

但是深究到Flash的存储根本机制上,我们就会发现,其实Flash还是可以实现“位操作”的。

因为Flash的擦除操作时将所有为置1,而写操作只能将1置0,而无法将0置1。前面说的二次写如会出现数据错误,就出现在如果第一次写的数某一位为0,而第二次要写的数该位为1,则二次写入无法将该位的0变为1,这是出错的根源。

这种非典用法就是利用写Flash的这种特点。比如第一次写入:
0x1111 1110,第二次写入:
0x1111 1100。第三次以此类推……
各位看官可看懂了?

方法是这个方法,至于如何应用,大家尽可发挥想象 ~

之前我用这种方法存储一个每次递增1的变量。是不是像一种新颖的数字编码方式?只不过一个字节只能代表8个编码。
chunyang 发表于 2010-4-28 14:33 | 显示全部楼层
呵呵,类似思路可以将OTP芯片“变成”有限多次的MTP芯片。
 楼主| ayl439 发表于 2010-4-28 15:12 | 显示全部楼层
:victory:
 楼主| ayl439 发表于 2010-4-28 19:18 | 显示全部楼层
 楼主| ayl439 发表于 2010-4-28 22:57 | 显示全部楼层
ejack 发表于 2010-4-29 07:56 | 显示全部楼层
恭喜LZ,你终于想通了这个用法
qzhui121 发表于 2010-4-29 07:57 | 显示全部楼层
flash路过的看看
mohanwei 发表于 2010-4-29 08:54 | 显示全部楼层
也要看器件手册,看是否支持这样的用法
mcuisp 发表于 2010-4-29 13:24 | 显示全部楼层
要注意很多FLASH不允许太多次的把1变成0.通常表述为擦除后累积编程次数。
这个次数一般不会太多的。
 楼主| ayl439 发表于 2010-4-29 13:34 | 显示全部楼层
ls可以讲讲这个累积编程次数吗 ? 好像确实在某个手册上见到过类似的说法

当时没明白 后来找不到有这一说法的手册了
chunyang 发表于 2010-4-29 14:24 | 显示全部楼层
楼主看一下FLASH的单元电路和存储原理就该明白了。
 楼主| ayl439 发表于 2010-4-29 17:28 | 显示全部楼层
恩 我找找资料看看
mcuisp 发表于 2010-4-30 02:51 | 显示全部楼层
LS需要进一步了解的话,多下几个flash资料看看。
建议看ATmel(45DB161),SST,winbond这几家的NOR flash
huangqi412 发表于 2010-4-30 09:35 | 显示全部楼层
呵呵,类似思路可以将OTP芯片“变成”有限多次的MTP芯片。
chunyang 发表于 2010-4-28 14:33


这个听过,以前用EPROM的时代,买大容量的,可以多次编程,不需要每次都去照紫外光. 编程好多次后才去照一次紫外光.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

1415

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部