首页/外设速查/EEPROM
🧠

EEPROM 掉电保存

存储外设
按字节擦写、寿命百万次的非易失存储,存配置/校准/断电数据。
🧩 核心原理
📈 时序 / 工作过程图
EEPROM(I2C) 写字节时序START → 器件地址+W → ACK → 字节地址 → ACK → 数据 → ACK → STOPSCLSDASTARTA0-A2地址+R/WACK字节地址ACK数据ACKSTOPAT24Cxx 页写:同页可连续写(如 8/16/32 字节页),跨页需拆写 · 写周期 5ms 内完成
⚙️ 配置 / 使用要点
  1. I2C 初始化(地址含A2A1A0)
  2. 写:START→地址+W→ACK→字节地址→ACK→数据→STOP
  3. 写后延时 5ms 或轮询 ACK
  4. 读:先写字节地址再重复START→地址+R
🛠️ 项目示例
EEPROM 保存/恢复设备配置
// 保存:写 3 字节配置到 AT24C02 地址 0x10
uint8_t cfg[3] = {baud_cfg, mode_cfg, calib_cfg};
HAL_I2C_Mem_Write(&hi2c1, (0xA0 >> 1) | 0, 0x10,
                  I2C_MEMADD_SIZE_8BIT, cfg, 3, 100);
HAL_Delay(6);   // 等写周期完成

// 恢复:上电时读回
uint8_t saved[3] = {0};
HAL_I2C_Mem_Read(&hi2c1, (0xA0 >> 1) | 0, 0x10,
                 I2C_MEMADD_SIZE_8BIT, saved, 3, 100);
❓ 面试高频
EEPROM为什么寿命比Flash长?
存储单元结构不同:EEPROM按字节擦写(Fowler-Nordheim隧穿),Flash按扇区擦写且损耗集中
页写要注意什么?
跨页写会回卷覆盖该页开头,需分页拆分;数据超过一页时逐页写并延时
怎么确认写完了?
固定延时5ms 或 发ACK轮询(器件在写期间不响应ACK)
✅ 自查清单 (点击勾选,本地保存)
0/0
知道器件地址与A2A1A0
理解页写与跨页风险
知道写周期与ACK轮询
会写保存/恢复配置流程