SPI NOR FLASH

文章目录

前言

开本篇博客是为了记录之前使用过的spi nor flash的相关知识,内容大部分是数据手册的内容,其中夹杂着部分自己的理解,各位看官如在实际操作中发现不妥,请以手册为准。nor flash一般都是小容量的存储设备,今天介绍的SPI接口nor flash是兆易创新(GigaDevice)的GD25Q128B。

1 特征

  • 128Mbit
--16KB
--每一个可编程(写)页为256Byte
  • 支持三种SPI模式
### 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、付费专栏及课程。

余额充值