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引脚控制。
状态寄存器较多,这里列一个表进行阐述。
寄存器标识 | 寄存器全称 | 寄存器说明 |
---|---|---|
BUSY | BUSY Status | BUSY是状态寄存器(S0)中的只读位,当设备执行页面程序、四页程序、扇区擦除、块擦除、芯片擦除、写入状态寄存器或擦除/编程安全寄存器指令时,该位被设置为1状态。在此期间,设备将忽略除读取状态寄存器和擦除/编程挂起指令之外的其他指令(参见AC特性中的tW、tPP、tSE、tBE和tCE)。当程序、擦除或写入状态/安全寄存器指令完成时,BUSY位将被清除为0状态,表示设备已准备好接受进一步的指令。 |
WEL | Write Enable Latch Status | 写使能锁存器(WEL)是状态寄存器(S1)中的只读位,在执行写使能指令后设置为1。当设备被写禁用时,WEL状态位被清除为0。通电后或执行以下任何指令后会出现写禁用状态:写禁用、页面程序、四页程序、扇区擦除、块擦除、芯片擦除、写状态寄存器、擦除安全寄存器和程序安全寄存器。 |
BP2,BP1,BP0 | Block Protect Bits | 块保护位(BP2、BP1、BP0)是状态寄存器(S4、S3和S2)中提供写保护控制和状态的非易失性读/写位。可以使用写入状态寄存器指令设置块保护位(请参阅交流特性中的tW)。内存阵列的全部、全部或一部分都可以受到编程和擦除指令的保护(请参阅状态寄存器内存保护表)。块保护位的出厂默认设置为0,没有任何阵列受到保护。 |
TB | Top/Bottom Block Protect Bit | 非易失性顶部/底部位(TB)控制块保护位(BP2、BP1、BP0)是从阵列的顶部(TB=0)还是底部(TB=1)进行保护,如状态寄存器内存保护表中所示。出厂默认设置为TB=0。根据SRP0、SRP1和WEL位的状态,可以使用写入状态寄存器指令设置TB位。 |
SEC | Sector/Block Protect Bit | 非易失性扇区/块保护位(SEC)控制块保护位是(BP2、BP1、BP0)保护阵列顶部(TB=0)还是底部(TB=1)中的4KB扇区(SEC=1)或64KB块(SEC=0),如状态寄存器内存保护表中所示。默认设置为SEC=0。 |
CMP | Complement 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, SRP0 | Status Register Protect Bits | 状态寄存器保护位(SRP1和SRP0)是状态寄存器中的非易失性读/写位(S8和S7)。SRP位控制写保护的方法:软件保护、硬件保护、电源锁定或一次性可编程(OTP)保护。 |
SUS | Erase/Program Suspend Status | 挂起状态位是状态寄存器(S15)中的只读位,其在执行擦除/编程挂起(75h)指令之后被设置为1。SUS状态位通过擦除/编程恢复(7Ah)指令以及断电、上电周期清除为0。 |
LB3, LB2, LB1 | Security Register Lock Bits | 安全寄存器锁定位(LB3、LB2、LB1)是状态寄存器(S13、S12、S11)中的非易失性一次性编程(OTP)位,其向安全寄存器提供写保护控制和状态。LB[3:1]的默认状态为0,安全寄存器处于解锁状态。LB[3:1]可以使用写入状态寄存器指令单独设置为1。LB[3:1]是一次性可编程(OTP),一旦设置为1,相应的256字节安全寄存器将永久变为只读。 |
QE | Quad Enable Bit | Quad 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芯片,一方面是为了加深印象另一方面是增强自己对芯片手册相关的阅读能力。
相关文章:
W25Q128芯片手册精读
文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…...
QT商业播放器
QT商业播放器 总体架构图 架构优点:解耦,采用生产者消费者设计模式,各个线程各司其职,通过消息队列高效协作 这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器, 项目有5部分构成: 前端QT用户界面 后端是集成了…...
Python的函数
近期遇到了一个没怎么看懂的Python函数的形式。 def twoSum(self, nums: List[int], target: int) -> List[int]: 后来上网查了资料。...
【物联网】STM32的中断机制不清楚?看这篇文章就足够了
在嵌入式系统中,中断是一种重要的机制,用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器,可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…...
深入剖析红黑树:优雅地平衡二叉搜索树
目录 一.红黑树的概念二.插入操作三.与AVL树的比较 一.红黑树的概念 在之前的学习中,我们了解了二叉搜索平衡树,AVL树通过控制每个结点中的平衡因子的绝对值不超过1,实现了一个高性能的树。而相较于AVL的高度平衡,红黑树觉得AVL为…...
C10K问题:高并发模型设计
一、循环服务器模型 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> //*******// #include &l…...
哈希/散列--哈希表[思想到结构][==修订版==]
文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题3.字符串问题4.开散列性能测试5.开散列与闭散列比较 3.代码实现[配备详细…...
成都建筑模板批发市场在哪?
成都作为中国西南地区的重要城市,建筑业蓬勃发展,建筑模板作为建筑施工的重要材料之一,在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场,广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…...
亨元模式 结构型模式之六
1.定义 享元模式是一种结构型设计模式, 它允许你在消耗少量内存的情况下支持大量对象。 2.滑滑梯问题 在说明亨元模式之前,我们先看看关于滑滑梯的程序设计。小区的楼下只有三个滑滑梯,但是想玩的小朋友却非常多。怎么设计计滑滑梯资源的管理…...
面试题: Spring中Bean的实例化和Bean的初始化有什么区别?
Spring中Bean的实例化和Bean的初始化有什么区别? 背景答案扩展知识什么是实例化什么是初始化 个人评价我的回答 背景 想换工作, 看了图灵周瑜老师的视频想记录一下, 算是学习结果的一个输出. 答案 Spring 在创建一个Bean对象时, 会先创建出一个Java对象, 会通过反射来执行…...
阻塞队列,生产者消费者模型
目标: 1. 认识与使用阻塞队列 2. 认识与实现消费者模型 目录 阻塞队列的特点 生产者消费者模型 生产者消费者模型的优点 阻塞队列实现该模型 阻塞队列的特点 1. 线程安全 2. 带有阻塞特性 (1)如果队列为空,继续出队列&a…...
【RCRL充放电时间相关计算】
一. 基础知识 L、C元件称为“惯性元件”,即电感中的电流、电容器两端的电压,都有一定的“电惯性”,不能突然变化。充放电时间,不光与L、C的容量有关,还与充/放电电路中的电阻R有关。RC电路的时间常数:τRC…...
C++ primer plus--输入、输出和文件
17 输入、输出和文件 17.1 C 输入和输出概述 C 把输入和输出看做字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插到输出流中。 缓冲区是内存中的临时存储区域,是程序与文件或其他 I/O 设备之间的桥梁。 17.2 使用…...
案例题--Web应用考点
案例题--Web应用考点 负载均衡技术微服务XML和JSON无状态和有状态真题 在选择题中没有考察过web的相关知识,主要就是在案例分析题中考察 负载均衡技术 应用层负载均衡技术 传输层负载均衡技术 就近的找到距离最近的服务器,并进行分发 使用户就近获取…...
MySQL的SQL 优化:提升数据库性能
1. 插入操作优化 1.1 使用多值插入 通常情况下,插入大量数据时,使用多值插入语句比逐行插入更高效。例如,将多个数据行打包成一个 INSERT 语句: INSERT INTO users (name, email) VALUES (Alice, aliceexample.com), (Bob, bob…...
【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第十篇
一、click one for uniapp置顶: 全部免费开源 (你商业用途也没关系,不过可以告诉我公司名或者项目名,放在官网上好看点。哈哈-_-) 二、写在之前 距离上一篇更新已经大约4个月了,公司的事情,自己的一些琐事一直没时间…...
BIT-5-操作符详解(C语言初阶学习)
1. 各种操作符的介绍。 2. 表达式求值 1. 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 除了 % 操作符…...
【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)
目录 前言 三、分支程序设计 3.1 判断成绩是否及格——双分支程序设计 3.2 成绩加上获奖信息—单分支程序设计 3.3 逻辑判断——布尔类型 3.4 获奖分等级——多分支程序设计 3.5 表示汽车种类——枚举类型 3.6 例题 3.6.1 例题——判断某个年份是否闰年 3.6.2 例题—…...
Shiro应用到Web Application
一、权限基础 a) 认证(你是谁?) 判断你(被认证者)是谁的过程。通常被认证者提供用户名和密码。 常见的认证包含如下几种: 匿名认证:允许访问资源,不做任何类型的安全检查。表单认证:访问资源之前,需要提…...
【POST请求-腾讯翻译君-爬虫案例】
原因:尝试多个在线翻译平台,由于返回数据存在加密原因(暂时不会解密),最总找到 ”腾讯翻译君“ 完成爬虫案例POST请求测试 案例测试网址 腾讯翻译 :https://fanyi.qq.com/ import requests import jsoncla…...
多卡片效果悬停效果
效果展示 页面结构 从页面的结构上看,在默认状态下毛玻璃卡片是有层次感的效果叠加在一起,并且鼠标悬停在卡片区域后,卡片整齐排列。 CSS3 知识点 transform 属性的 rotate 值运用content 属性的 attr 值运用 实现页面整体布局 <div …...
首饰饰品经营商城小程序的作用是什么
首饰如耳钉、戒指、手镯等除了高价值产品外,还有很多低价产品,市场需求客户众多,在实际经营中,商家们也会面临一些痛点。 私域话题越来越多加之线上线下同行竞争、流量匮乏等,更对商家选择自建商城经营平台。 通过【…...
华为OD机试真题【服务器能耗统计】
1、题目描述 【服务器能耗统计】 服务器有三种运行状态:空载、单任务、多任务,每个时间片的能耗的分别为1、3、4; 每个任务由起始时间片和结束时间片定义运行时间; 如果一个时间片只有一个任务需要执行,则服务器处于单任务状志; 如果一个时间片有多个任务需要执行,则服务器处于…...
ubuntu按下del却出现空格(命令行下键盘错乱)
问题: 有一天远程我的ubuntu 20.04,发现为何按 del 会产生空格后移的效果,up键也会重叠显示,首先感觉是这个远程软件有问题,于是又换了xshell,发现还是不行,只能打开积灰已久的笔记本࿰…...
Go开始:Go基本元素介绍
目录 标识符与关键字Go中的标识符Go关键字关键字示例 具名的函数常规函数代码示例 方法代码示例 高阶函数代码示例 匿名函数与Lambda表达式代码示例 闭包代码示例 具名的值变量基本数据类型复合数据类型指针类型 常量基本常量类型枚举常量常量表达式 定义类型和类型别名类型定义…...
十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418)
十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418) 12.1、漏洞原理 Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少…...
【计算机视觉|人脸建模】学习从4D扫描中获取的面部形状和表情的模型
本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Learning a model of facial shape and expression from 4D scans 链接:Learning a model of facial shape and expression from 4D scans | ACM Transactions on Graphics Pe…...
【ADB】蓝牙总结
ADB 打开蓝牙关闭蓝牙打开Setting查看蓝牙地址查看蓝牙名称查看蓝牙是否开启车机蓝牙Setting配置路径wifi 打开蓝牙 adb root adb shell svc bluetooth enable 关闭蓝牙 adb root adb shell bluetooth disable 打开Setting adb shell am start -n com.android.settings/.S…...
嵌入式系统设计与应用---ARM处理器体系结构(学习笔记)
ARM处理器概述 Cortex-A8处理器工作模式 ps:除用户模式以外的其他模式被称为非用户模式或特权模式;除用户模式及系统模式以外的其他模式可称为异常模式 Cortex-A8存储器管理 ARM的基本数据类型 字节(Byte)&#…...
计算机竞赛 身份证识别系统 - 图像识别 深度学习
文章目录 0 前言1 实现方法1.1 原理1.1.1 字符定位1.1.2 字符识别1.1.3 深度学习算法介绍1.1.4 模型选择 2 算法流程3 部分关键代码 4 效果展示5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 图像识别 深度学习 身份证识别…...
苏州建设建设信息网站/百度广告位
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/BuildSucApp/BSAAsecmod12.mspxSQL 脚本注入式攻击的剖析 当您在应用程序中接受未筛选的用户输入值(见上文)时,恶意用户可以使用转义符来添加他们…...
苏州高端网站建设设计公司/seo技术培训
直接上代码 重点看第二行 $result Books::orderBy(book_id,desc) ->paginate($page,10); //用到了php7.1里面的解构 $result返回的值里面有count以及list 其实就是将result[count] 赋值给了 $total result[list] 赋值给了$data ["count">$total,"lis…...
江苏省建设厅网站证件查询/今日油价92汽油价格表
一、题目 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…...
推广网站怎么做模板/公司网站建设北京
简单介绍下Java 序列化: Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列(字节流),该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。 将序列化对…...
eclipce做网站/某个网站seo分析实例
1.tr命令 tr可以对来自标准输入的字符进行替换、压缩和删除,可以将一组字符变成另外一组字符。通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体。 tr -c -d -s ["string…...
长期供应网站设计制作/比较好的软文发布平台
是因为ADC_ChannelConfig这个函数问题 其中 ADCx->CHSELR | (uint32_t)ADC_Channel 对寄存器赋值使用了“|”,这会造成下一次循环转换时仍然转换最高位通道解决办法是,在每次调用 ADC_ChannelConfig 之后,再对寄存器写入 if(index X) { A…...