好的,阿杰 👍
我给你整理一份 EEPROM 存储芯片 24C02 的详细介绍,包含基本参数、接口说明、工作原理和应用。
📝 24C02 EEPROM 存储芯片详解
1️⃣ 基本概念
24C02 是一款 I²C 接口的 2Kb(256×8bit)EEPROM,属于 Atmel/Microchip 等厂商生产的 I²C 串行存储器。
- 存储容量:2 Kbit = 256 Byte
- 存储类型:非易失性存储(断电不丢失)
- 接口类型:I²C(两线接口)
- 工作电压:2.5V ~ 5.5V
- 数据保持时间:一般 ≥ 100 年
- 擦写次数:10⁵ 次以上
2️⃣ 引脚功能
引脚 | 名称 | 功能说明 |
---|---|---|
1 | A0 | 器件地址选择位 |
2 | A1 | 器件地址选择位 |
3 | A2 | 器件地址选择位 |
4 | GND | 接地 |
5 | SDA | I²C 数据线(双向) |
6 | SCL | I²C 时钟线 |
7 | WP | 写保护(高电平禁止写操作) |
8 | VCC | 电源(2.5~5.5V) |
A0~A2 用于通过 I²C 地址选择多颗芯片同时挂载在总线上。
3️⃣ 工作原理
3.1 I²C 通信
- 24C02 使用 I²C 协议,只需 SDA(数据线) 和 SCL(时钟线) 两根信号线即可通信。
- I²C 总线特点:主机(MCU)控制时钟,支持多主机、多从机。
I²C 数据传输时序:
- 起始信号(START):SDA 由高拉低,SCL 高电平。
- 发送从机地址(7位) + R/W 位:
- 写操作 R/W=0
- 读操作 R/W=1
- 从机应答(ACK):SDA 由从机拉低响应。
- 数据传输:每字节 8bit,完成后从机发送 ACK。
- 停止信号(STOP):SDA 从低拉高,SCL 高电平。
3.2 写操作(写入 EEPROM)
- MCU 发送 起始信号。
- 发送 器件地址 + 写位(R/W=0)。
- 发送 字节地址(0~255)。
- 发送 数据字节。
- 发送 停止信号,EEPROM 内部执行写入操作(约 5ms)。
写保护(WP=高)时,写操作被禁止。
3.3 读操作(读取 EEPROM)
随机读(Random Read):
- MCU 发送起始信号,器件地址 + 写位(0)
- 发送字节地址
- 发送重复起始信号,器件地址 + 读位(1)
- EEPROM 发送数据字节
- MCU 不再需要数据时发送 NACK+STOP
顺序读(Sequential Read):
- 从指定地址开始读取,可连续读取多个字节,EEPROM 地址自动递增。
4️⃣ 使用特点
- 非易失性:断电数据不丢失
- 小容量:适合存储配置参数、校准数据、序列号等
- 低功耗:工作电流低至 µA 级
- 易扩展:多芯片可挂载在同一 I²C 总线上
5️⃣ 应用场景
- 工业控制系统参数存储
- 单片机系统的配置和校准数据
- 家电、仪表、消费电子存储小量非易失性数据
- 记录设备序列号、生产日期等信息
6️⃣ 示例:STM32 通过 I²C 读写 24C02
#include "stm32f1xx_hal.h"
#define EEPROM_ADDR 0xA0 // 24C02 默认器件地址
// 写单字节
void EEPROM_WriteByte(I2C_HandleTypeDef *hi2c, uint8_t mem_addr, uint8_t data) {
HAL_I2C_Mem_Write(hi2c, EEPROM_ADDR, mem_addr, I2C_MEMADD_SIZE_8BIT, &data, 1, 100);
HAL_Delay(5); // 写操作需延时
}
// 读单字节
uint8_t EEPROM_ReadByte(I2C_HandleTypeDef *hi2c, uint8_t mem_addr) {
uint8_t data = 0;
HAL_I2C_Mem_Read(hi2c, EEPROM_ADDR, mem_addr, I2C_MEMADD_SIZE_8BIT, &data, 1, 100);
return data;
}
好嘞,阿杰 👍
我帮你画一个 24C02 EEPROM I²C 通信流程图,直观展示写入和读取操作的流程。
🖥️ 24C02 EEPROM I²C 通信流程图
写操作(Write):
┌──────────────┐
│ MCU 主机 │
└───────┬──────┘
│ START 信号
▼
┌──────────────┐
│ 发送器件地址+W │
└───────┬──────┘
│ ACK
▼
┌──────────────┐
│ 发送字节地址 │
└───────┬──────┘
│ ACK
▼
┌──────────────┐
│ 发送数据字节 │
└───────┬──────┘
│ ACK
▼
STOP
│
▼
EEPROM 内部写入数据 (~5ms)
-------------------------------------------------
读操作(Random Read):
┌──────────────┐
│ MCU 主机 │
└───────┬──────┘
│ START 信号
▼
┌──────────────┐
│ 发送器件地址+W │
└───────┬──────┘
│ ACK
▼
┌──────────────┐
│ 发送字节地址 │
└───────┬──────┘
│ ACK
▼
REPEATED START
│
▼
┌──────────────┐
│ 发送器件地址+R │
└───────┬──────┘
│ ACK
▼
┌──────────────┐
│ 读取数据字节 │
└───────┬──────┘
│ NACK
▼
STOP
📌 说明
- 起始信号(START):SDA 由高拉低,SCL 高电平。
- 器件地址 + R/W:确定操作类型(读或写)。
- ACK / NACK:从机应答或停止应答。
- 字节地址:EEPROM 内部存储单元地址(0~255)。
- 数据字节:实际写入或读取的数据。
- 停止信号(STOP):SDA 由低拉高,SCL 高电平,结束一次通信。
发表回复