操作NAND flash W25N01G

文章目录

  • 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 描述

操作NAND flash W25N01G_第1张图片

2 特点

操作NAND flash W25N01G_第2张图片

3 封装

NAND FLASH W25N01GVZEIG支持Standard/DUAL/QUAD SPI
操作NAND flash W25N01G_第3张图片

操作NAND flash W25N01G_第4张图片
区别就是在于注释的内容:

  • IO0和IO2被用于标准和双SPI命令。
  • IO0-IO3被用于四元SPI指令(四元代表从四个IO口获取数据)
  • 写保护和保持函数只有在标准模式和双SPI模式才可用。

3.3.2 连接线

操作NAND flash W25N01G_第5张图片

4 引脚

/CS

(Clip Select) :片选线
操作NAND flash W25N01G_第6张图片当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引脚的功能。
操作NAND flash W25N01G_第7张图片
当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)) :数据输入保持线
操作NAND flash W25N01G_第8张图片
在标准和双SPI操作器件,hold引脚被选择时允许装置暂停。当hold被拉低,CS同时也拉低,DO引脚将会高阻态同时DI和CLK引脚上的信号将会被忽略。当hold是高,装置恢复。hold函数可以在多个装置被共享相同的SPI信号时使用。hold引脚低时激活。
8、VCC :电源输入

SPI指令

标准SPI命令

操作NAND flash W25N01G_第9张图片
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命令

操作NAND flash W25N01G_第10张图片
当使用命令如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 地址

操作NAND flash W25N01G_第11张图片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

操作NAND flash W25N01G_第12张图片

  • 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

操作NAND flash W25N01G_第13张图片

块保护

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

操作NAND flash W25N01G_第14张图片
地址:0xC0即可。

BUSY

擦写、执行程序忙。

P-FAIL

程序执行失败

E-FAIL

擦写失败

ECC位

累计的ECC状态
在这里插入图片描述
ECC函数用在NAND闪存中纠正在读操作器件有限内存的错误。
ECC状态位应该在完成读操作后检查一下证明数据的完整性。
ECC状态位不关心0.
这些位将会在重新上电或者执行复位命令后清零。
操作NAND flash W25N01G_第15张图片
解读上图。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

操作NAND flash W25N01G_第16张图片

指令解读

写状态寄存器

在这里插入图片描述
写状态寄存器指令让我们可以写状态寄存器。可以写的状态位包括…,所有其它位是只读的,不受该命令影响。

在这里插入图片描述
未来写状态寄存器位,命令通过拉低CS进入。发送命令1F,呆着寄存器地址,然后写状态寄存器即可。
在这里插入图片描述
参照7.1.3的描述,上拉之后,默认BP,TB,ECC-E位都是1,其它位是0.
操作NAND flash W25N01G_第17张图片
写状态寄存器命令。
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的的极性一定要为高。也就是空闲时要为高电平。(吃亏了,血泪教训)

你可能感兴趣的:(嵌入式开发,嵌入式硬件)