W25Q64Flash芯片STM32操作

1、W25Q64Flash芯片介绍

通讯方式:SPI通讯

大小:8M(Byte)   (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节,每个扇区16页,每页256个              字节)

特点:Flash芯片内的数据只能由1变0,不能由0变1。

引脚: 

               W25Q64Flash芯片STM32操作_第1张图片

              CS:CS为片选管脚,低电平有效。上电之后,在执行一条新的指令之前,必须让/CS管脚先有一个下降沿。 

              DO(MISO:DO为串行数据输出引脚,在CLK(串行时钟)管脚的下降沿输出数据。

              WP:WP为写保护管脚,有效电平为低电平。高电平可读可写,低电平仅仅可读。

              DI(MOSI):DI为串行数据输入引脚,数据、地址和命令从DI引脚输入到芯片内部,在CLK(串行时钟)管脚的上升沿捕获捕获数据。

              CLK(SLCK):CLK为串行时钟引脚。SPI时钟引脚,为输入输出提供时钟脉冲。

              HOLD:HOLD为保持管脚,低电平有效。当CS为低电平,并且把HOLD拉低时,数据输出管脚将保持高阻态,并且会忽略数据输入管脚和时钟管脚上的信号。把HOLD管脚拉高,器件恢复正常工作。

               VCC:电源2.7V~3.6V。

               GND:地。

W25Q64内部框架图:

W25Q64Flash芯片STM32操作_第2张图片

2、W25Q64Flash工作方式

       2.1 W25Q64 SPI数据传输时序

W25Q64支持SPI数据传输时序模式0(CPOL = 0、CPHA = 0)和模式3(CPOL = 1、CPHA = 1),模式0和模式3主要区别是当SPI主机硬件接口处于空闲状态时,SCLK的电平状态是高电平或者是低电平。对于模式0来说,SCLK处于低电平;对于模式3来说,SCLK处于高电平。不过,在这两种模式下,芯片都是在SCLK的上升沿采集输入数据,下降沿输出数据。

       2.2 W25Q64数据格式

W25Q64数据格式为数据长度8位大小,先发高位,再发低位。

       2.3 W25Q64传输速度

W25Q64在标准模式下支持80M bit/s速度,快速模式下支持160M bit/s速度,高速模式下支持320M bit/s速度。

3、W25Q64控制和状态寄存器

通过对“读状态寄存器”指令读出的状态数据可以知道芯片存储器阵列是否可以写入或不可写,或是否处于写保护状态。通过“写状态寄存器”指令可以配置芯片写保护特征。

W25Q64Flash芯片STM32操作_第3张图片

总线忙标志位(BUSY)

BUSY位是一个只读位,在状态寄存器中的S0位。当W25Q64在执行“页编程”、“扇区擦除”、“块区擦除”、“芯片擦除”以及“写状态寄存器”指令时,该位被硬件自动置1。这时候,除了“读状态寄存器”指令外的所有操作指令讲会被芯片忽略。当芯片执行完这些指令后,硬件会自动将该位清零,表示芯片器件可以接收其他的指令。

写保护位(WEL

WEL位是一个只读位,在状态寄存器的S1位。在执行完“写使能”指令后,该位会被硬件自动置1。当芯片掉电后和执行“写禁能”、“页编程”、“扇区擦除”、“块区擦除”以及“芯片擦除”指令都会进入“写保护状态”。

块区保护位(BP2、BP1、BP0

BP2、BP1、BP0这3位为可读可写位,分别在状态寄存器的S4、S3以及S2位。这3个位默认状态为0,即块区处于未保护状态。可以利用“写状态寄存器”指令对这几个位进行置1来达到块区保护的目的。块区保护状态为:没有保护、部分保护和全部保护状态。

注:当状态寄存器的SRP位为1或读写保护管脚(/WP)为低电平时,这3个位不可被更改。

底部和顶部块保护位(TB

TB位是一个可读可写位,在状态寄存器的S5位,默认值为0。可以利用“写状态寄存器”指令对这个位进行置1或清零。当TB = 0时,表示保护位从顶部开始,当TB = 1时,表示保护位从底部开始。

注:当状态寄存器的SRP位为1或读写保护管脚(/WP)为低电平时,这个位不可被更改。

扇区/块保护(SEC

SEC位为一个可读可写位,在状态寄存器的S6位,默认值为0。可以利用“写状态寄存器”指令对这个位进行置1或清零。当SEC = 0时,表示每次保护的区域大小为4K;当SEC = 1时,表示每次保护的区域大小为8K。

W25Q64Flash芯片STM32操作_第4张图片

状态寄存器保护位(SRP0、SRP1

SRP0和SRP1这2位为可读可写位,分别在状态寄存器的S7和S8(状态寄存器2)位。这两个位的默认值为0,可以利用“写状态寄存器”指令对这个位进行置1或清零。这2个位和读写保护管脚(/WP)决定了状态寄存器写保护的方式。状态寄存器写保护的方式有:软件保护,硬件保护、电源锁定或一次性可编程(OTP)保护。

W25Q64Flash芯片STM32操作_第5张图片

快速SPI通讯使能(QE

QE位为一个可读可写位,在状态寄存器的S9(状态寄存器2)位,默认值为0。以利用“写状态寄存器”指令对这个位进行置1或清零。当QE = 0时,W25Q54设置为标准速度模式或快速模式,保持管脚(/HOLE)和读写保护管脚(/WP)启用;当QE = 1时,W25Q54设置为高速模式,保存管脚(/HOLE)和读写保护管脚(/WP)被设置位IO2和IO3功能使用。

4、W25Q64器件标识

W25Q64Flash芯片STM32操作_第6张图片

5、W25Q64工作原理

           W25Q64操作原理

通过SPI接口,用标准的SPI协议发送相应指令给flash,然后flash根据命令进行各种相关操作。

            W25Q64常用操作命令

指令名称

字节1(CODE)

字节2

字节3

字节4

字节5

字节6

写使能

06h

 

写禁能

04h

 

读状态寄存器1

05h

(S7~S0)

 

读状态寄存器2

35h

(S15~S8)

 

读数据

03h

A23~A16

A15~A8

A7~A0

D7~D0

直至读完所有

写状态寄存器

01h

(S7~S0)

(S15~S8)

 

页编程

02h

A23~A16

A15~A8

A7~A0

D7~D0

直至255个字节

块擦除(64K)

D8h

A23~A16

A15~A8

A7~A0

 

半块擦除(32K)

52h

A23~A16

A15~A8

A7~A0

 

扇区擦除(4K)

20h

A23~A16

A15~A8

A7~A0

 

芯片擦除

C7/60h

 

芯片掉电

B9h

 

释放掉电/器件ID

ABh

伪字节

伪字节

伪字节

ID7~ID0

 

制造/器件ID

90h

伪字节

伪字节

00h

MF7~MF0

ID7~ID0

JEDEC ID

9Fh

MF7~MF0

ID15~ID8

ID7~ID0

 

6、W25Q64常用指令工作时序

写使能(06H

W25Q64Flash芯片STM32操作_第7张图片

写禁止(04H

W25Q64Flash芯片STM32操作_第8张图片

读状态寄存器指令(05H

W25Q64Flash芯片STM32操作_第9张图片

W25Q64Flash芯片STM32操作_第10张图片

写状态寄存器指令(01H

W25Q64Flash芯片STM32操作_第11张图片

W25Q64Flash芯片STM32操作_第12张图片

 

读数据(03H

W25Q64Flash芯片STM32操作_第13张图片

W25Q64Flash芯片STM32操作_第14张图片

页写(02H

W25Q64Flash芯片STM32操作_第15张图片

W25Q64Flash芯片STM32操作_第16张图片

扇区擦除指令(20H

W25Q64Flash芯片STM32操作_第17张图片

W25Q64Flash芯片STM32操作_第18张图片

块擦除指令(D8H

W25Q64Flash芯片STM32操作_第19张图片

W25Q64Flash芯片STM32操作_第20张图片

芯片擦除指令(07H

W25Q64Flash芯片STM32操作_第21张图片

W25Q64Flash芯片STM32操作_第22张图片

掉电指令(B9H

W25Q64Flash芯片STM32操作_第23张图片

W25Q64Flash芯片STM32操作_第24张图片

读ID指令(90H

W25Q64Flash芯片STM32操作_第25张图片

写使能(06H

W25Q64Flash芯片STM32操作_第26张图片

写禁止(04H

W25Q64Flash芯片STM32操作_第27张图片

读状态寄存器指令(05H

W25Q64Flash芯片STM32操作_第28张图片

W25Q64Flash芯片STM32操作_第29张图片

写状态寄存器指令(01H

W25Q64Flash芯片STM32操作_第30张图片

W25Q64Flash芯片STM32操作_第31张图片

 

读数据(03H

W25Q64Flash芯片STM32操作_第32张图片

W25Q64Flash芯片STM32操作_第33张图片

页写(02H

W25Q64Flash芯片STM32操作_第34张图片

W25Q64Flash芯片STM32操作_第35张图片

扇区擦除指令(20H

W25Q64Flash芯片STM32操作_第36张图片

W25Q64Flash芯片STM32操作_第37张图片

块擦除指令(D8H

W25Q64Flash芯片STM32操作_第38张图片

W25Q64Flash芯片STM32操作_第39张图片

芯片擦除指令(07H

W25Q64Flash芯片STM32操作_第40张图片

W25Q64Flash芯片STM32操作_第41张图片

掉电指令(B9H

W25Q64Flash芯片STM32操作_第42张图片

W25Q64Flash芯片STM32操作_第43张图片

读ID指令(90H

W25Q64Flash芯片STM32操作_第44张图片

W25Q64Flash芯片STM32操作_第45张图片

7、STM32模块编程思路

  1. 配置SPI模块功能管脚相应的GPIO管脚。
  2. 配置SPI模块工作方式。
  3. 使能SPI模块时钟。
  4. 根据SPI SPI主模式设置步骤设置SPI工作方式。
  5. 编写SPI读写字节函数。
  6. 根据目前器件的指令操作器件。

8、硬件原理图

W25Q64Flash芯片STM32操作_第46张图片

代码资源下载:https://download.csdn.net/download/lalala098/10576508

你可能感兴趣的:(STM32)