相关的 b 站视频 https://space.bilibili.com/83738746/setting
Spi 时序图
这里还有其他技术应用讲解
QSPI FLASH 为 W25Q128BV
3. SPI FLASH 的状态寄存器
4. W25Q128BV 有两个状态寄存器:状态寄存器 1 和状态寄存器 2。这些状态
寄存器的标志位在后面指令操作的时候可以用来判断指令是否完成
4.SPI FLASH 的指令
W25Q128BV 的指令可以分为指令码后面没有地址和数据、指令码后面只有地
址没有数据、指令码后面只有数据没有地址、指令码后面既有地址又有数据的情
况。
4.1 Read Manufacturer / Device ID (90h)
90h 指令用来读取厂商 ID 和设备 ID,指令先发一个指令码 90h,紧接着是 24bit
的地址码 000000h,最后读取出来的第 1 个字节是厂商 ID,第 2 个字节是设备
ID。如果发送的 24bit 地址码是 000001h,则第 1 个字节是设备 ID,第 2 个字
节才是厂商 ID。由此可见,该指令后面既有地址又有读数据。
4.2 Write Enable (06h)
写使能指令用来置位状态寄存器 1 里面的 WEL 位。在每次 Page Program、
Sector Erase、Block Erase、Chip Erase 指令前必须发写使能指令。写使能指
令后面不带地址和数据。
4.3 Read Status Register-1 (05h) and Read Status Register-2 (35h)
读状态寄存器 1 的指令码位 05h,读状态寄存器 2 的指令码为 35h。读状态寄
存器可以用来检测一些指令是否完成,比如上面的写使能指令发送完成后,可以
读取状态寄存器 1 里面的 WEL 位,看是否为 1,以此确定写使能是否成功。读
状态寄存器指令码后面只有数据没有地址。
4.4 Write Disable (04h)
写不使能指令用来复位状态寄存器 1 的 WEL 位,指令码 04h 发送完成后不发送
地址和数据。WEL 位在 Power-up 以及 Write Status Register、Erase/Program
Security Registers、Page Program、Quad Page Program、Sector Erase、
Block Erase、Chip Erase 完成后自动复位。
4.5 Sector Erase (20h)
扇区擦除指令用来把一个指定扇区(4K-bytes)置位到擦除状态(FFh),在发
送 Sector Erase 之前必须先执行 Write Enable (06h)指令(置位 WEL 位)。