文章目录
- W25N01G
- 1 描述
- 2 特点
- 3 封装
- 3.3.2 连接线
- 4 引脚
- /CS
- DO
- /WP
- /Hold
- SPI指令
- 标准SPI命令
- 双SPI
- 四元SPI命令
- 写保护
- 5 地址
- PA与PC
- 最后一个扇区
- OTP
- 寄存器1
- 块保护
- 清除块保护指令*
- WP-E
- 寄存器2
- 寄存器3
- BUSY
- P-FAIL
- E-FAIL
- ECC位
- 8 命令
- 8.1 装置ID
- 指令解读
- 写状态寄存器
- 注意内容
- 上拉
- BUF
- 写数据
- 读数据
- 写使能
- 极性
W25N01G
1 描述
2 特点
3 封装
NAND FLASH W25N01GVZEIG支持Standard/DUAL/QUAD SPI
区别就是在于注释的内容:
- IO0和IO2被用于标准和双SPI命令。
- IO0-IO3被用于四元SPI指令(四元代表从四个IO口获取数据)
- 写保护和保持函数只有在标准模式和双SPI模式才可用。
3.3.2 连接线
4 引脚
/CS
(Clip Select) :片选线
当CS被拉低,装置将会被选择,能量消耗将会增加到激活水平,命令可以被写或者数据可以被读。上电后,CS必须从高到低的转变,在一个命令被传来之前。CS输入必须在上下电的时候跟随VCC供能水平。如果需要,一个上拉电阻可以帮助完成这个
DO
(Serial Data Output(Data Input Output 1)) :串行数据输出线
/WP
(Write Protect Input (Data Input Output 2)) :写数据保护线
写保护引脚可以被用来保护状态寄存器。和状态寄存器的BP位、SRP位结合使用。一部分内存如256K到一整块的内存可以被硬件保护。WP-E位控制WP引脚的功能。
当WP-E为0时,装置软件保护,只有SR1被保护。WP引脚变作一个为四元SPI操作的数据引脚。
当WP-E为1时,装置硬件保护,WP变成一个激活的低输入引脚,作为整个装置的写保护。如果WP接地,装置变成一个只读引脚。
4、GND :地线
5、DI(Serial Data Input(Data Input Output 0)) :串行数据输入线
6、CLK(Serial Clock) :时钟线
/Hold
(Hold Input (Data Input Output 3)) :数据输入保持线
在标准和双SPI操作器件,hold引脚被选择时允许装置暂停。当hold被拉低,CS同时也拉低,DO引脚将会高阻态同时DI和CLK引脚上的信号将会被忽略。当hold是高,装置恢复。hold函数可以在多个装置被共享相同的SPI信号时使用。hold引脚低时激活。
8、VCC :电源输入
SPI指令
标准SPI命令
W25N01可以通过SPI兼容总线访问,由clk,cs,DI和DO组成。标准SPI命令使用:
- 使用DI输入引脚将指令、地址或数据串行地写入CLK上升沿上的设备。
- DO输出引脚用于从CLK下降沿上的设备读取数据或状态。
- 模式0和模式3的主要区别在于CLK的电平,当SPI总线主设备处于待机且数据没有被传输时,对于模式0,CLK信号通常在/CS的下降和上升边缘处是低电平状态的;对于模式3,CLK信号通常在/CS的下降和上升边缘处是高电平状态的。
双SPI
当使用3B命令和BBH命令时候,w25n01支持双spi操作。这些命令允许数据可以从装置在两到三个时间周期内传递。双SPI命令对于快速下载到RAM上等非常理想。
四元SPI命令
当使用命令如6BH、EBH、32H等命令时,w25n01支持四元SPI操作。这些命令允许数据从装置以4-6个周期传输。四元读命令。。。
写保护
需要注意的是:片选引脚必须跟随VCC供电水平,从上电直到最小电压的VCC供电水平和Tvsl延时时间到达。并且该引脚必须跟随VCC供电水平在下电时阻止指令序列颠倒。如果需要上拉电阻可以帮助完成这玩意。
上电之后装置自动处于写失能状态,WEL位0。一个写使能命令必须在一个页程序、扇区擦除、块擦除命令执行被接收之前发出。在执行完一个程序、擦朱或者写命令之后,WEL位会被自动清除到0。
软件控制写保护是容易的,通过使用写状态寄存器命令并且设置状态寄存器的SRP0、SRP1和块波阿虎TB、BP3-0位。这样可以设置一个部分或者完全的内存序列被配置为只读。与WP引脚结合,在软件控制下改变状态寄存器就可以使能或者失能。看写保护寄存器了解更多信息。
写访问状态寄存器由非只读的状态寄存器保护位SRP0,SRP1、写使能命令、和当WP-E为1的时候的WP引脚控制。
5 地址
W25N01G的寻址方式是页地址+列地址(Page Add + Column Add)。
- 列地址大小为2112( 2 11 + 2 6 2^{11}+2^6 211+26)Byte,由2048Byte的数据缓冲区和64Byte的备用区域(Spare Area)组成。(没有完全用完地址)
- 页地址大小1024 x 64 x 2KB,即该flash共有1024个块(Block),每个块包含64页(Page),每页大小为2KB。(对应flash的大小,1024x64x2/1024=128M)
- 由于NAND Flash在设定上存在坏块,所以就有Spare Area,它被用于标记坏块(bad block)和保存对MainArray中main区的ECC码(Error Checking and Correcting,纠错码)。
PA与PC
- PA是页地址请求16位,PA[15:6]是一个128K的块的地址(共有1024个)。PA[0-5]是一个2K的页的地址(共有64个)。
最后一个扇区
1024*(4096)*N每个扇区大小4K,但实际可用的只有2K。
1024代表快,N代表第几个页。
OTP
OTP锁定的值。
One Time Program (OTP) write protection
寄存器1
块保护
S7-S2为块保护位,主要提供写保护控制和状态。块保护位上电后的默认值是1,以保护整个flash。如果配置寄存器(SR-2)中的SR1-L位被设置为1,那么其默认值将是OTP锁定的值。
清除块保护指令*
Protection Register / Status Register-1 (Volatile Writable, OTP lockable) 此寄存器上电后的默认值是 0b01111100,也就是说 Flash 处于写保护状态。我们需要用 Write Status Register (1Fh/01h) 这条指令清除写保护。 否则擦写指令不起作用。
{
}
WP-E
当WP-E = 0(默认值)时,设备处于软件保护模式,当WP-E = 1时,设备处于硬件保护模式。
写保护位用来使能硬件保护。当该位1时,WP引脚被拉低,堵塞任何写、执行和擦除命令。装置变成只读的。四元SPI操作也不能在WP-E为1的时候操作。
寄存器2
状态寄存器2可以改变BUF和ECC-E的状态。
寄存器3
地址:0xC0即可。
BUSY
擦写、执行程序忙。
P-FAIL
程序执行失败
E-FAIL
擦写失败
ECC位
累计的ECC状态
ECC函数用在NAND闪存中纠正在读操作器件有限内存的错误。
ECC状态位应该在完成读操作后检查一下证明数据的完整性。
ECC状态位不关心0.
这些位将会在重新上电或者执行复位命令后清零。
解读上图。ECC1和0都是1的情况只在BUF=0的时候应用。
0 0 整个数据输出成功,没有任何ECC纠正
0 1 整个数据输出成功,有1-4位的ECC纠正
1 0 仅一个单页里不能被ECC修复,整个数据输出包含超过4位的错误。
1 1 在多个页中整个数据输出包含超过4位错误。在连续读模式,额外的命令只能提供最后失败的PA地址,用户不能获得其它失败页的PA地址。数据不适合使用。
8 命令
8.1 装置ID
指令解读
写状态寄存器
写状态寄存器指令让我们可以写状态寄存器。可以写的状态位包括…,所有其它位是只读的,不受该命令影响。
未来写状态寄存器位,命令通过拉低CS进入。发送命令1F,呆着寄存器地址,然后写状态寄存器即可。
参照7.1.3的描述,上拉之后,默认BP,TB,ECC-E位都是1,其它位是0.
写状态寄存器命令。
impedance/阻抗/
注意内容
上拉
1、SPI 的信号线最好加 1k 上拉电阻, 实测发现 W25N01GV 这颗芯片的驱动能力比较弱。在调试的时候这可能发生误导,因为 BUSY = 0 时表明命令执行完毕,实际上是读回来的虚假低电平。(待验证)。
BUF
3、要注意两个型号的区别
W25N01GVxxIG, 默认 BUF = 1, 处于 Buffer Read Mode。
W25N01GVxxIT, 默认 BUF = 0,处于 Continous Read Mode。
两种模式可以用过命令切换。
写数据
4、写入数据分两步:1. 先把数据传入芯片内部的 2048 字节 RAM 缓冲区。比如通过 Quad Program Data Load (32h) 指令装载数据。 2 执行 Program Execute (10h)。如果只执行第一步,不执行第二步,数据还可以从缓冲区读出来,但是掉电后数据就没有了。
读数据
5.读数据也分为两步,第一步先将指定页数据读取到缓冲区(0x13H ),第二步将数据从缓冲区读出来(0x03H)。
写使能
6、在执行 Block Erase,Program Execute等命令前要先执行Write Enable(06h)指令,否则指令不起作用。
极性
7、 非常重要的一点是:SPI的 频率1M合适 ,SPI的的极性一定要为高。也就是空闲时要为高电平。(吃亏了,血泪教训)