目录
1. W25Q16
1.W25Q16功能简介:
属于nor flash,擦除操作需要的实现较久;
在写入时,需要先擦除,再写入;
支持标准SPI、双通道SPI、四通道SPI操作;
在nor flash内部可以进行程序执行,无需移入单片机的SRAM中。
分为32块(64KB),每个块又分为16个扇区(4KB);
一共存储量:32*64K-Byte=2M-Byte;
2.标准SPI读写W25Q16开发步骤
2.1 W25Q16芯片硬件说明;
2.2 通过标准SPI读取开发商的ID和设备ID;
2.3 通过标准SPI擦除-写入-读取;
3. 标准SPI读写详细步骤
3.1 W25Q16芯片硬件说明
CS - 片选
DO - 数据输出引脚
WP - 保护引脚,低电平有效
DI - 数据输入引脚
CLK – 时钟引脚
HOLD – 保持或复位引脚,低电平有效
3.2 通过标准SPI读取开发商的ID和设备ID
如上图所示,W25Q16JV的制造商ID为EFH,设备ID为14H。若读取正确,则可以开始下阶段的存储和读数据操作了。
读取制造商ID和设备ID的命令为90H,如下图所示。
1.首先将CS引脚拉低
2.发送90H命令
3.发送0x000000地址
4.W25Qx就会返回制造商ID和设备ID
5.将CS引脚拉高。
3.3 通过标准SPI擦除-写入-读取
1. SPI擦除:(在芯片手册9.2章节中)
SPI的擦除一共有三个:4K扇区擦除(20H)、32K块擦除(52H)、64K块擦除(D8H)、片擦除(C7/60H)
注意:在擦除操作前,需要使能写使能。
写使能(60H)
CS拉低
发送命令(60H)
CS拉高
4K扇区擦除(20H)
写使能
CS拉低
发送命令(20H)
发送擦除块地址(24Bit)
CS拉高
等待BUSY位
32K块擦除(52H)
写使能
CS拉低
发送命令(52H)
发送擦除块地址(24Bit)
CS拉高
等待BUSY位
64K块擦除(D8H)
写使能
CS拉低
发送命令(D8H)
发送擦除块地址(24Bit)
CS拉高
等待BUSY位
片擦除(C7h / 60h)
写使能
CS拉低
发送命令(C7H/60H)
CS拉高
等待BUSY位
2. 忙(BUSY)位读取:(在芯片手册9.2章节中)
BUSY位在状态寄存器1中的第1位,在编程、擦除、写状态/安全寄存器时,该位都会置1,直至操作完成后被清0。
读状态寄存器1时序图如下图所示
CS拉低
发送命令(05H)
读取Byte(寄存器1的值)
CS拉高
3. 写入:(在芯片手册9.2章节中)
写操作也称编程,其操作命令为02H,时序图如下所示。
写使能
CS拉低
写入操作命令(02H)
写入编程的起始地址(24Bit)
存储的8位数据(连续n个)
CS拉高
等待BUSY位
注意:W25Qx的写操作只能一次性连续写256个位置,超过256个位置后,就会从1开始重新覆盖,这种写256操作成为页操作。
4. 读取:(在芯片手册9.2章节中)
在使用标准SPI的读操作中,有两种读操作,分别如下图所示。分别为普通读(03H)和快速读(0BH),他们之前的唯一区别为读取速度,普通读最大读取频率可以达到50MHZ;快速读的最大读取频率可以达到133MHZ。
普通读操作:
普通读操作的命令为03H,其读取时序图如下所示
CS拉低
发送普通读操作(03H)
发送读取地址(24Bit)
读取8位数据(n个)
CS拉高
快速读操作:
普通读操作的命令为0BH,其读取时序图如下所示
CS拉低
发送命令(0BH)
发送读取地址(24Bit)
发送8个空时钟
读取8位数据(n个)
CS拉高
4. W25Qx芯片的实操
见本博客中的 [学习笔记]软件SPI读写W25Qx