串行FLASHSSF1101在单片机
BF: 忙标志,为1时,表示器件忙,无法执行对闪存的操作命令;
CF:比较标志,为1时,表示缓冲区中的内容和指定的被比较的闪存页面不一致;
WPF:写保护标志,为1表示器件处于硬件写保护状态;
Bit2~Bit0:容量指示位,为全1表示闪存容量为4Mbit;
Res:保留位,暂为01;
当器件正确上电复位后,SR为 00001111B。
3.2 命令操作说明
(1)缓冲区传送
缓冲区传送分为三种,首先通过闪存到缓冲区的传送命令可把指定闪存页面中的内容拷贝到缓冲区1或缓冲区2中,传送到缓冲区1的命令码为:1100dddd PA11-PA0 XXXXXXXXXXXX,共32位, 并继续保持SCK到至少第35个周期。其中的PA11 - PA0为指定被传送的闪存页面, 如果超出器件的范围,则自动取模。当CS被置高后,传送操作开始, 同时状态寄存器中的BF位有效。 完成传送操作大约需要100μs, 完成后,BF标志清零(下述命令中,如没有特别指出,其命令码含义及操作时序均与此相同,此外针对缓冲区2的操作仅命令不同,其余部分完全相同,下述命令均相同)。
使用内建擦除周期的从缓冲区到闪存传送命令时,一般先使用内建的擦除周期擦除指定的闪存页面,然后把缓冲区中的内容拷贝到指定的闪存页面中。
不使用内建擦除周期的从缓冲区到闪存传送命令时,可直接把缓冲区中的内容拷贝到指定的闪存页面中。javascript:window.open(this.src);" style="cursor:pointer;"/>
(2)读写缓冲区
读缓冲区命令用于读取缓冲区1(或2)中的一个或多个字节数据,命令码为:
1110ddddXXXXXXXXXXXXBA11-BA0。
其中,BA11-BA0 用于指定从缓冲区中读取数据的开始地址,如果超出缓冲区大小则自动取模。器件在第35个SCK的下降沿开始从SO引脚输出数据,且高位在前。读取一个字节后,缓冲区地址自动加1,然后继续输出下一地址的数据。如到达缓冲区的尾部, 则自动返回到缓冲区的起始地址。输出最后一个字节后需额外的3~7个脉冲。
写缓冲区命令用于将一个或多个字节数据写入缓冲区1(或2)中,命令码为:
0110ddddXXXXXXXXXXXXBA11-BA0
其中,BA11-BA0用来指定写入缓冲区的开始地址,如果地址超出缓冲区大小则自动取模。器件在第33个SCK的上升沿开始从SI引脚接收数据(高位在前),接收一个字节后写入缓冲区, 并自动对缓冲区地址加1后继续接收下一地址的数据。如果到达缓冲区的页尾,则自动返回到缓冲区的起始地址。输出最后一个字节后需额外的3~7个脉冲。
(3)闪存直接读
闪存直接读命令用于直接从闪存页面中读取数据,而不通过缓冲区,也不影响缓冲区中的内容。其命令码为:
0001dddd PA11-PA0 BA11-BA0。
其中,PA11-PA0用于指定被操作的闪存页面, 如果超出器件的范围,则自动取模;BA11-BA0则用来指定从页面内读取数据的开始地址,同样, 如果超出页面大小则自动取模。器件在第35个SCK的下降沿开始从SO引脚输出数据, 高位在前。 输出一个字节后页面内数据地址自动加1,然后继续输出下一地址的数据。如果到达页尾,则自动返回到页初地址。
(4)比较闪存页面和缓冲区
此命令用于比较指定的闪存页面和缓冲区内的数据是否相同,在被置高后开始比较, 同时BF被置1。如果比较结果为不相同,则状态寄存器的CF位被置1, 否则CF清零, 比较结束后BF清零。
(5)读状态寄存器
状态寄存器读命令用于读出器件内状态寄存器的值。
(6)片擦除
片擦除命令用于擦除闪存所有页面的数据,一个擦除周期大约需要2s。
javascript:window.open(this.src);" style="cursor:pointer;"/>
4 具体应用
SSF1101由于具有512kbyte的大存储容量,因此可广泛应用于数字语音存储、图象存储和数据存储等应用领域,以构成大容量的单片机数据采集系统。由AT89C52单片机与SSF1101构成的IC卡读写电路如图3所示。
图3中,AT89C52的P1.0、P1.1、P1.2分别与SSF1101 SPI的接口SI、SCK及SO端相连以实现简单的三线串行通信,P1.3与CS相连用于控制对器件的访问,图中的C9与C10是IC卡座的接通开关,当IC卡插入时开关闭合,C1端接入+5V电源,SSF1101上电复位后读写电路进入正常的读写状态,当IC卡拔出后C1端经电阻R2向AT89C52的INT0端发出中断请求,从而转向掉卡中断处理程序。下面的程序代码为与上述硬件电路配套的读写IC卡程序:
;位定义
SI BIT P1.0;串行数据输入
SCK BIT P1.1;串行时钟
SO BIT P1.2;串行数据输出
CS BIT P1.3;片选控制
;内存定义
RCMD EQU 30H;读卡命令单元
PAH EQU 31H;闪存页面高位单元
PAL EQU 32H;闪存页面低位单元
BAH EQU 33H;闪存地址高位单元
BAL EQU 24H;闪存地址低位单元
ICRDATA EQU 20H;读写数据缓冲区首址
NUMBER EQU 80H;