【FPGA】SPI-FLASH-M25P16手册解读

这篇具有很好参考价值的文章主要介绍了【FPGA】SPI-FLASH-M25P16手册解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

M25P16概述:

M25P16是一款带有先进写保护机制和高速SPI总线访问的串行Flash存储器。M25P16特点如下:

  • 存储结构:16M Bit(2M Byte)的存储空间,一共32个扇区(sector),每个扇区256页,每页256字节,每个字节的的存储地址由扇区地址(8bit)+页地址(8bit)+字节地址(8bit)构成。
  • SPI总线兼容的串行接口。
  • 可以单扇区擦除,也可以整块擦除。
  • 可以同时编程1~256字节,页编程速率高达256Byte/1.4ms,即写入一页数据需要1.4ms。
  • 数据保存至少20年。
  • 只支持SPI工作模式0和3。

m25p16,单片机,fpga

M25P16引脚图如下:

m25p16,单片机,fpga

m25p16,单片机,fpga

引脚描述:

m25p16,单片机,fpga

C: 时钟信号,相当于SPI总线的SCLK。

D: 数据输入,相当于SPI总线的主机输出、从机输入MOSI。

Q: 数据输出,相当于SPI总线的主机输入、从机输出MISO。

S#: 片选信号,相当于SPI总线的片选信号CS_N。

HOLD: 在选中期间期间输出高阻态,实际上比较像SDRAM的“掩码”。

W#: 写保护,低电平有效,在写保护有效时无法写入数据。

VCC: 电源。

VSS : 电源地。

M25P16工作原理和保护机制

1.工作原理:
  • M25P16写入一个字节数据需写使能(WREN)和写入(PP)指令,采用这两个指令实现单页编程。对于某个单字节空间的操作,在使用PP指令之前需要对其擦除(FFh)。擦除操作可通过单块擦除指令(SE)和整块擦除(BE)来完成。擦除之前需要先执行WREN指令。
  • 当片选信号被拉为低电平,在时钟信号的第一个下降沿开始采样数据输入信号。每个指序列都是以单字节指令代码开头,紧接着就是地址或数据。在读取数据、快速读取数据、读状态寄存器、读标识和读电子签名时,数据输出序列紧随输入指令序列。当数据输出序列的所有数据位都输出后,片选信号置为高电平。而在页数据写入、单块擦除、整块擦除、写状态寄存器、写使能和写无效时,片选信号必须在一个字节内置为高电平。否则,指令不执行。也就是说,拉低片选信号后,时钟信号必须是8的整数倍。在写状态寄存器周期、数据写入周期或者擦除周期,则忽略任何对存储空间的访问,并不会对这些周期产生影响。
2.保护机制

使用非易失性存储设备的环境可能噪声很大。没有SPI设备能在噪声过大的情况下正常工作。为了解决这个问题,M25P16拥有以下数据保护机制:

a.开机复位和内部定时器(tPUW)可以在电源超出操作规范时提供保护,防止意外变化;

b.编程、擦除和写状态寄存器指令在被接受执行之前,检查它们是否是由8的倍数的时钟脉冲组成;

c.所有修改数据的指令之前都必须有一个写使能指令来设置写使能锁存器位。这个比特通过以下事件返回到它的重置状态。

SPI模式支持:只支持模式00和模式11

m25p16,单片机,fpga

CPOL(时钟极性)和CPHA(时钟相位)判断:

  • 时钟的极性(CPOL)用来决定在总线空闲时,同步时钟(SCK)信号线上的电位是高电平还是低电平。当时钟极性为0时(CPOL=0),SCK信号线在空闲时为低电平;当时钟极性为1时(CPOL=1),SCK信号线在空闲时为高电平;
  • 当时钟相位为1时(CPHA=1),在SCLK的偶数沿进行数据采样,当时钟相位为0时(CPHA=0),在SCLK的奇数沿进行数据采样;采样的上升沿和下降沿根据CPOL决定。
  • m25p16,单片机,fpga

  • m25p16,单片机,fpga

操作指令

