FLASH芯片(W25Q128)

简介

W25Q128FV (128M-bit)串行闪存为有限的空间、引脚和电源系统提供了存储解决方案。25Q系列提供的灵活性和性能远远超过普通的串行Flash设备。执行代码直接从双/四 SPI (XIP)和存储声音,文本和数据。该设备在2.7V到3.6V的电压上运行,电流消耗低至4mA活跃和1 A断电。所有设备都以节省空间的包装提供。W25Q128FV阵列被组织成65,536个可编程页,每个页256字节。一次最多可编程256字节。可按16组(4KB扇区擦除)、128组(32KB块擦除)、256组(64KB块擦除)或整个芯片(芯片擦除)的方式擦除页面。W25Q128FV分别有4096个可擦扇区和256个可擦块。4KB的扇区为需要数据和参数存储的应用程序提供了更大的灵活性。W25Q128FV支持标准串行外设接口(SPI),双/四元I/O SPI以及2时钟指令周期的四元外设接口(QPI):串行时钟,芯片选择,串行数据I/O0 (DI), I/O1 (DO), I/O2 (/WP),和I/O3 (/HOLD)。当使用Fast Read Dual/Quad I/O和QPI指令时,支持高达104MHz的SPI时钟频率,允许等效的时钟速率为208MHz (104MHz x 2)双I/O和416MHz (104MHz x 4)四I/O。这些传输速率可以超过标准的异步8位和16位并行Flash存储器。连续读模式允许有效的内存访问,使用最少8个时钟的指令开销来读取24位地址,允许真正的XIP(就地执行)操作。一个保持管脚,写保护管脚和可编程写保护,顶部或底部阵列控制,提供进一步的控制灵活性。此外,设备支持JEDEC标准制造商和设备ID和SFDP寄存器,64位唯一序列号和三个256字节的安全寄存器。

要点:
1.空间详情 65,536个可编程页,每个页256字节。
空间大小计算:65,536页 * 256Byte= 16,777,216Byte
16,777,216Byte =16MByte =128Mbit
2.一次性最多可编程256字节。
3.可按16组(4KB扇区擦除)、128组(32KB块擦除)、256组(64KB块擦除)或整个芯片(芯片擦除)的方式擦除页面。
4.W25Q128FV分别有4096个可擦扇区(每个扇区4KB)和256个可擦块(每块16个扇区)。
5.W25Q128FV支持标准串行外设接口(SPI)。

引脚说明

在这里插入图片描述

在这里插入图片描述
PIN1 /CS : 片选线
PIN2 DO : 数据输出线
PIN 3 WP:写保护线
PIN4 GND: GND
PIN5 DI :数据输入线
PIN6 CLK :时钟线
PIN7 HOLD OR RESET:保持和复位输入
PIN8 VCC :VCC

内存框图

在这里插入图片描述
分为256个块,每块16个扇区,每个扇区大小4KB
256164kb =16384kb =16MB =128M -bit

标准的SPI指令

W25Q128FV通过SPI兼容总线访问,该总线由四个信号组成:串行时钟(CLK),芯片选择(/CS),串行数据输入(DI)和串行数据输出(DO)。标准SPI指令使用DI输入引脚串行地将指令、地址或数据写入CLK上升沿上的设备。DO输出引脚用于从CLK下降沿上的设备读取数据或状态。支持模式0(0,0)和3(1,1)的SPI总线操作。模式0和模式3之间的主要区别是,当SPI总线主端处于备用状态,数据没有传输到串行Flash时,CLK信号的正常状态。对于模式0,CLK信号在/CS的下降和上升边缘上通常是低的。对于模式3,在/CS的下降和上升边缘上CLK信号通常是高的。

FLASH写保护
使用非易失性内存的应用程序必须考虑噪声和其他可能危及数据完整性的不利系统条件的可能性。为了解决这个问题,W25Q128FV提供了几种方法来保护数据不被意外写入。
1.当VCC低于阈值时,设备复位
2.通电后延迟写禁用
3.写启用/禁用指令和自动写禁用后擦除或程序
4.软硬件(/WP引脚)写保护使用状态寄存器
5.用于阵列保护的额外独立块/扇区锁
6.使用掉电指令写保护
7.锁定状态寄存器的写保护,直到下次上电
8.(OTP)写保护阵列和安全寄存器使用状态寄存器*

