FLASH文档总结(M25P16)

简介

FLASH即闪存,是和EEPROM一样可以使用电擦除的非易失性的存储器,FLASH属于广义的EEPROM(平常说的一般是狭义上的EEPROM)。

FLASH和EEPROM的区别:

  1. FLASH的容量往往比EEPROM大很多,FLASH在大容量上的性价比更高。(M和K)
  2. 擦写单位:
  • EEPROM通常以字节为单位进行擦写,即可以单独擦除或编程每个字节。
  • Flash存储器通常以扇区(Sector)或页(Page)为单位进行擦写,意味着需要擦除整个扇区或页,而无法单独擦除其中的一个字节。
    FLASH的擦除速度更快。

基本特性

协议:高速SPI协议,50MHz Clock Rate (maximum),支持SPI模式0和模式3

容量:16Mbit(32 sector * 256 page * 256 byte)

写操作:范围1-256bytes,时间 1.4ms(typical)

擦除方式:Sector Erase (512 Kbit) 和 Bulk Erase (16Mbit)

信号描述

Serial Data Output (Q).所有数据从该条数据线串行输出,在时钟下降沿输出。

Serial Data Input (D).所有数据从该条数据线串行输入,在时钟上升沿锁存

Serial Clock (C).串行时钟线,提供时钟传入

Chip Select (S).片选信号,拉高时flash处于空闲状态,所有命令执行之前都需要先拉低片选信号。

Hold (HOLD).保持(HOLD)信号用于暂停与设备的任何串行通信,而不取消选择设备。

Write Protect (W).保持(HOLD)信号用于暂停与设备的任何串行通信,而不取消选择设备。

操作特点

Page Programming

要对一个数据字节进行编程,需要两个指令:写启用(WREN),即一个字节,和一个由四个字节加上数据组成的页面程序(PP)序列。接下来是内部程序周期(持续时间tPP)。为了分散这种开销,页面程序(PP)指令允许一次编程最多256个字节(从1位更改为0),

Sector Erase and Bulk Erase

页面程序(PP)指令允许将位从1重置为0。在应用这个程序之前,内存的字节需要被删除到所有1(FFh)。这既可以使用扇区擦除(SE)指令一次实现一个扇区,也可以使用批量擦除(BE)指令在整个内存中实现。这将启动一个内部擦除循环(持续时间为tSE或tBE)。擦除指令之前必须带有写入启用(WREN)指令

Status Register

状态寄存器包含许多可通过特定指令读取或设置(适当)的状态和控制位。

WIP bit.“Write In Progress”(WIP)位指示内存是忙于写入状态寄存器、程序还是擦除周期。(0表示没有)

WEL bit. Write Enable Latch(WEL)位表示内部写入启用锁存器的状态(0表示没有开启)

BP2, BP1, BP0 bits.块保护(BP2、BP1、BP0)位是非易失性的。它们定义了要被软件保护的区域的大小,以防止程序和擦除指令的使用。

SRWD bit.Status Register Write Disable(SRWD)位与写入保护(W)信号一起操作。状态寄存器写禁用(SRWD)位和写保护(W)信号允许将设备置于硬件保护模式。在此模式下,状态寄存器的非易失性(SRWD、BP2、BP1、BP0)位变成只读位。

Protection Modes

程序、擦除和写状态寄存器指令在被执行之前,会检查它们是否由8倍的时钟脉冲组成。

所有修改数据的指令之前都必须带有写入启用(WREN)指令,以设置写入启用锁存器(WEL)位。以下情况会重置该状态:

  1. Power Up(上电)
  2. Write Disable (WRDI) instruction completion (重置Write Enable Latch bit)
  3. Write Status Register (WRSR) instruction completion
  4. Page Program (PP) instruction completion
  5. Sector Erase (SE) instruction completion
  6. Bulk Erase (BE) instruction completion

MEMORY ORGANIZATION

2,097,152 bytes (8 bits each) 32 * 256 * 256

32 sectors (512 Kbits, 65536 bytes each) 256 * 256 = 65536
8192 pages (256 bytes each). 32 * 256

