W25Q64Flash芯片

W25Q64Flash芯片STM32操作

通讯方式:SPI通讯

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

特点:Flash芯片内的数据只能由1变0,不能由0变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内部框架图:

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控制和状态寄存器

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

总线忙标志位(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。

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

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

快速SPI通讯使能(QE

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

4、W25Q64器件标识

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

写禁止(04H

读状态寄存器指令(05H

写状态寄存器指令(01H

 

读数据(03H

页写(02H

扇区擦除指令(20H

块擦除指令(D8H

芯片擦除指令(07H

掉电指令(B9H

读ID指令(90H

写使能(06H

写禁止(04H

读状态寄存器指令(05H

写状态寄存器指令(01H

 

读数据(03H

页写(02H

扇区擦除指令(20H

块擦除指令(D8H

芯片擦除指令(07H

掉电指令(B9H

读ID指令(90H

7、STM32模块编程思路

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

8、硬件原理图

你可能感兴趣的:(硬件)