状态和配置寄存器

W25Q128FV提供了三个状态和配置寄存器。Read Status Register1/2/3指令可以用来提供闪存阵列可用性的状态,设备是否启用写或禁用,写保护的状态,SPI设置,安全寄存器锁定状态,擦除/程序暂停状态,输出驱动程序强度,电源和当前地址模式。写状态寄存器指令可以用来配置设备写保护功能,SPI设置,安全寄存器OTP锁,保持/复位功能,输出驱动器的强度和上电地址模式。对状态寄存器的写访问由非易失状态寄存器保护位(SRP0, SRP1)的状态控制,写使能指令,以及在标准/双SPI操作期间,/WP引脚。

状态寄存器
在这里插入图片描述
关注BUSY位,这个标志位是只读的,当这个标志位为1时,说明FLASH正在进行写入或者擦除操作,此时只会响应读取状态寄存器指令和中断指令,其他的指令会被忽略。

FLASH指令详解
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
没有翻译的部分可以自行了解功能。
比较常用的有
阅读 JEDEC ID 0x9f
写入数据使能 Write Enable 0x06
读数据 Read Data 0x03
扇区擦除 Erase_Sector 0x20
写入数据 Write data 0x02
掉电模式 Power-down 0xB9
唤醒模式 Release Powerdown / ID 0xAB

  • 9
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SPI(Serial Peripheral Interface)是一种串行通信协议,可以用于与外设进行数据交互。W25Q64是一款64Mb的串行Flash存储器,支持SPI接口。 以下是使用C语言进行SPI读写W25Q64的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/spi/spidev.h> #define SPI_DEVICE "/dev/spidev0.0" // SPI设备节点路径 #define BUFFER_SIZE 256 // 缓冲区大小 int main() { int fd, ret; uint8_t tx_buffer[BUFFER_SIZE], rx_buffer[BUFFER_SIZE]; struct spi_ioc_transfer tr; // 打开SPI设备 fd = open(SPI_DEVICE, O_RDWR); if (fd < 0) { perror("Failed to open SPI device"); exit(1); } // 初始化SPI传输结构体 memset(&tr, 0, sizeof(tr)); tr.tx_buf = (unsigned long)tx_buffer; tr.rx_buf = (unsigned long)rx_buffer; tr.len = BUFFER_SIZE; tr.speed_hz = 10000000; tr.bits_per_word = 8; // 发送写命令 tx_buffer[0] = 0x06; // 写使能 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); if (ret < 0) { perror("Failed to send write enable command"); exit(1); } tr.len = 4; tx_buffer[0] = 0x02; // 写指令 tx_buffer[1] = 0x00; // 地址高位 tx_buffer[2] = 0x00; // 地址中位 tx_buffer[3] = 0x00; // 地址低位 memcpy(tx_buffer + 4, "Hello", 5); // 写入数据 // 发送写数据命令 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); if (ret < 0) { perror("Failed to send write command"); exit(1); } // 发送读命令 tr.len = 4; tx_buffer[0] = 0x03; // 读指令 tx_buffer[1] = 0x00; // 地址高位 tx_buffer[2] = 0x00; // 地址中位 tx_buffer[3] = 0x00; // 地址低位 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); if (ret < 0) { perror("Failed to send read command"); exit(1); } printf("Data read from flash memory: %s\n", rx_buffer + 4); // 关闭SPI设备 close(fd); return 0; } ``` 以上代码演示了如何使用SPI接口读写W25Q64芯片。其中,首先通过ioctl函数设置SPI传输参数和指令,然后通过ioctl函数发送指令,并通过缓冲区读取或写入数据。 需要注意的是,通过SPI接口读写W25Q64芯片需要按照其通信协议进行操作,具体指令和数据格式可参考W25Q64的数据手册。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梨花落-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值