m25p16,单片机,fpga

  • m25p16,单片机,fpga

M25P16时钟频率

  • 需要注意的是M25P16普通读支持的频率如下,此时我们进行四分频,选择12.5M这个频率:

m25p16,单片机,fpga

  • 此外,各指令在发出后,仍需要一定的时间才能真正执行完,各个指令所需的时间如下:

m25p16,单片机,fpga

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

m25p16,单片机,fpga

m25p16,单片机,fpga

M25P16指令操作

m25p16,单片机,fpga

读ID--Read Identification (RDID):1字节的指令、3字节的ID数据

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

m25p16,单片机,fpga

m25p16,单片机,fpga

读数据--Read Data Bytes (READ):1字节指令+3字节地址+1字节数据

m25p16,单片机,fpga

读数据操作,操作指令为03h,要执行数据读指令,首先拉低片选信号选中 Flash 芯片,随后写入数据读(READ)指令,紧跟指令写入 3 字节的数据读取首地址(A23-A0),指令和地址会在串行时钟上升沿被芯片锁存。随后存储地址对应存储单元中的数据在串行时钟下降沿通过串行数据总线输出。 数据读取首地址可以为芯片中的任何一个有效地址,使用数据读(READ)指令可以对芯 片内数据连续读取,当首地址数据读取完成,会自动对首地址的下一个地址进行数据读取。若最高位地址内数据读取完成,会自动跳转到芯片首地址继续进行数据读取,只有再次拉高片选信号,才能停止数据读操作,否者会对芯片执行无线循环读操作。具体时序如下:

m25p16,单片机,fpga

读取状态寄存器--Read Status Register (RDSR):1字节指令+2字节数据

m25p16,单片机,fpga

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

m25p16,单片机,fpga

WIP:

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

WEL:

WEL (Write Enable Latch)位表示内部Write Enable Latch的状态。当设置为1时,内部写使能被设置,当设置为0时,表示没有接收写状态寄存器,页编程或擦除指令。

BP2、BP1、BP0: 块保护(BP2,BP1, BP0)位是非易失性的。它们定义了被软件保护的区域的大小

编程和擦除指令。这些位是用写状态寄存器(WRSR)指令写的。

m25p16,单片机,fpga

写使能时序--Write Enable (WREN):1字节指令

m25p16,单片机,fpga

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

m25p16,单片机,fpga

扇区擦除--Sector Erase (SE):1字节指令+3字节地址

m25p16,单片机,fpga

扇区擦除(Sector Erase)操作,简称 SE,操作指令为 D8h,扇区擦除指令是将 Flash 芯片中的被选中扇区的所有存储单元设置为全 1,在 Flash 芯片写入扇区擦出指令之前,需要先写入写使能 (WREN)指令;发送完擦除指令后就进入擦除周期(持续时间tSE或tBE)。发送擦除指令之前必须先发送写使能指令。时序图如下:

m25p16,单片机,fpga

页写--Page Program (PP):1字节指令+3字节地址+1字节数据

m25p16,单片机,fpga

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

Flash 芯片中一页最多可以存储 256 字节数据,这也表示页写操作一次最多向 Flash 芯片写入 256 字节数据若写入超出256字节,则超出字节会覆盖本页原有的数据。

页写时序如下:

m25p16,单片机,fpga文章来源地址https://www.toymoban.com/news/detail-758012.html

