四、SPI——2、NOR FLASH

目录

一、NOR FLASH介绍

二、NM25Q128 简介

三、NM25Q128存储结构

四、NM25Q128常用指令

五、读/擦除/写 步骤


一、NOR FLASH介绍

        FLASH是常用的用于储存数据的半导体器件,它具有容量大,可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性。

        FLASH是有一个物理特性:只能写0,不能写1,写1靠擦除

        FLASH主要有NOR FlashNAND 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、发送地址(24位),地址范围0~0XFFFFFF,分3次发送

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、等待写入完成(等待空闲状态)

### SPI NOR Flash 技术原理 SPI NOR Flash 是一种通过串行外设接口(Serial Peripheral Interface,SPI)进行通信的非易失性存储器。其内部结构基于传统的NOR Flash技术,但在外部连接上采用了更精简的SPI协议来减少引脚数量和简化电路设计。 #### 工作机制 SPI NOR Flash 的工作机制主要包括以下几个方面: - **命令集驱动**:所有的操作都是由主机发送特定指令给SPI NOR Flash完成。例如读取数据时会先发出READ指令再跟随地址信息;写入前需先擦除目标区域并通过WRITE ENABLE设置允许写状态之后才能真正开始写入过程[^4]。 - **页编程模式**:当向SPI NOR Flash中写入新数据之前,必须先将要修改的数据所在的整个页面全部加载到缓存里,在这个基础上做更改后再一次性把更新后的整页内容回写回去覆盖旧有的记录。这种方式虽然增加了额外开销但是能有效防止部分写失败造成逻辑错误的情况发生。 - **扇区/块擦除功能**:为了能够重用已占用的空间,提供了不同大小级别的物理删除单位——最小的是4KB的小型扇区,往上还有32KB的大区块以及最大范围内的全片清除选项可供选择。这种分级管理方式提高了空间利用率同时也兼顾到了效率上的考量。 ```c // C语言示例代码展示如何初始化并读取SPI NOR Flash中的数据 void spi_nor_init(void){ // 初始化SPI总线配置... } uint8_t read_spi_nor_data(uint32_t address, uint8_t *buffer, size_t length){ // 发送READ INSTRUCTION命令 send_command(CMD_READ); // 设置起始读取位置 set_address(address); // 接收指定长度的数据流至缓冲区内 receive_data(buffer,length); return SUCCESS; } ``` ### 应用场景 由于具备良好的随机访问性能、较低的成本优势加上易于集成等特点,SPI NOR Flash被广泛应用于各种领域当中: - **固件储存**:作为启动ROM使用保存BIOS或其他引导程序以便于计算机加电自检阶段调用执行从而实现系统的冷启动流程控制[^1][^2]。 - **嵌入式开发板卡**:为MCU单片机提供必要的外围扩展资源比如字体库文件或是图形界面素材等静态资料存放场所[^3]。 - **消费电子产品**:像路由器、智能家居设备内核镜像版本升级包临时暂存仓库等功能模块都离不开这类高效稳定的非挥发介质的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值