什么是EEPROM?
EEPROM 是一种用电信号即可擦除和重新编程、断电不丢数据、可以按字节修改的非易失性存储器,非常适合存储那些需要频繁小量更新但又要长期保存的配置或数据,其核心优势在于字节级修改的灵活性。
EEPROM 在需要精确字节级修改、中小等容量、⾼可靠性 的场景中仍有不可替代的优势。
AT24C02生态介绍
AT24C02 是⼀种 EEROM 芯⽚,是⼀款经典的的 EEPROM
AT24C02逐字介绍
AT:Atmel(爱特梅尔)是⼀家总部位于美国的全球领先半导体公司,虽然现在很多厂商都在生产 24C02,但 "24" 前缀已经成为了这一系列芯片的行业代名词。
24: 系列 / 协议标识
-
24 系列:采用 I2C 协议(SDA, SCL 两根线)
-
25 系列:通常采用 SPI 协议(速度更快,引脚更多)
-
93 系列:采用 Microwire 协议(较老的一种三线接口)
**C:**工艺 / 电压标识,意味着低功耗,支持宽电压工作范围(通常为 1.7V 到 5.5V,非常适合 3.3V 的 STM32)
02: 代表存储容量 (Capacity)。表示其存储容量为 2Kbit。换算成字节是 256 字节,计算方法是:2Kbit / 8 = 2048bit / 8 = 256 Bytes )。
进口与国产
当然由于成本问题,外国的真正AT24C02价格是比较昂贵的,所以多用国产的进行替代,比如深圳的英锐芯。
从立创商城里可以看到,进口的美国微芯比国产的贵上不少。

AT24C02读写介绍
AT24C02 支持两种读写:随机读写、顺序读写
随机读取:可以指定任意地址读取单个字节
顺序读取:读取一个字节后,24C02 芯片的内部地址指针自动递增,可以连续读取后续字节
怎么理解AT24C02的地址
把 AT24C02 想象成为 uint8_t array 256 的数组,所谓的地址,就是数组下标
也可以当做 uint8_t array 328 的二维数组(分成32个页)
页的概念
AT24C02一共有256个字节,其中被分为了32页,每页8个字节

获取页地址的小技巧
观察上面的图片,可以看出每一页有8个字节,每一个字节都有自己的一个地址,所以页的地址变化应该在上八位比特位地址的高5位 ,而相同页字节地址变化在低3位。因此我们随便拿到某个字节的地址,**只要&(~0x07)**即可得到该字节所在的页的地址。
写入规则:
1支持把一个字节写入到任意地址
2 24C02芯片最多支持一次性写入一页数据
回绕:
当连续写入时,若超出一个字节的限制,或超出一页的限制,24C02是不会往下一个字节或往下一页写入的,而是会回绕回来,回到开头继续写入,把前面的数据覆盖掉。
例子:
从0x06 写 4 字节 → 0x06,0x07,0x08,0x09,其中 0x08,0x09 回卷至页 0 开头,结果:0x06,0x08,0x09,0x01

认识AT24C02的引脚

WP
这是AT24C02的写保护引脚
当 WP 引脚连接到 **GND(低电平)**时,允许正常的读、写操作。
当 WP 引脚连接到 **VCC(高电平)**时,整个存储器被写保护,禁止写入操作,但可以读取。
A0 A1 A2
AT24C02 芯片三个地址引脚 A2、A1、A0。这些引脚可以连接到 VCC 或 GND 来设置该芯片在 I2C 总线上的低 3 位地址。
一般来说,AT24C02的地址是101 0A0 A1 A2 ,有这个位主要是为了避免和其他从设备产生地址冲突。