4、常用EEPROM芯片选型:AT24C02/04/08/16系列
好,咱们接着聊EEPROM选型。说实话,AT24C系列是我用得最多的一个家族。从最早做智能电表,到后来做医疗设备,几乎每个项目里都能见到它的影子。为什么?因为稳定、便宜、资料多,出了问题网上随便一搜就有答案。
今天咱们重点聊聊AT24C02、04、08、16这四款。它们本质上是一家人,只是容量不同。你想想看,搞懂了其中一个,其他的基本就通了。
4.1 容量与页大小
先看容量。这个系列命名其实挺直接的:
| 型号 | 容量(bit) | 容量(Byte) | 页大小(Byte) | 器件地址 |
|---|---|---|---|---|
| AT24C02 | 2K | 256 | 8 | 1010 A2 A1 A0 |
| AT24C04 | 4K | 512 | 16 | 1010 A2 A1 P |
| AT24C08 | 8K | 1024 | 16 | 1010 A2 P P |
| AT24C16 | 16K | 2048 | 16 | 1010 P P P |
这里有个细节我得提醒你。页大小不是随便定的,它跟内部缓存区大小直接相关。AT24C02的页只有8字节,而04/08/16都是16字节。我在做制氧机参数存储时,一开始没注意这个区别,写数据时跨页了,结果数据乱掉。嗯,后来老老实实看了数据手册才明白。
核心要点:写操作时,如果数据超过一页,必须分页写入。否则数据会回卷覆盖,这是新手最容易踩的坑。
4.2 地址引脚配置
地址引脚这块,很多人觉得复杂。其实说白了,就是I2C总线上能挂几个芯片的问题。
AT24C02有3个地址引脚:A0、A1、A2。每个引脚可以接高或低,所以最多能挂8片。我有个项目需要存8组不同的校准参数,正好用了8片AT24C02,地址从0x50到0x57。
但到了AT24C04,情况变了。它只有A0和A1两个地址引脚,A2被内部用作页地址选择。所以最多只能挂4片。AT24C08更少,只有A2一个引脚,最多挂2片。AT24C16呢?一个地址引脚都没有,全部被内部页地址占用了,所以只能挂1片。
为什么会这样?因为芯片容量大了,需要更多的地址位来寻址内部存储单元。地址引脚就被征用了。我记得第一次用AT24C16时,怎么都读不到数据,查了半天才发现是地址搞错了。
我的经验:画原理图时,建议把不用的地址引脚直接接地。别悬空,悬空容易受干扰。我吃过这个亏,后来一律下拉到GND。
4.3 写周期与掉电保护
EEPROM写数据需要时间,这个叫写周期。AT24C系列典型值是5ms,最长10ms。你想想看,如果写数据写到一半突然断电了,会发生什么?
嗯,数据可能只写了一半,或者写错了位置。这就是掉电保护要解决的问题。
我一般会在写操作前,先把数据备份到另一个区域。写完后校验,校验通过再清除备份。如果写的过程中断电了,下次上电时检测到备份区有数据,就恢复回来。这个思路在制氧机里特别实用,因为设备经常在户外使用,电源不稳定。
警告:不要频繁写EEPROM。AT24C系列擦写寿命一般是100万次。如果每秒钟写一次,大概能用11天。制氧机参数通常只在参数变更时写入,这个频率完全够用。
4.4 选型建议
我个人习惯这样选:
- 存储参数少于256字节:用AT24C02,便宜,而且地址灵活
- 需要存多组参数:用AT24C04或08,页大小16字节,写效率高
- 需要存大量历史数据:用AT24C16,但要注意只能挂一片
另外,如果你发现I2C总线上设备太多,地址不够用,可以考虑用AT24C02。它地址引脚多,能挂8片,比用大容量芯片更灵活。
好了,这一节就聊到这儿。下一节咱们讲讲EEPROM的读写时序,那个才是真正考验功底的地方。