本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Page Program(80h-10h)
页编程,将一页数据传输到页缓冲区,然后进行编程。
80h+6addr+数据n+10h。80h功能就是告诉flash要执行编程操作并清除页面缓冲寄存器以加载数据。在发出10h命令后,开始编程,期间可以发送读状态/重置命令,其他命令无效。编程完成后,可以读取状态判断SR[0]位是否写入成功。
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)。
Change Write Column(85h)
列地址更改命令,改变最近一次选中LUN的cache寄存器的输入。
命令发送:85h+2address(col)+data(主控必须等待tccs时间后开始输入数据)+LUN一直处于数据输入直到接收到另一条有效的命令(10h,11h,15h)。命令有头有尾接收完整。
Change Row Address(85h)
该命令改变要编程到flash的数据的页地址和块地址。它也同时改变了column地址。在LUN就绪时可以接收此命令。(必须在同一个plane内:与先前的LUN/plane相同)
命令发送:85h+2col addr+3row addr+同上(Change Write Column)
TLC Program Suspend(87h)
87h+6addr,用于中断指定LUN的程序操作。若设备已经挂起或者不忙,则忽略该命令。该设备支持TLC编程挂起,但不支持SLC编程挂起。
Program Resume(17h)
恢复指定LUN的挂起操作(与87h对应)。17h+6addr。