at24c02是一款由Atmel(现属Microchip)公司推出的串行电可擦可编程只读存储器(EEPROM),采用I2C通信协议,具有容量小、功耗低、接口简单等特点,常用于需要少量数据持久化存储的电子系统中,如单片机应用中的参数配置、设备ID存储、校准数据保存等场景,以下从芯片结构、工作原理、存储程序设计方法及注意事项等方面展开介绍。

芯片概述与基本结构
at24c02的存储容量为256字节(2Kbit),组织形式为32页,每页8字节,支持按字节写入和页写入(每页8字节连续写入),其工作电压范围宽(通常为1.8V-5.5V),采用8引脚DIP/SOP封装,引脚功能包括:VCC(电源正极)、GND(电源地)、SCL(串行时钟线)、SDA(串行数据线)、A0-A2(器件地址选择引脚)、WP(写保护引脚),A0-A2通过接高/低电平可最多选择8个不同地址的芯片挂载到同一I2C总线,避免地址冲突;WP引脚接高电平时,禁止对存储器进行写操作,仅允许读数据,可有效防止误操作导致数据丢失。
芯片内部存储单元采用浮栅晶体管结构,断电后数据可保存长达100年,擦写次数约10万次,适合对存储频率要求不高的场景,其I2C接口采用开漏输出设计,需外接上拉电阻(通常为4.7KΩ)至VCC,确保总线信号稳定。
I2C通信协议详解
at24c02严格遵循I2C总线协议,通信过程由主机(如单片机)发起,从机(at24c02)响应,I2C总线由SCL(时钟线)和SDA(数据线)构成,支持多主机多从机架构,但at24c02仅作为从机使用,通信起始信号(S)为SCL高电平时SDA从高到跳变,停止信号(P)为SCL高电平时SDA从低到高跳变,数据传输需在起始信号之后、停止信号之前完成,每个字节(8位)传输后需接收方发送应答位(ACK,低电平)或非应答位(NACK,高电平)。
at24c02的7位器件地址固定为“1010”,剩余3位由A0-A2引脚的电平决定,因此总地址为“1010+A2A1A0”,读写操作时最低位(R/W)为0表示写操作、1表示读操作,若A2A1A0均为0,则写操作地址为0xA0,读操作地址为0xA1。
存储程序的核心操作流程
使用at24c02存储程序数据,需实现初始化、字节写入、页写入、随机读取、顺序读取等核心功能,以下基于单片机(如STM32、51系列)的伪代码逻辑展开说明。

初始化与总线配置
首先需配置单片机的I2C外设(或GPIO模拟I2C),包括设置SCL和SDA引脚为开漏输出、使能上拉电阻、配置通信时钟(at24c02支持标准模式100kHz和快速模式400kHz),初始化完成后,需检测总线是否空闲(SDA和SCL均为高电平),避免与总线上的其他设备冲突。
字节写入操作
字节写入是将单个数据写入指定地址,流程为:
- 起始信号:主机发送起始信号(S);
- 发送写地址:主机发送7位器件地址+写位(0),等待从机应答(ACK);
- 发送存储地址:主机发送8位存储地址(0x00-0xFF),从机应答;
- 发送数据:主机发送1字节数据,从机应答;
- 停止信号:主机发送停止信号(P),启动内部写周期(约5ms)。
需注意:字节写入后,芯片进入内部写周期,此时总线忙,主机需通过发送起始信号和从机地址检测芯片是否就绪(应答成功则就绪),避免在写周期内进行其他操作。
页写入操作
页写入支持连续写入8字节数据(一页),需满足:起始地址在同一页内,且写入数据不超过页边界,若跨页写入,地址会自动回绕到当前页起始地址,覆盖之前数据,流程与字节写入类似,仅在“发送数据”步骤中连续发送1-8字节数据,每字节后从机均应答,最后发送停止信号启动写周期。
数据读取操作
读取数据需先指定起始地址,分“当前地址读”“随机地址读”“顺序读”三种模式,常用“随机地址读”和“顺序读”。

- 随机地址读:先通过写操作指定起始地址(不发送停止信号,重复起始信号S),再切换到读模式发送读地址,读取1字节数据后主机发送NACK(结束读取)和停止信号。
- 顺序读:在随机地址读基础上,读取1字节数据后主机发送ACK,从机自动递增地址,连续读取数据,直至主机发送NACK和停止信号。
典型应用场景与硬件设计
at24c02常用于单片机系统中存储少量非易失性数据,
- 设备参数保存:如温控系统的温度阈值、电机的转速曲线等,掉电后无需重新配置;
- 身份标识存储:如设备唯一ID、加密密钥等,防止被篡改;
- 校准数据存储:如传感器校准参数(零点、增益),提高系统精度。
硬件设计时,需注意:
- 上拉电阻:SCL和SDA线需接4.7KΩ上拉电阻至VCC,确保信号电平有效;
- 电源滤波:VCC和GND间接0.1μF电容,滤除电源噪声;
- 写保护电路:若需防止误写,可将WP引脚接VCC,或在软件中动态控制。
使用注意事项与优化建议
- 写操作延时:字节/页写入后,芯片需5ms左右完成内部写周期,期间总线忙,需通过检测从机应答判断就绪状态,避免数据写入失败;
- 地址边界处理:页写入时需确保数据不跨页,否则数据回绕导致覆盖;随机地址读时需先“伪写”指定地址,再切换到读模式;
- 擦写寿命管理:避免频繁擦写同一地址,可采用“磨损均衡”策略(如轮换存储区域),延长芯片寿命;
- 多设备地址冲突:同一I2C总线挂载多个at24c02时,需通过A0-A2引脚设置不同地址,确保通信唯一性。
相关问答FAQs
Q1: at24c02的页写入功能在使用时需要注意什么?
A1: 页写入时需注意两点:一是每页仅支持8字节连续写入,若起始地址为0x05,写入数据超过3字节(至0x07)则正常,超过0x07会从0x00开始覆盖;二是写入前需确保芯片不在写周期内(通过检测从机应答判断),且建议在页写入前检查地址边界,避免跨页导致数据错误。
Q2: 为什么at24c02写入数据后需要延时才能读取?
A2: at24c02写入数据后,需通过内部电路(浮栅电荷注入/擦除)完成数据的持久化存储,这个过程称为“内部写周期”,典型时间为5ms(最大10ms),若立即读取,可能因数据未完全写入导致读取错误,因此需在写操作后通过检测从机应答或固定延时确保芯片就绪。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/55755.html