-
M25P16原理
M25P16是一款带有先进写保护机制和高速SPI总线访问的串行Flash存储器。M25P16特点如下:
- 存储结构:16M Bit(2M Byte)的存储空间,一共32个扇区(sector),每个扇区256页,每页256字节。
- SPI总线兼容的串行接口。
- 可以单扇区擦除,也可以整块擦除。
- 可以同时编程1~256字节,页编程速率高达256Byte/1.4ms,即写入一页数据需要1.4ms。
- 数据保存至少20年。
- 支持SPI工作模式0和3。
1、M25P16引脚图
2、信号名称
C: 时钟信号,相当于SPI总线的SCLK。
D:数据输入,相当于SPI总线的主机输出、从机输入MOSI。
Q:数据输出,相当于SPI总线的主机输入、从机输出MISO。
S#:片选信号,相当于SPI总线的片选信号CS_N。
HOLD:在选中期间期间输出高阻态,实际上比较像SDRAM的“掩码”。
W#:写保护,低电平有效,在写保护有效时无法写入数据。
VCC:电源。
VSS:电源地。
3、SPI Modes
4、指令
常用的指令:
WREN:写使能指令,在进行PP、SE、BE、RDSR指令前,都需要发 送一次写使能指令。
READ:读使能指令,发送读使能指令后需要发送3字节的地址数据, 分别为扇区地址、页地址和字节地址,可以一直读,直到将 片选拉低才停止读取数据,
PP:页编程指令,发送页编程指令后,需要再发送3字节的地址数据, 然后再发送需要写的数据,最多一次可以写256个数据(1页)。 如果页编程的字节地址不是全零的话,就会在本页内循环写入数 据(到了本页最后一字节,下一字节会回到本页起始地址编程,
即字节地址全零的地方开始)。如果写入数据超过256字节,那么前面的数据会被覆盖,只有最后的256字节数据会被保留。如果少于256字节,则正常写入,且不会对本页其他字节数据造成影响。
SE:扇区擦除指令,发送扇区擦除指令后,需要发送3字节的地址。 然后等待1~5ms,扇区擦除时间。
BE:批量删除指令,发送该指令后等待17~40ms,全部擦除时间。
RDSR:读状态寄存器指令,读取状态寄存器(RDSR)指令允许读取状态寄存器。状态寄存器可以在任何时候被读取,即使在一个程序、擦除或写状态寄存器周期正在进行中。当其中一个循环正在进行时,建议在向设备发送新指令之前检查“正在写入”(WIP)位。
WIP BIT:“正在写入”(WIP)位指示内存是忙于写入状态寄存器、程序还是擦除周期。当设置为1时,这样的循环正在进行,当重置为0时,没有这样的循环正在进行。
WEL BIT:写入启用锁存器(WEL)位表示内部写入启用锁存器的状态。当设置为1时,内部写启用锁存器被设置为1,当设置为0时,内部写启用锁存器被重置,并且不接受写状态寄存器、程序或擦除指令。
在进行擦除指令时,可以通过读取状态寄存器的WIP BIT来判断擦除周期是否完成,这样就可以不用进行擦除等待。
注意:PP指令只能将FLASH中存储单元中的‘1’写为‘0’,而不能将‘0’写成‘1’。所以对同一地址进行重复写数据要进行擦除操作,否则写入的数据会产生干扰。
SE、BE擦除指令操作,就是将FLASH中的存储单元中的‘0’擦除为‘1’。所以进行完擦除指令后,存储单元中的数据全为‘1’,16进制下即为‘F’。