W25Q128芯片手册精读

文章目录

  • 前言
  • 1. 概述
  • 2. 特性
  • 3. 封装类型和引脚配置
    • 3.1 8焊盘WSON 8x6 mm
    • 3.2其他封装
  • 4. 引脚描述
    • 4.1 片选
    • 4.2 串行数据输入输出
    • 4.3 写保护
    • 4.4 保持脚
    • 4.5 时钟
  • 5. 块图
  • 6. 功能描述
    • 6.1 SPI功能
      • 6.1.1 标准SPI
      • 6.1.2 双通道SPI
      • 6.1.3 四通道SPI
      • 6.1.4 保持功能
    • 6.2 写保护
      • 6.2.1 写保护特性
  • 7. 状态寄存器和指令
    • 7.1 状态寄存器
    • 7.2 指令
      • 7.2.1 指令总表
      • 7.2.2 写使能与写禁用
      • 7.2.3 读数据
      • 7.2.4 更多指令
  • 8. 电气特性
  • 9. 封装明细
  • 10. 芯片名含义
  • 总结

前言

之前写SPI通信的时候用到了W25Q128,其中对芯片手册的阅读我只写了我们所需要的的部分。
这篇博客就对这个芯片进行详细的阅读并记录,文章可能会比较长,但绝对是结合了自己的理解进行阐述。

芯片手册刚开始看的时候最大的拦路虎其实就是英文,看习惯了中文,直接看纯英文的手册着实让人觉得难受。不过看手册又不是考试,翻译软件一大堆,看不懂就复制粘贴翻译一下也非常OK。翻译唯一不足的地方就是可能机翻可能不太准确,有些专业名词就通俗解释了。

这篇博客就按照winbond公司的W25Q128芯片手册来阐述。


1. 概述

GENERAL DESCRIPTION

这个章节主要是对这个芯片的概述,可以帮助我们快速了解这个芯片的基本信息,包括用途,内部组成等。

第一段就告诉我们这个芯片是8M-bit的串行闪存芯片,它主要适用于存储系统有限制的系统,这样的系统通常是有限的空间,有限引脚,有限电源这种,也就是说这个芯片的适用方案。后面又说了它的工作电压和电流,间接的说明了功率。

第二段告诉我们芯片内部内存的分配,它包括65536个可编程页面,每个页面256字节。最多256字节可以一次编程。擦除可以按16个一组,128个一组,256个一组或者整个芯片大小进行擦除。

第三段告诉我们,这个芯片支持SPI通信,支持双路和思路SPI。SPI的时钟频率最高可达104M,允许双输出的等效时钟频率208MHz,四路SPI的等效时钟速率为280MHz(70MHz x 4)。
总之核心意思就是,这个芯片支持SPI,同时SPI的频率还比较高。

第四段主要写这个芯片的几个控制引脚,Hold,WriteProtect,Programmable Write Protection这三个引脚方便我们对芯片进行控制。

这四段简单概括一下就是,芯片的用途;芯片内存的组成以及使用;支持SPI通信,双路多路,通信频率;控制引脚;


2. 特性

FEATURES
相对于第一章的概述,这一章对芯片的闪存特性,功能特性,电气特性,封装特性等进行阐述。

  • Family of SpiFlash Memories SPI闪存的内存家族
    128M位/16M字节
    可编程页面每页256字节
    标准SPI引脚:CLK,/CS,DI,DO,/WP,/Hold
    双通道SPI引脚:CLK,/CS, I O 0 IO_{0} IO0 I O 1 IO_{1} IO1,DO,/WP,/Hold
    四通道SPI引脚:CLK,/CS, I O 0 IO_{0} IO0 I O 1 IO_{1} IO1 I O 2 IO_{2} IO2 I O 3 IO_{3} IO3
    这部分就是告诉我们这个芯片的使用SPI单双四通道的时候,用到什么引脚。

  • Highest Performance Serial Flash 最高性能串行闪存
    双通道SPI时钟最高输出104MHz,四通道时钟最高输出70MHz
    208/280MHz等效双/四SPI
    35MB/s的持续传输数据速率
    速度高达普通串行闪存的5倍
    超过100000次程序擦除/编程循环
    超过20年的数据保存

  • Efficient “Continuous Read Mode” 高效持续读数据模式
    低指令开销
    带8/16/32/64字节环绕的连续读取
    寻址内存只需8个时钟
    允许真正的XIP(就地执行)操作
    性能优于X16并行闪存

  • Low Power, Wide Temperature Range 低功率、宽温度范围
    单个2.7至3.6V电源
    4mA有效电流,<1µA断电电流
    -40°C至+85°C工作范围

  • 具有4KB扇区的灵活架构
    均匀扇区/块擦除(4K/32K/64K字节)
    编程1到256字节
    擦除/程序挂起和恢复

  • 高级安全功能
    软件和硬件写保护
    顶部/底部,4KB补充阵列保护
    锁定和OTP阵列保护
    每个设备的64位唯一序列号
    可发现参数(SFDP)寄存器
    带OTP锁的3X256字节安全寄存器
    易失性和非易失性状态寄存器位

  • 节省空间的包装
    8垫片WSON 8x6 mm
    16引脚SOIC 300 mil
    24球TFBGA 8x6 mm

