AT24C02 模块:控制原理与驱动方法
演示视频:
【开源】STM32+AT24C02模块,记录并显示开机次数
一、控制原理
AT24C02 是一款基于 I2C(Inter-Integrated Circuit)总线的 EEPROM(电可擦除可编程只读存储器)模块,核心控制逻辑围绕 I2C 通信协议展开。
1. I2C 通信基础
I2C 总线仅需两根信号线:SDA(串行数据线)和 SCL(串行时钟线),均需通过上拉电阻接高电平,实现主从设备间的双向数据传输。通信时,主设备(如 MCU)通过 SCL 发送时钟信号,同步 SDA 上的字节数据(8 位),每个字节后需跟随 1 位应答信号(ACK/NACK),确保数据传输有效性。
2. 设备地址与读写控制
AT24C02 的 I2C 设备地址由固定部分和可编程部分组成:固定前缀为1010(4 位),后续 3 位为硬件地址(通过模块 A0、A1、A2 引脚电平设置,默认多为 000),最后 1 位为读写控制位(0 表示写操作,1 表示读操作)。例如,当 A0-A2 均为低电平时,写地址为0xA0,读地址为0xA1。
3. 数据读写逻辑
-
写操作:主设备先发送写地址并获取 ACK,再发送 2 字节存储地址(AT24C02 为 16 位地址空间,对应 256 字节存储容量),最后发送 1 字节数据;模块接收数据后返回 ACK,主设备发送停止信号(STOP)完成写入,数据会在内部自动完成擦除 - 写入过程。
-
读操作:分 “随机读” 和 “顺序读”。随机读需先发送写地址 + 存储地址(类似写操作前两步),再发送读地址并获取 ACK,随后读取模块返回的数据;顺序读则在随机读基础上,主设备每接收 1 字节数据后发送 ACK,模块会自动递增地址,持续输出后续数据,直至主设备发送 NACK 和停止信号。
二、驱动方法
AT24C02 的驱动需结合硬件连接与软件逻辑,核心是实现 I2C 总线时序控制与模块指令交互。
1. 硬件连接
-
电源:模块 VCC 引脚接 3.3V 或 5V(需匹配模块供电规格),GND 引脚接系统地,确保电源稳定(建议添加 0.1μF 滤波电容)。
-
I2C 总线:模块 SDA 引脚接主设备(如 MCU)的 SDA 引脚,SCL 引脚接主设备的 SCL 引脚;若主设备无内置上拉电阻,需在 SDA、SCL 与 VCC 间各接一个 4.7kΩ-10kΩ 的上拉电阻,保证总线空闲时为高电平。
-
地址引脚:A0、A1、A2 引脚根据需求接高电平、低电平或悬空(悬空视为低电平),确定模块的 I2C 地址,避免多模块通信时地址冲突。
2. 软件设计核心步骤
-
I2C 总线初始化:配置主设备的 SDA、SCL 引脚为开漏输出模式(符合 I2C 总线电平特性),设置 SCL 时钟频率(AT24C02 支持 100kHz 标准模式和 400kHz 快速模式,需根据主设备能力选择),初始化总线为空闲状态(SDA、SCL 均为高电平)。
-
基础时序实现:编写 I2C 起始信号(S)、停止信号(P)、应答信号(ACK)、非应答信号(NACK)的驱动函数。例如,起始信号为 “SCL 高电平时,SDA 从高变低”;停止信号为 “SCL 高电平时,SDA 从低变高”。
-
读写指令封装:
-
写函数:按 “发送起始信号→发送写地址→等待 ACK→发送存储地址(高 8 位→低 8 位)→等待 ACK→发送数据→等待 ACK→发送停止信号” 的流程封装,确保每一步时序符合 I2C 协议和 AT24C02 要求。
-
读函数:随机读按 “发送起始信号→发送写地址→等待 ACK→发送存储地址→等待 ACK→发送起始信号→发送读地址→等待 ACK→读取数据→发送 NACK→发送停止信号” 封装;顺序读则在读取数据后循环发送 ACK,直至完成指定长度读取,最后发送 NACK 和停止信号。
-
-
数据校验(可选):为确保数据准确性,可在写入后立即读取对应地址数据,与写入数据对比,若不一致则重新写入,适用于对数据可靠性要求较高的场景。
5万+

被折叠的 条评论
为什么被折叠?



