最近接触了一款flash芯片,采用普遍的spi接口操作,
型号是:s25fl064p
最小页大小:64kb,其中在最小地址开始的64kb还分割成为4kb页,最大地址往回64kb也分割成4kb页。
擦除操作命令模式:64kb擦除(SE),4kb擦除(P4E),8kb擦除(P8E)。
最关键部分:读写,擦除操作的顺序。
---------------------------------------------------------------------------------------------------------------------------------------
READ命令特点:
(1)拉低CS片选信号脚,如果在读的时候,拉高CS信号脚,那么READ操作终止。
(2)当flash芯片还在执行例如烧写,擦除,写寄存器操作,拒绝执行任何读命令。
WREN命令特点:
(1)写使能,1----接受写寄存器操作,擦除操作,烧写操作。
(2)PP,QPP,SE,BE,WRR,OTPP命令之前必须跟WREN命令。
WRDI命令特点:
(1)写禁止,0----拒绝写寄存器操作,擦除操作,烧写操作。
(2)上电,WRDI,WRR,PP,QPP,P4E,P8E,SE,BE,OTPP这些操作会复位SR寄存器的WEL位,就不能进行写操作了。
RDSR命令特点:
(1)可以不用检查芯片的操作状态,任何时候都可以发送RDSR,最重要的作用是检查其他命令的执行过程是否结束,所以不受芯片的状态限制。
(2)在发送新命令之前,应该发送这条命令检查上一条命令的执行状况,等SR寄存器的WIP标志位置0的时候,再去发送新命令。
(3)写驱动的时候,在写操作,擦除操作这些常用命令的地方,都要加一个死循环去判断当前的状态。如下所示:
do
{
status = read_status_reg(RDSR);
}
while((status & 0x1)!= 0);
找到两篇参考博文:
http://bbs.21ic.com/icview-328763-1-1.html
http://bbs.ednchina.com/BLOG_ARTICLE_28454.HTM