对没错,我就是翻译了一下。
这部分一般我只看前面几个,比如:
我想要用的SPI是什么引脚,最大支持的时钟,工作电压电流和工作环境。


3. 封装类型和引脚配置

PACKAGE TYPES AND PIN CONFIGURATIONS

拿到芯片,封装还是要看一下的,虽然是同一型号的芯片但是由于封装不同,大小不同,实现的功能其实也有些差异。

W25Q128BV分别采用8焊盘WSON 8x6 mm(封装代码E)、16引脚SOIC 300 mil(封装代码F)和24球8x6 mm TFBGA(封装代码C)。

3.1 8焊盘WSON 8x6 mm

在这里插入图片描述

我们通过顶视图可以看到,在一号脚的位置有个灰色小圆圈,这个表示引脚的1号脚。
平时在调试电路的时候,看芯片的小圈位置就可以快速定位1号脚,再结合芯片手册,就可以知道所有引脚对应情况。

这里每个引脚都用标识进行了标注,有些引脚后面还有个(),这就说明这个引脚是可以引脚复用的。
在这里插入图片描述

每一个引脚的功能可以通过这个引脚描述表获知。
1号引脚为片选,低电平有效。
2号引脚为数据输出脚,也可以作为IO1的数据输入输出脚。
3号引脚为写保护脚,低电平有效,也可以作为IO2的数据输入输出脚。
4号引脚为地
5号引脚为数据输入脚,也可以作为IO0的数据输入输出脚。
6号引脚为时钟脚,一般接收主机输入的串行时钟输入。
7号脚为保持输入脚,低电平有效,也可以作为IO3的数据输入输出脚。
8号引脚为供电脚

这里还给了个注释,IO0和IO1被用来传输标准和双通道SPI指令。
IO0-IO3被用来传输四路SPI指令。


3.2其他封装

Pin Configuration SOIC 300-mil
在这里插入图片描述在这里插入图片描述看的方法类似,就不再一一阐述。
Ball Configuration TFBGA 8x6-mm

在这里插入图片描述
在这里插入图片描述


4. 引脚描述

引脚描述表简单的说明了各个引脚的作用,这一小节主要是对主要引脚进行详细的阐述。

4.1 片选

Chip Select (/CS)
片选脚,低电平有效,高电平无效。
高电平时,设备的功率消耗会保持一个待命状态,除非遇到对内部寄存器的擦除,编程以及写操作。
低电平时,设备的功率消耗增加到启用状态并且指令信息和数据可以与设备交互。
高低电平有效是有一个临界值的,只有电平达到VCC支持电平,才会触发表示高电平。比如达到3.0V以上的电平才可以表示高电平,否则还是低电平。

4.2 串行数据输入输出

Serial Data Input, Output and IOs (DI, DO and IO0, IO1, IO2, IO3)
W25Q128支持单路,双路,四路SPI通信。
单路SPI即标准SPI通信,使用DI脚在CLK的上升沿写控制字,地址或者数据到设备中去。
单路SPI即标准SPI通信,使用DO脚在CLK的下降沿从设备读取数据或状态。

双路和四路SPI的控制指令使用IO引脚串行写数据。读写数据对应时钟为:读 CLK↓,写CLK↑。
对于四路的情况,还需要一个Quad的使能位,QE=1。
当QE=1时,写保护脚/WP就可以用作IO2,保持脚/HOLD脚可以用作IO3。

4.3 写保护

