当初学习这个时觉得挺简单的,不用做什么笔记,可是过了也才两个星期之后,再回过头来用到的时候,竟然全部忘完了。。。所有又来记录一下笔记。
W25QXX 由每页 256 字节组成。 容量为 (XX/8)M 字节。每页的 256 字节用一次页编程指令即可完成。 每次可以擦除 16 页(1 个扇区,最小擦除单位)、 128 页(32KB 块)、 256 页(64KB 块)和全片擦除。存储数据地址为24位,
W25Qxx写入数据时:必须先写使能,才能写入数据,写入数据包括存储的数据和擦除扇区数据(写入寄存器指令时不算,也就是选中片选时,可直接写入,和写入要操作的储存器地址)。而写入数据每次页写指令后最多写如256个字节,写满整页。因为超出之后就会从该页头又写一遍,会覆盖已经写入的数据。
读写数据时:都要确认状态寄存器1最低位处于‘0’,也就是工作状态、可读可写状态。
读数据时: 地址会自动增加, 允许连续的读取数据。这意味着读取整个内存的数据,只要用一个指令就可以读完。
W25Qxx地址含义:
高性能模式0xA3,W25Q128貌似没有该模式。
#define W25X_WriteEnable 0x06 //写使能,常用
#define W25X_WriteDisable 0x04 //写失能
#define W25X_ReadStatusReg 0x05 //读取W25QXX的状态寄存器1指令,(常用),0x35-SR2;0x15-SR3
#define W25X_WriteStatusReg 0x01 //写状态寄存器1,0x31-SR2;0x11-SR3
#define W25X_ReadData 0x03 //读数据(常用)
#define W25X_FastReadData 0x0B //快速读数据
#define W25X_PageProgram 0x02//页写指令 (常用)
#define W25X_BlockErase 0xD8 //64k擦除指令
#define W25X_SectorErase 0x20 //扇区擦除(常用)
#define W25X_ChipErase 0xC7 //或0x