07_nand之写操作指令

92 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Page Program(80h-10h)

       页编程,将一页数据传输到页缓冲区,然后进行编程。

80h+6addr+数据n+10h。80h功能就是告诉flash要执行编程操作并清除页面缓冲寄存器以加载数据。在发出10h命令后,开始编程,期间可以发送读状态/重置命令,其他命令无效。编程完成后,可以读取状态判断SR[0]位是否写入成功。

图片.png

One-Pass Program

同时编程lower/middle/upper pages。可以这么解析,把lower/middle/upper pages数据填充到缓冲中,以10h结尾进行同一编程。

步骤:

①    lower page:80h+6addr(L)+data(L)+1Ah

②    middle page:80h+6addr(M)+data(M)+1Ah

③    upper page:80h+6addr(U)+data(U)+10h

Cache Program(80h-15h)

缓存编程,80h+6bytes+datas+15h,15h命令加载到命令寄存器后,数据从缓存页缓冲区传输到数据缓冲区进行单元编程。此时可以进行同样的命令将下一个页数据加载到缓存页缓冲区。期间可以通过70h查询状态(失败或者成功)。若系统仅使用R/B_n监控操作进度,那么最后一个页的编程必须使用10h(就是15h换成10h)。

图片.png

Change Write Column(85h)

       列地址更改命令,改变最近一次选中LUN的cache寄存器的输入。

命令发送:85h+2address(col)+data(主控必须等待tccs时间后开始输入数据)+LUN一直处于数据输入直到接收到另一条有效的命令(10h,11h,15h)。命令有头有尾接收完整。

图片.png

Change Row Address(85h)

       该命令改变要编程到flash的数据的页地址和块地址。它也同时改变了column地址。在LUN就绪时可以接收此命令。(必须在同一个plane内:与先前的LUN/plane相同)

命令发送:85h+2col addr+3row addr+同上(Change Write Column)

图片.png

TLC Program Suspend(87h)

       87h+6addr,用于中断指定LUN的程序操作。若设备已经挂起或者不忙,则忽略该命令。该设备支持TLC编程挂起,但不支持SLC编程挂起。

图片.png

Program Resume(17h)

       恢复指定LUN的挂起操作(与87h对应)。17h+6addr。

图片.png