Write Protect (/WP)
写保护脚主要用来保护状态寄存器不被写入数据。
用于结合状态寄存器的块保护(CMP、SEC、TB、BP2、BP1和BP0)位和状态寄存器保护(SRP)位,小到4KB扇区的部分或整个存储器阵列都可以硬件保护。/WP引脚处于低激活状态。当状态寄存器-2的QE位被设置用于Quad I/O时,/WP引脚功能不可用,因为该引脚用于IO2。引脚见图1a-c,Quad I/O操作的配置。

4.4 保持脚

HOLD (/HOLD)
/HOLD引脚允许设备在被主动选择时暂停。当/HOLD变低时,
当/CS为低时,DO引脚将处于高阻抗,DI和CLK引脚上的信号将被忽略(不用管)。当/HOLD变高时,设备操作可以恢复。/HOLD功能可以当多个设备共享相同的SPI信号时有用。/HOLD触针处于低激活状态。
当状态寄存器-2的QE位设置为Quad I/O,/HOLD引脚功能不可用,因为该引脚用于IO3。Quad I/O操作的引脚配置见图1a-c。

4.5 时钟

Serial Clock (CLK)
SPI串行时钟输入(CLK)引脚为串行输入和输出操作提供定时。


5. 块图

在这里插入图片描述

对于块图涉及到的一些名词进行解释:

  • SPI Command&Control Logic:进行SPI串行数据解析,得到得到页地址(可以理解为选中字线)、字节地址(页内偏移地址,可以理解为选中位线)、数据、命令;

  • Status Register:片内的状态寄存器;

  • Write Control Logic:写保护控制逻辑;

  • High Voltage Generators:电荷泵生成内部高压,用于存储单元的擦除和读写;

  • Page Address Latch:页地址锁存

  • Byte Address Latch:字节地址锁存

  • Write Protect Logic And Row Decode:写保护逻辑和行解码,行即为字线。

  • Column Decode And 256-Byte Page Buffer:列解码和256KB页buffer,列即为位线,从这可以看出flash内部的读写是以page为单位。我理解为一页即为一根字线下挂的2568个存储单元,也即2568根位线。

  • 存储阵列:一共256个64KBblock,每个block有16个4KB的sector。

  • SFDP Register:256字节串行Flash可发现参数(SFDP)寄存器,包含器件配置信息、可用指令和其他特性。

  • Security Register:芯片提供3个256字节的安全寄存器,用于存储制造信息或其他重要信息,此寄存器可以单独编程或擦除


6. 功能描述

这里主要是翻译一下吧,芯片手册对引脚的部分描述有些地方很重复了。

6.1 SPI功能

6.1.1 标准SPI

Standard SPI Instructions
W25Q128BV通过SPI兼容总线访问,该总线由四个信号组成:串行时钟(CLK)、芯片选择(/CS)、串行数据输入(DI)和串行数据输出(DO)。标准SPI指令使用DI输入引脚在时钟CLK上升沿向设备串行写入指令、地址或数据。DO输出引脚用于在CLK下降沿从设备读取数据或状态。
支持SPI总线操作模式0和3。模式0和模式3涉及SPI总线主机处于待机状态且数据处于没有传输到串行闪存。
对于模式0,CLK信号在/CS跳变沿通常为低。
对于模式3,CLK信号在/CS跳变沿通常为高。

6.1.2 双通道SPI

Dual SPI Instructions
W25Q128BV在使用“快速读取双输出(3Bh)”和“快速读取“双输入/输出(BBh)”说明。这些指令允许在是普通串行闪存设备速率的两到三倍。双SPI读取指令非常适合通电后快速将代码下载到RAM(代码隐藏)或用于执行非速度关键型直接来自SPI总线(XIP)的代码。使用双SPI指令时,DI和DO引脚变为双向I/O引脚:IO0和IO1。

6.1.3 四通道SPI

Quad SPI Instructions
W25Q128BV在使用“快速读取四路输出(6Bh)”、“快速Read Quad I/O(EBh)”、“Word Read Quad I/O(E7h)”和“Octal Word Read Quad-I/O(E3h)”指令。
这些指令允许数据传输到设备或从设备传输数据的速率是普通速率的六到八倍串行闪存。Quad-Read指令在连续性和随机性方面提供了显著改进访问传输速率允许快速代码遮蔽到RAM或直接从SPI总线(XIP)执行。当使用Quad SPI指令时,DI和DO引脚变为双向IO0和IO1,以及/WP和/HOLD引脚分别变为IO2和IO3。Quad SPI指令需要非易失性Quad使能状态寄存器-2中的位(QE)被设置。

