M25P16中文版

转载:https://blog.csdn.net/weiweiliulu/article/details/23666717

1、M25P16概述
    M25P16是一款带有先进写保护机制和高速SPI总线访问的2M字节串行Flash存储器,该存储器主要特点:2M字节的存储空间,分32个扇区,每个扇区256页,每页256字节;写入1页数据所需时间为1.4 ms(典型值);能单块擦除和整块擦除:2.7~3.6 V单电源供电电压;SPI总线和50 MHz数据传输时钟频率;每扇区擦写次数保证10万次、数据保存期限至少20年。该款器件特别适用于一体化打印机、PC主板、机顶盒、CD唱机和DVD视盘机、数字电视、数码相机、图形卡和平面显示器等各种应用的代码和数据存储需求。
    M25P16采用SO16封装或VDFPN8封装,其引脚排列图如图1与图2所示。其部分主要引脚功能描述如下:
    引脚Q:输出串行数据。
    引脚D:输入串行数据。
    引脚C:串行时钟信号输入。
    引脚S:片选,该引脚低电平有效。若为高电平,串行数据输出(Q)为高阻抗状态。
    引脚HOLD:控制端,暂停串行通信。在HOLD状态下,串行数据输出(Q)为高阻抗,时钟输入(C)和数据输入(D)无效。
    引脚W:写保护端,能够限制写指令和擦除指令的操作区域,低电平有效。
              
                      图1                                                图2
2、单片机SPI接口与M25P16的连接图如图3
          
                                             图3
3、M25P16工作原理
    M25P16写入一个字节数据需写使能(WREN)和写入(PP)指令。采用这两个指令实现单页编程。对于某个单字节空间的操作,在使用PP指令之前需要对其擦除(FFh)。擦除操作可通过单块擦除指令(SE)和整块擦除(BE)来完成。擦除之前需要先执行WREN指令。当片选S信号为低电平,则选中该器件,此时处于有效电源模式;当片选S信号为高电平,器件未被选中,但能在所有内部指令周期(写入,擦除,写状态寄存器)完成前保持有效电源模式。等指令周期完成则进入备用电源模式。通过特殊指令来读取或设置状态寄存器内的状态位和控制位,实现相应操作。
    在该器件所有输入输出的指令、地址和数据中,数据置于首位。当片选信号被拉为低电平,在时钟信号的第一个下降沿开始采样数据输入信号。每个指令序列都是以单字节指令代码开头,紧接着就是地址或数据。在读取数据、快速读取数据、读状态寄存器、读标识和读电子签名时,数据输出序列紧随输入指令序列。当数据输出序列的所有数据位都输出后,片选信号置为高电平。而在页面数据写入、单块擦除、整块擦除、写状态寄存器、写使能和写无效时,片选信号必须在一个字节内置为高电平。否则,指令不执行。也就是说,拉低片选信号后,时钟信号必须是8的整数倍。在写状态寄存器周期、数据写入周期或者擦除周期,则忽略任何对存储空间的访问,并不会对这些周期产生影响。表l为M25P16的指令表。
    
                     表1

    (1)写使能(WREN) 写使能指令用于设置内部写使能锁存器位。在页面数据写入、单块擦除、整块擦除和写状态寄存器之前,必须先执行写使能。当片选信号拉低后,就开始执行写使能指令,接着传输指令。指令发送完后,片选信号置为高电平。写使能时序如图4所示。
    
                                  图4
    (2)读标识指令(RDID) 首先需将片选信号拉为低电平,接着写入读标识指令(RDID),然后通过数据输入引脚读入3字节标识码。片选信号置为高电平终止数据读取指令。时序如图5所示:
    
                                                图5
    (3)读状态寄存器(RDSR)几乎在任何时刻都能读取状态寄存器的值,甚至器件处于写入数据、擦除或写状态寄存器周期时。此时建议在传输新指令之前应先检查WIP位。状态寄存器的格式如表2所示。
    
                                    表2
表2中,WIP位能够确定存储空间是否处于写状态寄存器、写入或擦除周期。WIP为“1”时则处于以上几个周期。WEL位能够确定内部写使能锁存器的状态。写入“1”时置位。写入“0”时,写状态寄存器、数据写入和擦除指令都无效。BP2,BPl,BPO位确定软件写保护的区域大小,并且是非易失性的。SRWD位用于在写无效位和写保护引脚工作时可使该器件处于硬件保护模式。此模式下,3个非易失性位变为只读位,并且写状态寄存器指令不会执行。
    (4)读取数据(READ) 首先需将片选信号拉为低电平,接着写读取数据指令和3个字节的地址(A23~A0)。然后通过数据输出引脚(O)输出该地址存储内容。地址的首字节可以是任意值。在输出每个字节数据后,地址自动加1,跳至下一地址。因此,整个存储空间的数据读取可通过一个简单的数据读取指令(READ)完成。当达到最高地址时,地址计数器自动清零。片选信号置为高电平可终止数据读取指令(READ)。数据输出的任何时候,片选信号都置为高电平。该器件处于擦除或数据写入周期时,数据读取指令无效并且对当前周期无任何影响。其页面数据写入指令时序如图6所示。
    
                                             图6
    (5)页面数据写入(PP)执行PP指令之前,必须先执行写使能指令。写使能指令解码后,器件设置为写使能锁存器。片选信号必须拉低,接着是PP指令代码、3字节的地址和数据输入(至少一个字节)。如果地址的低8位(A7~AO)不全是O而写入的数据字节超出当前页的地址,超出部分则从下一页首地址开始写入。在整个数据写入时序中,片选信号必须拉低。如果写入的数据字节数大于256,则先前所锁存的数据被丢弃。将数据正确写入之后便可核对状态寄存器WIP位的值。若为1,则表明处于自定时数据写入周期;若为0,则此周期完成。如果某一页受到块保护(BP2,BPl,BP0位),则不能执行对此页的数据写入操作。按照上述指令操作,能够获得驱动程序的流程图。图7为数据写入(PP)操作的程序流程。
    
                                             图7
    (6)扇区擦除指令(SE) 首先发送写使能指令(WREN),接着发送扇区擦除指令(SE),然后写入需擦除扇区的3字节地址。时序如图8
    
                                 图8
    (7)整块擦除指令(BE) 首先发送写使能指令(WREN),接着发送整块擦除指令(BE),便可将芯片所有数据擦除,所有的字节数据都变为FF。时序

如图9

原文地址:https://www.cnblogs.com/wandashuai/p/10741058.html