一、常用命令
【Read Array Data】
设备自动切换到Read array data模式,在完成擦除与写入操作之后设备会自动切换到Read array data模式。在执行擦除命令时,系统在执行读操作时,除了访问到了正在擦除的扇区会时受到阻塞外,其它都能正常访问。
【Reset Command】 这个命令可以终止已进行但还没有执行的擦除或写入操作,使之回到Read array data模式。一旦擦除或写入操作开始,reset命令只有在擦除命令完成之后才生效。
【Autoselect Command Sequence】 这个命令可以让主机访问到设备的生产商、设备码、扇区的是否有写保护。表4里已列出所有的命令。
Autoselect Command Sequence由两个unlock周期开始,然后进入autoselect模式。之后系统可以无限次数地读任何地址而不但需要再次执行命令串。
XX00H -- 生产厂家 XX01H -- 设备码 每个扇区地址+04H -- 该扇区的保护状态,1:保护,0:未保护
【Word/Byte Program Command Sequence】
系统可以通过BYTE#引脚决定写入的是字还是字节。编程操作有4个总线周期操作: (1)两个解锁序列 (2)要编程的地址 (3)要编程的数据 之后设备将自动进入编程操作,不再需要主控做任何操作。
当编程操作完成之后,设备自动进入Read array data模式,系统可以通过DQ7与DQ6来检测设备的状态。
在编程操作期间,任何编程操作都会被忽略。
值得注意的是:硬复位会立即终止编程操作。在硬复位之后必须重新启动编程操作。
编程操作可以跨越扇区边界的,一个位只能从0改写成1。只有擦除能使1变成0。
【Unlock Bypass Command Sequence】
unlock bypass 功能允许系统写入数据比Standard更快些。
unlock bypass命令触发由两个unlock周期。第3个写入的bypass command, 20h。设备就进入了bypass模式。 第一个周期就是unlock bypass program命令, A0h。第二个周期包括Address与Data。附加数据。
在unlock bypass模式期间,只有Unlock bypass program与Unlock bypass reset命令是可用的。 想要退出unlock bypass模式,系统发起两个unlock bypass reset命令序列,每一个写入90H,第二周期数据为00H。地址已无关重要,命令执行之后设备回到read array data模式。
【Chip Erase Command Sequence】
命令序列详见表格。
在擦除期间,其它操作都会被忽略。但是硬复位会立即终止擦除操作。
系统可以通过检查DQ7,DQ6,DQ2,或RY/BY#。
【Sector Erase Command Sequence】
命令序列详见表格。
在命令序列写入之后,会有50us的超时等待。在这超时期间,其它的扇区地址与擦除命令可以写入。命令之间的时间不能超过50秒,否则后来的一次擦除操作 将被执行,擦除操作启动。为了保证所有的命令得到执行,强列建议写命令期间关闭中断。如果两个指令间的间隔小于50us,就没有必要再去检查DQ3。
在50us内,接受到Sector erase或Erase Suspend命令,设备就重回到read array data.
系统可以通过检测DQ3来探查扇区是否超时。在WE#上升沿后就开始计算超时。
【Erase Suspend/Erase Resume Commands】
这个命令用于终止扇区擦除操作,并让设备回到read array data模式。在扇区擦除50us超时期间有效。正在进行擦除与编程操作过程中,这个命令是被忽略的。
二、读取状态
【DQ7: Data# Polling】
在擦除操作过程中,DQ7输出0。当完成了擦除操作或进入Erase suspend状态,DQ7输出1。
在完成擦除操作之后,如果所有要擦除的都处于保护状态,那么DQ7会在大约100us时间内处于激活状态,然后设备进行read array data状态。如果只是部分被保护,那么设备只擦除未保护的扇区,忽略被保护的。
【DQ6: Toggle Bit I】
【DQ2: Toggle Bit II】
【DQ5: Exceeded Timing Limits】
执行擦除或编程操作不成功超时位。
通常会出现在编程时试图对已是0的位置1操作,只有擦除操作才能将0改变成1。
在这种情况下,操作停止,DQ5上产生1。
只有reset命令才能使设备回到read array data模式。
【DQ3: Sector Erase Timer】
扇区擦除超时是否开始执行标志位。
当写入扇区擦除命令序列后,设备会有50us的超时时间,等待连续命令。当50us的等待超时结束,DQ3就会被置1,然后设备就开始执行擦除操作。
在写入完扇区擦除命令序列后,主机应该读取DQ7或DQ6来确保设备是否接受命令。然后再读取DQ3,如果该位为1,说明扇区擦除操作已经开始,所有的命令都会在执行期间被忽略,直到完成。如果DQ3=0,说明还没有超时,设备还能接收更多的扇区擦除命令。
【RY/BY#: Ready/Busy#】
这些引脚是开漏输出的,当正在执行擦除或编程时,该电平Low。当完成了操作之后,电平为高。