M25P16手册知识整理以及Verilog实现spi协议读写flash思路

1.M25P16概述

        M25P16是⼀款带有先进写保护机制和⾼速SPI总线访问的2M字节串⾏Flash存储器,该存储器主要特点有:

  • 16M Bit(2M Byte)字节的存储空间,分32个扇区,每个扇区256页,每页256字节;
  • SPI总线兼容的串行接口
  • 能单块擦除和整块擦除:
  • 可以同时编程1~256字节,页编程速率高达256Byte/1.4ms,写⼊1页数据所需时间为1.4 ms(典型值);
  • 2.7~3.6 V单电源供电电压;
  • SPI总线和50 MHz数据传输时钟频率;
  • 每扇区擦写次数保证10万次、数据保存期限⾄少20年;
  • 支持SPI工作模式0和3

        该款器件特别适⽤于⼀体化打印机、PC主板、机顶盒、CD唱机和DVD视盘机、数字电视、数码相机、图形卡和平⾯显⽰器等各种应⽤的代码和数据存储需求。 其引脚排列图如下图所⽰。其部分主要引脚功能描述如下:

   

  • 引脚C:串⾏时钟信号输⼊。 
  • 引脚D:输⼊串⾏数据。
  • 引脚Q:输出串⾏数据。
  • 引脚S:⽚选,该引脚低电平有效。若为⾼电平,串⾏数据输出(Q)为⾼阻抗状态。
  • 引脚W:写保护端,能够限制写指令和擦除指令的操作区域,低电平有效。
  • 引脚HOLD:控制端,暂停串⾏通信。在HOLD状态下,串⾏数据输出(Q)为⾼阻抗,时钟输⼊(C)和数据输⼊(D)⽆效。

2.SPI接⼝与M25P16的连接以及SPI模式

      单⽚机SPI接⼝与M25P16的连接图如下图所示

            这 些 设 备 可 以 由 微 控 制 器 驱 动 , 其 SPI外 设 运 行 在 以 下 两 种 模 式 中 的 任 何 一 种 :

  •       __cpol =0, ceph =0
  •       __cpol =1, cpha =1

          对 于 这 两 种 模 式 , 输 入 数 据 锁 存 于 串 行 时 钟 (C)的 上 升 沿  输 出  ,数 据 从 串 行 时 钟 (C)的 下 降 沿 可 用 。

        两 种 模 式 之 间 的 差 异 , 如 图 4所 示 。 , 是 总 线 主 处 于 待 机 模 式 且 不 传 输 数 据 时 的 时 钟 极 性 :

      -当 CPOL=0, CPHA=0时 , C值 为 0

      -当 CPOL=1, CPHA=1时 , C值 为 1

3.工作原理

          M25P16写⼊⼀个字节数据需写使能(WREN)和写⼊(PP)指令。采⽤这两个指令实现单页编程。对于某个单字节空间的操作,在使⽤PP 指令之前需要对其擦除(FFh)。擦除操作可通过单块擦除指令(SE)和整块擦除(BE)来完成。擦除之前需要先执⾏WREN指令。当⽚选S信号为低电平,则选中该器件,此时处于有效电源模式;当⽚选S信号为⾼电平,器件未被选中,但能在所有内部指令周期(写⼊,擦除,写状态寄存器)完成前保持有效电源模式。等指令周期完成则进⼊备⽤电源模式。通过特殊指令来读取或设置状态寄存器内的状态位和控制位,实现相应操作。

         在该器件所有输⼊输出的指令、地址和数据中,数据置于⾸位。当⽚选信号被拉为低电平,在时钟信号的第⼀个下降沿开始采样数据输⼊ 信号。每个指令序列都是以单字节指令代码开头,紧接着就是地址或数据。在读取数据、快速读取数据、读状态寄存器、读标识和读电⼦签名时,数据输出序列紧随输⼊指令序列。当数据输出序列的所有数据位都输出后,⽚选信号置为⾼电平。⽽在页⾯数据写⼊、单块擦除、整块擦除、写状态寄存器、写使能和写⽆效时,⽚选信号必须在⼀个字节内置为⾼电平。否则,指令不执⾏。也就是说,拉低⽚选信号后,时 钟信号必须是8的整数倍。在写状态寄存器周期、数据写⼊周期或者擦除周期,则忽略任何对存储空间的访问,并不会对这些周期产⽣影响。

