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
M25P16中文版的更多相关文章
- 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- Python 资源大全中文版
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- Tensorflow 官方版教程中文版
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...
- JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)
JavaScript资源大全中文版(Awesome最新版) 目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- 数据库SQL Service 2014中文版的安装和配置教程
一.我的电脑环境 1.windows8.1(64位) 2.之前电脑没有安装数据库的软件 二.装机之前准备(我这儿提供百度云保存和下载) 1.下载一个“Sql service 2014中文版” http ...
- Effective C#中文版
我看的书是<Effective C#中文版——改善C#程序的50种方法>,Bill Wagner著,李建忠译.书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值.( ...
随机推荐
- UITableView section 圆角 阴影
在UITableView实现图片上面的效果,百度一下看了别人的实现方案有下面2种: 1.UITableView section里面嵌套UITableView然后在上面实现圆角和阴影, 弊端代码超 ...
- golang反射
要点 1.变量 2.反射 3.结构体反射 4.反射总结以及应用场景 一.变量介绍 1.变量的内在机制 A.类型信息,这部分是元信息,是预定义好的 B.值类型,这部分是程序运行过程中,动态改变的 var ...
- 将 Range 对象赋给变量
有多种方法将现有的 Range 对象赋给变量.本主题对两种不同的方法进行了阐述.在下列示例中,将 Range 对象赋给变量 Range1 和 Range2.例如,下列指令将活动文档中的第一个和第二个单 ...
- JAVA8集合之List
目录: 一.ArrayList概述 二.ArrayList的实现 1)成员变量 2)构造方法 3)元素添加 4)元素删除 5)元素修改 6)集合容量调整 7)集合转数组 三.总结 一.ArrayLis ...
- MySQL中查询、删除重复记录的方法大全
查找所有重复标题的记录: select title,count(*) as count from user_table group by title having count>1; SELECT ...
- java利用itext导出pdf
项目中有一功能是导出历史记录,可以导出pdf和excel,这里先说导出pdf.在网上查可以用那些方式导出pdf,用itext比较多广泛. 导出pdf可以使用两种方式,一是可以根据已有的pdf模板,进行 ...
- Linux中各个文件的作用
1.bin: 存放的是执行的常用指令 2.boot: 启动系统的核心文件 3.dev: Linux将设备映射成文件,而dev中放的就是这些设备文件 4.etc: 各种配置文件 5.home: 用户的主 ...
- eclipse使用技巧心得分享
eclipse使用技巧心得分享 习惯了eclipse开发java程序,公司最近的项目都是idea开发的,同时android studio也是idea原型开发的,在学android开发,所以脱离ec ...
- phpstorm快捷键总结
如果映射的是eclipse的快捷键,又同时安装了英特尔的GPU软件,那么会有这个快捷键冲突 就是快速复制快捷键:ctrl+alt+方向键 会调用英特尔旋转屏幕,禁用掉即可 PhPStorm 是 Je ...
- 11.2.0.1单实例DGduplicate过程
记录一次duplicate完整过程1)环境说明数据库版本oracle11.2.0.1,os linux 6.6备库应用的归档,最近一次是三个月前,由于DG环境以前是好的,因此直接迁移数据即可.本次使用 ...