文章目录
- 前言
- [1. 概述](#1. 概述)
- [2. 特性](#2. 特性)
- [3. 封装类型和引脚配置](#3. 封装类型和引脚配置)
-
- [3.1 8焊盘WSON 8x6 mm](#3.1 8焊盘WSON 8x6 mm)
- 3.2其他封装
- [4. 引脚描述](#4. 引脚描述)
-
- [4.1 片选](#4.1 片选)
- [4.2 串行数据输入输出](#4.2 串行数据输入输出)
- [4.3 写保护](#4.3 写保护)
- [4.4 保持脚](#4.4 保持脚)
- [4.5 时钟](#4.5 时钟)
- [5. 块图](#5. 块图)
- [6. 功能描述](#6. 功能描述)
-
- [6.1 SPI功能](#6.1 SPI功能)
-
- [6.1.1 标准SPI](#6.1.1 标准SPI)
- [6.1.2 双通道SPI](#6.1.2 双通道SPI)
- [6.1.3 四通道SPI](#6.1.3 四通道SPI)
- [6.1.4 保持功能](#6.1.4 保持功能)
- [6.2 写保护](#6.2 写保护)
-
- [6.2.1 写保护特性](#6.2.1 写保护特性)
- [7. 状态寄存器和指令](#7. 状态寄存器和指令)
-
- [7.1 状态寄存器](#7.1 状态寄存器)
- [7.2 指令](#7.2 指令)
-
- [7.2.1 指令总表](#7.2.1 指令总表)
- [7.2.2 写使能与写禁用](#7.2.2 写使能与写禁用)
- [7.2.3 读数据](#7.2.3 读数据)
- [7.2.4 更多指令](#7.2.4 更多指令)
- [8. 电气特性](#8. 电气特性)
- [9. 封装明细](#9. 封装明细)
- [10. 芯片名含义](#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芯片,一方面是为了加深印象另一方面是增强自己对芯片手册相关的阅读能力。