SPI串行Flash在数据存储系统中的应用_第1页
SPI串行Flash在数据存储系统中的应用_第2页
SPI串行Flash在数据存储系统中的应用_第3页
SPI串行Flash在数据存储系统中的应用_第4页
SPI串行Flash在数据存储系统中的应用_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SPI串行Flash在数据存储系统中的应用        摘要:ATMEL公司生产的串行Flash AT45系列存储器的容量已达到了16Mb,常用于数据存储系统。文中以AT45D041为例,详细介绍了该系列Flash存储器的命令集以及串行SPI接口的应用方法,并给出了相应的模式时序。    关键词:SPI Flash Buffer 中断 AT45D0411 概述在目前所有的非易失性存储器(PROM、EPROM、EEPROM和Flash)中,唯有Flash存储器几乎拥有现今讲究个性化的用户所需的所

2、有特点,它具有掉电数据不丢失、快速数据存取速度、电可擦除、容量大、在线可编程、价格低廉以及足够多的擦除、容量大、在线可编程、价格低廉以及足够多的擦写次数(一百万次)和较高的可靠性等诸多优点,因而已为新一代嵌入式应用(如数字相机和MP3播放机)的首选存储器。现在FLASH的成本已低于PROM/EPROM,可以肯定,它将很快占邻PROM/EPROM市场,MASK(掩膜)ROM尽管在大指生产时具备一定的价格优势,但其升级不便的弱点将随着今后FLASH成本的进一步降低,而使得MASK ROM的前景并不乐观。ATMEL生产的Flash AT45系列中的AT45D041为单5V供电的SPI接口器件,其封装

3、形式有PLCC、TSOP和SOIC三种,图1给出了该器件采用SOIC封装形式的管脚排列和说明。AT45D041的内部结构如图2所示。该器件有2048页(每页264字节)内存(Flash Memory,也叫主存Main Memory)和两具Buffer(每个Buffer为264字节的SRAM)组成。数据可以直接写入闪存,也可以选写入Buffer,然后再将Buffer的数据整个复制到闪存的某一天,也可以在闪存正处于编程时(页编程时间典型值7ms)将数据写入Buffer。以下是该器件的一些特点:一页主存传送到Buffer的典型时间为80s;有效电流的典型值为15mA,空闲电流为20A;最大时钟频率为

4、10MHz;具有硬件擦、写保护功能,当WP脚为低时,前256页钭禁止编程。输入输出与CMOS和TTL电平兼容;具有商业和工业两种温度范围;可单周期重编程(包括擦除和编程);带有串行接口,读写操作时地址会自动增1;复位时将终止正在进行的操作,当复位管脚恢复高电平时,操作也可以恢复;传送数据时,高位(MSB)在前。2 操作命令介绍对AT45D041的操作一共有18条命令,表1所列为AT45D041的操作命令集。其中:表1 AT45D041的操作命令集读主存52HrrrPA10PA0BA8BA032个×读Buffer154H××××11个×

5、BFA8BFA08个×读Buffer256H××××11个×BFA8BFA08个×主存传送到Buffer153HrrrrPA10PA09个×主存传送到Buffer255HrrrrPA10PA09个×主存与Buffer1比较60HrrrrPA10PA09个×主存与Buffer2比较61HrrrrPA10PA09个×写Buffer184H××××11个×BFA8BFA0写Buffer287H××××1

6、1个×BFA8BFA0带擦除的Buffer1传送到存83HrrrrPA10PA09个×带擦除的Buffer2传送到主存86HrrrrPA10PA09个×不带擦除的Buffer1传送到主存88HrrrrPA10PA09个×不带擦除的Buffer2传送到主存89HrrrrPA10PA09个×Buffer1为缓冲对主存编程82HrrrrPA10PA0BA8BA0Buffer2为缓冲对主存编程85HrrrrPA10PA0BA8BA0Buffer1为缓冲自动重编程28HrrrrPA10PA09个×Buffer2为缓冲自动重编程59HrrrrPA

7、10PA09个×读状态寄存器     57Hr为保留位,AD45D041用0代替,容量更大的器件一般可能会用到;×为无关位(0或1均可,为了占时钟位);PA10PA0用来指定页地址,对AT45D041而言,一共有2048页,占11位;BA8BA0用来指定内字节的起始地址,每页264字节,占9位;BFA8BFA0用来指定缓冲区内字节的起始地址,缓冲区也是264字节;52H61H、82H-89H分别是用来区别不同操作的命令字。    执行命令时,首先通过SPI串口往Flash发送一连串的数据,然后以命令字开头

