串行FLASHSSF1101在单片机
摘要:SSF1101是存储容量为4Mbit的SPI串行接口FLASH存储器,其IC卡封装形式可作为单片机系统的大容量数据存储卡。文中介绍了该器件的主要特性和工作原理,并以IC卡封装形式为例,给出了其与单片机的接口电路及相应的读写程序。
关键词:串行FLASH 单片机 IC卡
1 概述
对于野外移动工作或不便与上位机通信的单片机数据采集系统,使用一个大容量、可插拔、便于更换和携带的智能卡来存储采集到的数据,是一个较好的数据存储方案。SSF1101是上海新茂半导体有限公司生产的4Mbit串行接口可编程闪速存储器,该器件采用SPI串口模式与单片机或微机通信,无需任何外围元件。利用该器件提供的IC卡封装形式,可非常方便地和单片机系统进行接口以构成大容量的数据存储装置。同时,该芯片具有封装尺寸小、集成度高、电压低、存储容量大、接口方式简单等优点,在商业和工业领域具有广泛的应用前景。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 性能特点
SSF1101是一个4Mbit的串行FLASH存储器,具有4根器件识别脚,可在一个系统中最多能扩展16片,其总存储容量可达8M字节,该器件的性能特点如下:
●SPI串行数据接口符合SPI标准;
●器件内具有4M Bit 闪速存储器,512页,每页1024字节;
●内置4位器件地址译码电路,可直接并联扩展存储容量,最多可连接16片;
●带有双1k字节的数据缓冲器,可在编程期间写入或读取数据,且读取/写入地址自动递增;
●高速页面编程,典型时间为20ms;
●高速页面到数据缓冲器的传输典型时间为100μs;
●页面擦除典型时间为10ms;
●器件擦除典型时间为2s;
●内置擦除/编程时序逻辑;
●可硬件写保护;
●时钟频率最高达10MHz;
●采用单5V电源工作,并有低电压2.7~3.5V可供选择;
●低功耗,休眠电流典型值为18μA;
●与CMOS电平和TTL输入/输出电平兼容;
●工作温度很宽(商用);
●内置上电复位电路;
●在数据缓冲器和主Flash之间进行传送或比较时,可对未用的数据缓冲器和状态寄存器进行操作。
SSF1101采用32脚TSOP封装和IC卡封装两种形式,其TSOP封装外形及引脚排列如图1(a)所示,IC卡的触点配置如图1(b)所示。器件的引脚功能说明见表1所列。
表1 SSF110引脚说明
序 号 | 引脚名 | I/O | 描 述 |
1 | RDY/BUSY | O | 闲/忙指示,此脚为低时表示器件忙,不能闪存进行操作 |
2 | RST | I | 复位,低有效 |
3 | WP | I | 写保护,高有效。此信号有效时不能对闪存进行写擦除操作 |
6 | Vcc | I | 电源 |
7,8 | GND | I | 地 |
4,5,9,10 | ID0~ID3 | I | 芯片地址A0~A3,只有命令中的Device ID和ID0~ID3引脚电平一致时,命令才会被器件接受 |
11 | TM | I | 测试引脚,正常使用时接地 |
12 | CS | I | 片选,低有效,命令输入后应重新置为高电平 |
13 | SCK | I | 串行输入数据时钟 |
14 | SI | I | 数据输入,命令和数据都由此脚串行输入 |
15 | SO | O/Z | 串行数据输出,三态 |
16~32 | NC | Z | 空脚 |
3 工作原理
SSF1101具有4194304位主存储单元,分成512页面、每页面1024个字节。此外SSF1101还包含有2个SRAM缓冲器,每个缓冲器有1024个字节,当主存储器内的1页正被编程时,缓冲器照样能接收输入数据。SSF1101使用SPI串口访问它的数据,因而硬件设计十分方便,系统可靠性很强,并可把开关噪声降到最低。该芯片在编程期间,不需要高电压,而编程电压仍为电源电压。 图2所示是SSF1101存储器的内部结构框图。
SSF1101通过简单的SPI串行口进行数据存取,器件的操作由主机发出的指令控制,一个有效指令包括一字节4位操作码、4位器件地址以及目的缓冲器或主储器地址位置。当CS为0时,主机向器件SCK端发送时钟信号,以引导操作码和地址从SI端写入到器件中。所有指令地址和数据都是先送高位。SSF1101的操作命令如表2所列。表中的X可取任意值,它对器件操作没有影响。
表2 SSF1101操作命令表
操 作 | 命 令 | 器件地址 | 页面地址 | 缓冲区地址 |
读缓冲区1 | 1110 | dddd | XXXXXXXXXXXX | BA11-BA0 |
读缓冲区2 | 1111 | dddd | XXXXXXXXXXXX | BA11-BA0 |
写缓冲区1 | 0110 | dddd | XXXXXXXXXXXX | BA11-BA0 |
写缓冲区2 | 0111 | dddd | XXXXXXXXXXXX | BA11-BA0 |
使用内建擦除周期的从缓冲区1到闪存传送 | 1010 | dddd | PA11-PA0 | XXXXXXXXXXXX |
使用内建擦除周期的从缓冲区2到闪存传送 | 1011 | dddd | PA11-PA0 | XXXXXXXXXXXX |
不使用内建擦除周期的从缓冲区1到闪存传 | 0010 | dddd | PA11-PA0 | XXXXXXXXXXXX |
不使用内建擦除周期的从缓冲2到内存传送 | 0011 | dddd | PA11-PA10 | XXXXXXXXXXXX |
闪存到缓冲区1的传送 | 1100 | dddd | PA11-PA0 | XXXXXXXXXXXX |
闪存到缓冲区2的传送 | 1101 | dddd | PA11-PA0 | XXXXXXXXXXXX |
比较闪存页面和缓冲区1 | 0100 | dddd | PA11-PA0 | BA11-BA0 |
比较闪存页面和缓冲区2 | 0101 | dddd | PA11-PA0 | BA11-BA0 |
闪存直接读 | 0001 | dddd | PA11-PA0 | BA11-BA0 |
状态寄存器读 | 0000 | dddd | XXXXXXXXXXXX | XXXXXXXXXXXX |
片擦除 | 1001 | dddd | XXXXXXXXXXXX | XXXXXXXXXXXX |
3.1 状态寄存器(SR)
SSF1101具有一个8bit的状态寄存器,可用于指示器件的工作状态。该寄存器可通过“状态寄存器读”命令读出寄存器中的内容。寄存器内容及定义