SPI串行Flash在数据存储系统中应用.docVIP

  • 28
  • 0
  • 约4.4千字
  • 约 5页
  • 2016-03-30 发布于江苏
  • 举报
SPI串行Flash在数据存储系统中应用.doc

SPI串行Flash在数据存储系统中的应用 摘要:ATMEL公司生产的串行Flash AT45系列存储器的容量已达到了16Mb,常用于数据存储系统。文中以AT45D041为例,详细介绍了该系列Flash存储器的命令集以及串行SPI接口的应用方法,并给出了相应的模式时序。 ??? 关键词:SPI Flash Buffer 中断 AT45D041 1 概述 在目前所有的非易失性存储器(PROM、EPROM、EEPROM和Flash)中,唯有Flash存储器几乎拥有现今讲究个性化的用户所需的所有特点,它具有掉电数据不丢失、快速数据存取速度、电可擦除、容量大、在线可编程、价格低廉以及足够多的擦除、容量大、在线可编程、价格低廉以及足够多的擦写次数(一百万次)和较高的可靠性等诸多优点,因而已为新一代嵌入式应用(如数字相机和MP3播放机)的首选存储器。现在FLASH的成本已低于PROM/EPROM,可以肯定,它将很快占邻PROM/EPROM市场,MASK(掩膜)ROM尽管在大指生产时具备一定的价格优势,但其升级不便的弱点将随着今后FLASH成本的进一步降低,而使得MASK ROM的前景并不乐观。 ATMEL生产的Flash AT45系列中的AT45D041为单5V供电的SPI接口器件,其封装形式有PLCC、TSOP和SOIC三种,图1给出了该器件采用SOIC封装形式的管脚排列和说明。 AT45D041的内部结构如图2所示。该器件有2048页(每页264字节)内存(Flash Memory,也叫主存Main Memory)和两具Buffer(每个Buffer为264字节的SRAM)组成。数据可以直接写入闪存,也可以选写入Buffer,然后再将Buffer的数据整个复制到闪存的某一天,也可以在闪存正处于编程时(页编程时间典型值7ms)将数据写入Buffer。以下是该器件的一些特点: ●一页主存传送到Buffer的典型时间为80μs; ●有效电流的典型值为15mA,空闲电流为20μA; ●最大时钟频率为10MHz; ●具有硬件擦、写保护功能,当WP脚为低时,前256页钭禁止编程。 ●输入输出与CMOS和TTL电平兼容; ●具有商业和工业两种温度范围; ●可单周期重编程(包括擦除和编程); ●带有串行接口,读写操作时地址会自动增1; ●复位时将终止正在进行的操作,当复位管脚恢复高电平时,操作也可以恢复; ●传送数据时,高位(MSB)在前。 2 操作命令介绍 对AT45D041的操作一共有18条命令,表1所列为AT45D041的操作命令集。其中: 表1 AT45D041的操作命令集 读主存 52H rrr PA10~PA0 BA8~BA0 32个× 读Buffer1 54H ×××× 11个× BFA8~BFA0 8个× 读Buffer2 56H ×××× 11个× BFA8~BFA0 8个× 主存传送到Buffer1 53H rrrr PA10~PA0 9个× 主存传送到Buffer2 55H rrrr PA10~PA0 9个× 主存与Buffer1比较 60H rrrr PA10~PA0 9个× 主存与Buffer2比较 61H rrrr PA10~PA0 9个× 写Buffer1 84H ×××× 11个× BFA8~BFA0 写Buffer2 87H ×××× 11个× BFA8~BFA0 带擦除的Buffer1传送到存 83H rrrr PA10~PA0 9个× 带擦除的Buffer2传送到主存 86H rrrr PA10~PA0 9个× 不带擦除的Buffer1传送到主存 88H rrrr PA10~PA0 9个× 不带擦除的Buffer2传送到主存 89H rrrr PA10~PA0 9个× Buffer1为缓冲对主存编程 82H rrrr PA10~PA0 BA8~BA0 Buffer2为缓冲对主存编程 85H rrrr PA10~PA0 BA8~BA0 Buffer1为缓冲自动重编程 28H rrrr PA10~PA0 9个× Buffer2为缓冲自动重编程 59H rrrr PA10~PA0 9个× 读状态寄存器 ???? 57H r为保留位,AD45D041用0代替,容量更大的器件一般可能会用到; ×为无关位(0或1均可,为了占时钟位); PA10~PA0用来指定页地址,对AT45D041而言,一共有2048页,占11位; BA8~BA0用来指定内字节的起始地址,每页264字节,占9位; BFA8~BFA0用来指定缓冲区内字节的起始地址,缓冲区也是264字节; 52H~61H、82H-89H分别是用来区别不同操作的命令字。 ??? 执行命令时,首先通过SPI串口往Flash发送一连串的数据

文档评论(0)

1亿VIP精品文档

相关文档