6.1.4 保持功能

Hold Function
对于标准SPI和双SPI操作,/HOLD信号允许W25Q128BV操作在其被主动选择时暂停(当/CS为低时)。/HOLD功能可能在以下情况下有用:SPI数据和时钟信号与其他设备共享。例如,考虑页面缓冲区当优先级中断需要使用SPI总线时,仅部分写入。在这种情况下,/HOLD函数可以将指令和数据的状态保存在缓冲区中,这样编程就可以在总线一开始就停了。/HOLD功能仅适用于标准SPI和DualSPI操作,而不是在Quad SPI期间。

要启动/HOLD条件,必须在/CS低的情况下选择设备。
如果CLK信号已经为低,/HOLD状态将生效。
如果CLK不为低/HOLD将在CLK的下一个下降沿后生效。
如果CLK为已经为低时,/HOLD激活状态将在/HOLD拉高时终止。
如果CLK尚未处于低位,则/HOLD条件将在CLK的下一个下降沿之后终止。
在/HOLD状态期间,串行数据输出(DO)为高阻抗,串行数据输入(DI)和串行时钟(CLK)被忽略。芯片选择(/CS)信号应在/HOLD操作的整个持续时间内保持低激活状态,以避免重置设备的内部逻辑状态。

6.2 写保护

WRITE PROTECTION
使用非易失性存储器的应用程序必须考虑噪声和其他因素的可能性可能损害数据完整性的不利系统条件。为了解决这一问题,W25Q128BV提供了几种方法来保护数据不受无意写入的影响。

6.2.1 写保护特性

Write Protect Features
•当VCC低于阈值时,设备复位
•通电后时间延迟写入禁用
•写入启用/禁用指令和擦除或编程后的自动写入禁用
•使用状态寄存器的软件和硬件(/WP引脚)写保护
•使用断电指令进行写保护
•锁定写保护,直到下一次通电
•一次性程序(OTP)写保护*

通电或断电时,W25Q128BV将保持复位状态,而VCC低于VWI的阈值(参见加电定时和电压电平以及图38)。重置时,所有操作被禁用并且没有指令被识别。通电期间和VCC电压之后则所有编程和擦除相关指令被进一步禁用tPUW的时间延迟。这包括写入启用、页面程序、扇区擦除、块擦除、芯片擦除和写入状态注册说明。请注意,芯片选择引脚(/CS)必须在通电时跟踪VCC电源电平,直到达到VCC最小电平和tVSL时间延迟。如果需要,可以使用/CS上的上拉电阻器实现这一点。

通电后,设备将自动置于写禁用状态,状态寄存器为写Enable Latch(WEL)设置为0。写入启用指令必须在页面程序、扇区之前发出擦除、块擦除、芯片擦除或写入状态寄存器指令将被接受。完成写入使能锁存器(WEL)被自动清除到0的写入禁止状态。使用写入状态寄存器指令和设置状态寄存器保护(SRP0、SRP1)和块保护(CMP、SEC、TB、BP2、BP1和BP0)位。这些设置允许小到4KB扇区的部分或整个存储器阵列被配置为只读。与写保护(/WP)引脚一起使用,可以启用对状态寄存器的更改或在硬件控制下禁用。此外断电指令提供了额外级别的写保护,因为除释放掉电指令。


7. 状态寄存器和指令

7.1 状态寄存器

STATUS REGISTERS AND INSTRUCTIONS
读取状态寄存器-1和状态寄存器-2指令可用于提供闪存阵列的可用性状态,如果设备已启用或禁用写入,则写入状态保护、Quad SPI设置、安全寄存器锁定状态和擦除/程序挂起状态。写状态状态寄存器指令可用于配置设备写入保护功能、Quad SPI设置和安全寄存器OTP锁。对状态寄存器的写入访问由非易失性状态寄存器保护位(SRP0、SRP1)的状态、写入启用指令以及在标准/双重期间SPI操作,/WP引脚控制。
状态寄存器较多,这里列一个表进行阐述。

