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
但是实际上,我们在进行读写操作时,都是区分块和扇区,不区分页的。