Flash M25P64驱动开发与应用
扫描二维码
随时随地手机看文章
随着信息产业的飞速发展,以微处理器为核心的嵌入式系统在智能化仪表、实时控制等应用中占有重要地位。而在许多实际应用中经常要求支持大容量数据存储功能。意法半导体公司推出的一款8 M字节串行Flash存储器M25P64则为大容量数据存储提供了一种解决方案。在此详细介绍该M25P64型Flash存储器的主要特点,工作原理,驱动程序开发以及典型应用实例。
2 M25P64概述
M25P64是一款带有先进写保护机制和高速SPI总线访问的8 M字节串行Flash存储器,该存储器主要特点:8 M字节的存储空间;写入1页数据所需时间为1.4 ms(典型值);能单块擦除和整块擦除:2.7~3.6 V单电源供电电压;SPI总线和50 MHz数据传输时钟频率;每扇区擦写次数保证10万次、数据保存期限至少20年。该款器件特别适用于一体化打印机、PC主板、机顶盒、CD唱机和DVD视盘机、数字电视、数码相机、图形卡和平面显示器等各种应用的代码和数据存储需求。
M25P64采用SOl6封装,其引脚排列图如图1所示。其部分主要引脚功能描述如下:引脚Q:输出串行数据。引脚D:输入串行数据。引脚C:串行时钟信号输入。引脚S:片选,该引脚低电平有效。若为高电平,串行数据输出(Q)为高阻抗状态。引脚HOLD:控制端,暂停串行通信。在HOLD状态下,串行数据输出(Q)为高阻抗,时钟输入(C)和数据输入(D)无效。引脚W:写保护端,能够限制写指令和擦除指令的操作区域,低电平有效。
3 M25P64工作原理
M25P64写入一个字节数据需写使能(WREN)和写入(PP)指令,后者具有4个字节。采用这两个指令实现单页编程。对于某个单字节空间的操作,在使用PP指令之前需要对其擦除(FFh)。擦除操作可通过单块擦除指令(SE)和整块擦除(BE)来完成。擦除之前需要先执行WREN指令。当片选S信号为低电平,则选中该器件,此时处于有效电源模式;当片选S信号为高电平,器件未被选中,但能在所有内部指令周期(写入,擦除,写状态寄存器)完成前保持有效电源模式。等指令周期完成则进入备用电源模式。通过特殊指令来读取或设置状态寄存器内的状态位和控制位,实现相应操作。
在该器件所有输入输出的指令、地址和数据中,数据置于首位。当片选信号被拉为低电平,在时钟信号的第一个下降沿开始采样数据输入信号。每个指令序列都是以单字节指令代码开头,紧接着就是地址或数据。在读取数据、快速读取数据、读状态寄存器、读标识和读电子签名时,数据输出序列紧随输入指令序列。当数据输出序列的所有数据位都输出后,片选信号置为高电平。而在页面数据写入、单块擦除、整块擦除、写状态寄存器、写使能和写无效时,片选信号必须在一个字节内置为高电平。否则,指令不执行。也就是说,拉低片选信号后,时钟信号必须是8的整数倍。在写状态寄存器周期、数据写入周期或者擦除周期,则忽略任何对存储空间的访问,并不会对这些周期产生影响。表l为M25P64的指令表。
(1)写使能(WREN) 写使能指令用于设置内部写使能锁存器位。在页面数据写入、单块擦除、整块擦除和写状态寄存器之前,必须先执行写使能。当片选信号拉低后,就开始执行写使能指令,接着传输指令。指令发送完后,片选信号置为高电平。写使能时序如图2所示。
(2)读状态寄存器(RDSR)几乎在任何时刻都能读取状态寄存器的值,甚至器件处于写入数据、擦除或写状态寄存器周期时。此时建议在传输新指令之前应先检查WIP位。状态寄存器的格式如表2所示。
表2中,WIP位能够确定存储空间是否处于写状态寄存器、写入或擦除周期。WIP为“1”时则处于以上几个周期。WEL位能够确定内部写使能锁存器的状态。写入“1”时置位。写入“0”时,写状态寄存器、数据写入和擦除指令都无效。BP2,BPl,BPO位确定软件写保护的区域大小,并且是非易失性的。SRWD位用于在写无效位和写保护引脚工作时可使该器件处于硬件保护模式。此模式下,3个非易失性位变为只读位,并且写状态寄存器指令不会执行。
(3)读取数据(READ) 首先需将片选信号拉为低电平,接着读取数据指令和3个字节的地址(A23~A0)。然后通过数据输出引脚(O)输出该地址存储内容。地址的首字节可以是任意值。在输出每个字节数据后,地址自动加1,跳至下一地址。因此,整个存储空间的数据读取可通过一个简单的数据读取指令(READ)完成。当达到最高地址时,地址计数器自动清零。片选信号置为高电平可终止数据读取指令(READ)。数据输出的任何时候,片选信号都置为高电平。该器件处于擦除或数据写入周期时,数据读取指令无效并且对当前周期无任何影响。其页面数据写入指令时序如图3所示。
(4)页面数据写入(PP)执行PP指令之前,必须先执行写使能指令。写使能指令解码后,器件设置为写使能锁存器。片选信号必须拉低,接着是PP指令代码、3字节的地址和数据输入(至少一个字节)。如果地址的低8位(A7~AO)不全是O而写入的数据字节超出当前页的地址,超出部分则从下一页首地址开始写入。在整个数据写入时序中,片选信号必须拉低。如果写入的数据字节数大于256,则先前所锁存的数据被丢弃。将正确写入最后256态寄存器核对WIP位的值。若为1,则表明处于自定时数据写入周期;若为0,则此周期完成。如果某一页受到块保护(BP2,BPl,BP0位),则不能执行对此页的数据写入操作。按照上述指令操作,能够获得驱动程序的流程图。图4为数据写入(PP)操作的程序流程。
4 典型应用
LPC2138是基于支持实时仿真和嵌入式跟踪的32/16位ARM7TDMIS CPU的微控制器,带有512 KB高速Flash和32KB的SRAM。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行,非常适合嵌入式产品。LPC2138带有SPI接口。该器件与M25P64连接所构成的存储系统简单易行,使用方便。图5是其硬件连接图。M25P64的片选信号(S)与LPC2138的PO.20相连,写保护端(W)与P0.2l相连。PO.20和PO.2l作为普通I/O端口。M25P64的串行数据输出(Q)、串行数据输入(D)和串行时钟输入(C)与SPI接口的输入输出分别对应相连。由M25P64指令时序图可知:片选信号(S)在指令执行之前为低电平,等到指令执行完则才置为高电平。因此,与其连接的PO.20必须是普通的I/O端口功能,而不是引脚第2功能SSEL1。一般情况下,与写保护端(W)相连的PO.2l置低电平即可。该电路图连接简单。试验表明由LPC2138与M25P64连接所构成的存储系统能够有效稳定运行。
5 结语
本文介绍了一款新型的串行Flash存储器M25P64的主要特点,工作原理,驱动程序的开发,并且设计了一个典型的M25P64应用系统。该系统结构简单、运行稳定,能实现大容量数据存储。