1. EEPROM基础认知:什么是EEPROM、EEPROM与Flash的区别、按摩仪为何选择EEPROM
1.1 什么是EEPROM?
EEPROM,全称是Electrically Erasable Programmable Read-Only Memory。中文叫“电可擦除可编程只读存储器”。名字挺长,但说白了,就是一种掉电不丢数据的存储芯片。
我刚开始接触嵌入式时,总觉得这名字绕口。后来做项目多了,就记住了它的几个关键特点:
- 按字节读写:你可以单独修改某一个字节,不用动其他数据。这在参数存储中非常灵活。
- 掉电保持:数据写进去,断电十年八年还在。按摩仪的用户设置不会因为关机就丢失。
- 擦写次数有限:通常10万次到100万次。嗯,这里要注意,别在循环里疯狂写,会磨坏的。
我在项目中遇到过一位同事,把EEPROM当RAM用,每秒写一次参数。结果产品用了三个月,参数就全乱了。后来查出来是EEPROM寿命到了。所以,EEPROM适合存“偶尔改一次”的数据,比如用户设定的按摩模式、力度等级。
核心理解:EEPROM就是一块“掉电不丢、能按字节改”的小容量存储。适合存配置参数、校准值、用户偏好。
1.2 EEPROM与Flash的区别
很多新手会问:EEPROM和Flash不都是掉电不丢吗?有什么区别?
我当年也困惑过。后来做了一次Bootloader升级,才彻底搞明白。直接看对比表:
| 对比项 | EEPROM | Flash |
|---|---|---|
| 最小擦写单位 | 字节 | 扇区(通常512字节~4KB) |
| 写入方式 | 直接改写 | 先擦除整个扇区,再写入 |
| 擦写寿命 | 10万~100万次 | 1万~10万次 |
| 读取速度 | 较慢(微秒级) | 较快(纳秒级) |
| 写入速度 | 较慢(毫秒级) | 较快(微秒级) |
| 典型容量 | 几KB~几百KB | 几MB~几GB |
| 成本 | 较高(每字节) | 较低(每字节) |
你想想看,Flash要改一个字节,得先把整个扇区读到RAM里,擦掉扇区,再把修改后的数据写回去。这多麻烦!而EEPROM直接写那个字节就行。
我曾经在一个项目中,用Flash存用户参数。用户改了一个力度值,结果整个扇区被重写,其他参数也跟着遭殃。后来换成EEPROM,问题就解决了。
个人经验:如果数据量小(< 512字节)、需要频繁改单个参数,选EEPROM。如果数据量大、需要快速读取,选Flash。
1.3 按摩仪为何选择EEPROM?
好,回到我们的按摩仪项目。为什么选EEPROM,而不是Flash或者SD卡?
原因其实很直接:
- 参数数据量小:按摩仪需要存什么?无非是:
- 当前按摩模式(1字节)
- 力度等级(1字节)
- 定时时长(1字节)
- 加热开关状态(1字节)
- 用户自定义模式(几十字节)
总共也就几十到几百字节。用EEPROM绰绰有余。 - 需要按字节修改:用户可能只改一个力度,其他不变。EEPROM直接写那个地址就行,不用动别的。
- 成本敏感:按摩仪是消费电子产品,成本控制很严。EEPROM芯片便宜,几毛钱到一两块钱就能搞定。
- 电路简单:EEPROM通常用I2C或SPI接口,两根线或四根线就能通信。PCB布线简单,不占空间。
我记得有一次做一款便携按摩仪,主控芯片内部自带了小容量EEPROM。连外部芯片都省了,直接在主控里划一块区域存参数。成本降到了最低。
避坑指南:我曾经遇到过一款按摩仪,用户频繁切换模式,导致EEPROM写入次数很快耗尽。后来我加了一个“写入限频”策略:只有参数变化超过一定阈值,或者关机前才写入。寿命直接翻了10倍。
所以,总结一下:按摩仪选EEPROM,是因为它“小、灵活、便宜、够用”。你想想看,用Flash存那几十字节的参数,就像用卡车运一箱牛奶,大材小用。而EEPROM就是那辆小三轮,刚刚好。
本章要点:
- EEPROM按字节读写,掉电不丢数据
- EEPROM适合小容量、频繁改单个参数
- Flash适合大容量、批量读写
- 按摩仪参数少、成本敏感,EEPROM是最优解
下一章,我们会深入EEPROM的硬件接口,看看I2C和SPI怎么选,以及实际电路怎么设计。到时候我会分享一个我踩过的坑——I2C上拉电阻选错了,导致通信不稳定。嗯,到时候细说。