W25Q64介绍
W25Q64是一种常见的串行闪存存储器,由Winbond公司生产。它的容量为64兆比特(8兆字节),采用SPI接口进行通信
主要特点:
1. 容量大,可以存储64兆比特(8兆字节)的数据
2. 器件工作在2.7V到3.6V之间
3. W25Q64被组织为32768个可编程页面,每个页面有256字节,最大可编程数为256字节,
擦除可以按照16个页面(4KB扇区擦除)、128个页面(32KB块擦除)、256个页面(64KB块擦除)或者擦除整个页面
4. W25Q64支持SPI/DSPI/QSPI的从机模式,普通SPI支持频率高达133MHz,
5. 在SPI和W25Q64通信中,通过三个字节的地址来指定访问的存储位置,前两个字节来指定页地址,后一个字节来指定页内地址
引脚
VCC/GND:电源3.3V / GND
/CS:芯片片选,低电平有效
CLK:时钟信号
DI(IO0):W25Q64作为从机,DI为主出从入,
DO(IO1):W25Q64作为从机,DO为主入从出
/WP(IO2):写保护,低电平有效
/HOLD/RESET:保持或复位输入
注:IO0和IO1用作SPI和DSPI,IO3和IO4用作QSPI
框图:
功能描述
1. 标准SPI
W25Q64通过SPI进行访问,CS、DI、DO、CLK、
W25Q64兼容标准SPI的工作模式0和模式3,
2. 软件复位
W25Q64能将软件复位到初始上电状态,必须通过两个连续的指令,使能复位0x66和复位0x99,大概等待30us后完成复位
3. 写保护
上电后默认处于写禁用状态,在进行一系列操作之前,必须先写入写使能指令,在完成一系列操作后,芯片会自动清除为写禁用状态
FLASH操作注意事项
Flash写入操作
1:写入操作前,必须先进行写使能
2:每个数据位 只能由1改写为0,不能由0改为1
3:写入数据前必须先擦除,擦除后,所有数据位变为1
4:擦除最小擦除单元,是扇区 4096字节
5:连续写入多字节时,最多写入一页数据256字节,
6:写入操作结束后,芯片进入忙状态,不响应新的读写操作
读取操作:
1:直接调用读取时序,
2:读取操作结束不会进入忙状态
状态和配置寄存器
(只关注了需要的)
1.BUSY
BUST是寄存器中的一个只读位,当设备执行页编程、扇区擦除、块擦除、芯片擦除时,或者写状态寄存器指令时,BUSY位置1,这时设备会忽略其他指令,当操作结束后,BUSY位会置0
2. 写使能 WEL
当执行完写使能操作后,WEL会置1,表示可以进行写入操作了,当写设备失能后,会置0
指令集
1. 写使能 0x06
将状态寄存器中的WEL写使能位置1,
2. 读状态寄存器 0x05
读状态寄存器允许读取8位的状态寄存器,发送0x05读取状态寄存器1的8位数据,来判断寄存器是否处于忙状态
读状态寄存器指令在任何时候都能使用
3. 页编程 0x02
在写入页编程指令之前,先写入写使能指令,在写入页编程指令,跟着3个字节的地址,
还有至少一个8位的数据。
如果要写入256个字节,那么最后一个地址数据必须为0,要不然256个字节就会超出页编程大小,在擦除扇区时,也必须这样
4. 读数据 0x03
读取指令允许在内存中按顺序读取一个或多个字节,发送03h和24位地址后,设备接收到地址后,寻址内存位置的数据字节将首先以最高有效位发送出来,在发送完一个字节后,地址自动增加到下一个更高的地址。
如果实在擦除、编程或写周期进行中发送读取数据指令,该指令将被忽略,但不会产生其他影响
5. 读ID 0x9F
发送完0x9F 后会先发送制造商ID和两个字节的设备ID
6. 扇区擦除 0x20
扇区擦除指令将扇区内所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0
7. 32KB块擦除 0x52
扇区擦除指令将指定块内(32KB)所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0
8. 64KB块擦除 0xD8
扇区擦除指令将指定块内(64KB)所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0
9. 芯片擦除 0xC7
扇区擦除指令将芯片所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令
代码
后续补充