Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225531
  • 博文数量: 30
  • 博客积分: 509
  • 博客等级: 一等列兵
  • 技术积分: 802
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-22 12:32
文章分类

全部博文(30)

文章存档

2013年(14)

2012年(16)

分类: 嵌入式

2013-01-03 22:18:25

一、常用命令
 
【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。当完成了操作之后,电平为高。
 
阅读(2266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~