EEPROM和FLASH总体差异
部分MCU片内不带程序存储器ROM,可执行代码只能放在外面的EEPROM、FLASH(外扩)中;
单片机对于数据的处理和系统的大量数据采集,需要考虑数据的长期保存和掉电保存等问题,因此外扩EEPROM就是这系统常见的模块。外扩的EEPROM也可以用来存储一些参数,保存一些掉电后需要保存的数据等。
一、EEPROM容量小、K字节级别 ,按bit操作,可读可写,一般保存当前工作状态,多用数据存储。
以字节byte为最小修改单元
例:电视机中用户改了音量值之后,这个值就是保存在这里的,当再次开机时,系统就会先把这个值读到然后音量设置到关机前的状态,当用户再次更改音量时,这个值会被重新改写。
如果没有EEPROM,就不能保存用户更改的值了,那每次开机都是最原始的数据。
EEPROM是为更改固化程序,如打补丁,或升级新版本固化程序准备的,如电脑主板BIOS芯片
EEPROM如接口卡中用来存放硬件设置数据
EEPROM如特殊数据的加密存储,增加安全性
接口: I2C 、SPI
EEPROM的接口一般分为两种:四线SPI和两线I2C
二、FLASH容量大、M字节级别,按块擦除,页,字节读取,可读可写(多用于读)程序都存在这里。
BOOT[1-0]来选择启动的 flash
容量大小,数据读写速率是主要的区别。
举几个例子: 都可以做CPU/ASIC芯片的启动程序,比如PHY ,SW 常用EEPROM,因为代码小吗,256K之内就够了;但是CPU的起动代码通常EEPROM搞不定,而且CPU通常还有操作系统,可以存在EEPROM(BOOT)+FPASH(system)的模式,但是一眼看去,不如把FLASH分区,把2部分东西都装下。
EEPROM通常还有就是存单板信息,厂家信息,PCB信息,MAC地址这些,配置信息这些基本的东西,通常是在工厂烧入,然后焊接在单板上,就跟你在单板打丝印一样,就是个标识。
接口:FSMC接口、SPI接口、 QSPI接口,
EEPROM扩展
Microchip收购Atmel
上电时,可将ATAES132A配置为使用SPI或I2C接口对接至大多数微控制器。
当采用I2C模式时,不使用片选引脚,并且必须将该引脚连接到电源或接地。
当配置用于SPI模式时,按照常规会使用片选引脚。
a、EEPROM I2C通讯
AT24C02 是串行CMOS类型的EEPROM存储芯片,AT24C0x这个系列包含了AT24C01、AT24C02、AT24C04、AT24C08、AT24C16、AT24C512这些具体的芯片型号。
他们容量分别是:1K (128 x 8)、2K (256 x 8)、4K (512 x 8)、8K (1024 x 8)、16K (2048 x 8) ,其中的8表示8位(bit)
原文链接:STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)_DS小龙哥的博客-CSDN博客_at24c02与stm32连接图
b、EEPROM SPI通讯
嵌入式linux开发 (十一) FLASH(1) stm32外扩EEPROM___pop_的博客-CSDN博客
STM32:SPI总线、W25Q64(FLASH)的详细介绍-电子发烧友网
FLASH扩展
STM32:SPI总线、W25Q64(FLASH)的详细介绍
a、STM32外扩展SRAM接口:也是FSMC接口,
stm32 FSMC模拟8080时序 模拟显存 点亮液晶LCD
stm32f1系列芯片使用FSMC外设来管理扩展的存储器,FSMC灵活地静态存储器控制器,他可以用于驱动包括SRAM、NORflash、NANDflash类型的存储器,不能驱动如SDRAM这种动态的存储器。
在STM32F429中,具有FMC外设,支持FMC,可以控制SDRAM存储器
SRAM:静态随机存取存储器,易失性存储器,读写速度非常快,适合做内存,但是非常贵。
SRAM的引脚图:A是地址线、IO是数据线,就是通过地址去访问数据。
原文链接:https://blog.csdn.net/weixin_45589030/article/details/120091238
b、flash扩展:FSMC接口
c、flash扩展:SPI接口、 QSPI接口
1、单片机---HLK-W801外部扩展flash_外扩flash
背景介绍
今天想扩展一下Flash存储,用了一片常用的W25Q64的 NOR FLASH芯片,通过SPI接口方式,与单片机HLK-W801进行连接,并进行数据存储和读取。
W25Q64 64Mbit =8MB的大小
--------------------------------------------------------------------------------------------------------------------------------
Flash基础知识
以W25Q128为例:128Mbit =16MB的大小
块:Block,每个块可以是32KB(8个扇区),64KB(16个扇区)
扇区:Sector,每个扇区4KB=16页
页:Page,每页256Byte(字节)
总共:16MB=16*1024*1024B/256=65536个页。
Flash芯⽚内的数据只能由1变0,不能由0变1
块是上层软件中(操作文件时)使用的最小的操作单元,就是(操作文件时)一个块一个块进行操作(块的大小格式化时可以设置【如linux、fatfs等等】)。
擦除可以按16页(即一个扇区擦除,4KB)、按128页擦除(8个扇区,32KB块擦除)、按256页擦除(16个扇区,64KB块擦除)或者整片擦除。
每次编程数据为256字节。
2、STM32:SPI总线、W25Q64(FLASH)的详细介绍重点
W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。
W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持2.7~3.6V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80MHz。
SPI通讯
F_CS 、SPI_MISO、SPI_SCK和SPI_MOSI四个引脚与单片机的IO口连接,可以是单片机的硬件SPI接口,也可以通过普通IO口来模拟SPI协议。
原文链接:4、https://blog.csdn.net/chengoes/article/details/115429426
中文手册:
驱动W25Q64
我用的是W25Q64,是一个8MB的flash,W801源码中,有一个gd25qxx的驱动,基本是可以通用的,但是有两个问题,需要解决。
读取ID失败,W25Q64的读ID指令是0x90,所以我这里增加了一个宏定义开关
原文链接:5、https://blog.csdn.net/baidu_19348579/article/details/123983741
6、STM32CubeMX学习笔记(10)——SPI接口使用(读写SPIFlashW25Q64) - 百度文库
7、STM32CubeMx之硬件SPI驱动W25Q64_IT_阿水的博客-CSDN博客_w25q64驱动
8、STM32驱动SPI FLASH(W25Q64)_宁静致远2021的博客-CSDN博客_w25q64驱动
9、STM32系列(HAL库)——F103C8T6通过SPI方式读写W25Q64—(Flash存储模块)_嵌入式创客工坊的博客-CSDN博客_io模拟spi读取w25q64
Eeprom的背景
一、特点不同
1、ROM特点:只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。
2、RAM特点:随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快。
二、保存方式不同
1、ROM保存方式:如果突然停电或者没有保存就关闭了文件,那么ROM可以随机保存之前没有储存的文件。
2、RAM保存方式:如果突然停电或者没有保存就关闭了文件,那么RAM会使之前没有保存的文件消失。
ROM和RAM的其它相关介绍:
由于ROM具有断电后不丢失信息的特点,可以作为计算机启动的BIOS芯片。EPROM、EEPROM和Flash ROM(NOR Flash 和 NAND Flash),性能同ROM,但可以重写。
一般来说,阅读比写作快,写作需要比阅读更高的电压。(读5V,写12V),但flash可以在相同电压下读写,容量大,成本低。如U盘MP3中使用广泛。
电脑上我们通常说的内存也就是RAM,也就是运行内存,断电关机后清除所有数据。
PROM(One Time Progarmming ROM,OTP-ROM)一次可编程只读存储器只允许写入一次
EPROM(Erasable Programmable Read-Only Memory)是一种非易失性存储芯片,一旦编程完成后,EPROM只能用强紫外线照射来擦除。
EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。
单片机内部的rom只能在程序下载的时候进行下载和改写,但是在程序运行过程中是不可改写。掉电不会丢失。
单片机的ram数据在程序运行过程中是可以更改的,但是掉电会丢失。
我们如果需要掉电不丢失而且程序还能更改,显然rom和ram都无法满足,此时就可以使用eeprom
flash:
flash属于广义的EEPROM,因为它也是电擦除的rom。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。
flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。
EEPROM和flash的区别和联系
1、擦写方式不同
FLASH在写新的数据前必须先擦除,而且经常是只允许整页擦除,没有办法擦除一个字节,换句话说,只能成块的读写,特别是写。
EEPROM写之前不需要擦除,可以每次改写一个字节。当然,也有缺点,EEPROM读写速度慢,另外,容量比较小,也就是说EEPROM要贵。
2、使用情况不同
对单片机来说,关键性的数据,如传感器的标定数据,用户配置参数等,用EEPROM存储;
而像文件等大容量的数据记录,或者经常读但很少写的数据,可以用FLASH闪存存储,像图片、字库、文件记录。
除了操作次数相当高外,操作时间也很短,基本上命令发完就完成了读写操作,不需要eeprom的写等待查询。
3、擦写次数不同
eeprom比flash多很多,一般flash数据保证保存10年擦写的次数在几千次(现在有些已经到了上万次),eeprom的数据比这个大,但普通eeprom也是有限制。
eeprom在系统中的存在方式:一种是在单片机内部集成的,另一种是外扩的。
EEPROM的编程方式:
1、I2C底层时序
2、器件定义的寄存器读写时序
EPROM芯片有一个很明显的特征,在其正面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的数据,完成芯片擦除的操作要用到EPROM擦除器。EPROM内资料的写入要用专用的编程器,并且往芯片中写内容时必须要加一定的编程电压(VPP=12~24V,随不同的芯片型号而定)。
EPROM的型号是以27开头的,如27C020(8*256K)是一片2M Bits容量的EPROM芯片。EPROM芯片在写入资料后,还要以不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线照射而使资料受损。
---- EEPROM拯救了这一切
EEPROM的出现可以说是跨时代的,因为ROM可以多次编程了,对于程序员来说,终于可以多次烧写单片机了,更让我们兴奋的是,我们可以使用电擦除,而不是紫外线擦除了。
从擦除次数上,EEPROM可以擦除100W次,而且EEPROM可以针对每一个区块,也就是每一个位置写 「0」或者 写 「1」,如果大家知道FLASH特性的话,就会觉得EEPROM是多么优秀。而且数据的保存时间可以达到100年。
当然了,特点就是电路复杂,成本高,因为成本高就导致了EEPROM的大小不是非常大,一般在512KB 以下。
---- Flash:
如果从电擦除这个特性上说的话,FLASH也是EEPROM的一种,不同的是,FLASH的擦除区块不是一个字节,而是扇区来擦除,也是因为这样的特性,才导致FLASH价格比EEPROM便宜。
为什么单片机中还要既有Flash又有EEPROM呢?
不仅仅是单片机,很多ARM处理器也是这样,需要有ROM来存储WIFI、蓝牙的MAC地址之类的。
简单来说,当然是为了省钱啊,如果有钱,我肯定是放几个G的EEPROM,不用就放着也可以,但是实力不允许啊(EEPROM贵, FLASH便宜)。
EEPROM就用来存储一些小东西,比如开机次数,常用的标志位之类的东西。
FLASH就用来存储比较大的,比如固件,如果是MP3这类的产品,就可以用FLASH来保存歌曲。
一、什么是EEPROM
EEPROM 是电可擦可编程只读存储器,一种掉电后数据不丢失的存储芯片。
二、什么是FLASH
Flash memory指的是“闪存”,所谓“闪存”,它也是一种非易失性的内存,属于EEPROM的改进产品。
三、两者对比
相同点:两者都能掉电存储数据,不丢失数据,都属于广义的ROM
区别:
1)FLASH按区块操作,EEPROM则按字节操作
2)FLASH写入时间长,EEPROM写入时间短
3)FLASH擦写次数少(1万次),EEPROM次数多(100万次)
4)FLASH的电路结构较简单,成本低,EEPROM工艺复杂,成本高
5)FLASH用作程序存储器,EEPROM用作数据存储器
数据存储器不能用FLASH,因为:
1:FLASH有一定的擦除、写入次数,一般的单片机的FLASH擦除写入次数的标称值是10000次。
2:FLASH写入数据需要比较长的时间,大约需要4-6ms.而且写FLASH需要加上9V的高压,麻烦。
EEPROM可以作为数据存储器,但是少,因为:
但是单片机一般用RAM作为数据存储器,因为EEPROM工艺复杂,成本高,适合于存储掉电保护的数据,而这类数据往往不需要存储太多。
————————————————
版权声明:本文为CSDN博主「xix_yu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xix_yu/article/details/121877385
定义
FLASH和EEPROM都属于广义的ROM,掉电数据不丢失。
读写特性
FLASH是块擦除的,EEPROM任意bit可修改。
NAND FLASH只能按页读取,NOR FLASH可按字节读取,EEPROM任意bit读取。
成本和寿命
NAND成本最低,NOR成本也很低,EEPROM成本高
NAND适合做大容量数据存储;NOR因为支持字节读取,适合做程序存储器;EEPROM适合做小容量的片内存储器。
NAND擦写次数约十万次;NOR擦写次数约一万次;EEPROM擦写次数约一百万次。
产品和应用
NAND一般是SPI接口,密度高、擦写快,控制略复杂。用在存储设备上,如U盘、SD和MMC等
NOR可以提供SRAM接口,直接可访问,作为程序执行接口。用于MCU的程序存储。
EEPROM读写简单,一般用于高可靠性小容量的片上存储。
————————————————
版权声明:本文为CSDN博主「lyfwill」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lyfwill/article/details/90898936