深度揭秘 EEPROM:从原理到 SPI 接口应用,解锁嵌入式存储奥秘
发布时间:2025-03-28
来源:罗姆半导体社区 (https://rohm.eefocus.com)
在嵌入式系统的广袤天地中,非易失性存储器始终占据着举足轻重的地位。从早期的 ROM、PROM 到后来的 EPROM,技术的演进之路充满了挑战与突破。而 EEPROM 的诞生,无疑为嵌入式工程师们带来了福音,它以其独特的电可擦除可编程特性,彻底改变了非易失性存储的格局。如今,尽管 Flash 在市场上占据主流,但 EEPROM 在特定容量区间依然拥有不可替代的优势,尤其是串行EEPROM ,凭借其简洁的接口与稳定的性能,在众多场景中发挥着关键作用。当涉及到存储需求较大的复杂项目时,使用多个 EEPROM 时的构成示例 <I2C> 更是为工程师们提供了灵活拓展存储容量的有效途径。今天,就让我们跟随痞子衡的脚步,一同深入探究 EEPROM,特别是 SPI EEPROM 的奥秘 。

EEPROM,即电可擦除可编程只读存储器,其发展历程与浮栅 MOSFET 技术紧密相连。1967 年发明的浮栅 MOSFET 技术,为所有闪存奠定了基础。1970 年,第一款成功的浮栅型器件 ——EPROM 问世。到了 1979 年,SanDisk 创始人 Eli Harari 发明了世界上首个电可擦除的浮栅型器件,也就是 EEPROM。EEPROM 与 Flash 虽同属广义的 EEPROM 范畴,但狭义的 EEPROM 与 Flash 有着显著区别。Flash 按扇区操作,而 EEPROM 按字节操作。这一特性使得 EEPROM 在频繁改写少量数据且需掉电非易失的应用场景中表现出色,例如在一些对数据实时更新要求较高的小型控制系统中,EEPROM 能够快速响应数据的改写需求,确保数据的准确性和稳定性。
从软件驱动开发角度来看,Serial EEPROM 可依据地址码长度和通信接口类型进一步细分。地址码长度涵盖 1byte、2byte、3byte,通信接口类型包括 I2C、SPI、Microwire、UNIO Bus、Single - Wire 等。本文聚焦于 SPI 接口的 EEPROM。SPI EEPROM 的内存模型一般分为 Device、Sector、Page、Byte 四层,其中 Sector 并非必需,Page 也只是一种结构概念,与 NOR Flash 中的 Page/Sector 意义不同,因为 Byte 是 EEPROM 读写的最小单元,可实现任意地址随机访问,这使得 EEPROM 在某些方面类似于非易失性的 RAM。不过,部分高端 EEPROM 集成了 Page/Sector 操作命令,以提升操作效率。
SPI EEPROM 通常有 8 个引脚。除去电源 Vcc、地 GND/Vss 以及 SPI 四根信号线(CS#、SCK、SI、SO)外,还有 WP#(写保护)和 HOLD#(挂起)两根特殊控制信号。WP# 信号从硬件层面保护 EEPROM 内存,防止噪声干扰篡改数据;HOLD# 信号则可暂停 EEPROM 写操作,当该信号有效时,SI 信号输入将被忽略,方便主机处理其他高优先级任务。在封装方面,SPI EEPROM 种类齐全,其中 JEDEC 定义的 8 - lead SOIC 是最经典的封装形式,此外还有 TSSOP8、UDFN8、WLCSP8 等常见封装。
在接口命令方面,SPI EEPROM 虽无成文标准,但各大厂商生产的产品均支持 READ(读内存)、WRITE(写内存)、WREN(写使能)、WRDI(写禁止)、RDSR(读状态寄存器)、WRSR(写状态寄存器)这 6 条命令,这成为了事实上的接口命令标准。SPI EEPROM 内部还有一个 8bit 的状态寄存器,用于反馈命令执行状态。其中,bit0 - RDY# 用于标示涉及改变内存或状态寄存器的命令执行结果,bit1 - WEL 保存上一次 WREN 和 WRDI 命令的执行结果。状态寄存器中的 bit7 - WPEN、bit [3:2] - BP [1:0] 与写保护特性相关。除了这 6 条标准命令,一些厂商还针对大容量(3byte 地址码,512Kb 以上)EEPROM 实现了自定义命令。例如,为提高操作效率,部分大容量 EEPROM 增加了 Page/Sector/Chip Erase 命令,若没有这些命令,擦除操作只能通过标准 WRITE 命令手动实现,过程繁琐且低效。
数据存取速率是 SPI EEPROM 的重要技术指标。读时序方面,在 SPI 总线发送 READ(0x03)命令后,需紧接着发送读取的内存地址。对于容量大于 512Kb 的 EEPROM,需发送 3byte 地址;而对于容量小于等于 512Kb 的 EEPROM,512byte 容量的 EEPROM 虽按容量属于 2byte 地址码范畴,但 READ 命令后只需发送 1byte 地址(A7 - A0),最高地址位 A8 放在 READ 命令码 bit3 里,节省了 1 个字节地址码。因此,1Kb - 512Kb 容量的 EEPROM 地址码为 2byte,512byte 及以下容量的 EEPROM 地址码为 1byte。读数据速率取决于 SPI 总线速率,可通过查看 EEPROM 数据手册了解其支持的最高 SPI 总线速率(常见有 2MHz、5MHz、10MHz、20MHz)。写时序相对复杂,以 2byte 地址为例,发送 WRITE 命令前需先发送 WREN 命令使能写操作,因为默认 EEPROM 执行完上一次写操作后会恢复写禁止状态。确保写使能后,发送 WRITE 命令、地址码以及要写入的数据。EEPROM 可按 byte 或 Page 写入,按 Page 写入连续数据效率更高,但 WRITE 命令后跟随的字节数不能超过要写入首地址所在 Page 剩余字节数。当一次 WRITE 时序内数据发送完成后,进入等待周期,因为 EEPROM 需将 page buffer 里的数据编程到真正内存空间,用户需通过不断发送 RDSR 命令读取状态寄存器 bit0 - RDY# 来判断等待周期是否结束,所以写时序速率不仅取决于 SPI 总线速率,还与等待周期时长有关。
EEPROM 作为嵌入式系统中不可或缺的非易失性存储器,在特定应用场景下发挥着重要作用。SPI EEPROM 凭借其独特的接口特性和灵活的操作方式,为工程师们提供了高效的数据存储解决方案。随着技术的不断发展,我们有理由相信,EEPROM 将在保持自身优势的基础上,不断优化性能,拓展应用领域,为嵌入式系统的发展注入新的活力。无论是在现有的小型控制系统、数据记录设备中,还是在未来新兴的物联网、可穿戴设备等领域,EEPROM 都将继续书写它的辉煌篇章。
关键词:串行EEPROM
相关资讯
EEPROM 在特定容量区间优势独特,源于浮栅 MOSFET 技术,按字节操作。SPI EEPROM 是其重要分支,有特定内存模型、引脚与封装。接口命令有事实标准,部分厂商针对大容量产品自定义命令。读写速率受多种因素影响,未来将持续拓展应用,助力嵌入式系统发展。
.png)
