SPI FLASH硬件电路设计
- 1 简介
- 2 EEPROM 和SPI Flash的区别
- 3 电路设计实战
- 4 电路设计要点
1 简介
SPI FLASH(Serial Peripheral Interface)是串行外设接口的缩写,是一种高度、全双工、同步的通信总线。一般应用在MCU与外围设备之间通讯,广泛应用在FLASH,模数转换器等。
常用的内部通信接口:UART、IIC、SPI。
常用的外部通信接口:RS232、RS485、CAN
SPI flash 就是通过串行的接口进行操作的 flash 存储设备。一般板卡会配有一个 spi flash 存储芯片。因为 flash 具有断电数据不丢失的特性,而我们 FPGA 芯片掉电数据是会丢失的,所以我们就可将 FLASH作为 FPGA 芯片的上电配置器件(主要用于嵌入式设备的引导启动程序的存储如 Bootloader。),我们将上电程序固化在 FLASH 中,上电后 FPGA 芯片读取到 FLASH 中存储的程序进行运行,这样就能做到程序断电不丢失了。SPI FLASH 读写较慢,次数有限制,一般用于不经常更改的存储。
flash 按照内部存储结构不同,分为两种:nor flash 和 nand flash。这里 spi flash 属于 nor flash。
对比项 | NAND Flash | NOR Flash |
---|---|---|
芯片容量 | <32GBit | <1GBit |
访问方式 | 顺序读写 | 随机读写 |
接口方式 | 任意I/O口 | 特定完整存储器接口 |
读写性能 | 读取快(顺序读)、写入快、擦除快(可按块擦除) | 读取快(RAM方式)、写入慢、擦除慢 |
使用寿命 | 百万次 | 十万次 |
价格 | 低廉 | 高昂 |
常用的生产厂家:winbond(华邦),Micron(镁光),numonyx(恒亿)、ISSI(芯成),兆易创新
单位转换:
1Bytes=8bits(
1 字节等于 8 位)
1KB=1024Bytes(1KB 等于 1024 字节)
1MB=1024KB
1GB=1024MB
注:另外,Byte 通常简写为 B(大写),而 bit 通常简写为 b(小写);1B=8b。
bit 意为“位”或“比特”,是计算机运算的基础,属于二进制的范筹;
Byte 意为“字节”,是计算机文件大小的基本计算单位;
块、扇区、页的区别
以华邦的 W25Q128 为例,容量为 128Mbits,注意这里的单位是 bit,换算成字节(Byte),也就是:128Mbits/8=16M=16*1024KB= 16384 KB = 16,777,216B,所以很容易计算出整个存储空间的地址范围:0x000000~0xFFFFFF
SPI Flash 和 EPROM 的很大的一个不同就是多了块、扇区、页的概念。
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
但是实际上,我们在进行读写操作时,都是区分块和扇区,不区分页的。包括在官方的 Datasheet 中,并没有重点提及页的地址范围。
**SPI flash 的特点 **
-
高速(1.受限于最大时钟频率 2.受限于 CPU 处理 SPI 数据的能力;3 受限于PCB 走线);
-
全双工(两个数据线可以同时收发);
-
主从模式(既可当主机又可当从机工作);
-
提供频率可编程时钟;
2 EEPROM 和SPI Flash的区别
-
EPROM 通常采用是 IIC 串行总线,低速,单双工,通信速率一般是百 KHz。而SPI Flash 是采用的 SPI 总线,高速,全双工,通讯速率一般是百 MHz。SPI Flash属于 Flash ROM 闪存,相比于 EPROM,读写速度更快。
-
EPROM 通常用于存储不频繁读取的数据,如配置信息等,而 SPI Flash 通常用来存储经常读取的数据,如字库文件等。
-
EPROM 读写比较随意,想写那个地址写那个,想读哪个地址读哪个!而 SPI Flash 则比较规范,擦除的最小单位是扇区。向某个地址写入数据时,要先读取这个地址的数据是否为 0xFF,如果不是 0xFF,那么这个数据写入失败。所以通常的写操作是,在写某个地址之前,直接擦除这个地址所在的那个扇区,然后再写数据。当然,如果这个扇区的所有内容都是 0xFF,则无需擦除,可以直接写入。
-
EPROM 通常容量比较小,大小为 KB 级的,如 AT24C02 是 2KB,而 SPI Flash容量比较大,大小为 MB 级的,如 W25Q16 是 16Mbit,也就是 2MB。
-
EPROM 型号通常是 xx24 系列,而 SPI Flash 通常是 xx25 系列,所以从芯片型号我们也可以看出 ROM 类型。
-
EPROM 数据保存时间大约是 100 年,而 SPI Flash 数据保存时间为 20 年。
-
EPROM 的读写次数为 100 万次左右,SPI Flash 读写次数为 10 万次左右。
3 电路设计实战
电路实战1:
电路实战2:
4 电路设计要点
-
注意:根据需求选择对应的标注 SPI flash、Dual flash、Quad flash。具体项目具体看了,理论上在 CLK 一定的情况下, 线数越多访问速度也越快。
-
如果需要 CS 管脚跟踪 VCC 电压,防止上电或断电时,由于 VCC 电压不足导致写数据异常,建议 CS 管脚串 10k 电阻到 VCC,起到跟踪保护左右。
-
片选信号:是否要接上拉电阻或者下拉电阻,看具体规格书要求;(一般要加上拉电阻)
-
电源接滤波电容。
-
建议:IO0-IO3 加上 22 欧姆的电阻作为阻抗匹配;除了 SCK,其余都加上上拉电阻。
-
在设计一个具体的 SPI Flash 的接口电路时,要考虑是否需要支持其Dual/Quad IO 功能以提高读写速度。