EEPROM 和 Flash 的区别?
- 单片机
- 2022-03-17
- 21热度
- 0评论
EEPROM(Electrically Erasable Programmable Read-Only Memory):电可擦可编程只读存储器,掉电后数据不会丢失。
EEPROM可以在不使用文件和文件系统的情况下用来固化一些数据,常见的比如用来保存SSID或者Password,保存用户设置等数据,这样就可以不用每次都通过烧写程序来改变系统运行时的初始值。
EEPROM库在Arduino中经常用于存储设定数据。ESP8266也不例外,但是,和真正的Arduino板子不一样的是,ESP8266没有硬件EEPROM,ESP8266采用的方式是将flash中某一块4K的存储模拟成EEPROM。至于为什么是4K呢?主要原因是flash是以sector为一个单位,1 sector等于4096Bytes(4KB),操作flash时是以sector为一个整体来操作。
读取操作是通过ESP8266 SDK提供的API将flash中的内容读取到Buffer中是没有限制一次就要将4K全读完,Buffer的大小由EEPROM.begin(size)决定,但是由于Buffer大小会占用内存RAM,所以务必按照实际需要来定义大小。
写入操作是通过commit将flash eeprom地址的4K 存储内容删除后才将Buffer写入flash中(也就是说就算你buffer只有4个字节,但是最终还是会刷新整个sector)。
1、擦写次数不同
eeprom比flash多很多,一般flash数据保证保存10年擦写的次数在几千次(现在有些已经到了上万次),eeprom的数据比这个大,但普通eeprom也是有限制的,若要“无限制”,可以选择FRAM,它虽然读一次和写一次都算一次操作,但操作次数可以到10的12次方级别,基本可以认为是无限。
2、擦写方式不同
flash是不能单字节擦写的,eeprom可以,flash的最小擦写单位通常为一个sector,大小根据不同芯片不同。
3、使用情况不同
对单片机来说,关键性的数据,如传感器数据、用户配置参数等用EEPROM存储,而像文件等大容量的数据记录,或者经常读但很少写的数据,可以用flash闪存存储,像软件代码、图片、字库、文件记录等。
总结:如果产品周期内的擦写次数较少、擦写时有足够的缓存,在这样的产品中完全可以用flash来替换eeprom,否则不行。另外,前面提到的FRAM(铁电存储器),除了操作次数相当高外,操作时间也很短,基本上命令发完就完成了读写操作,不需要eeprom的写等待查询。具体型号如:FM24C04(IIC接口,4kbit)

鲁ICP备19063141号
鲁公网安备 37010302000824号