8、,除了“读状态寄存器”外,后面还要跟上页地址和页内的字节地址发及一些无关位。“读主存”时,首先需要往Flash发送64bit的命令,即:命令字52(8bit)+4个“r”+页地址(11bit)+页内字节的起始地址(9bit)+32个无关位,发送完这64bit(通常是组合成8个字节)命令后,紧跟着从Flash读数据以可以了(即后面的SCK信号使得数据从SO脚移出),每读出一个字节,字节地址自动加1,如遇到该页的末尾,只要有SCK信号,系统再加到该页的开关处读数据。在整个操作过程中,CS脚始终为“0”;当CS脚回到“1”时,将终止此次操作,SO脚恢复到高阻状态。主存传送到Bufferx是指将204

9、8页主存中的任何一页(由PA10PA0决定)的内容复制到缓冲区,发送完32bit命令后,当CS脚由“0”为“1”后,数据的复制才真正开始。主存与Bufferx的比较主要是看主存中的某一页与缓冲区是否一样,当CS脚回到“1”后,比较才开始进行,比较的结果(是否一样)记录在状态寄存器的bit6中。把带擦除的Bufferx传送到主存就是将缓冲区的内容复制到主存中的某一页,复制前应将缓冲区的内容复制到主存中的某一页,复制前应将主存中的该页数据全部擦掉,所有这些操作只有等到CS脚回到“1”后才能进行。对于不带擦除的Bufferx传送到主存的操作,在命令执行前,指定的主存页必须已被擦除过。以Bufferx

10、为缓冲为主存编程就是将“写Bufferx”与“带擦除的Bufferx传送到主存”进行组合。在发送完命令后,写入Flash的数据将被写入到缓冲区内,如果遇到缓冲区末尾,要继续写入的数据又从缓冲区开头写入,直到CS脚由“0”到“1”后,主存中被指定的页的数据被擦除后再将缓冲区的数据整个复制到主存的指定页中。3 状态寄存器及操作完成指示一般向Flash发送57H后以可读出状态寄存器(移出时,高位在前),状态寄存器的位定义如表2所列。其中Bit7为“0”表示器件忙,为“1”表示可以接收新的命令;Bit6是比较结果位,为“0”表示主存与缓冲区的数据一样,为“1”时表示最少有一个bit不同;Bit5Bit

11、3为该系列器件的容量指示位,一共种8种容量,对于AT45D041来说,该区域为“011”;Bit2Bit0未使用。一共蛾6种操作会使器件处于“忙”状态,这6种操作是:主存传送到Bufferx;主存与Bufferx比较;带擦除的Bufferx传送到主存;不带擦除的Bufferx传送到主存;Bufferx为缓冲对主存编程;Bufferx为缓冲自动重编程。这6种操作均需要监视状态寄存器,以便知道操作是否完成。除了监视状态寄存器外,更好的方法是将芯片管脚RDY/BUSY与CPU的某个中断相连,并将中断设置为升沿触发,操作一完成即可触发中断,这样可能节省大量的CPU时间。4 SPI接口及应用4.1 SP

12、I接口串行外围接口一共有4种操作模式,图3为其时序图。这些操作模式决定了传送与接收的时钟相位和极性,换句话说,也就是这些模式决定了利用时钟信号的哪个沿来控制数据传判断的方向。这些模式一般由主机(CPU)来设置。当CPOL=0时,时钟信号SCK在空闲时为“0”,即模式0和1;如果CPOL=1,则SCK在空闲时为“1”,即模式2和3;当CPHA=CPOL时,数据总在时钟信号的上升沿移进Flash,下降沿移出Flash,即模式0和3。4.2 SPI接口应用对于12位的数据采集系统,使用AD公司的Flash集成MCU芯片AduC812可使电路设计更加简单快捷。由于AduC812有一个与I2C兼容的SP

13、I接口,所以与AT45系列的Flash接口只需将相应的管脚相连即可,只不过要将AduC812设为主机,而AT45D041自然以是从机了。在AduC812中有SPI控制寄存器(SPICON)与SPI数据寄存器(SPIDAT),数据寄存器的使用如同使用RS232的Buffer一样简单,控制寄存器的位定义如表3所列。现对其各个位定义进行说明:ISPI:SPI中断位,在每次传送过错SPIDAT中的数据后,置“1”;WCOL:写冲突错误标志位,在写保护状态下编程会导致该位置“1”;SPE:SPI允许控制位,为“0”时禁止;SPIM:主从模式选择位,为“1”时选择主机;CPOL:时钟极性选择,为“0”时,将使CLK在空闲时为低电平;CPHA:时钟相位选择,为“0”时,在时钟上升沿被锁存;SPR1、SPR0:SPI波特率选择位,BITRATE=Fose/4,8,32,64。“00”选择除以4。4.3 SPI操作模式选择AT45系列的Flash支持SPI模式0和3,并且在每个CS信号的下降沿,可通过采样时钟信号的状态自动选择操模式。由于在上电或复位时器件将自动进入缺省的模式3,所以使用械比较可靠。在AduC812的应用中,选择模式0和3对“写”Flash没有差别,但在“读”Flash时,选择模式0会使从Flash读出的数据总缺少一个bit,这可能是模式0中数据有效的时间比较靠后的缘故。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论