到了这里,关于【FPGA】SPI-FLASH-M25P16手册解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32 CubeMX】SPI_Flash_W25Q64的操作方法

    在嵌入式系统开发中,使用外部 SPI Flash 存储器可以为 STM32 微控制器提供额外的存储空间,以存储程序代码、配置数据等。W25Q64 是一款常见的 SPI Flash 存储器,具有64Mb容量和SPI接口。本文将介绍如何使用 STM32 CubeMX 结合 SPI 库与 W25Q64 SPI Flash 进行集成,以便在 STM32 微控制器上

    2024年02月22日
    浏览(33)
  • 【STM32】SPI初步使用 读写FLASH W25Q64

    (1) SS( Slave Select):从设备选择信号线,常称为片选信号线,每个从设备都有独立的这一条 NSS 信号线,当主机要选择从设备时,把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行 SPI通讯。所以 SPI通讯以 NSS 线置低电

    2024年02月10日
    浏览(38)
  • 【FPGA】SPI读写flash

    SPI是同步全双工通信,通信原理以主从方式工作,通常有一个主设备和一个或多个从设备,需要4根线连接:MISO(主设备数据输入)、MOSI(主设备输出)、SCLK(时钟)、CS(片选)。通常拉低对应从机的片选来收发数据。 MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 SCLK:时

    2024年02月05日
    浏览(28)
  • 【FPGA】SPI读写FLASH闪存

    通信原理 SPI也是以主从方式工作,通常需要四根线来完成数据的传输,分别是MISO MOSI CS SCLK。以下是这四根线代表的含义: MISO:主设备输入,从设备输出 MOSI:主设备输出,从设备输入 CS :片选信号,选择进行通信的从设备 SCLK:时钟线,由主设备产生给到从设备 SPI通信的

    2024年02月16日
    浏览(28)
  • FPGA使用SPI控制FLASH

    通过控制FLASH芯片进一步熟悉SPI协议 Flash 存储器 : Flash 存储器是一种非易失性存储器,它具有 RAM 和 ROM 的一些特点。与 ROM 类似,Flash 存储器的内容在断电时不会丢失,但与 RAM 类似,它可以通过编程来修改存储的内容。Flash 存储器通常用于嵌入式系统中存储程序代码、配置

    2024年03月19日
    浏览(40)
  • FPGA模块——SPI协议(读写FLASH)

    芯片引脚图: 内部结构图: 存储区域总共分成了32块,每块64KB。每块又分成了16个部分,每个部分4KB。方便进行读取和局部操作。 电路设计 SPI的四种模式 这里使用这个模式: 主机和从机在时钟上升沿放入要输出的数据,在时钟下降沿读取要输入的数据。 8个时钟后交换一个

    2024年02月05日
    浏览(36)
  • FPGA解析串口指令控制spi flash完成连续写、读、擦除数据

    最近在收拾抽屉时找到一个某宝的spi flash模块,如下图所示,我就想用能不能串口来读写flash,大致过程就是,串口向fpga发送一条指令,fpga解析出指令控制flah,这个指令协议目前就是: 55 + AA + CMD + LEN_h + LEN_m + LEN_l + DATA CMD:01 写;02 读;03 擦除(片擦除); LEN_h/m/l:三个字

    2024年02月03日
    浏览(30)
  • 【STM32CubeMX学习】SPI读写W25Q16

            SPI分为主从工作模式,通常有一个主设备和一个或多个从设备,本文中MCU为主机,W25Q16为从机。 SPI通信有以下四根线: MISO:主设备数据输入,从设备数据输出。 MOSI:主设备数据输出,从设备数据输入。 SCLK:时钟信号,由主设备产生。 CS:从设备片选信号,由

    2024年02月03日
    浏览(33)
  • 基于STM32实现W25Q16读写操作(spi)

    在之前我们学习了flash闪存,这个更多的是内部数据存储,容量也是会比较小。这次我们来学习一下更多的存储单元w25q16,顺便了解spi———串行外围设备接口。 在我们的核心板子上基本都会有这么一块芯片,只是有的容量会计较大,大家可以查看板子的原理图,如图所示:

    2024年01月19日
    浏览(27)
  • MicroBlaze系列教程(7):AXI_SPI的使用(M25P16)

    本文是Xilinx MicroBlaze系列教程的第7篇文章。 AXI_SPI简介 Xilinx AXI-SPI IP共有两个:一个是标准的AXI_SPI,即4线制SPI,CS、SCLK、MOSI和MISO,另一个是AXI_Quad SPI,支持配置成标准SPI、2位数据线Dual SPI和4位数据线Quad SPI模式,在Xilinx ISE开发环境下有两个IP核是分开的,而在Vivado开发环境

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包