4.指令集

     在本项目中只用到WREN指令、SE指令、RDSR指令、PP指令、RDID指令、READ指令即可,指令如下图所示

 5.时间参数

     M25P16支持频率如下:

    页写, 全擦除,扇区擦除等指令在发出后,仍需要一定的时间才能真正执行完,各个指令所需的时间如下:

    两个指令之间需要间隔一定的时间(比如发送全擦除指令前需要发送写使能指令,在这两个指令之间就需要间隔一定的时间),具体时间如下:

6.存储结构

   M25P16一共2M Byte字节的存储空间,分32个扇区(SECTOR),每个扇区256页(PAGE),每页256字节(BYTE)。每个字节的的存储地址由扇区地址(8bit)+页地址(8bit)+字节地址(8bit)构成。结构图及存储地址如下所示:

  

7.M25P16指令操作

  • 页编程 (PP)

要发送一个数据字节,需要两个指令:写使能指令(WREN)和页编程指令(PP),然后是内部页编程周期(持续时间为tPP)。Page Program (PP)指令允许一次编程最多256字节(将位从1改为0),前提是它们位于同一内存页上的连续地址中。

  • 扇区擦除和整块擦除 (SE and BE)

页程序(PP)指令允许位从1重置为0。在此之前,需要将内存字节全部擦除为FFh。这既可以使用扇区擦除指令(SE)实现擦除一个扇区,也可以使用整块擦除指令(BE)实现整块擦除。发送完擦除指令后就进入擦除周期(持续时间tSE或tBE)。发送擦除指令之前必须先发送写使能指令。

  • 写使能 (WREN)

写使能(WREN) 指令用于设置内部写使能锁存器位。在页编程(PP)、扇区擦除(SE)、整块擦除(BE)和写状态寄存器(WRSR)之前,必须先执行写使能。当片选信号拉低后,就开始执行写使能指令,接着传输指令。指令发送完后,片选信号置为高电平。写使能时序图如下:

  • 读ID(RDID)

Read Identification (RDID)指令允许读取8位的制造商标识,然后读取两个字节的设备标识。设备标识由设备制造商指定,第一个字节表示内存类型(20h),第二个字节表示内存类型(20h),第三个字节表示设备的内存容量(15h)。

 读ID时序图如下:

  • ​​​​​​​读状态寄存器(RDSR)

     读取状态寄存器(RDSR)指令允许读取状态寄存器。状态寄存器可以在任何时候被读取,即使是在页编程、擦除或写状态寄存器周期正在进行。当其中一个循环正在进行时,建议检查WIP位,然后再向设备发送新指令。

       WIP: WIP (Write In Progress)位表示内存是否处于写状态寄存器、页编程或擦除周期。当设置为1时,表示设备处于工作状态,当设置为0时,表示设备处于空闲状态。

       WEL: WEL (Write Enable Latch)位表示内部Write Enable Latch的状态。当设置为1时,内部写使能被设置,当设置为0时,内 部 写 使 能 锁 存 复 位 , 不 接受 写 状 态 寄 存 器 , 程 序 或 擦 除 指 令 。

       BP2、BP1、BP0:块 保 护 (BP2, BP1, BP0)位 是 非 易 失 性 的 。 它 们 定 义 了 软 件 保 护 区 域 的 大 小 , 以 防 止 程 序 和 擦 除 指 令 。 这 些 位 是 用 写 状 态 寄 存 器 (WRSR)指 令 写 入 的 。

读状态寄存器时序图如下:

  • ​​​​​​​读数据(READ)

       首先通过驱动片选信号来选择设备,片选信号低有效。读取数据的指令字节(READ)指令后面跟着一个3字节的地址(A23-A0),每个位在串行时钟(SCLK)的上升沿期间被锁存。然后,在串行数据输出(Q)上输出数据。读数据时序图如下:

8.模块框图

9.状态转移图

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值