寄存器标识寄存器全称寄存器说明
BUSYBUSY StatusBUSY是状态寄存器(S0)中的只读位,当设备执行页面程序、四页程序、扇区擦除、块擦除、芯片擦除、写入状态寄存器或擦除/编程安全寄存器指令时,该位被设置为1状态。在此期间,设备将忽略除读取状态寄存器和擦除/编程挂起指令之外的其他指令(参见AC特性中的tW、tPP、tSE、tBE和tCE)。当程序、擦除或写入状态/安全寄存器指令完成时,BUSY位将被清除为0状态,表示设备已准备好接受进一步的指令。
WELWrite Enable Latch Status写使能锁存器(WEL)是状态寄存器(S1)中的只读位,在执行写使能指令后设置为1。当设备被写禁用时,WEL状态位被清除为0。通电后或执行以下任何指令后会出现写禁用状态:写禁用、页面程序、四页程序、扇区擦除、块擦除、芯片擦除、写状态寄存器、擦除安全寄存器和程序安全寄存器。
BP2,BP1,BP0Block Protect Bits块保护位(BP2、BP1、BP0)是状态寄存器(S4、S3和S2)中提供写保护控制和状态的非易失性读/写位。可以使用写入状态寄存器指令设置块保护位(请参阅交流特性中的tW)。内存阵列的全部、全部或一部分都可以受到编程和擦除指令的保护(请参阅状态寄存器内存保护表)。块保护位的出厂默认设置为0,没有任何阵列受到保护。
TBTop/Bottom Block Protect Bit非易失性顶部/底部位(TB)控制块保护位(BP2、BP1、BP0)是从阵列的顶部(TB=0)还是底部(TB=1)进行保护,如状态寄存器内存保护表中所示。出厂默认设置为TB=0。根据SRP0、SRP1和WEL位的状态,可以使用写入状态寄存器指令设置TB位。
SECSector/Block Protect Bit非易失性扇区/块保护位(SEC)控制块保护位是(BP2、BP1、BP0)保护阵列顶部(TB=0)还是底部(TB=1)中的4KB扇区(SEC=1)或64KB块(SEC=0),如状态寄存器内存保护表中所示。默认设置为SEC=0。
CMPComplement Protect Bit互补保护位(CMP)是状态寄存器中的非易失性读/写位(S14)。它用于结合SEC、TB、BP2、BP1和BP0位,为阵列保护提供更大的灵活性。一旦CMP设置为1,先前由SEC、TB、BP2、BP1和BP0设置的阵列保护将反转。例如,当CMP=0时,顶部4KB扇区可以受到保护,而阵列的其余部分则不受保护;当CMP=1时,顶部4KB扇区将变得不受保护,而阵列的其余部分将变为只读。有关详细信息,请参阅状态寄存器内存保护表。默认设置为CMP=0。
SRP1, SRP0Status Register Protect Bits状态寄存器保护位(SRP1和SRP0)是状态寄存器中的非易失性读/写位(S8和S7)。SRP位控制写保护的方法:软件保护、硬件保护、电源锁定或一次性可编程(OTP)保护。
SUSErase/Program Suspend Status挂起状态位是状态寄存器(S15)中的只读位,其在执行擦除/编程挂起(75h)指令之后被设置为1。SUS状态位通过擦除/编程恢复(7Ah)指令以及断电、上电周期清除为0。
LB3, LB2, LB1Security Register Lock Bits安全寄存器锁定位(LB3、LB2、LB1)是状态寄存器(S13、S12、S11)中的非易失性一次性编程(OTP)位,其向安全寄存器提供写保护控制和状态。LB[3:1]的默认状态为0,安全寄存器处于解锁状态。LB[3:1]可以使用写入状态寄存器指令单独设置为1。LB[3:1]是一次性可编程(OTP),一旦设置为1,相应的256字节安全寄存器将永久变为只读。
QEQuad Enable BitQuad Enable(QE)位是状态寄存器(S9)中允许Quad SPI操作的非易失性读/写位。当QE位设置为0状态(出厂默认值)时,/WP引脚和/HOLD引脚启用。当QE位设置为1时,Quad IO2和IO3引脚被启用,/WP和/HOLD功能被禁用。

关于SRP1和SRP0状态寄存器保护位以及/WP写保护胃,有几种设置状态,表如下。
SRP1=0时,SRP0=0,/WP=x不接控制。此时是软件保护,状态寄存器可以在写使能指令之后写入数据。这是出厂设置情况。
SRP1=0时,SRP0=1,/WP=0低电平。此时是硬件保护,状态寄存器锁住,不可写数据。
SRP1=0时,SRP0=1,/WP=1高电平。此时是硬件保护接触,状态寄存器解锁,可写数据。
SRP1=1时,SRP0=0,/WP=x不接控制。此时是电源锁定,状态寄存器被保护,直到下一个断电加电周期才可以继续写。
SRP1=1时,SRP0=1,/WP=x不接控制。此时是一次编程,状态寄存器只能写一次,同时被永久保护,不能再写。

