1. EEPROM基础认知
各位同学好,我是老张。今天咱们开始聊EEPROM,这是从站设备配置里绕不开的一个基础模块。说实话,我刚入行那会儿,也分不清EEPROM和Flash到底有啥区别,直到有一次在产线上被折腾得够呛……嗯,这些坑咱们今天一并讲清楚。
1.1 什么是EEPROM
EEPROM,全称是Electrically Erasable Programmable Read-Only Memory,中文叫“电可擦除可编程只读存储器”。名字挺长,但说白了就是:一种掉电不丢数据、又能通过电信号擦写的小容量存储芯片。
我习惯把它理解成“一个可以反复擦写的小本本”。你写上去的东西,断电了还在;想改内容,给个电压信号就能擦掉重写。跟RAM不一样,RAM一断电就全没了。
核心特点:
- 掉电后数据不丢失(非易失性)
- 按字节擦写(这是关键区别)
- 擦写次数有限,通常10万~100万次
- 数据保存时间10~100年
1.2 EEPROM与Flash的区别
这个问题我面试新人时经常问。很多人觉得“都是非易失存储,差不多嘛”。其实差远了。
我做个表格,大家一目了然:
| 对比项 | EEPROM | Flash(NOR/NAND) |
|---|---|---|
| 擦写粒度 | 按字节擦写 | 按扇区/块擦写 |
| 擦写速度 | 较慢(ms级) | 较快(us级) |
| 容量范围 | 通常1Kb~512Kb | 通常1Mb~64Gb+ |
| 擦写寿命 | 10万~100万次 | 1万~10万次 |
| 成本(每bit) | 较高 | 较低 |
| 典型应用 | 配置参数、校准数据 | 程序代码、大容量文件 |
你看,最核心的区别就是擦写粒度。EEPROM可以单独改一个字节,Flash必须整块擦除再写。我在一个项目中遇到过,用Flash存设备参数,每次改一个参数就得把整个扇区读出来、擦掉、再写回去。万一中途断电……嗯,数据就全丢了。从那以后,凡是存配置参数的地方,我坚决用EEPROM。
我的经验:
如果存储的是“频繁修改的小数据”(比如设备地址、波特率、校准系数),选EEPROM。如果存的是“固件程序或日志文件”,选Flash。别混用,否则坑的是自己。
1.3 从站设备为什么需要EEPROM
你想想看,一个从站设备(比如Modbus RTU从站、EtherCAT从站),上电后总得知道自己是谁吧?
- 设备地址:总线上挂了好几个设备,每个得有个唯一ID
- 通信参数:波特率、校验方式、数据位这些
- 校准数据:传感器采集的偏移量、增益系数
- 运行状态:掉电前的工作模式、累计运行时间
- 用户配置:用户自定义的参数表
这些数据如果存在MCU内部Flash里,每次改一个参数都得擦写整个扇区,太折腾了。而且很多MCU的Flash擦写寿命只有1万次,频繁改参数很快就废了。
EEPROM就不一样。我曾经做过一个温控器项目,用户需要频繁调整PID参数。用EEPROM存参数,每次改完直接写进去,用了三年没出过问题。要是用Flash……估计早就挂了。
注意:
EEPROM也不是万能的。它的擦写速度慢,不适合频繁写入的场景(比如每秒写一次)。如果写入频率太高,建议加个“写缓存”策略,或者用FRAM(铁电存储器)替代。
1.4 常见EEPROM型号与选型
市面上EEPROM型号很多,我挑几个常用的说说:
| 型号 | 容量 | 接口 | 典型应用 |
|---|---|---|---|
| AT24C02 | 2Kb (256字节) | I²C | 存设备地址、小参数 |
| AT24C256 | 256Kb (32KB) | I²C | 存配置表、校准数据 |
| 25AA1024 | 1Mb (128KB) | SPI | 存较大参数集 |
| M95080 | 8Kb (1KB) | SPI | 工业从站设备 |
| FM24CL64 | 64Kb (8KB) | I²C (FRAM) | 高频写入场景 |
选型时我一般看这几点:
- 容量:先算清楚要存多少数据。别贪大,也别抠门。我习惯留30%余量。
- 接口:I²C引脚少(2根线),但速度慢;SPI速度快,但多两根线。小项目用I²C,大项目用SPI。
- 擦写寿命:如果参数频繁改,选寿命长的(比如100万次)。如果只是出厂写一次,10万次也够。
- 工作温度:工业级要选-40℃~85℃的,别用商业级凑合。
- 封装:SOP-8最常见,DFN更小但焊接麻烦。
我的选型习惯:
一般从站设备,我首选AT24C256(I²C接口,32KB容量)。容量够用,驱动代码网上大把,调试也方便。如果项目对速度有要求,换25AA1024(SPI接口)。至于FRAM,除非写入频率特别高,否则性价比不高。
知识体系图
下面这张图帮你理清本章的知识脉络:
好了,这一章就到这里。EEPROM这东西,看着简单,但用好了能省很多事。下一章咱们聊EEPROM的硬件接口设计,包括I²C和SPI的电路细节,到时候我会分享一些实际项目中的踩坑经验。
公众号:蓝海资料掘金营,微信deep3321