在 BMC 板卡上,总有一类数据既舍不得放进 Flash,也不该占用 MCU 那点宝贵的片上 EEPROM:VRM 电压裕量阈值、风扇曲线、DAC 校准系数、板卡序列号、MAC 地址、IP 配置,再加上几条带时间戳的故障记录。它们共同的特点是——量不大、要掉电不丢、还得能按字节改。串行 EEPROM 正是为这批"小数据"生的。
它和并行 EEPROM、SPI NOR Flash 不是一回事:接口只有两到四根线,存储单元是浮栅结构,可以单字节擦写、无需整片擦除,写入时芯片自己完成内部擦除与编程定时。正因如此,它在 BMC、工业控制、内存 SPD 这类"参数型存储"场景里几乎是标配。
一、它到底是怎么工作的
EEPROM 单元靠浮栅存电荷,栅极氧化层极薄,加高电压把电子隧穿进去或拉出来,就是写"0"和写"1"。和 NOR Flash 的雪崩注入相比,它的工艺代价更大、单元面积更大,所以做不大;换来的是两个 Flash 没有的甜头:任意地址单字节改写,以及擦写寿命高一个数量级。
几个必须记住的口径:
• 容量按 bit 标,不是 byte。24C02 是 2 kbit,等于 256 字节;24C16 是 16 kbit,等于 2 KB。选型时先除以八,别把地址空间算错。
• 擦写寿命通常在 100 万次量级(部分型号 400 万次以上),数据保持期标称 100 年到 200 年。这是典型值,高温下保持期会明显缩水。
• 页写大小从 8 字节到 64 字节不等,这是软件最容易翻车的地方,后面单独讲。
• 供电主流 1.7 V 到 5.5 V,3.3 V 待机轨直接喂,和 BMC 的 IO 域天然对齐。
二、三条接口路线
I²C 派(24xx 系列)——BMC 里绝对主力。 只有 SCL 和 SDA 两根线,开漏输出,靠上拉电阻拉高。A0/A1/A2 三个地址引脚决定从机地址,同一总线上最多能挂 8 颗同型号器件;速率分 100 kHz 标准模式、400 kHz 快速模式,少数高速型号能到 1 MHz。引脚少、能多负载共享一条总线,正好和 RTC、温度传感器、DAC、模拟开关挤在同一根 I²C 上。
SPI 派(25xx 系列)。 SCLK、SI、SO、CS 四根线,全双工,速率明显更高,页也更大。代价是每颗器件要独占一根 CS,GPIO 紧张时反而不划算。适合"稍微多写一点、稍微快点"的场合,比如存一段较长的校准表。
Microwire 派(93Cxx,如 93C46/56/66)。 三根线,组织方式可以是 8 位或 16 位字,时序简单、驱动极省事。缺点是生态老、选型少,新项目基本只会在维护老板子时碰到。
本文重点放在 I²C 的 24 系列,因为它和 BMC 的契合度最高。
三、型号怎么读:后缀比数字重要
容量档位很好认:24C02(256 B)、24C04(512 B)、24C08(1 KB)、24C16(2 KB)、24AA64(8 KB)、24FC256(32 KB),再往上还有 512 kbit 乃至 MB 级。真正决定你能不能用的是后缀:
• 24LC:标准电压款,通常 2.5 V 起。
• 24AA:低压款,最低 1.7 V,适合纯 1.8 V 或待机电池域。
• 24FC:高速款,I²C 能跑到 1 MHz,总线吞吐翻倍。
• 带 WP 引脚的版本:硬件写保护,可以锁全片,也可以只锁上半区(靠地址高位映射),用来钉死出厂校准和序列号。
页大小随容量涨:小容量 8 字节一页,中等 16 到 32 字节,大容量 64 字节。页越大,连续写的效率越高,但跨页处理的麻烦也越大。
四、五个真正值得关心的技术点
第一,页写是加速,也是陷阱。 单次写一字节完全没问题,但内部写周期要 3 到 5 ms,一颗一颗写会慢得无法忍受。页写允许你在一次停止条件前连续灌进一整页数据,芯片内部按顺序写入,吞吐能翻十几倍。但绝对不能跨页边界:地址加到底还继续发数据,多数器件会把指针回卷到页首,把你刚写的前几个字节覆盖掉。这是 EEPROM 驱动里排名第一的 bug,没有之一。
第二,写周期期间芯片不响应。 内部擦写时,它对下一次起始条件的应答会是 NACK。正确做法是发起始 + 从机地址去"探",收到 ACK 才说明写完;或者用固定延时兜底再探一次。别假设 5 ms 一定够,温度低、电压低的时候会更慢。
第三,WP 是 BMC 的安全带。 出厂烧完 SN、MAC、基准校准值之后,把 WP 拉高(或由 BMC 某个上电默认高电平的 GPIO 控制),这片区域就变成只读。固件跑飞、数组越界、静电导致的随机写,都动不了它。对需要现场可调的阈值,则放在未保护区,两者分开放。
第四,待机功耗几乎可以忽略。 待机电流典型在 1 µA 上下,工作电流才毫安级。由 LMZ21701 这类微型 Buck 从 12 V 母线拉出的 3.3 V 待机轨供电,哪怕整机断电只留 standby,它也能一直守着数据,毫无压力。
第五,抗噪设计很实在。 SCL/SDA 内置施密特触发输入,对板上缓慢边沿和共噪不敏感,多条外设共线时稳定度比普通 CMOS 输入好得多。封装也友好:SOT23-5、MSOP、SOIC,挤在 BMC 密布器件的主板角落毫无存在感。
五、和 SPI Flash 怎么分工
一句话:EEPROM 存会改的小东西,Flash 存不常改的大东西。
SPI Flash 必须按扇区(通常 4 KB 起步)擦除才能改写,容量大、单价低,适合固件镜像、大块日志、HTML 资产。但它不适合"把第 37 个字节的阈值加一"这种操作——你得读 4 KB、改一字节、擦扇区、写回 4 KB,还要考虑掉电原子性。EEPROM 则 1 字节就地改,寿命 1 百万次。所以在同一套系统里,两者常常并存:Flash 放固件和大数据,EEPROM 放参数和身份。
顺带一提内存条的 SPD(比如 M34E04 这类专用小容量 EEPROM),本质就是 EEPROM 的一个垂直场景:挂在内存模组的小总线上,上电由主机读走时序参数。
六、在 AI 边缘存储 BMC 里的落点
典型的挂法非常干净:BMC 辅控 MCU 的 I²C 总线上,EEPROM 和 DTCXO RTC、板上温度传感器并排挂着,电源来自那路 3.3 V 待机 Buck,VCC 脚就近一颗 0.1 µF X7R,高频去耦再加一颗硅电容或稍大陶瓷电容。
具体承载这些:
• 配置区:VRM 各路电压 margin 上下限、风扇转速曲线(温度—占空比查表)、温度告警阈值、IP/网关、串口波特率、看门狗超时值。
• 校准区(建议 WP 锁定前先写、写完上锁):DAC7562 的增益与零偏、运放链路失调、ADC 参考的板级修正系数。每次 margining 测试跑完,把新拟合参数落盘。
• 身份区:板卡 SN、硬件版本、MAC、出厂日期、供应商编码,写一次就锁死。
• 日志区:RTC 时间戳 + 故障码 + 通道号,环形缓冲方式循环覆写。量不大,但掉电不丢,攒一批由 RTL8152B 这类 USB 百兆网卡统一往管理网段上传。
这条链路的分工逻辑和上一颗 AVR 辅控是配套的:AVR 负责采、判、控,EEPROM 负责"记得住",主 BMC 负责汇总上报。
七、硬件踩坑清单
上拉电阻别拍脑袋。 SCL/SDA 必须上拉到 VCC。100 kHz 总线用 10 kΩ 很宽松;400 kHz 建议 2 kΩ 到 4.7 kΩ,太大会把上升沿拖成斜坡,太小又增加驱动电流和功耗。总线总电容上限 400 pF,挂的器件多、走线长时,先算算电容,必要时降速或加总线缓冲器。
地址脚和 WP 脚禁止浮空。 A0/A1/A2 哪怕只用一颗,也明确接地或接 VCC,悬空会让从地址随机跳,表现为"时好时坏的 NACK"。不用写保护就把 WP 接地;要保护就把 WP 接一个上电即高的 GPIO 或硬件上拉,别让它默认处于可写的中间态。
电源去耦按数字规矩来。 VCC 就近 0.1 µF X7R,地回流路径短。I²C 是低速数字信号,布线时让它远离 DC/DC 的 SW 节点、电感磁场,也别和 DAC 输出、模拟输入并行走太长——数字边沿的串扰一旦进模拟链路,margining 的精度就废了。
版图上的小细节:SCL/SDA 尽量走同层、等长不等长也无所谓,但别被打孔打断参考平面;WP 和地址脚若是测试点,测试点旁边加丝印标明电平,量产烧录工位少一道沟通成本。
八、软件层面的四道防线
1. 写后轮询 ACK。发完数据等停止条件,然后循环发起始 + 从地址探活,ACK 才继续。别用"延时 5 ms 就当写完"这种写法,那是温度筛选时的隐患。
2. 页写对齐封装。驱动层把"写 N 字节"自动切成页内片段,跨页就拆两次交易。上层调用者不该知道页边界在哪。
3. 校验和 / CRC。每个逻辑记录头尾加 CRC8 或 CRC16,读出时验证。EEPROM 偶尔会有位翻转(辐射、回流焊应力、欠压写中断),没校验就等于埋雷。
4. 写磨损均衡。频繁变化的计数器、日志指针别总写同一个字节。用双缓冲槽位 + 序号仲裁,或者环形递增槽,把百万次寿命摊到整个阵列上。掉电原子性靠"先写数据、再写提交标志"的两阶段方式保证。
九、选型速记
• 只存 SN 和几个阈值,256 B 够用:24C02 / 24C04,低压选 24AA 版。
• 多组校准表 + 风扇曲线 + 配置备份:24AA64,8 KB 很宽裕。
• 要塞较多参数或日志、总线又不想降速:24FC256,64 字节页、1 MHz。
• 需要硬件写保护分区钉死身份数据:选带 WP 且支持块保护的型号。
• 国产兼容替代:AT24C 系列、GT24C 系列等,多数引脚与寄存器兼容,替换前仍要核对页大小、写周期时长和地址脚定义,别只看封装一样。
什么时候不该用它:要存固件镜像、要几 MB 日志、要高速数据流记录——换 SPI Flash 或铁电(FRAM,如果预算够且要近乎无限的写寿命)。EEPROM 的强项是"小而精地改",不是"大块地装"。
________________________________________
免责说明:文中关于 BMC 链路(AVR 辅控、LMZ21701 供电、DAC7562、RTL8152B 等)的组合仅为架构性示例,非参考设计,上拉阻值、总线电容、写保护策略及掉电保持时间须结合实际板级测试验证。