W25Q64简介:
- W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景
- 存储介质:Nor Flash(闪存)
- 时钟频率:80MHz / 160MHz (Dual SPI/双重) / 320MHz (Quad SPI/四重)
- 存储容量(24位地址):224/1024/1024=16
W25Q40: 4Mbit / 512 Kbyte
W25Q80: 8Mbit / 1M Byte
W25Q16: 16Mbit / 2M Byte
W25Q32: 32Mbit / 4M Byte
W25Q64: 64Mbit / 8M Byte(容量)
W25Q128: 128Mbit / 16M Byte
W25Q256: 256Mbit / 32M Byte
硬件电路:
- 芯片的引脚定义及说明:
4、8:电源正负极(2.7~3.6V)
1:/CS/SS SPI片选(指定从机),有斜杠/横线是低电平有效
6:CLK SPI时钟线
5:DI(MOSI) SPI主机输出从机输入
2:DO(MISO)SPI主机输入从机输出
3:/WP(低电平有效)写保护 接低电平,写保护,不能写
7:/HOLD(低电平有效)数据保持
- W25Q64的原理图:
W25Q64的框图:
将8M容量的W25Q64分为若干个Block((块)64KB),对于每个Block又分为若干个Sector((扇区)4KB),对于每个Sector又分为若干个Page((页)256Byte)
Instructions 指令
Flash操作的注意事项:
写入操作时:
- 写入操作前,必须先进行写使能(保护措施)
- 每个数据位只能由1改写为0,不能由0改写为1
- 写入数据前必须先擦除(发送擦除指令),擦除后,所有数据位变为1(0XFF) ,在Flash中0XFF表空白。
- 擦除必须按最小擦除单元(一个扇区4KB)进行
Flash无法擦除比扇区小的单位,要擦除只能一大片的擦除,擦除的最低单位是扇区、4KB。
- 连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入
这个意思是:一个写入时序,最多只能写一页(256Byte) 的数据,多出的部分会自动覆盖页首写进去。
- 写入操作结束后,芯片进入忙状态,不响应新的读写操作
查看Status Register状态寄存器是否为0,为0芯片就不忙 了可以进行后续操作
读取操作时:
- 直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取
指令:
- Write Enable(写使能) 指令码是0x06
- Write Disable(写失能)指令码是0x04
- Read Status Register-1(读状态寄存器1) 指令码0x05,然后读取交换的字节。(主要作用是查看忙状态的)
- Page Program(页编程) 指令码0x02 ,用来写数据的(256Byte)限制,后面是交换发送三位字节地址,然后就可以交换写入数据D7~D0,如果还想继续写,就是指定地址++的地址写入了
- Sector Erase (4KB)(擦除指令):有64、32KB的块擦除,4KB的扇区擦除,以及整片擦除,如果想少擦点就用扇区擦除,流程是:指令码0x20,之后交换发送三个字节的地址,终止。
- JEDEC ID(读ID号)指令码0x9F 然后连续交换读取三个字节即可
- Read Data (读取数据) 指令码0x03,之后交换发送3个字节的地址,然后就可以交换读取了,如果还想继续读取,就是指定地址++的地址读取了