EEPROM与FLASH

来源:互联网 发布:蜂窝移动数据开关无效 编辑:程序博客网 时间:2024/05/16 11:37


转载:

http://jingyan.baidu.com/article/656db9189de36ee381249c09.html     ROM、PROM、EPROM、EEPROM、Flash ROM的区别

http://blog.csdn.net/yuanlulu/article/details/6163106   EEPROM和flash的区别

http://bbs.ednchina.com/BLOG_ARTICLE_1336961.HTM   延长FLASH和EEPROM芯片写入次数的小方法


EEPROM:电可擦除可编程只读存储器;

FLASH:电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,全名叫Flash EEPROM Memory;


 FLASH 和EEPROM的最大区别:

1、是FLASH按扇区操作,EEPROM则按字节操作;

2、二者寻址方法不同;

3、存储单元的结构也不同;

4、LASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器,

当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多。所以很多存储性电路即会有eeprom也会有flsah。

 

延长FLASH和EEPROM芯片写入次数的小方法

存储寿命,通常FLASH为10万次,EEPROM要多一点,为100万甚至1000万次。FLASH的擦除不能单个字节进行,有一个最小单位,存储容量相对比较大,适合大量数据的存储;EEPROM可以单个字节进行擦除,存储容量不大,只适合存储少量的设置数据。

        先以FLASH和EEPROM需要写入一个字节为例来说明新数据是如何写入的。假定都是在首地址要写入新数据0x55。不管是FLASH还是EEPROM
        对于FLASH,写操作只能将数据位从1改写为0,如果想要将数据位从0改为1,就需要进行擦除操作,而且这个擦除最小单位是page(可能是256字节或更多)。现在要在首地址写入0x55,稳妥的方法是先擦除这个地方,也就是要擦除第一个page,擦除操作会一并将首地址后面的另外255个字节也擦除掉,如果这255个字节保存有其它数据,还需要把这些数据先进行备份,擦除第一个page后再将0x55和备份的255个字节写进去。也不是必须擦除第一个page,写操作可以完成数据位1到0的转变,利用这一特性结合首地址原来的内容,我们就有可能不用进行擦除操作,比如原来内容为0xFF,显然可以直接写入0x55,原内容为0xF5,同样也可以写入0x55,但如果原内容为0xAA,执行写0x55则会得到完全错误的结果,写完后内容依然为0x00,因为对于0x55所有需要保持为1的位数据0xAA都是0,写0x55会把0xAA为1的位全清0,原来为0的位不会改变。

        对于EEPROM,写操作既可以将数据位从1改写为0,也可以将数据位从0改写为1,不需要进行单独的擦除操作,要写0x55直接将0x55写到首地址,不管原来内容为什么,完成写操作后内容都是0x55。

方法:

     从第一个存储单元开始存储数据N次,然后转到下一个单元再存N次,依次类推,当最后一个单元存放N次之后,再转到第一个单元重新开始。

数据储存地址的确认:

找最大数据法

  查找EEPROM中的最大数据,就是掉电前最后一次存储的数据。该法对于单片机来讲,编程时程序量较大,可采用折半查找法或分块查找法降低程序代码量。

用后还原法

  循环将当前数据写入EEPROM后,立即将前面的EEPROM空间都清0再上电,查找数据非0的EEPROM空间即可。有的单片机要求在写入数据之前,必须将所有空间都恢复为0xFF,这样查找非0xFF的数据空间即可。

地址指针法

用一个字节的EEPROM空间作为地址指针。此时,地址指针的数值总是和数据储存的地址值相等,假设第0字节作为地址指针,当该指针值为1时,数据从第一个地址开始储存;为2时,数据从第二个地址开始储存,依此类推。




1 0