当SRP=1,SRP0=0或1时,一个断电上电周期将把SRP1和SRP0都改为0状态。
在这里插入图片描述

状态寄存器的内部位图如下
对状态寄存器写数据的时候,控制位的编写参考Figure3a-3b。
在这里插入图片描述

当CMP这个位为0和1时,内存中的部分地址是保护地址。详情还参考芯片手册
在这里插入图片描述
在这里插入图片描述


7.2 指令

INSTRUCTIONS

W25Q128BV的指令集由35条基本指令组成,这些指令通过SPI总线完全控制(请参阅指令集1-3)。指令由芯片选择(/CS)的下降沿启动。时钟输入DI输入的数据的第一个字节提供指令代码。DI输入上的数据在时钟的上升沿以最高有效位(MSB)为先进行采样。指令的长度从一个字节到几个字节不等,后面可能是地址字节、数据字节、伪字节(不在乎),在某些情况下还有组合。指令以edge/CS的上升沿完成。每个指令的时钟相对时序图如图4至图37所示。所有读取指令都可以在任何时钟位之后完成。但是,写入、编程或擦除的所有指令必须在字节边界上完成(在完整的8位被计时后/CS驱动为高),否则该指令将被忽略。此功能进一步保护设备不受无意写入的影响。此外,当存储器被编程或擦除时,或当状态寄存器被写入时,除读取状态寄存器外的所有指令都将被忽略,直到编程或擦除周期完成。

制造商和设备标识
在这里插入图片描述

7.2.1 指令总表

下面这几个表就是对W25Q128芯片的一系列操作的指令合集。由于指令控制流程基本都差不多。
大致为:拉片选,看时钟,传指令,传数据,拉片选。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这篇博客写了读取设备制造商信息和ID信息的指令看法。
其他指令其实也差不多。
这里再挑几个写一下。

7.2.2 写使能与写禁用

写使能对应的指令控制字为06h
我们看时序图,以mode0为例。
首先片选/CS拉低,Mode=0是,CLK空闲为低电平,也就是0开始跳变1。我们写的指令是占1个字节,也就是8位,所以这里对应8个跳变的CLK。06h其实相当于2+4。发送的数据其实是:00000110。我们这个0101的数据对应一下DI的位置,发现刚好就是06h。
发送完后片选拉高,结束。

在这里插入图片描述

那么看懂了写使能,写禁用其实也是一样的道理,拉低片选,输入指令,拉高片选。

在这里插入图片描述

7.2.3 读数据

/CS片选拉低,写控制指令,但是这里相对于上面的多了一个地址,因为我读数据要知道去哪里读数据,读哪里的数据,所以还需要把地址信息也放到控制字里面去。地址的位数按照总表里面有3字节,也就是24位,这个和我们的时序图8~31位(24位)刚好对应。写完控制字和地址字后,那么读到的数据会从DO口出,我们只需要用SPI对应的HAL函数即可获取到。
在这里插入图片描述

在这里插入图片描述

那么对于快速读模式呢?

在这里插入图片描述方便对照,我把下面的时序图和上面拼凑了一下。
流程还是差不多的,片选拉低,写控制字0Bh,地址字24位,写完后读数据。不过这里多了几个空闲时钟,所以我们在接受数据的时候需要延时几个时钟周期,这个时钟周期看你自己总线分频过来是多少。

在这里插入图片描述下面是对于双通道的情况,我们可以看到流程也是类似的,只不过输出从一个口变成两个口,那实际操作的时候只需要加个接受函数罢了。
在这里插入图片描述

7.2.4 更多指令

由于功能有很多,但是写法都是大差不差,具体的代码实现样本,可以参考我SPI读ID的博客


8. 电气特性

ELECTRICAL CHARACTERISTICS

下面这个表主要告诉我们芯片的供电电压区间,施加到任何引脚的电压,瞬时电压,存储温度等等。
前几个电压的参数要看一下,不然供电给大了就G了。
在这里插入图片描述这个是工作的参数区间。
VCC最小值给2.7V,最大3.6V
在标准模式,双通道模式/四通道模式的频率分别为104MHz,70MHz

在这里插入图片描述加电定时和写禁止阈值
这个表的意思就是我们拉低片选,写使能和禁止,读数据之类的操作,对应的电平最少应该是多少,或者说我们发的控制字对应的电压应该在什么区间。
在这里插入图片描述

