一、NOR FLASH介绍
FLASH是常用的用于储存数据的半导体器件,它具有容量大,可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性。
FLASH是有一个物理特性:只能写0,不能写1,写1靠擦除。
FLASH主要有NOR Flash和NAND Flash两种类型,NOR和NAND是两种数字门电路。
二、NM25Q128 简介
NM25Q128,串行闪存器件,属于NOR FLASH中的一种,容量为128 Mb。擦写周期可达10W次,可以将数据保存达20年之久。
SPI数据传输时序:支持模式0(CPOL = 0 , CPHA = 0)和模式3(CPOL = 1, CPHA = 1)。
数据格式:数据长度8位大小,先发高位,再发低位(MSB)。
传输速度:支持标准模式104M bit/s。
原理图(战舰版,F103):
CS : 片选信号输入。
SO : 数据输出。
WP : 写保护功能。
HOLD : 暂停通讯。
CLK : 时钟输入。
SI : 数据输入。
三、NM25Q128存储结构
图1 NM25Q128存储结构图
1 page = 1 byte * 256
1 sector = 1 page * 16
1 block = 1 sector * 16
25Q128 = 1 block * 256
地址范围(0x0 ~ 0xFFFFFF)
25Q128存储容量为128M bit,即16M Byte(128M bit / 8 = 16M Byte)
四、NM25Q128常用指令、读/擦除/写 步骤
① 常用指令:
指令(HEX) | 名称 | 作用 |
0X06 | 写使能 | 写入数据/擦除之前,必须先发送该指令 |
0X05 | 读SR1 | 判定FLASH是否处于空闲状态,擦除用 |
0X03 | 读数据 | 用于读取NOR FLASH数据 |
0X02 | 页写 | 用于写入NOR FLASH数据,最多写256字节 |
0X20 | 扇区擦除 | 扇区擦除指令,最小擦除单位(4096字节) |
② 写使能 Write Enable (06H)
执行Page Program页写,Sector Erase扇区擦除,Block Erase块擦除,Chip Erase片擦除,
Write Status Register写状态寄存器等指令前,需要写使能。
图2 写使能时序图
其中,SI 从机输入。SO从机输出,CS片选。
③ 读状态寄存器Read Status Reg1(05H)
05h,SR1,状态寄存器1。
35h,SR2,状态寄存器2。
15h,SR3,状态寄存器3。
④ 读时序 Read Data Bytes(03H)
发送24位地址,需要分3次发送,因为NM25Q128支持8个字节。
如果一直要读取数据,则需要一直发送脉冲(SCLK)。
⑤ 页写时序 PageProgram (02H)
页写命令最多可以向FLASH传输256个字节的数据
⑥ 扇区擦除时序 Sector Erase(20H)
FLASH存储器的特性决定了它只能把原来为“1”的数据位改写成“0”,而原来为“0”的数据位不能直接改写为“1”。
⑦ 状态寄存器表
BUSY位 指示当前状态 0:空闲状态(硬件自动清除) 1:当前处于忙碌状态
WEL位 执行WriteEnable指令该位为1,可以页写/扇区or块or片擦除/写状态寄存器
0:写禁止,不能页编程/扇区or块or片擦除/写状态寄存器
⑧ NM25Q128读操作步骤
1、发送读命令(0X03)
2、发送0X03读数据指令
3、读取数据,主机发送空字节(0XFF),给从机脉冲,从机发送数据,主机读取数据,支持连续读
⑨ NM25Q128擦除扇区步骤
1,发送写使能命令(0X06)
2,等待NOR FLASH空闲
3,发送擦除扇区命令(0X20)
4,发送地址(24位),发送要擦除的字节地址,自动擦除该地址所在扇区
5,等待空闲,等待擦除完成
⑩ NM25Q128写操作步骤(极简)
1,擦除扇区(0X20)
2,发送写使能命令(0X06)
3,发送页写命令(0X02),发送页写命令后,一次最多写入256字节
4,发送要写入的地址(24位)
5、发送要写入的数据,一次最多写入256字节
6、等待写入完成(等待空闲状态)