第一讲:EEPROM基础概念

大家好,我是你们这门课的老朋友。今天咱们聊聊EEPROM。

说实话,我刚入行那会儿,也分不清EEPROM和Flash到底有啥区别。直到有一次做手环项目,数据老丢,才逼着我好好研究了一番。嗯,今天就把这些经验分享给你。

什么是EEPROM?

EEPROM,全称是Electrically Erasable Programmable Read-Only Memory。中文叫“电可擦除可编程只读存储器”。名字挺长,但说白了,就是一种掉电不丢数据的存储芯片。

你想想看,手环戴在手上,电池没电了,你今天的步数、心率数据总不能清零吧?EEPROM就是干这个的。

它的特点很鲜明:

  • 按字节读写:想改哪个字节就改哪个字节,非常灵活
  • 掉电保存:断电后数据能保存10年以上
  • 可擦写次数有限:一般是10万次到100万次
  • 读写速度较慢:比RAM慢得多,但够用

核心要点:EEPROM是“非易失性”存储器。断电不丢数据,这是它最大的价值。

我在项目中遇到过一个问题:有个同事把EEPROM当RAM用,频繁读写同一个地址。结果没几天,那个地址就坏了。嗯,这里要记住——EEPROM有寿命限制,不能无限制地写。

EEPROM与Flash的区别

很多人搞混这两个东西。我刚开始也犯过这个错。其实它们都是非易失性存储器,但设计思路完全不同。

对比项 EEPROM Flash
最小擦除单位 字节 扇区(通常512字节或更大)
写入方式 按字节直接写 先擦除整个扇区,再写入
擦写寿命 10万~100万次 1万~10万次
读写速度 较慢(ms级) 较快(us级)
成本 较高 较低
典型容量 几KB~几百KB 几MB~几GB

你看,区别很明显。EEPROM是“字节级”操作,Flash是“扇区级”操作。这就像什么呢?

EEPROM像是一张纸,你可以用橡皮擦掉一个字,再写上新字。Flash像是一页纸,你要改一个字,得把整页撕掉,重新写一整页。

我的经验:在手环这种小设备里,EEPROM用来存配置参数、用户设置、校准数据。Flash用来存固件程序、大块日志。各司其职。

我曾经犯过一个错误:用Flash来存用户设置的闹钟时间。每次改闹钟,都要擦除整个扇区,再写回去。结果扇区里其他数据也跟着被擦掉了。嗯,那次教训挺深刻的。

手环中为什么需要EEPROM?

这个问题问得好。你想想看,手环的功能越来越多:记步、心率、睡眠、闹钟、通知……这些功能都离不开数据存储。

具体来说,手环需要EEPROM来干这几件事:

  1. 保存用户配置:比如屏幕亮度、闹钟时间、单位制式。这些数据不大,但很重要。
  2. 存储校准参数:每个手环的传感器都有个体差异。出厂时校准的参数存在EEPROM里,保证测量精度。
  3. 记录关键状态:比如最后一次同步的时间、设备配对信息。掉电后不能丢。
  4. 存放固件升级标志:OTA升级时,需要记录升级状态。万一升级中断,重启后还能继续。

注意:手环的MCU内部通常自带一小块EEPROM,但容量很小(一般几KB)。如果不够用,可以外挂一颗EEPROM芯片,通过I2C或SPI接口通信。

我个人习惯是:能用内部EEPROM就用内部的。省成本、省PCB面积、省功耗。只有数据量超过内部容量时,才考虑外挂。

举个例子。我之前做的一款手环,需要存储7天的逐分钟心率数据。算下来要几十KB。内部EEPROM只有2KB,根本不够。最后外挂了一颗AT24C256,256Kbit,也就是32KB。刚刚好。

你可能会问:为什么不用Flash?Flash容量更大啊。

原因很简单:Flash擦写太麻烦。手环要频繁记录心率数据,每次写几个字节。如果用Flash,每次都要擦除整个扇区,再写回去。不仅慢,还浪费寿命。EEPROM按字节写,方便多了。

嗯,这里再补充一点。有些MCU支持“模拟EEPROM”——就是用Flash模拟EEPROM的行为。但说实话,效果一般。我试过几次,总觉得不如真EEPROM靠谱。尤其是频繁读写的时候,模拟方案容易出问题。

小结

今天咱们聊了三个问题:

  • EEPROM是什么——一种按字节读写、掉电不丢数据的存储器
  • 和Flash的区别——EEPROM按字节操作,Flash按扇区操作
  • 手环为什么需要它——存配置、存校准参数、存关键状态

下一讲,咱们会深入EEPROM的硬件接口,看看I2C和SPI两种通信方式怎么选。到时候我会分享一些实际项目中的布线技巧和抗干扰措施。

好,今天就到这儿。有问题随时交流。