# spiflash_unlock_4line_mode

由于部分 SPI Flash 出厂时未解锁四线模式，在使用 QSPI 接口访问 SPI Flash 时可能无法正确读写数据。
本工程将提供解锁 SPI Flash 四线模式的功能。

由于部分 SPI Flash 不支持解锁 / 关闭四线模式，或解锁 / 关闭四线模式的指令与本工程提供的方法不一致，导致本工程提供的解锁方法不一定有效。

以下为经过实际测试的 SPI Flash，其默认 4 线模式的状态和能否解锁四线模式功能：

| SPI Flash Model | Default  | support unlock 4-line |
| --------------- | -------- | --------------------- |
| W25Q64JVSSIQ    | unlocked | not support           |
| FM25Q16A        | locked   | support               |
|                 |          |                       |



## 实验过程

+ 读取四线模式的状态
  + 读取 SPI Flash 的寄存器 2 状态值，根据 QE 位状态确定是否使能了四线模式。

+ 解锁 SPI Flash 的四线模式
  + 读取 SPI Flash 的寄存器 2 状态值。
  + 将寄存器 2 状态值的 QE 位置 1。
  + 使能 SPI Flash 的写功能。
  + 将寄存器 2 状态值写入 SPI Flash 中。
  + 关闭 SPI Flash 的写功能。

+ 关闭 SPI Flash 的四线模式
  + 读取 SPI Flash 的寄存器 2 状态值。
  + 将寄存器 2 状态值的 QE 位清 0。
  + 使能 SPI Flash 的写功能。
  + 将寄存器 2 状态值写入 SPI Flash 中。
  + 关闭 SPI Flash 的写功能。


## 实验结果

spi_flash_unlock_4line_mode.
a. get spiflash 4line status.
b. unlock 4line mode.
c. lock 4line mode.
4line unlocked.
4line unlock succ.
4line unlocked.
4line lock succ.
4line locked.
4line unlock succ.
4line unlocked.
