前言
近年来,闪速存储器已应用在数以千计的产品中,特别是移动通信、MP3音乐播放器、手持PC管理器、数码相机、网络路由器、舱内录音机等工业产品。闪速存储器由于具有非易失性和电可编程擦除性,从而具有半导体存储器的读取速度快、存储容量大等优点,同时又克服了DRAM及SRAM断电丢失所存数据的缺陷。与EPROM相比较,闪速存储器的优势在于系统电可擦除和可重复编程,且不需要特殊的高电压,此外,它还有成本低,密度大的特点。
闪速存储器由于各自技术架构的不同,又可分为NOR技术、NAND技术、AND技术和由EEPROM派生的闪速存储器。以EEPROM做闪速存储阵列的Flash Memory,如SST的小扇区结构闪速存储器具有EEPROM与NOR技术Flash Memory二者折中的性能特点:(1)读写的灵活性逊于EEPROM,但与NOR技术Flash Memory的块结构相比,其页尺寸小,具有快速随机读取和快编程、快擦除的特点。(2)与EEPROM比较,具有明显的成本优势。
SST25VF系列产品,是业界第一个完整的串行闪存产品系列,其记忆容量包含512Kbit至16Mbit,且采用产业标准的8接脚SOIC封装及超薄型WSON封装技术。此外,SST最新串行闪存提供最新自动地址增值(AAI)资料写入模式,与单一字节资料写入模式相比,该资料写入模式能够将整个闪存的资料写入时间减少50%。SST25VF系列是以高效能超快闪技术为基础,加上四线及串行外围界面(SPI),相对平行EEPROM等非挥发性内存解决方案而言,SST的串行式闪存产品使用较少的接脚,将资料往返于系统CPU,因此可减少电路板空间、耗能及成本。
芯片介绍
芯片引脚介绍
SST25VF020是SST25VF系列产品中的一员,其芯片具有以下特点:总容量为2M;单电源读和写操作,工作电压为2.7-3.3V;低功耗,工作电流为7mA,等待电流为3μA;时钟频率高达33MHz,快速编程、快速擦除、快速读取;小型一致闪区尺寸4KB;数据保存100年;CMOS I/O兼容等。其封装为SOIC和小尺寸的WSON封装,其封装图如图1,各引脚功能介绍如表1。
图1 封装图(略)
表1 引脚功能表(略)
状态寄存器
状态寄存器用来对芯片的工作模式进行设定,在工作过程中,可以提供芯片的工作状态,比如读、写、写保护等。其各位的详细介绍如表2。
表2 壮态寄存器说明表(略)
工作过程
首先设置状态寄存器,对FLASH的工作模式、写使能以及写保护区域进行设定。在读写的过程中,还可以通过读寄存器内容来判断FLASH当前的工作状态。设定结束后,可以开始读写操作。
写操作
选用自动地址增值写入(AAI)模式,这种模式在写入大量数据时可以缩短程序运行时间。在写操作中,首先写入写使能命令字(0x06),AAI模式以AF为写命令,顺序写入存储起始地址和存储数据,每传送完一字节的数据时,时钟位置高,为写下一字节数据做准备。当数据全部写入时,写终止写使能命令字(0x04),写操作结束。在整个写过程中,状态寄存器中的BUSY位始终为1,写操作结束后,BUSY自动复位。如图2。
图2 写操作(略)
读操作
在读操作中,首先写入读命令字(0x03),然后写入读取数据的起始地址,数据会顺序读出,直至读完。如果地址累加至7FFFF,下次数据读取会从00000地址开始。在整个读过程中,状态寄存器中的BUSY位始终为1,写操作结束后,BUSY自动复位。如图3。
图3 读操作(略)
擦除操作
SST25VF020提供3种芯片擦除方式:扇区擦除、块擦除和全擦除。命令字分别为0x20、0x52、0x60,可分别实现不同范围的擦除。在整个擦除过程中,状态寄存器中的BUSY位始终为1,擦除操作结束后,BUSY自动复位。
硬件电路
系统控制器选用MSP430F149单片机,对温度传感器信号进行模数转换后采样,将采集到的数据通过SPI串行通信存储到FLASH中。当系统通过异步串口和PC机相连时,通过SPI串行通信将储存到FLASH中的数据读到PC机中,从而对采集的数据进行分析、处理。将采集到的数据保存后,即可擦除FLASH,为下一次采集做准备。存储电路连接如图4所示。通过上拉电阻将CE#、SO端的初始状态置为高电平,写保护端始终为高电平。相应的输入输出端、时钟信号端和使能端分别和单片机接口相连。
图4 (略)
关键源程序
case 0x03: /* 读数据 */
TXBUF1 =0x03; // 发读命令字
while (IFG2&0x20==0x00); // 发送完否?
for(i=0;i<=2;i++) /* 发送地址 */
{TXBUF1=addr[i];
while (IFG2&0x20==0x00);}//发送完否?
for(i=0;i<=19;i++) /* 读取数据 */
{ TXBUF1=0X33 ; // 发送伪数据用于产生接收数据CLK
while (IFG2&0x20==0x00); // 发送完否?
while( IFG2&0x10==0x00) ;
backdata1[i]=RXBUF1 ;} //存放读取的数据
delay(2) ;
P5OUT |=0X01 ; // 拉高 STE1
delay(200) ;
break;
case 0xaf: /* AAI 模式 写数据 */
P5OUT &=~0X01 ; // 拉 底 STE1
delay(2) ;
TXBUF1 =0X06 ; /* write enable */
while (IFG2&0x20==0x00); // 发送完否?
delay(2) ;
P5OUT |=0x01 ; // 拉高 STE1
delay(12);
P5OUT &=~0x01 ; // 拉底 STE1
delay(2) ;
TXBUF1 =0xaf; // 发写命令字
while (IFG2&0x20==0x00); // 发送完否?
for(i=0;i<=2;i++) /* 发送地址 */
{ TXBUF1=addr[i];
while (IFG2&0x20==0x00); }//发送完否?
for(i=0;i<=19;i++)
{ TXBUF1=data1[i] ; // 连续写20字节的数据
while (IFG2&0x20==0x00) ; // 发送完否?
if(i==19) break ;
delay(2) ;
P5OUT |=0X01 ; // 拉高 STE1
delay(12) ;
P5OUT &=~0X01 ; // 拉底 STE1
delay(2) ;
TXBUF1 =0xaf ;
while (IFG2&0x20==0x00); } // 发送完否?
delay(2) ;
P5OUT |=0X01 ; // 拉高 STE1
delay(12);
P5OUT &=~0X01 ; // 拉底 STE1
delay(2) ;
TXBUF1 =0X04 ; // /* 结束AAI模式*/
while (IFG2&0x20==0x00); // 发送完否?
delay(2) ;
P5OUT |=0X01 ; // 拉高 STE1
break;
总结
S ST串行式闪存因具备低耗能与小型接脚的特色,可作为硬盘、绘图卡、电子玩具、智能卡、MP3播放器、无线电话、蓝牙模块及GPS模块等装置比较理想的存储解决方案。由于SST串行式闪存的容量从512Kbit至16Mbit不等,因此适用于从低阶智能卡至高容量的声音档案存储,如电话录音机等各类资料存储 应用装置。 |