1、 读操作(25Mhz)
该操作支持最高时钟速率为25Mhz的读操作。执行该操作时,芯片内部地址指针自动递增,连续输出从起始地址单元开始的数据,直到遇到CE#信号的上升沿。如果到达最高位的地址,地址指针返回最低位的地址继续递增。例如,SST25VF032B的地址最高位为0x3fffff,当内部地址指针到达0x3fffff时,下次将返回地址最低位0x0开始继续递增。
该操作对应8bits的命令为0x03,后面跟随24位的地址,高位先发。在连续的读操作执行过程中,CE#必须保持为低电平。具体时序请见图1。
图1读操作(25Mhz)时序
2、高速读操作(50MHz)
该操作支持最高时钟速率为50Mhz的读操作。执行该操作时,同读操作(25Mhz)模式,芯片内部地址指针自动递增,连续输出从起始地址单元开始的数据,直到遇到CE#信号的上升沿。如果到达最高位的地址,地址指针返回最低位的地址继续递增。例如,SST25VF032B的地址最高位为0x3fffff,当内部地址指针到达0x3fffff时,下次将返回地址最低位0x0开始继续递增。
该操作对应8bits的命令为0x0b,后面跟随24位的地址以及8位的填充位,高位先发。在填充位之后SO输出读出的数据。具体时序请见图2。
图2高速操作(50Mhz)时序
3、Byte编程操作
该操作每次向一个地址单元写一个字节的数据,每次写一个字节的数据前都要在SI总线上发送24位的地址数据。在向相应地址写数据前,需确保待写入的地址处于已擦除状态(0xff),同时需要进行写使能(WREN)操作。在该操作进行的过程中,CE#信号需要保持为低。
该操作对应8bits的命令为0x02,后面跟随24位的地址和8位的数据,高位先发。发送完成后,查询状态寄存器中的BUSY或等待TBP时间(可在芯片手册中查询,SST25VF032B为10us),BUSY为0或等待TBP时间结束后可执行下一步操作。具体时序请见图3。
图3 Byte编程操作时序
4、AAI(Auto Address Increment)word编程模式
AAI word编程模式允许只配置一次起始地址的情况下写入多个word的数据,一个word为2个字节。写入之前需确保待写入的地址处于已擦除状态(0xff)。
执行AAI编程模式前,必须执行写使能(WREN)操作。该操作对应8bits的命令为0xad,后面跟随24位的地址,然后是一个word的数据。一个word中第一个字节的数据写入{[A23-A1],[A0]=0}的地址中,第二个字节写入{[A23-A1],[A0]=1}的地址中。有3种方式可以判断AAI编程操作过程中每个word写入完成:
1)检测SO信号:需要在AAI word编程操作前执行EBSY(0x70)命令(如图4所示),使能SO作为忙状态信号,1为空闲,0为忙。结束AAI word编程操作后,需要执行DBSY(0x80)命令(如图5所示),去使能SO作为忙状态信号,本设计采用的就是这种方式;
图4 EBSY(0x70)命时序
图5 DBSY(0x70)命时序
2)读取状态寄存器中的BUSY位:通过发送WRSR(0x01)命令,读取状态寄存器,根据状态寄存器中的BUSY位判断;
3)等待TBP时间。
根据以上条件判断芯片空闲时,后续0xad命令和2个字节的数据可以继续发送。最后一个字节的数据发送完成后,检测忙状态,空闲时发送WRDI(0x04)命令结束AAI word编程操作。
当完成最后一个未被写保护的地址单元的AAI word编程操作后,将退出AAI word编程模式,且复位状态寄存器中的WEL位(WEL=0)和AAI位(AAI=0)。
采用SO作为忙状态信号的AAI word编程操作时序如图6所示,采用读取状态寄存器中的BUSY位的AAI word编程操作时序如图7所示
图6 采用SO作为忙状态信号的AAI word编程操作时序
图7 采用读取状态寄存器中的BUSY位的AAI word编程操作时序
5、扇区(sector)擦除操作
扇区擦除操作擦除指定的4K字节大小的扇区,将值置为0xff。该操作对写保护的区域无效。扇区擦除操作之前,需要进行写使能操作(WREN)。
扇区擦除操作对应的8bits命令为0x20,后面跟随24位的地址,其中A23-A12用来确定擦除的扇区。扇区擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TSE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。扇区擦除操作的时序如图8所示。
图8 扇区擦除操作时序
6、32K字节和64K字节的块擦除操作
32K字节和64K字节的块擦除操作分别擦除地址对应的32K字节和64K字节的块,将值置为0xff。该操作对写保护的区域无效。块擦除操作之前,需要进行写使能操作(WREN)。
32K字节块擦除操作对应的8bits命令为0x52,后面跟随24位的地址,其中A23-A15用来确定擦除的块;64K字节块擦除操作对应的8bits命令为0xd8,后面跟随24位的地址,其中A23-A16用来确定擦除的块。块擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TBE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。32K字节块擦除操作的时序如图9所示,64K字节块擦除操作的时序如图10所示。
图9 32K字节块擦除操作时序
图10 64K字节块擦除操作时序
7、片擦除操作
片擦除操作擦整片flash所有地址的数据,将其置为0xff。该操作对写保护的区域无效。片擦除操作之前,需要进行写使能操作(WREN)。
该操作对应的8bits命令为0x60或0xc7,后面不需要跟随地址发送。片擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TCE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。片擦除操作的时序如图11所示。
图11 片擦除操作时序
8、读状态寄存器操作(RDSR)
读状态寄存器操作可在在任何时刻执行,包括写和擦除操作进行的间隔。在写操作进行的间隔,通过读状态寄存器的BUSY位可以获知写操作的完成情况。
读状态寄存器操作对应的8bits命令为0x05,在命令发送完成后下个时钟下降沿开始输出状态寄存器数据。读状态寄存器操作的时序如图12所示。
图12 读状态寄存器操作时序
9、写使能操作(WREN)
写使能操作将状态寄存器中的WREN位置为1,表示写和擦除操作可进行。在任何写(包括写状态寄存器)和擦除操作之前都必须执行写使能操作,因为执行完任何写(包括写状态寄存器)和擦除操作之后,状态寄存器中的WREN位都会在CE#的上升沿被置0。写使能操作对应的8bits命令为0x06。写使能操作的时序如图13所示。
图13 写使能操作时序
10、写去使能操作(WRDI)
写去使能操作将状态寄存器中的WREN位和AAI位都置为0。写去使能操作无法终止任何擦除操作,任何擦除操作都必须等待TSP/TBP/TCP时间完成。写去使能操作对应的8bits命令为0x04。写去使能操作的时序如图14所示。
图14 写去使能操作时序
11、使能写状态寄存器操作(EWSR)和写状态寄存器操作(WRSR)
使能写状态寄存器操作使能状态寄存器的写权限,写状态寄存器前必须先使能写状态寄存器,防止对状态寄存器的误操作。使能写状态寄存器操作对应的8bits命令为0x50或0x06,。
写状态寄存器操作可以改变状态寄存器中的BP3-BP0、BPL位。WP#管脚为0时,写状态寄存器操作无效,WP#管脚为1时,需要将BPL置为1,才能写BP3-BP0。写状态寄存器操作对应的8bits命令为0x01。使能写状态寄存器操作和写状态寄存器操作的时序如图15所示。
图15 使能写状态寄存器操作和写状态寄存器操作的时序
12、读ID操作(RDID)和JEDEC读ID操作
读ID操作(RDID)和JEDEC读ID操作用来读取芯片信息,暂不详述,具体请参见芯片手册。
下一篇将讲解实现各项操作的状态机,真正有料了要来了哦!
用户1069018 2015-9-28 15:05