打印

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

[复制链接]
1959|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 | 只看该作者
UP~!

使用特权

评论回复
5
ayl439|  楼主 | 2010-4-28 22:57 | 只看该作者
UP~!

使用特权

评论回复
6
ejack| | 2010-4-29 07:56 | 只看该作者
恭喜LZ,你终于想通了这个用法

使用特权

评论回复
7
qzhui121| | 2010-4-29 07:57 | 只看该作者
flash路过的看看

使用特权

评论回复
8
mohanwei| | 2010-4-29 08:54 | 只看该作者
也要看器件手册,看是否支持这样的用法

使用特权

评论回复
9
mcuisp| | 2010-4-29 13:24 | 只看该作者
要注意很多FLASH不允许太多次的把1变成0.通常表述为擦除后累积编程次数。
这个次数一般不会太多的。

使用特权

评论回复
10
ayl439|  楼主 | 2010-4-29 13:34 | 只看该作者
ls可以讲讲这个累积编程次数吗 ? 好像确实在某个手册上见到过类似的说法

当时没明白 后来找不到有这一说法的手册了

使用特权

评论回复
11
chunyang| | 2010-4-29 14:24 | 只看该作者
楼主看一下FLASH的单元电路和存储原理就该明白了。

使用特权

评论回复
12
ayl439|  楼主 | 2010-4-29 17:28 | 只看该作者
恩 我找找资料看看

使用特权

评论回复
13
mcuisp| | 2010-4-30 02:51 | 只看该作者
LS需要进一步了解的话,多下几个flash资料看看。
建议看ATmel(45DB161),SST,winbond这几家的NOR flash

使用特权

评论回复
14
huangqi412| | 2010-4-30 09:35 | 只看该作者
呵呵,类似思路可以将OTP芯片“变成”有限多次的MTP芯片。
chunyang 发表于 2010-4-28 14:33


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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

1406

帖子

10

粉丝