AT24C02的使用

1.简介

        AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节。AT24C02有一个8字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

2.分析

参考博客https://blog.csdn.net/qq_38693598/article/details/86521264

2.1AT24C02引脚

AT24C02的话,就是存储单元有2K位,即0.25K字节=256字节,寻址范围为0~255,寻址地址位数就有8位。

AT24C04的话,就是存储单元有4K位,即0.5K字节=512字节,寻址范围为0~511,寻址地址位数就有9位

AT24C08的话,就是存储单元有8K位,即1K字节=1024字节,寻址范围为0~1023,寻址地址位数就有10位。

以此类推。。。

2.2寻址方式

操作时有两种寻址方式:片寻址和存储单元寻址。
(1)片寻址:AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2,A1,A0可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为0,表示芯片进行写操作;该位为1,表示芯片进行读操作。
(2)存储单元寻址:芯片寻址可对内部存储单元256B中的任一个进行读/写操作,其寻址范围为00~FF,共256个寻址单位。

2.3代码解析

IIC只能一次传送8位但是AT24C04/08等芯片的存储单位地址不止8位。所以需要存储单元多出的几位地址要占用片寻址的A0~A2。

比如:由上面可知,AT24C08有10位地址,所以要占用片寻址的2位。

当ReadAddr超过256字节时,ReadAddr/256就会得到a9a8值。写成10位地址就是0000 0000 a9a8,左移一位就是0000 000a9 a80,刚好对应片地址1010 A2a9a8R/W。

所以IIC_Send_Byte(0XA0+((ReadAddr/256)<<1))  //发送器件地址0XA0+存储单元高位地址

IIC_Send_Byte(ReadAddr%256);   //发送存储单元低位地址

2.4时序

 

 

 

 

 

### AT24C02 芯片的应用电路与连接方式 AT24C02 是一款基于 I²C 总线协议的 EEPROM 存储器芯片,具有低功耗、高可靠性和易于使用的特性。以下是关于该芯片的具体使用电路及其连接方式。 #### 1. **基本工作原理** AT24C02 的核心功能是通过 I²C 协议实现数据存储和读取操作。I²C 接口通常由两根信号线组成:SDA(串行数据线)和 SCL(串行时钟线)。这两条线路分别负责传输数据与时序同步[^1]。 #### 2. **典型应用电路设计** ##### (1)硬件连接 在实际应用中,AT24C02 需要与微控制器(如单片机或 STM32 系列 MCU)相连。其典型的连接方式如下: | 引脚编号 | 功能描述 | 连接目标 | |----------|------------------|------------------------------| | A0, A1, A2 | 地址设置引脚 | 可接地或接 VCC | | WP | 写保护引脚 | 默认接地 | | GND | 接地 | 接系统地 | | VCC | 电源输入 | 接供电电压 (一般为 5V 或 3.3V) | | SDA | 数据通信线 | 连接到 MCU 的对应 GPIO | | SCL | 时钟通信线 | 连接到 MCU 的对应 GPIO | 注意,在 SDA 和 SCL 上需接入上拉电阻(通常是 4.7kΩ),以确保信号电平稳定[^2]。 ##### (2)示例电路图 以下是一个简单的 AT24C02 应用电路图,展示了如何将其集成到一个完整的电子系统中。 ```plaintext +-----------------------------------+ | | | +-----+ | | VCC ---| A2 |- GND | | | A1 |- GND | | | A0 |- GND | | +-----+ | | | | | SDA ------| SDA |-------------> | SCL ------| SCL |-------------> | GND -----| GND |---------------> System Ground | VCC -----| VCC |---------------> Power Supply | WP -------| WP |-- GND | | +-----------------------------------+ ``` 其中,`SDA` 和 `SCL` 分别连接至 MCU 的指定 GPIO 引脚,并配置为支持 I²C 模式的双向通信模式[^3]。 #### 3. **软件驱动说明** 为了使能 AT24C02 的正常运行,需要编写对应的初始化程序以及数据存取函数。下面提供了一个基础的 C 语言代码框架供参考: ```c #include <stdio.h> #include <stdint.h> #define ADDRESS_AT24C02 0xA0 // 设备地址定义 void i2c_start(void); void i2c_stop(void); uint8_t i2c_write(uint8_t data); uint8_t i2c_read_ack(); uint8_t i2c_read_nack(); // 初始化 I2C 总线 void at24c02_init() { i2c_start(); // 发送起始条件 } // 向 EEPROM 中写入字节 void write_byte_to_eeprom(uint16_t address, uint8_t byte_data) { i2c_start(); i2c_write(ADDRESS_AT24C02); // 设置设备地址 i2c_write((address >> 8)); // 高位地址 i2c_write(address & 0xFF); // 低位地址 i2c_write(byte_data); // 实际数据 i2c_stop(); } // 从 EEPROM 中读取字节 uint8_t read_byte_from_eeprom(uint16_t address) { i2c_start(); i2c_write(ADDRESS_AT24C02); // 设置设备地址 i2c_write((address >> 8)); // 高位地址 i2c_write(address & 0xFF); // 低位地址 i2c_start(); i2c_write(ADDRESS_AT24C02 | 1); // 切换到读模式 uint8_t result = i2c_read_nack(); i2c_stop(); return result; } ``` 上述代码实现了对 AT24C02 的简单读写操作,具体细节可能因不同平台而有所调整。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值