W25Q64 硬件SPI读写数据

W25Q64介绍

        W25Q64是一种常见的串行闪存存储器,由Winbond公司生产。它的容量为64兆比特(8兆字节),采用SPI接口进行通信

        主要特点:

        1. 容量大,可以存储64兆比特(8兆字节)的数据

        2. 器件工作在2.7V到3.6V之间

        3. W25Q64被组织为32768个可编程页面,每个页面有256字节,最大可编程数为256字节,

擦除可以按照16个页面(4KB扇区擦除)、128个页面(32KB块擦除)、256个页面(64KB块擦除)或者擦除整个页面

        4. W25Q64支持SPI/DSPI/QSPI的从机模式,普通SPI支持频率高达133MHz,

        5. 在SPI和W25Q64通信中,通过三个字节的地址来指定访问的存储位置,前两个字节来指定页地址,后一个字节来指定页内地址

        引脚

       VCC/GND:电源3.3V / GND

        /CS:芯片片选,低电平有效

        CLK:时钟信号

        DI(IO0):W25Q64作为从机,DI为主出从入,

        DO(IO1):W25Q64作为从机,DO为主入从出

        /WP(IO2):写保护,低电平有效

        /HOLD/RESET:保持或复位输入

注:IO0和IO1用作SPI和DSPI,IO3和IO4用作QSPI

框图:

功能描述

        1. 标准SPI

        W25Q64通过SPI进行访问,CS、DI、DO、CLK、

        W25Q64兼容标准SPI的工作模式0和模式3,

        2. 软件复位

        W25Q64能将软件复位到初始上电状态,必须通过两个连续的指令,使能复位0x66和复位0x99,大概等待30us后完成复位

        3. 写保护

        上电后默认处于写禁用状态,在进行一系列操作之前,必须先写入写使能指令,在完成一系列操作后,芯片会自动清除为写禁用状态

    

FLASH操作注意事项

Flash写入操作
        1:写入操作前,必须先进行写使能

        2:每个数据位 只能由1改写为0,不能由0改为1

        3:写入数据前必须先擦除,擦除后,所有数据位变为1

        4:擦除最小擦除单元,是扇区 4096字节

        5:连续写入多字节时,最多写入一页数据256字节,

        6:写入操作结束后,芯片进入忙状态,不响应新的读写操作

读取操作:

        1:直接调用读取时序,

        2:读取操作结束不会进入忙状态

状态和配置寄存器    

        (只关注了需要的)

1.BUSY 

        BUST是寄存器中的一个只读位,当设备执行页编程、扇区擦除、块擦除、芯片擦除时,或者写状态寄存器指令时,BUSY位置1,这时设备会忽略其他指令,当操作结束后,BUSY位会置0

2. 写使能 WEL

        当执行完写使能操作后,WEL会置1,表示可以进行写入操作了,当写设备失能后,会置0

指令集 

 1. 写使能 0x06

        将状态寄存器中的WEL写使能位置1,

2. 读状态寄存器 0x05

        读状态寄存器允许读取8位的状态寄存器,发送0x05读取状态寄存器1的8位数据,来判断寄存器是否处于忙状态

        读状态寄存器指令在任何时候都能使用

3. 页编程 0x02

        在写入页编程指令之前,先写入写使能指令,在写入页编程指令,跟着3个字节的地址,

还有至少一个8位的数据。

        如果要写入256个字节,那么最后一个地址数据必须为0,要不然256个字节就会超出页编程大小,在擦除扇区时,也必须这样

4. 读数据 0x03

        读取指令允许在内存中按顺序读取一个或多个字节,发送03h和24位地址后,设备接收到地址后,寻址内存位置的数据字节将首先以最高有效位发送出来,在发送完一个字节后,地址自动增加到下一个更高的地址。

        如果实在擦除、编程或写周期进行中发送读取数据指令,该指令将被忽略,但不会产生其他影响

5. 读ID 0x9F

        发送完0x9F 后会先发送制造商ID和两个字节的设备ID

6.  扇区擦除 0x20

        扇区擦除指令将扇区内所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0

7. 32KB块擦除 0x52

        扇区擦除指令将指定块内(32KB)所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0

8. 64KB块擦除  0xD8

        扇区擦除指令将指定块内(64KB)所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令,后面跟着24位的地址,但是最后一个字节地址必须为0

9. 芯片擦除 0xC7

   扇区擦除指令将芯片所有字节全部变为FFh状态,在设备执行擦除指令之前,必须执行写使能指令

        

代码

后续补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值