w25qxx的nor flash学习笔记
w25qxx的三字节地址模式和四字节地址模式
我们知道w25qxx支持3-Byte和4-Byte模式,其实就是地址空间不同,对应的空间大小不同,3-Byte空间最大只达到128Mb
W25Q256FV提供了两种地址模式,可用于指定存储器阵列中的任何数据字节。 3字节地址模式向后兼容仅支持最大128Mb位数据的较早版本的串行闪存。为了在3字节地址模式下寻址256M位或更多数据,除3字节地址外,还必须使用扩展地址寄存器。4字节地址模式旨在支持256Mb位至32Gb位的串行闪存设备。使能4字节地址模式时,不需要扩展地址寄存器。
W25Q256是32MB(256Mb)的flash,32MB(256Mb)就是 0x1 FF FF FF,所以地址位就是4个字节,四字节的范围是0x1 00 00 00-0xFF FF FF FF,所以可支持的空间范围是256Mb-32Gb,即32MB-4GB
而16MB(256Mb)的flash最大是FF FF FF,只要三字节地址位
上电后,根据非易失性状态寄存器位ADP(S17)的设置,W25Q256FV可以工作在3字节地址模式或4字节地址模式。如果ADP = 0,则器件将以3字节地址模式工作;否则,器件将以3字节地址模式工作。如果ADP = 1,则设备将以4字节地址模式工作。 ADP的出厂默认值为0。
要在3字节或4字节地址模式之间切换,必须使用“进入4字节模式(B7h)”或“退出4字节模式(E9h)”指令。当前地址模式由状态寄存器位ADS指示(S16)。
由此可见,w25qxx大容量来讲是有这个4字节模式的,但是小容量的w25q32来说,只有3字节地址模式。我目前用到用的是w25q32芯片,网上看到后,是norflash类型。spi、qspi、dspi都可以驱动的,参考的驱动可以是野火的,也可以是原子的。
同事spi的是有时序要求的,下面是官网的说法:
支持SPI总线操作模式0(0,0)和3(1,1)。 当SPI总线主机处于待机状态且数据未传输到串行闪存时,模式0与模式3之间的主要区别在于CLK信号的正常状态。 对于模式0,在/ CS的下降沿和上升沿,CLK信号通常为低电平。 对于模式3,CLK信号通常在/ CS的下降沿和上升沿为高电平。
W25Q32的介绍
1、容量
32M-Bit/4M-byte(4,194,304)
2、存储结构
页:256-bytes
扇区:4K-bytes
块:64K_bytes
是故:
页:有16384个
扇区:有1024个
块:有64个
3、速度
时钟速度最高:80MHz,这里我使用了stm32f1的单片机来驱动的,因此速度给了18Mbits
4、特性
擦除、写次数:高达100,000次
数据保存时间:20年
三、操作注意
1、页为编程单位,可以一次性编程1个到256个字节;超过256个字节肯定要分多次写入
2、在编程之前,必须对对应的区域进行擦除操作,否则有可能写入错误。
3、擦除的最小单位是“扇区”,也可以以“块”为单位进行擦除(此时块可以为32K-bytes 或者 64K-bytes),最大可以整块擦除。
4、读操作比编程操作容易的多,没有以上的细节考虑。可以一次性读一个字节,也可以多个字节,甚至从头读到尾。
flash的变成有很多命令,和其他很多驱动芯片一样,读写删除等等,之前用的dac8562的dac芯片也是有很多命令组成的。
命令+数据
或者
命令+返回的数据