Each page can be individually programmed (bits are programmed from 1 to 0). The device is Sector or Bulk Erasable (bits are erased from 0 to 1) but not Page Erasable.(最小擦除单位——扇区)

memory address organization:sector address(00 - 1F) + page address (00 - FF)+ byte address(00 - FF)

INSTRUCTION

所有的指令,地址和数据都是最高位优先(MSB)进行输入输出。

每个指令序列都以一个单字节的指令代码开始。根据指令的不同,后面可能是地址字节或数据字节,或者两者都有或没有。

对于读取数据类的操作(READ,Fast_Read,RDSR,RDID,RES)后接数据输出序列,并且片选信号线可以在任意位输出后拉高。

对于写入数据类的操作(PP,SE,BE,WRSR,WREN,WRDI等)片选信号必须在字节的边界拉高,否则指令被拒绝,不执行。意味着这类指令在片选信号拉低8的倍数周期后就必须拉高。

在写状态寄存器周期,写周期,擦除周期时,所有的指令都会被忽略。

Write Enable (WREN)——0000_0110

启用写入功能(WREN)指令设置启用写入的锁存器(WEL)位。必须在每个页面程序(PP)、扇区擦除(SE)、批量擦除(BE)和写入状态寄存器(WRSR)指令之前设置写入启用锁存器(WEL)位。通过驱动芯片选择(S)低,发送指令代码,然后驱动芯片选择(S)高,输入写入启用(WREN)指令。

Read Status Register (RDSR)——0000_0101

读取状态寄存器(RDSR)指令允许读取状态寄存器。状态寄存器可以在任何时候被读取,即使在一个程序、擦除或写状态寄存器周期正在进行中。当其中一个循环正在进行时,建议在向设备发送新指令之前检查“正在写入”(WIP)位。也可以连续读取状态寄存器,如图所示

Read Data Bytes (READ)——0000_0011

该指令为数据读取操作,时序如下:

  1. 拉低片选信号,然后发送 READ 指令(0000_0011)。
  2. 在发送 READ (0000_0011)指令之后,发送三个字节的地址(地址由三个字节组成),在上升沿数据锁存。
  3. 然后该地址的内容会在时钟下降沿输出。

在每个字节数据移出后,地址自动增加到下一个更高的地址。因此,可以用一条读取数据字节(READ)指令来读取整个内存。当达到最高地址时,地址计数器会转到000000h,允许读取序列无限期地继续进行。

通过拉高片选停止 Read 指令。在写或者擦除操作时,读指令不会被识别。

Page Program (PP)——0000_0010

页面程序(PP)指令允许在内存中编程字节(将位从1改为0)

  • 在执行该指令之前,必须先执行WREN指令。

页面程序(PP)指令允许在内存中编程字节(将位从1改为0)。

页面程序(PP)指令通过驱动芯片选择(S)拉低来输入,然后在串行数据输入(D).上输入指令码、三个地址字节和至少一个数据字节,如果8个最不重要的地址位(A7-A0)不是全部为零,则超出当前页面末端的所有传输数据都从同一页面的起始地址(从8个最不重要的位(A7-A0)全部为零的地址)进行编程。芯片选择(S)必须在整个序列期间驱动低。

如果写入数据超过256字节,那么前面的数据会被覆盖, 只有最后的256字节数据会被保留。如果少于256字节,则正常写入, 且不会对本页其他字节数据造成影响。

PP指令必须在最后一个字节的第8位锁存后拉高,不然不会执行PP指令。

Sector Erase (SE)——1101_1000

扇区擦除(SE)指令将选定扇区内的所有位设置为1(FFh)。

  • 在执行该指令之前,必须先执行WREN指令。

同样是先拉低片选信号,然后传输Sector Erase指令,后接三个字节地址,扇区内的地址都是有效的擦除地址,在最后一个地址最后一位传输之后,必须拉高片选信号。然后自动启动擦除周期。

Bulk Erase (BE)——1100_0111

全擦除(BE)与扇区擦除相似(SE),全擦除是将所有的存储位设置为1.

  • 在执行该指令之前,必须先执行WREN指令。

首先拉低片选信号,然后输入指令,最后一位立马拉高片选信号。

AC Characteristics

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值