Nor Flash存储器深度分析第二篇
本文针对IS25WP128芯片,分析其寄存器,通过对寄存器的理解,可以让我们更加充分的认识这款芯片,后续工作中遇到别的型号的Nor Flash也能举一反三进行分析。
1.寄存器
IS25WP128有四组寄存器:状态寄存器、功能寄存器、读取寄存器和自动启动寄存器。
状态寄存器
WIP位(Write In Progress,正在写入):这是一个只读位,用于检测编程、擦除或写入/设置非易失性/一次性可编程(OTP)寄存器操作的进度或完成情况。当设备正在执行这些操作时,WIP被设置为“1”(忙碌状态)。在此期间,设备将忽略除读取状态/功能/扩展读取寄存器以及软件/硬件复位指令之外的所有指令。此外,在编程或擦除操作过程中,还可以执行擦除/编程暂停指令。当操作完成时,无论操作是否成功,WIP都会被清除为“0”。
WEL位(Write Enable Latch,写入使能锁存器):这个位表示内部写入使能锁存器的状态。当WEL为“0”时,内部写入使能锁存器被禁用,如下写入操作被禁止。当WEL为“1”时,允许执行写入操作。WEL位通过写入使能指令来设置。每个写入非易失性寄存器、编程和擦除指令之前都必须先执行WREN指令。与易失性寄存器相关的命令(如设置易失性读取寄存器和设置易失性扩展读取寄存器)不需要将WEL设置为“1”。WEL可以通过写入禁用(WRDI)指令来重置,或者在任何写入操作完成后自动重置。
BP3, BP2, BP1, BP0 位(块保护位):BP3, BP2, BP1, BP0用于定义需要保护的内存区域的部分,编程或擦除操作都将被禁止,根据功能寄存器TBS位的设置,配置BP3, BP2, BP1, BP0的值,可以选择保护的块的起始位置和数量。
SRWD 位(状态寄存器写禁用位):此位与写保护(WP#)信号协同工作,以提供硬件保护模式。当 SRWD 被设置为“0”时,状态寄存器不受写保护。当 SRWD 被设置为“1”且 WP# 被拉低时,状态寄存器中的位(SRWD、QE、BP3、BP2、BP1、BP0)变为只读,且 WRSR 指令将被忽略。如果 SRWD 被设置为“1”且 WP# 被拉高,则状态寄存器可以通过 WRSR 指令进行更改。
QE 位(四线操作使能位):此位是状态寄存器中的一个非易失性位,它允许进行四线操作。当 QE 位被设置为“0”时,WP# 和 HOLD#/RESET# 引脚被启用。当 QE 位被设置为“1”时,IO2 和 IO3 引脚被启用,可进行4线SPI传输。
功能寄存器
专用 RESET# 禁用位:此位的默认状态取决于部件编号。具有专用 RESET# 引脚的设备可以被编程为“1”,以禁用专用 RESET# 功能,并将 RESET# 功能移至 RESET#/Hold# 引脚。
TBS 位:用于设置保护块的起始索引从顶部还是底部开始,参考状态寄存器BP0-3的设置。 TBS 位是一次性可编程(OTP)的,只能修改一次。
PSUS 位(编程挂起状态位):指示编程操作何时被挂起。在编程操作期间发出挂起命令后,PSUS 位将变为“1”。一旦挂起的编程操作恢复,PSUS 位将被重置为“0”。
ESUS 位(擦除挂起状态位):指示擦除操作何时被挂起。在擦除操作期间发出挂起命令后,ESUS 位将为“1”。一旦挂起的擦除操作恢复,ESUS 位将被重置为“0”。
IR Lock 位 0 ~ 3(信息行锁定位):用于锁定信息行的内容,以防止被更改。IR Lock 位是一次性可编程的。
读寄存器
读取寄存器和扩展读取寄存器各自由一对寄存器组成:一个非易失性寄存器和一个易失性寄存器,在系统上电序列中,易失性寄存器将被加载非易失性寄存器的值。
Dummy Cycle:在SPI或QPI通信中,Dummy Cycle是指在数据传输过程中,不发送有效数据或命令,但时钟信号仍然继续的周期,周期通常用于内部操作,如准备数据或切换状态,通过P6, P5, P4, P3这些位,可以配置在读取操作中使用的Dummy Cycle的数量。
Burst Length:设置在一次数据传输中连续发送或接收的数据量。
Wrap:Wrap Around则是一种特殊的模式,允许数据在达到边界后自动环绕回到起点继续传输。
HOLD#/RESET#:0选择HOLD#引脚功能,1选择RESET#功能
SRPNV(65h)与SRPV(63h/C0h)指令:SRPNV(Set Read Parameters Non-Volatile)用于设置非易失性寄存器,SRPV(Set Read Parameters Volatile)用于设置易失性寄存器。
扩展读寄存器
OSD0-2:提供了一种设置和控制驱动器强度的方法,这些位允许用户根据应用需求调整输出驱动器的性能,以确保信号在传输过程中的稳定性和可靠性。
启动寄存器
AB0:是否启用自动启动
AB[4:1]:设置初始延迟周期的具体数值,CE#信号变低开始,到存储设备开始传输启动代码的第一个位之间所经过的时钟周期数。
如果QE=0(FRD的SPI模式),则初始延迟周期数为8。
如果QE=1(FRQIO的QPI模式),则初始延迟周期数为6。
AB[23:5]:启动代码访问起始地址的32字节边界,启动代码(boot code)的起始地址需要是32字节的整数倍。
2.总结
本文讲解了IS25WP128的全部寄存器位,对于初步了解芯片能提供的功能打下基础,对于其他类型的NOR Flash,例如兆易创新的GD25LR128,基本也都是大同小异。
嵌入式开发的实操,已在github公开,需要学习研究的自取。
https://github.com/sydyg/Vehicle_Soft_Class.git