Serial Nor Flash

本文以旺宏 MX25L6433F 芯片为例加以说明,该芯片为64Mb serial Nor flash。理解本文时可能需要对照其datasheet,

一、名词解释

Serial: 相对parallel而言,只有#CE、SCLK、DI、DO、#WP、#HOLD等信号线。

Nor: Not or,或非,与Nand相对的flash的架构,基本结构如下图所示。


二、器件操作

在SCLK上升沿采数据SI,在SCLK下降沿推数据SO。

mode 0:idle时SCLK低电平。mode 3:idle时SCLK高电平。

备注:SPI有4中mode,0~3。 

三、地址映射

另外,1 page = 256 Byte

四、操作命令

1、Read Operation(读)

A、Read Data Bytes (READ)(03h)

操作步骤: #CS拉低,SI上在SCLK的上升沿送进24 bit的任意地址后,SO在CLK的下降沿推出以Byte为单位的data,地址自动增加,只要#CS一直为低,地址直到结束后仍会回到地址0继续推出data。


B、Read at Higher Speed (FAST_READ) Sequence (Command 0Bh)

与Read Data Bytes(03h)的区别在于,在24 bit address之后需要1 byte的dummy cycle,03h的最高速率是fR=50MHz,0Bh的最高速率是fC=133MHz。

C、Dual Read Mode (Command 3Bh)和Quad Read Mode (Command 6Bh)

与FAST_READ(0Bh)的区别在于,3Bh的data从SIO1和SIO0同时推出来,而6Bh的data从SIO0~3同时推出来。下图为DREAD时序图。


D、2 x I/O Read Mode (Command BBh)和4 x I/O Read Mode(Command EBh)

与Dual Read Mode (3Bh)和Quad Read Mode (6Bh)的区别在于,BBh和EBh的24 bit address从SIO0~1或SIO0~3同时送进。另外,EBh支持Performance Enhance Mode。下图为2 x I/O Read时序图。


E、Burst Read

在burst read之前需要设置burst长度,Set Burst Length(C0h或77h)来设置burst长度wrap depth,wrap around指的是到了结束地址后会从开始的地址重新开始。一旦设置了burst长度,今后的read命令都将遵守burst read mode,取消burst read只要重新下Set Burst Length,将data写入1xh即可。


Set Burst Length(C0h或77h)时序图如下:


2、Program Operation(写)

写操作需要WRITE ENABLE (06h)命令将WEL bit置起来,然后PAGE PROGRAM (02h) 将data经过SI信号线写入。由于写的速度是比较慢的,所以在一次写入之后,必须等待,通过WIP bit可以查看写入完成与否。

A、Page Program (PP) (Command 02h)

针对同一个page(256 byte)操作,

情况1: 超出256 byte写入的话,只取最后的256 byte data写入,前面的丢弃。

情况2:24 bit address的[7:0]是page地址,当[7:0]都为0的话,可以写入整个page的data,即256 byte的data;当[7:0]不为0的话,超过该page的data将会回到该page的起始地址写入。

情况3:可以写入小于page边界的data,data最少为1 byte,那就是byte写入了。


B、4 x I/O Page Program (4PP)  (Command 38h)

与Page Program的区别在于,38h的地址和数据通过SIO0~3送入和推出,与4 x I/O Read Mode(Command EBh)相对应。

3、Erase(擦)

在Erase之前必须WREN,SE、BE、BE32K和CE全部需要WREN。

A、Sector Erase (20h)、Block Erase (D8h)和Block Erase 32KB (52h)

sector、Block 64KB和Block 32KB参见地址映射。


B、Chip Erase (CE) (Command 60h or C7h)

总结:

1、Nor flash的read和write(program)的操作都要比Nand flash的操作要简单,对Nor flash的读写操作可以做到byte级别。 2、Nor flash本身还有很多其他操作,本文没有涉及到,需要查看其datasheet。