下面就是直流电器特性,主要是电压电流在供电,片选,数据传输时的大小。主要在电路设计完毕后调试电路时检查用。

在这里插入图片描述还有交流相关的我就不贴了,还是详情参考手册。

我们写控制数据的时候要注意的一些参数,比如时钟下降不是断崖式下降,是梯形下降,这个梯形边的占用多长时间?这个就根据时序图和电气特性的结合来看了。这关系到我们是否要延时等情况。

看下面这幅时序图,/WP拉高,片选拉低,这个什么时候拉高都是有讲究的。我们可以看8.7的表发现,这里需要片选拉低前最小20ns,写保护才关闭。片选拉高后,100ns后写保护都是一直保持关闭的。
换句话说,我片选拉低前20ns,我写保护关闭的控制需要20ns生效,片选拉高后,我写保护关闭还会维持100ns。

其他的时序图对应的时间也是类似的看法,这个对编程的影响还是比较大的。有时候指令没生效就是因为我们给的延时等不够,导致指令根本没起作用。

在这里插入图片描述
在这里插入图片描述


9. 封装明细

PACKAGE SPECIFICATION
这里主要是写引脚间距,孔间距等信息,这个画图的时候还是非常重要的。
这里我只贴8pin的一种封装,后面的就不贴了,看法都差不多的。

在这里插入图片描述

10. 芯片名含义

这个也是一看就懂的,也不过多解释了。
在这里插入图片描述

总结

这篇博客的原因主要是在学习SPI的时候用到W25Q128芯片,一方面是为了加深印象另一方面是增强自己对芯片手册相关的阅读能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/95428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SRT服务器SLS

目前互联网上的视频直播有两种&#xff0c;一种是基于RTMP协议的直播&#xff0c;这种直播方式上行推流使用RTMP协议&#xff0c;下行播放使用RTMP&#xff0c;HTTPFLV或者HLS&#xff0c;直播延时一般大于3秒&#xff0c;广泛应用秀场、游戏、赛事和事件直播&#xff0c;满足了…

用go获取IPv4地址,WLAN的IPv4地址,本机公网IP地址详解

文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址 下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址&#xff0c;因为一台机器可能有多个网络接口&#xff0c;每个接口可能有一个或多个IP地址。 package mainimport ("fmt&…

GPX可视化工具 GPX航迹预览工具

背景 当我们收到别人分享的航迹文档&#xff0c;即gpx文档时&#xff0c;如何快速的进行浏览呢&#xff1f;我们可以使用GIS软件来打开gpx文档并显示gpx中所记录的航迹&#xff0c;例如常用的GIS软件有googleEarth&#xff0c; Basecamp&#xff0c; GPXsee&#xff0c; GPX E…

超详细DeepLabv3 介绍与使用指南 – 使用 PyTorch 推理

DeepLab 模型首次在 ICLR 14 中首次亮相,是一系列旨在解决语义分割问题的深度学习架构。经过多年的迭代改进,谷歌研究人员的同一个团队在 17 年底发布了广受欢迎的“DeepLabv3”。当时,DeepLabv3 在 Pascal VOC 2012 测试集上实现了最先进的 (SOTA) 性能,在著名的 Cityscap…

VC6 WIN32,Dialog为主窗口编程

VC6是Microsoft非常经典的开发环境&#xff0c;尤其是Windows API方式开发&#xff0c;自从Quick C for win以来基本保持着同样的风格和API&#xff0c;在它上面做习练很不错。下面是习练完成的界面&#xff0c;它是在自动创建的WIN32 application模板下&#xff0c;增加一个Di…

Linux shell编程学习笔记4:修改命令行提示符格式(内容和颜色)

一、命令行提示符格式内容因shell类型而异 Linux终端命令行提示符内容格式则因shell的类型而异&#xff0c;例如CoreLinux默认的shell是sh&#xff0c;其命令行提示符为黑底白字&#xff0c;内容为&#xff1a; tcbox:/$ 其中&#xff0c;tc为当前用户名&#xff0c;box为主机…

Postman使用实例

Postman使用实例 实体类Emp package com.example.springboot_postman.pojo;import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.*; import j…

基于SpringBoot的图书进销存管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 图书类型管理 商品退货管理 客户信息管理 图书添加 客户添加 应收金额 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实…

c语言练习78:执⾏操作后的变量值

