w25q128中文数据手册


W25Q128中文数据手册
一、产品概述
1.1 产品简介
W25Q128是一款由华邦电子(Winbond)推出的高性能串行NOR闪存芯片,采用SPI(Serial Peripheral Interface)接口协议。其存储容量为128兆位(16兆字节),支持标准SPI、双线SPI(Dual SPI)和四线SPI(Quad SPI)模式,能够满足不同应用场景下的数据存储需求。W25Q128具有低功耗、高可靠性、快速读写速度等特点,广泛应用于嵌入式系统、消费电子、工业控制、汽车电子等领域。
1.2 主要特性
存储容量:128兆位(16兆字节)
接口类型:SPI(支持标准SPI、Dual SPI、Quad SPI模式)
工作电压:2.7V至3.6V
时钟频率:最高支持104MHz(标准SPI模式),Quad SPI模式下可达更高频率
页大小:256字节
块大小:64KB(块擦除)
扇区大小:4KB(扇区擦除)
擦写周期:约10万次
数据保存时间:20年以上
工作温度范围:-40℃至+85℃
封装形式:SOIC-8、WSON-8、USON-8等
1.3 应用领域
嵌入式系统:存储固件、启动代码、配置文件等
消费电子:智能手机、平板电脑、智能穿戴设备等
工业控制:PLC、传感器节点、工业仪表等
汽车电子:车载仪表盘、行车记录仪、ECU等
物联网设备:智能家居、智能电表、环境监测仪等
二、电气特性
2.1 绝对最大额定值
供电电压(VCC):-0.5V至4.0V
输入电压(VI):-0.5V至VCC+0.5V
输出电压(VO):-0.5V至VCC+0.5V
工作温度范围:-40℃至+85℃
存储温度范围:-65℃至+150℃
2.2 直流特性
工作电压(VCC):2.7V至3.6V
输入高电平(VIH):0.7×VCC至VCC+0.5V
输入低电平(VIL):-0.5V至0.3×VCC
输出高电平(VOH):0.7×VCC至VCC+0.5V
输出低电平(VOL):-0.5V至0.3×VCC
输入漏电流(II):±1μA(最大)
输出漏电流(IO):±1μA(最大)
2.3 交流特性
时钟频率(fCLK):
标准SPI模式:最高104MHz
Dual SPI模式:最高104MHz
Quad SPI模式:最高104MHz
页编程时间(tPP):0.7ms(典型值)
扇区擦除时间(tSE):400ms(典型值)
块擦除时间(tBE):400ms(典型值)
芯片擦除时间(tCE):40s(典型值)
写使能延迟时间(tW):50ms(最大)
读数据时间(tRC):25ns(最大)
三、功能描述
3.1 存储器组织
W25Q128的存储器组织结构如下:
总容量:128兆位(16兆字节)
块(Block):256个块,每个块64KB
扇区(Sector):每个块包含16个扇区,每个扇区4KB
页(Page):每个扇区包含16个页,每个页256字节
3.2 操作模式
W25Q128支持以下操作模式:
标准SPI模式:单线数据传输,时钟频率最高104MHz
Dual SPI模式:双线数据传输,时钟频率最高104MHz
Quad SPI模式:四线数据传输,时钟频率最高104MHz
3.3 指令集
W25Q128支持丰富的指令集,以下为常用指令:
指令 | 指令码 | 描述 |
---|---|---|
写使能(Write Enable) | 06H | 使能写操作 |
写禁止(Write Disable) | 04H | 禁止写操作 |
读状态寄存器(Read Status Register) | 05H | 读取状态寄存器1的值 |
写状态寄存器(Write Status Register) | 01H | 写入状态寄存器1的值 |
读数据(Read Data) | 03H | 从指定地址读取数据 |
快速读数据(Fast Read) | 0BH | 快速读取数据,支持Dummy Cycle |
页编程(Page Program) | 02H | 向指定页写入数据 |
扇区擦除(Sector Erase) | 20H | 擦除指定扇区(4KB) |
块擦除(Block Erase) | D8H | 擦除指定块(64KB) |
芯片擦除(Chip Erase) | C7H | 擦除整个芯片 |
读制造商ID(Read Manufacturer/Device ID) | 90H | 读取制造商ID和设备ID |
读唯一ID(Read Unique ID) | 4BH | 读取唯一ID(64位) |
进入掉电模式(Power Down) | B9H | 进入低功耗掉电模式 |
释放掉电模式(Release Power Down) | ABH | 释放掉电模式 |
3.4 状态寄存器
W25Q128包含三个状态寄存器(SR1、SR2、SR3),用于监控和控制芯片状态。以下为状态寄存器1的主要位定义:
位 | 名称 | 描述 |
---|---|---|
0 | BUSY | 忙标志位(1=忙,0=空闲) |
1 | WEL | 写使能锁存位(1=允许写,0=禁止写) |
2 | BP0 | 块保护位0 |
3 | BP1 | 块保护位1 |
4 | BP2 | 块保护位2 |
5 | TB | 顶部/底部块保护选择位 |
6 | SEC | 扇区/块保护选择位 |
7 | SRP0 | 状态寄存器保护位0 |
四、操作流程
4.1 写操作流程
写使能:发送写使能指令(06H),使能写操作。
页编程:发送页编程指令(02H),指定目标地址和数据。
等待写入完成:通过轮询状态寄存器的BUSY位,确认写入完成。
4.2 读操作流程
发送读指令:发送读数据指令(03H)或快速读数据指令(0BH),指定目标地址。
读取数据:通过MISO引脚读取数据。
4.3 擦除操作流程
写使能:发送写使能指令(06H),使能写操作。
擦除指令:发送扇区擦除(20H)、块擦除(D8H)或芯片擦除(C7H)指令,指定目标地址。
等待擦除完成:通过轮询状态寄存器的BUSY位,确认擦除完成。
五、硬件连接示例
5.1 与STM32的连接
以下为W25Q128与STM32微控制器的典型连接方式:
W25Q128引脚 | STM32引脚 | 描述 |
---|---|---|
/CS(片选) | GPIO引脚(如PA4) | 片选信号,低电平有效 |
CLK(时钟) | SPI_SCK(如PA5) | SPI时钟信号 |
DO(数据输出) | SPI_MISO(如PA6) | 主机输入,从机输出 |
DI(数据输入) | SPI_MOSI(如PA7) | 主机输出,从机输入 |
/WP(写保护) | NC或GPIO引脚 | 写保护信号,低电平有效(可选) |
/HOLD(保持) | NC或GPIO引脚 | 保持信号,低电平暂停通信(可选) |
VCC | 3.3V | 电源电压 |
GND | GND | 接地 |
5.2 硬件设计注意事项
电源滤波:在VCC引脚附近添加去耦电容(如0.1μF),以减少电源噪声。
信号完整性:SPI信号线(CLK、MOSI、MISO、/CS)应尽量短,避免信号干扰。
上拉电阻:/WP和/HOLD引脚可通过上拉电阻(如10kΩ)接至VCC,以确保默认状态。
六、软件编程示例
6.1 初始化SPI接口
以下为基于STM32 HAL库的SPI初始化代码示例:
#include "stm32f1xx_hal.h"
SPI_HandleTypeDef hspi1;
void SPI1_Init(void) { hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 7; if (HAL_SPI_Init(&hspi1) != HAL_OK) { // 初始化错误处理 Error_Handler(); } }
6.2 写使能函数
void W25Q128_WriteEnable(void) { uint8_t cmd = 0x06; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS }
6.3 页编程函数
void W25Q128_PageProgram(uint32_t addr, uint8_t *data, uint16_t size) { uint8_t cmd[4]; cmd[0] = 0x02; // 页编程指令 cmd[1] = (addr >> 16) & 0xFF; cmd[2] = (addr >> 8) & 0xFF; cmd[3] = addr & 0xFF;
W25Q128_WriteEnable(); // 写使能 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, cmd, 4, HAL_MAX_DELAY); HAL_SPI_Transmit(&hspi1, data, size, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS
// 等待写入完成 while (W25Q128_ReadStatusRegister() & 0x01); }
6.4 读数据函数
void W25Q128_ReadData(uint32_t addr, uint8_t *data, uint16_t size) { uint8_t cmd[4]; cmd[0] = 0x03; // 读数据指令 cmd[1] = (addr >> 16) & 0xFF; cmd[2] = (addr >> 8) & 0xFF; cmd[3] = addr & 0xFF;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // 拉低/CS HAL_SPI_Transmit(&hspi1, cmd, 4, HAL_MAX_DELAY); HAL_SPI_Receive(&hspi1, data, size, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // 拉高/CS }
七、注意事项
写保护:在写入数据前,需确保写保护引脚(/WP)为高电平,或通过状态寄存器禁用写保护。
擦除操作:写入数据前需先擦除对应扇区或块,直接覆盖写入会导致数据错误。
总线冲突:在多设备共享SPI总线时,需合理管理片选信号(/CS),避免总线冲突。
供电稳定性:在写入或擦除操作过程中,需确保供电稳定,避免因断电导致数据损坏。
温度范围:W25Q128的工作温度范围为-40℃至+85℃,超出此范围可能导致性能下降或损坏。
W25Q128是一款高性能、低功耗的串行NOR闪存芯片,具有128兆位(16兆字节)的存储容量,支持SPI、Dual SPI和Quad SPI模式。其丰富的指令集和灵活的操作模式,使其广泛应用于嵌入式系统、消费电子、工业控制等领域。通过合理的硬件设计和软件编程,可充分发挥W25Q128的性能优势,满足各种数据存储需求。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。