芯片特性
1、用来作为存储的芯片,支持高达133MHz的W25Q64JV的SPI时钟频率
2、低功耗, 宽温度范围
– 单2.7至3.6V供货
– <1µA断电(打字。 )
– -40° C至+85° C操作范围
– -40° C至+105° C操作范围
3、 芯片有很多种工作模式:标准SPI、双SPI、四SPI
4、具有4KB扇区的灵活架构
– 统一扇区/锁擦除(4K/32K/64K-字节)
– 程序1到256字节每个可编程页面
– 删除/程序暂停和恢复
芯片内部框图
Write Control Logic写控制逻辑,可以通过/WP引脚做芯片的写保护。
当芯片数据接收到后,会将数据保存在256-Byte Buffer中。当CS信号拉高之后,才将数据存到对应的扇区空间。
芯片内部数据存储分为128块(各64KB),每一块分为16个扇区(4KB),每个扇区256字节。
芯片引脚定义
引脚号 | 引脚属性 I/O | 引脚名称 | 介绍 |
---|---|---|---|
1 | /CS | I | Chip Select Input (芯片选择输入) |
2 | DO (IO1) | I/O | Data Output (Data Input Output 1) (数据输出( 数据输入输出1)) |
3 | /WP (IO2) | I/O | Write Protect Input ( Data Input Output 2) (编写保护输入( 数据输入输出2)) |
4 | GND | Ground | |
5 | DI (IO0) | I/O | Data Input (Data Input Output 0) (数据输入( 数据输入输出0)) |
6 | CLK | I | Serial Clock Input (串行时钟输入) |
7 | /HOLD or /RESET(IO3) | I/O | Hold or Reset Input (Data Input Output 3) (保持或重置输入( 数据输入输出3)) |
8 | VCC | Power Supply |
芯片协议
该芯片有很多操作协议,这里先介绍读写操作协议。
读取数据(03h)
1、指令是通过将/CS引脚驱动低, 然后将指令代码“ 03h” 移动到DI引脚中
2、然后将24位地址(A23-A0)移动到DI引脚。
3、代码和地址位被锁在CLK引脚的上升边缘上。(上升沿读取数据)
4、在接收到地址后, 地址内存位置的数据字节将首先以最重要位(MSB)在CLK下降边缘的DO引脚上移动。
5、在每个字节的数据被移出后, 地址会自动递增到下一个更高的地址, 从而允许连续的数据流。 这意味着只要时钟继续, 就可以用单个指令访问整个内存。
写数据:页面程序(02h)
页面程序指令允许从一个字节到256字节( 一页) 的数据在先前擦除(FFH)内存位置编程。
1、在设备接受页面程序指令(状态寄存器位WEL=1)之前, 必须执行写入启用指令)。 该指令是通过将/CS引脚驱动低。
2、将指令代码“ 02h” 移动到DI引脚中
3、 然后将24位地址(A23-A0)和至少一个数据字节移动到DI引脚
注意:
1、当数据被发送到设备时, /CS引脚必须保持整个指令长度的低。
2、如果要对整个256字节页进行编程, 则应将最后一个地址字节( 8个最不重要的地址位) 设置为0。(高地址开始写到0地址)
3、如果最后一个地址字节不是零, 并且时钟的数量超过剩余的页面长度, 则寻址将包到页面的开头。(超出部分会覆盖最开始写入数据)
4、在某些情况下,可以编程小于256字节( 部分页) , 而不会对同一页内的其他字节产生任何影响。执行部分页面程序的一个条件是时钟的数量不能超过剩余的页面长度。
5、如果发送到设备的字节超过256个, 则寻址将包到页面的开头, 并覆盖先前发送的数据。
6、与写入和擦除指令一样, 在最后一个字节的第八位被锁定后, 必须将/CS引脚驱动到较高的位置。如果没有这样做, 页面程序指令将不会被执行。
7、在/CS驱动高后, 自定时页面程序指令将在TPP的一段时间内开始。
8、当页面程序周期正在进行时, 读取状态寄存器指令仍可用于检查BUSY位的状态。
读状态寄存器(05h)
1、将/CS引脚驱动低
2、发送读取状态寄存器地址0x05(注:发送地址位使用最高位(MSB)先发送)
3、读取芯片状态值
4、将/CS引脚驱动拉高释放片选
读取设备制造商ID、内存类型、容量信息(9Fh)
1、将/CS引脚驱动低
2、发送命令0x9F
3、读取JEDEC ID(设备标识符 -> 制造商+内存类型+容量)
4、将/CS引脚驱动拉高释放片选
设备ID读出值为0xEF4017,可对应下表:
写使能(06h)
写入启用指令 将状态寄存器中的写入启用锁存(WEL)位设置为1。
必须在每个页面程序、 扇区擦除、 块擦除、 芯片擦除、 写入状态寄存器和擦除/程序安全寄存器指令之前设置WEL位。
1、将/CS引脚驱动低
2、发送命令0x06
3、将/CS引脚驱动拉高释放片选
擦除指定扇区(4K字节)内的所有内存(20h)
在设备接受扇区擦除指令之前, 必须执行写入启用指令(状态寄存器位WEL必须等于1)。
在最后一个字节的第八位被锁定后, 必须将/CS引脚驱动到较高的位置。 如果没有这样做, 扇区擦除指令将不会被执行。
1、写使能,允许芯片擦除
2、将/CS引脚驱动低
3、发送命令擦除指令(20h)
4、发送要擦除的地址(先发送高8位,再发送中8位,最后发送低8位)
5、将/CS引脚驱动拉高释放片选
6、等待擦除完毕
擦除整个芯片(c7h)
在设备接受芯片擦除指令之前, 必须执行写入启用指令(状态寄存器位WEL必须等于1)。
在第八位锁定后, 必须将/CS引脚驱动到较高的位置。 如果没有这样做, 芯片擦除指令将不会被执行。
1、写使能,允许芯片擦除
2、将/CS引脚驱动低
3、发送命令擦除整个芯片指令(c7h)
4、将/CS引脚驱动拉高释放片选
5、等待擦除完毕
读出不固定长度数据(03h)
读取数据指令允许从内存中顺序读取一个或多个数据字节。
在读取数据过程中,每个字节的数据被移出后, 地址会自动递增到下一个更高的地址, 从而允许连续的数据流。 这意味着只要时钟继续, 就可以用单个指令访问整个内存。
1、将/CS引脚驱动低
2、发送命令读取数据(03h)
3、发送要读取的数据起始地址
4、读flash数据
5、将/CS引脚驱动拉高释放片选
文章来源:https://www.toymoban.com/news/detail-595994.html
实战应用
STM32F103 通信 —— SPI通信编程详解文章来源地址https://www.toymoban.com/news/detail-595994.html
到了这里,关于藏经阁(六)闪存 W25Q64JVSS 手册 解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!