字符串函数汇总 1. strlen &#xff1a;计算字符串的⻓度。 2. strcpy &#xff1a;将⼀个字符串复制到另⼀个字符串中。 3. strcat &#xff1a;将⼀个字符串连接到另⼀个字符串的末尾。 4. strcmp &#xff1a;⽐较两个字符串是否相等。 5. strncmp &#xff1a;⽐较两个…

JavaEE-网络编程套接字(UDP/TCP)

下面写一个简单的UDP客户端服务器流程 思路&#xff1a; 对于服务器端&#xff1a;读取请求&#xff0c;并解析–> 根据解析出的请求&#xff0c;做出响应(这里是一个回显&#xff0c;)–>把响应写回客户端 对于客户端&#xff1a;从控制台读取用户输入的内容–>从控制…

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA&#xff0c;File->New ->Project&#xff0c;填写Name&#xff08;工程名称&#xff09;和Location&#xff08;工程存储位置&#xff09;&#xff0c;选…

【OSCAR开源产业大会分论坛】开源大模型走向何方?

再过俩月&#xff0c;ChatGPT 即将迎来推出一周年纪念日。作为开历史先河的 AI 大模型&#xff0c;ChatGPT 像一针猛戳进千行百业中枢神经的兴奋剂&#xff0c;在全球掀起空前绝后的 AI 军备竞赛热潮。 近一年来&#xff0c;我们看到 GPT-3.5 完成向多模态的 GPT-4 进化&#x…

二项分布以及实现

文章目录 前言所谓二项分布就是只会产生两种结果的概率 1.概念 前言 所谓二项分布就是只会产生两种结果的概率 1.概念 下面是一个二项分布的的theano实现 import numpy as np import theano import theano.tensor as T from theano.tensor.nnet import conv from theano.ten…

基于JavaWeb技术的在线考试系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 考试统计管理 专业列表管理 忘记密码人员登记管理 修改密码 试卷信息 考试信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

Linux Vi编辑器基础操作指南

Linux Vi编辑器基础操作指南 Linux中的Vi是一个强大的文本编辑器&#xff0c;虽然它有一些陡峭的学习曲线&#xff0c;但一旦掌握了基本操作&#xff0c;它就变得非常高效。以下是Vi编辑器的一些基本用法&#xff1a; 打开Vi编辑器&#xff1a; vi 文件名退出Vi编辑器&#xff…

“牛市陷阱?还是回调?是好?还是坏!“

比特币六年来首次在9月实现正回报 比特币回调:发生了什么以及接下来会发生什么? 美元的主导地位&#xff1a;揭示美元涟漪效应 长期持有者持有的比特币供应比例正式达到历史新高 比特币六年来首次在9月实现正回报 随着 10 月份的到来&#xff0c;比特币6年来首次在9月份实…

STM32HAL库CRC学习及测试记录

STM32HAL库CRC学习及测试记录 1.CRC的校验原理2.基本原理3.几个基本概念13.1.1 CRC检验码的计算13.1.2 错误检测13.2 STM32中的CRC 4.CRC功能描述5.STM32Cube生成工程6.看官方说如何使用这个驱动程序7.实验现象 1.CRC的校验原理 循环冗余校验(CRC)计算单元是根据固定的生成多项…

Android学习之路(17) Android Adapter详解

Adapter基础讲解 本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的&#xff0c;了解并学会使用这个Adapter很重要&#xff0c; Adapter是用来帮助填充数据的中间桥梁&#xff0c;简单点说就是&#xff1a;将各种数据以合适的形式显示到view上,提供 给用户看…

腾讯内部最通俗易懂的项目管理PPT

大家好&#xff0c;我是老原。 这两年&#xff0c;大厂裁员的风是一点不减&#xff0c;也有不少人吐槽大厂又卷又累&#xff0c;但仍然有很多人都想进大厂。 有不少项目经理&#xff0c;几年下来混迹各类大厂&#xff0c;履历刷得是杠杠的。 光鲜的履历、过硬的薪资、优质的…

【软件测试】自动化测试selenium(二)

文章目录 三. 掌握Selenium常用的API使用1. webdriver API2. 操作测试对象3. 添加等待4. 打印信息5. 浏览器的操作6. 键盘事件7. 鼠标事件8. 定位一组元素9. 多层框架/窗口定位10. 下拉框处理11. 弹窗处理12. 上传文件13. 关闭浏览器14. 切换窗口15. 截图操作 三. 掌握Selenium…