EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。

狭义的EEPROM:

这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。

flash属于广义的EEPROM,因为它也是电擦除的rom。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。

flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。

flash分为nor flash和nand flash。nor flash数据线和地址线分开,可以实现ram一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。

nand flash同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(nandflash按块来擦除,按页来读,norflash没有页)

FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。

在芯片的内电路中,FLASH和EEPROM不仅电路不同,地址空间也不同,操作方法和指令自然也不同,不论冯诺伊曼结构还是哈佛结构都是这样。技术上,程序存储器和非易失数据存储器都可以只用FALSH结构或EEPROM结构,甚至可以用“变通”的技术手段在程序存储区模拟“数据存储区”,但就算如此,概念上二者依然不同,这是基本常识问题。

现在的单片机,RAM主要是做运行时数据存储器,FLASH主要是程序存储器,EEPROM主要是用以在程序运行保存一些需要掉电不丢失的数据。另外,一些变量,都是放到RAM里的,一些初始化数据比如液晶要显示的内容界面,都是放到FLASH区里的(也就是以前说的ROM区),EEPROM可用可不用,主要是存一些运行中的数据,掉电后且不丢失

EEPROM与FLASH闪存到底有什么区别

1、擦写方式不同

FLASH在写新的数据前必须先擦除,而且经常是只允许整页擦除,没有办法擦除一个字节,换句话说,只能成块的读写,特别是写。

EEPROM写之前不需要擦除,可以每次改写一个字节。当然,也有缺点,EEPROM读写速度慢,另外,容量比较小,也就是说EEPROM要贵。

2、使用情况不同

对单片机来说,关键性的数据,如传感器的标定数据,用户配置参数等,用EEPROM存储,而像文件等大容量的数据记录,或者经常读但很少写的数据,可以用FLASH闪存存储,像图片、字库、文件记录。

除了操作次数相当高外,操作时间也很短,基本上命令发完就完成了读写操作,不需要eeprom的写等待查询。

3、擦写次数不同

eeprom比flash多很多,一般flash数据保证保存10年擦写的次数在几千次(现在有些已经到了上万次),eeprom的数据比这个大,但普通eeprom也是有限制。

如果要“无限制”,可以选择FRAM,它虽然读一次和写一次都算一次操作,但操作次数可以到10的12次方级别,基本可以认为是无限。

参考资料来源:百度百科—EEPROM

参考资料来源:百度百科—Flash

STC单片机的FLASH程序存储器、SRAM字节、EEPROM有什么区别与联系?

FLASH程序存储器存程序,单片机上电后会自动从这里读代码开始运行。

SRAM是跑程序时候暂存临时数据的地方,一般不太大,从128字节到几K字节都有,一掉电数据就没了。

EEPROM是掉电也不丢数据的存储器,一般都用来存设置的。你可以一字节一字节的把每字节的8位1任意编写成0。但这片一般是按扇区为单位,一擦除就是全成1。

STC有的片FLASH也能在跑程序的时候由程序控制擦写。

扩展资料:

特点:

EEPROM可单字节操作更灵活,FLASH存储量更大些FLASH:只能块擦除(叫块擦除更准确吧,原文是BLOCK),举例说明:比如你用的FLASH的BLOCK是512个字节(不同的FLASH大小不同),那么只有擦除过(所有位写“1”)的BLOCK才能重新写入。

意思就是只能从“1”写到“0”,如果要从“0”改到“1”必须整块擦除,而且擦除时的速度相对写入和读出要慢时的速度相对写入和读出要慢时的速度相对写入和读出要慢很多。FLASH主要用于程序存储。EEPROM可以单字节操作,没有块擦除的要求。相对FLASH更为灵活。