7 状态寄存器命令
7.1 读状态寄存器
由状态寄存器,我们可以读出 FLASH 的“就绪 / 忙”状态,也可以知道 FLASH 的其它状态,例如硬件锁和软件保护。状态寄存器任何时侯可读,包括在 FLASH 自身进行写入或擦除操作期间。
( 1 )拉低 CS
( 2 ) 05 h
( 3 )读返回数据
( 4 )拉高 CS
在 05H 送于 FLASH 之后, FLASH 开始通过 SO 引脚输出状态寄存器值。如果 CS 不拉低, FLASH 从状态寄存器的 7 位开始输出。状态寄存器的值不间断的输出,每次重复可能会有新的数据。
只在 CS 一拉高, FLASH 就停止输出状态寄存器的值。
在这里, CS 不要求在边界处拉高。
7.2 写状态寄存器
写状态寄存器命令用来修改状态寄存器中 SPRL 位。我们也可以用这个命令来进行全局解保护和全局加保护的操作。
命令执行步骤
( 1 )写使能 ( WEL = 1 )
( 2 )拉低 CS
( 3 ) 命令 0x01 + 1 Byte Data ( Data 参考下图的格式) 多余的 DATA 将被忽略
( 4 )拉高 CS
此时,状态寄存器中的 SPRL 位开始更改,同时, WEL 也恢复为 0 。
在写状态寄存器之前,使用本命令发送的数据字节的第 5 、 4 、 3 和 2 位和 SPRL 位,将决定执行的是全局加 保护 或全局解 保护 操作。
数据字节必须在 CS 拉高之前完全写入,否则的话,设备将放弃操作, SPRL 位也不会改变, WEL 也恢复为 0 。
如果 WP 引脚拉底( = 0 = asserted , 那么 SPRL 位仅能设为逻辑“ 1 ”( sector 保护寄存器加锁)。如果在 WP 置为 asserted 的情况下,试图复位 SPRL 位为 0 ( sector 保护寄存器解锁),则此命令被放弃, WEL 恢复为 0.
为了设置 SPRL 位为“ 0 ”, WP 引脚必须拉高( = 1 Deasserted )。
9 其它命令与功能
9.1 读厂商与设备 ID
( 1 ) 拉低 CS
( 2 ) 9F h
( 4 )读 4 个 byte
( 5 )拉高 CS