SPI Flash和E2PROM两款存储芯片作为单片机常用的外部存储器件,其区别还是要去仔细把握一下的。

以W25Q128为代表的SPI Flash和以AT24C02为代表的E2PROM为例,下面我就用表格的方式介绍一下两类芯片的区别。

芯片类型

AT24C02 E2PROM

W25Q128 SPI Flash

性能

E2PROM通常采用是IIC串行总线,低速,单双工,通信速率一般是百KHz。

SPI Flash是采用的SPI总线,高速,全双工,通讯速率一般是百MHz。SPI Flash属于Flash ROM闪存,相比于EPROM,读写速度更快。

应用场景

E2PROM通常用于存储不频繁读取的数据,如配置信息等。

SPI Flash通常用来存储经常读取的数据,如字库文件等。

数据读取

E2PROM读写比较随意,想写那个地址写那个,想读哪个地址读哪个。

SPI Flash则比较规范,擦除的最小单位是扇区。向某个地址写入数据时, 要先读取这个地址的数据是否为0xFF,如果不是0xFF,那么这个数据写入失败。所以通常的写操作是,在写某个地址之前,直接擦除这个地址所在的那个扇区,然后再写数据。当然,如果这个扇区的所有内容都是0xFF,则无需擦除,可以直接写入。

容量

E2PROM通常容量比较小,大小为KB级的,如AT24C02是2KB。

SPI Flash容量比较大,大小为MB级的,如W25Q16是16Mbit,也就是2MB。

系列

E2PROM型号通常是xx24系列。

SPI Flash通常是xx25系列。

数据存储时间

E2PROM数据保存时间大约是100年。

而SPI Flash数据保存时间为20年。

数据擦写次数

E2PROM的读写次数为100万次左右。

SPI Flash读写次数为10万次左右。

W25Q128为例,容量为128Mbits,注意这里的单位是bit,换算成字节(Byte),也就是:

128Mbits/8 = 16MB = 16*1024KB = 16384 KB = 16,777,216B,所以很容易计算出整个存储空间的地址范围:0x000000~0xFFFFFF,SPI Flash和E2PROM的很大的一个不同就是多了块、扇区、页的概念。

W25Q128的整个存储空间被分成了256个块(Block),每个块包含16个扇区(Sector),每个扇区又包括16个页。

所以,如果按照块来计算,W25Q128包括256个块。 如果按照扇区来计算,W25Q128包括256*16=4096个扇区。 如果按照页来计算的话,W25Q128包括4096*16=65536个页。

每个块的大小是:16384KB/256 = 64KB 每个扇区的大小是:64KB/16 = 4KB 每个页的大小是:4KB/16 = 256B

但是实际上,我们在进行读写操作时,都是区分块和扇区,不区分页的。