zoukankan      html  css  js  c++  java
  • w25qxx的nor flash学习笔记

    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芯片也是有很多命令组成的。
    命令+数据
    或者
    命令+返回的数据

  • 相关阅读:
    从零开始写STL—哈希表
    从零开始写STL-string类型
    从零开始写STL—模板元编程之any
    从零开始写STL—模板元编程之tuple
    c++ 实现 key-value缓存数据结构
    从零开始写STL
    从零开始写STL—functional
    从零开始写STL—set/map
    从零开始写STL-二叉搜索树
    洛谷 P4016 负载平衡问题
  • 原文地址:https://www.cnblogs.com/sunnyside/p/12761648.html
Copyright © 2011-2022 走看看