DrvBsp_I2C驱动_EEPROM(一)
1.概述
2.EEPROM的分页管理
3.M24512
3.1 芯片简介
3.2 管脚定义
3.3 设备选择码
4.读写操作
4.1 字节写
4.2 页写
4.3 读操作
1.概述
I2C总线主要广泛应用于 EEPROM 和 RTC(实时时钟)芯片。本文主要介绍I2C总线在EEPROM中的应用
2.EEPROM的分页管理
EEPROM(电可擦可编程只读存储器)是一种在断电后仍能保留数据的存储芯片。它具有读取速度快的特点,但写入速度相对较慢。这主要是因为对存储单元执行擦除(由1变为0)和编程(由0变为1)操作时,均需要较高的工作电压和一定的处理时间,因此其写入速度相比读取要慢几个数量级。
此外,尽管分页管理机制有助于提升EEPROM的写入效率和寿命,但它也在一定程度上减缓了写入操作。所谓分页管理,是指EEPROM在物理结构上被划分为固定大小的“页”(例如AT24C系列EEPROM的页大小通常为8字节、16字节、32字节或64字节)。
在页写入的模式下,I2C主机可以在一次通信事务中连续写入一页数据。具体流程为:主机首先发送起始信号、设备地址和目标内存地址,然后连续发送多个数据字节。EEPROM内部会将这些数据暂存于一个页大小的缓冲区中。直到MCU发出停止信号后,EEPROM才真正开始执行耗时的内部操作,包括:
- 自动擦除目标地址所在的整个物理页;
- 将缓冲区中的数据编程写入该物理页。
需要注意的是,页写入操作不能跨越物理页边界。如果连续写入的字节数超出当前页的剩余空间,地址指针将会回绕至该页起始位置,从而导致已写入的数据被覆盖。
尽管存在上述限制,分页管理仍具有显著优势。一方面,它能够减少通信开销:与每字节单独发送地址和数据的方式相比,页写入显著减少了I2C通信中起始、停止、应答等协议开销。另一方面,通过合并擦除操作,将多次单独的“擦除-写入”过程整合为一次,从而大幅提升了整体写入效率。
下文以“M24512”为例解析EEPROM的读写操作。
3.M24512
3.1 芯片简介
M24512 是意法半导体(STMicroelectronics)推出的一款 512 Kbit 串行EEPROM 芯片,采用 I²C 通信接口,因其可靠性高、功耗低且使用简便,在各类电子设备中应用广泛。
特性分类 | 参数说明 |
存储容量 | 512 Kbit,组织为 64K × 8 位 (即 64 KB) |
接口协议 | I²C 总线,兼容 标准模式(100kHz)、快速模式(400kHz)和快速模式(1MHz) |
写入时间 | 字节写入或页写入均在 5ms 内完成 |
耐用性与保存期 | 超过 400 万次 擦写循环,数据保存期限 超过 200 年 |
页大小 | 128 字节 |
3.2 管脚定义
管脚定义 | 管脚说明 |
SDA、SCL | 即该芯片的I2C总线管脚,记得这两管脚为开漏输出,必须要接上拉电阻 |
Chip Enable E2、E1、E0 | 用于设定7 位设备选择码的低三位(b3、b2、b1),即是芯片的使能管脚。该管脚如悬空则默认为低电平 |
Write Control WC | 低电平为写使能;高电平则禁止写入操作。是为了避免芯片的存储内容丢失而设的。悬空则默认为低电平 |
3.3 设备选择码
EEPROM 芯片是通过设备选择码进行判断,是否应对 I2C 总线上传输的数据做出响应。
设备类型定义 | 设备地址 | r/w | ||||||
b7 | b6 | b5 | B4 | b3 | b2 | b1 | b0 | |
定位存储空间时的设备选择码 | 1 | 0 | 1 | 0 | E2 | E1 | E0 | r/w |
4.读写操作
4.1 字节写
针对地址,M24512的片内空间为64K,地址位应是16位,故需要2个字节的片内地址;
如果片内空间小,如M24C02的片内空间为256字节,则地址位8位即可,则只需要1个字节的片内地址。
还有如M24C04的片内空间为512字节,则除了8位地址位之外,借用了1位设备选择码的E0来扩充地址位。
因此在M24C16以下的地址位为8位,通过借用设备地址码扩充片内空间的寻址空间;在M24C32以上的则采用16位的地址位。
内部写入周期5ms,意指在主机发出停止位后,需等待5ms,待EEPOM将缓冲数据写入非易失存储单元后,才能进行下一个写入操作
4.2 页写
页写模式允许在单次写入周期内,写入1页的数据,即M24512的页尺寸是128字节,则允许单次写入周期内,写入128字节的数据。但这些数据地址只有低7位可变。
当发送的数据字节数超过当前页末尾,则会触发回卷(roll-over)机制,即超出页末尾的字节不会写入下一页,而是从当前页的起始位置开始写入,并覆盖该地址的原有数据。
与字节写操作一致,意指在主机发出停止位后,需等待5ms,待EEPROM将缓冲数据写入非易失存储单元后,才能进行下一个写入操作
4.3 读操作
EEPROM的读操作主要是指随机连续读取操作。该操作采用是一种“先伪写加载地址,后启动读操作”的经典时序,核心目的是通过“伪写”将目标存储地址加载到存储器内部的地址寄存器,最终实现对指定地址数据的读取。
伪写操作并未真正的写入数据,而是利用“写操作的地址传输阶段”,将目标读地址加载到存储器内部的地址计数器中。其关键特征是:仅完成“地址发送”,不发送待写入数据,且不发送停止位,为后续的读操作保留总线控制权。