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
图9
4、M25P16的读写驱动程序:
具体的程序例子可参考: 基于STM8单片机的M25P16读写驱动程序

Flash存储芯片M25P16中文资料相关推荐

  1. stm32f0 大小端_STM32F0中文资料.pdf

    STM32F0中文资料 RM0091 参考手册 STM32F05xxx 先进的ARM 核32 位微控制器 简介 本参考手册向应用程序开发人员提供关于如何使用STM32F05xxx 微控制器的内存和外设 ...

  2. Microchip中文资料下载

    PIC24系列参考手册部分章节中文翻译 Section 7. Reset http://ww1.microchip.com/downloads/en/DeviceDoc/39712a_cn.pdf S ...

  3. Microchip最新中文资料下载

    PIC24系列参考手册部分章节中文翻译 Section 7. Reset http://ww1.microchip.com/downloads/en/DeviceDoc/39712a_cn.pdf S ...

  4. Microchip中文资料下载 .

    PIC24系列参考手册部分章节中文翻译 Section 7. Reset http://ww1.microchip.com/downloads/en/DeviceDoc/39712a_cn.pdf S ...

  5. TMS320F2812中文资料介绍

    TMS320F2812中文资料介绍 简介:德州仪器所生产的TMS320F2812 数字讯号处理器是针对数字控制所设计的DSP,整合了DSP 及微控制器的最佳特性,主要使用在嵌入式控制应用,如数字电机控 ...

  6. tl494c封装区别_TL494参数,功能介绍,TL494应用电路图,封装,管脚及TL494 PDF中文资料手册...

    TL494中文资料 功能介紹 中文 : 功能介紹 英文 : Voltage mode PWM control circuit. 品牌 : Contek 封装 : 引脚 : 功能介紹 中文 : 功能介紹 ...

  7. Sqlite中文资料

    Sqlite中文资料 介绍 这是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展.SQLite是一个实现嵌入式SQL数据库引擎 ...

  8. NDK - JNI官方中文资料

    NDK-JNI官方中文资料 声明 该篇文章完全引用自<JNI完全手册>完整版,用来方便查询查阅.感谢原文档作者. 文档所依赖的版本是比较低的,但是恰恰是低版本才能更容易上手学习.文档也有些 ...

  9. FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用

    写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 在上篇文章,简要介绍了SPI协 ...

最新文章

  1. performActionForShortcutItem方法未触发
  2. python爬虫1——获取网站源代码(豆瓣图书top250信息)
  3. 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用
  4. C# WebBrowser 设置代理
  5. 【解析】基础实验4-2.5 关于堆的判断 (25 分)
  6. 能用python做信号处理吗_Python中的信号处理
  7. javascript学习笔记 null和undefined
  8. 《大道至简》第二篇读后感
  9. 【elasticsearch】 elasticsearch 写一致性
  10. 美国专家声讨物联网安全 面对攻击如纸糊
  11. Android 最常用的设计模式五 安卓源码分析——建造者模式
  12. 前后端RSA加密梳理
  13. 企业与个人必备安全测试工具
  14. 将QTextEdit右键菜单设置为中文
  15. 爱数中标浙江红蜻蜓鞋业云共享项目
  16. php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例
  17. php画网络拓扑图,jtopo js插件绘制网络拓扑图
  18. 思想,坚持,信仰,一切
  19. 记录一次Git解决CONFLICT冲突
  20. android 多包名apk,一个项目如何编译多个不同签名、包名、资源等,的apk?

热门文章

  1. c语言 =0x20,0x20(十六进制0x20等于多少)
  2. 已经被美团、神策“问烂”了的三道多线程面试题,你能答对几道?
  3. Creator3D:shader_这种置灰效果看起来挺牛逼,原来实现起来这么简单
  4. python 计量做hp滤波_关于HP滤波法 怎么取得趋势成分和波动成分
  5. 一文看懂推荐系统:排序04:视频播放建模
  6. 第十八章_Redis缓存预热+缓存雪崩+缓存击穿+缓存穿透
  7. 推荐一款 macOS 终端下自动配置系统代理的神器 ZSH-OSX-AutoProxy
  8. OTT TV影音系统如何做到不丢帧、不卡顿、不花屏
  9. javax.websocket 使用指南
  10. c语言注释的正规文法 编译原理,编译原理:正规式、正规文法与自动机