W25Q80和GD25Q80

二者同为SPI-Flash,前者为华邦公司产品,后者是GD公司产品。

W25Q80:

  • 8M-bit  1024KB  
  • 80MHz clock operation
  • 共有16个Block,每个Block有16个扇区,每个扇区4KB,每一页256个字节
  • 每个设备有64位唯一ID

GD25Q80:

  • 8M-bit  1024KB  
  • 120MHz 快速阅读
  • 共有16个Block,每个Block有16个扇区,每个扇区4KB,每一页256个字节
  • 每个设备有128位唯一ID

引脚:(二者引脚完全兼容)

寄存器:

W25Q80 状态寄存器(S15~S0)

BUSY:FLASH正在擦除或者正在写入

TB:Top/Bottom写保护位,与BP[2:0]构成更多组合

SEC:扇区保护位,与BP[2:0]构成更多组合

SRP0:状态寄存器保护位

这5位决定写保护的范围

GD25Q80 状态寄存器(S15~S0)

SUS:只读位,该位在擦除、编程、暂停指令后置1 个人感觉这位没什么用

CMP:与BP[4:0]构成更多的组合 默认置0,与W25q80保持兼容

HPM:该位置1表示FLASH当前是高性能模式 一般不用

LB:OTP位,写1,安全寄存器变为永久只读 一般不用

这6位决定写保护范围,其实除了S14,剩下的和W25Q80寄存器是一样的,都是S2~S6共5位

那么S14是什么东西呢?上文讲了,S14即CMP,CMP=0或1 时 只是保护的范围不同罢了

比如当CMP=0,S6~S2= 00010 时 写保护区域为  0E0000H-0FFFFFH 128KB(与W25Q80一样)

CMP=1时,S6~S2=00010时  写保护区域为   000000H-0DFFFFH 896KB

默认CMP=0,即与W25Q80保持兼容。

指令表:

以下指令二者是一样的,实际上GD32Q80多了很多指令,比如和安全寄存器相关的编程,擦除,读取三条指令,但是通常我们也只会用到以下指令。

#define W25X_WriteEnable		0x06 
#define W25X_WriteDisable		0x04 
#define W25X_ReadStatusReg		0x05 
#define W25X_WriteStatusReg		0x01 
#define W25X_ReadData			0x03 
#define W25X_FastReadData		0x0B 
#define W25X_FastReadDual		0x3B 
#define W25X_PageProgram		0x02 
#define W25X_BlockErase			0xD8 
#define W25X_SectorErase		0x20 
#define W25X_ChipErase			0xC7 
#define W25X_PowerDown			0xB9 
#define W25X_ReleasePowerDown	0xAB 
#define W25X_DeviceID			0xAB 
#define W25X_ManufactDeviceID	0x90 
#define W25X_JedecDeviceID		0x9F 

值得注意的是,二者厂商的ID和设备ID是不同的,原子例程有个死循环验证厂商和设备ID,如果用的是GD25系列的Flash需要改下相关宏定义。

华邦的厂商和设备ID(不是芯片唯一ID)一般是 0xEFXX,GD是0xC8XX(XX由不同容量决定)。

 

综上所述,二者可以互相替换。

 

1. W25Q80 (8M-bit)、W25Q16 (16M-bit)W25Q32 (32M-bit)串行闪存为空间、引脚电源有限的系统提供了存储解决方案。25Q系列提供的灵活性性能远远超过普通的串行闪存设备。他们是理想的代码隐藏到RAM,执行代码直接从双/四SPI (XIP)存储声音,文本数据。设备运行在单一2.7V至3.6V的电源上,电流消耗低至5mA有源,断电1a。所有的设备都提供节省空间的包装。W25Q80/16/32数组被组织成4,096/8,192/16,384个可编程页,每个页有256个字节。多达256字节可以被编程一次使用页程序指令。页面可以按16组(扇区擦除)、128组(32KB块擦除)、256组(64KB块擦除)或整个芯片(芯片擦除)擦除。W25Q80/16/32分别有256/512/1024个可擦除扇区16/32/64个可擦除块。小的4KB扇区为需要数据参数存储的应用程序提供了更大的灵活性。(见图2)。W25Q80/16/32支持标准串行外围接口(SPI),高性能双/四输出以及双/四I/O SPI使用SPI引脚:串行时钟,芯片选择,串行数据I/O0 (DI), I/O1 (DO), I/O2 (/WP),I/O3 (/HOLD)。SPI时钟频率高达80MHz的支持允许等效时钟率160MHz的双输出320MHz的四次输出时,使用快速读双/四次输出指令。这些传输速率可与8位16位并行闪存存储器相媲美。一个保持针,写保护针可编程写保护,顶部或底部阵列控制,提供进一步的控制灵活性。此外,该设备支持JEDEC标准制造商设备识别64位唯一序列号。
### STM32与W25QXX闪存芯片的驱动及接口连接 #### 一、硬件连接方法 对于STM32W25QXX之间的物理连接,主要采用的是SPI通信协议。具体来说,在电路设计方面,需确保MCU端口配置正确并与Flash存储器管脚一一对应相连。例如,MISO(主输入从输出)、MOSI(主输出从输入)、SCK(时钟信号线)以及CSN(片选信号)。此外,还需注意电源供电部分的设计稳定性[^1]。 #### 二、软件实现流程 针对不同型号如W25X系列/GD系列芯片(容量≤16MB),提供了两种不同的传输模式供开发者选择——即硬件SPI方式带有DMA功能支持的大批量数据交换机制(SPI DMA)。为了简化开发过程中的复杂度,《stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256》文档给出了详细的指导说明,包括初始化设置、命令发送接收逻辑等内容[^3]。 下面是一个简单的初始化函数示例: ```c void MX_SPI_Init(void) { /* SPI configuration */ } ``` 当涉及到更大容量版本比如W25Q256时,则需要注意启用四字节寻址特性来完整覆盖整个内存空间范围内的任意位置访问操作。 #### 三、实际应用场景案例分析 在某些特定的应用场景下,可能还需要额外考虑其他因素的影响。例如,在一个具体的项目实例中提到过利用按键触发相应动作完成对指定区域内容进行读/写的任务,并通过串行通讯接口反馈处理结果给外部设备查看确认[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知否,知否

来一杯冰美式把

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

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

打赏作者

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

抵扣说明:

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

余额充值