蓝桥杯篇---串行EEPROM AT24C02



前言

本文仅仅简单介绍了写字节时序、写页面时序以及串行EEPROM AT24C02的读写。


1. 写字节时序(Byte Write)

特点

写字节时序允许每次向 AT24C02 写入一个字节的数据

时序步骤

1.起始条件(Start Condition)

主机拉低 SDA 线,同时 SCL 为高电平。

2.发送设备地址(Device Address)

主机发送 7 位设备地址(AT24C02 的地址为 1010xxx,其中 xxx 由 A2、A1、A0 引脚决定)
第 8 位为写模式(0)。
AT24C02 回应一个 ACK(拉低 SDA)

3.发送内存地址(Word Address)

主机发送8 位的内存地址(0x00 到 0xFF)。

**AT24C02 **回应一个 ACK。

4.发送数据(Data)

主机发送 8 位数据。

AT24C02 回应一个 ACK。

5.停止条件(Stop Condition)

主机 SDA 线,同时 SCL 为高电平

时序图

Start | Device Address (Write) | ACK | Word Address | ACK | Data | ACK | Stop

代码示例

void AT24C02_WriteByte(uchar addr, uchar data) {
   
    I2C_Start();                  // 起始条件
    I2C_SendByte(AT24C02_ADDR);   // 发送设备地址(写模式)
    I2C_WaitAck();                // 等待 ACK
    I2C_SendByte(addr);           // 发送内存地址
    I2C_WaitAck();                // 等待 ACK
    I2C_SendByte(data);           // 发送数据
    I2C_WaitAck();                // 等待 ACK
    I2C_Stop();                   // 停止条件
}

2. 写页面时序(Page Write)

特点

写页面时序允许一次向 AT24C02 写入多个字节(最多 8 字节)AT24C02 的页大小为 8 字节

时序步骤

1.起始条件(Start Condition)

主机拉低 SDA 线,同时 SCL 为高电平

2.发送设备地址(Device Address)

主机发送 7 位设备地址(AT24C02 的地址为 1010xxx)。

第 8 位为写模式(0)

AT24C02 回应一个 ACK。

3.发送内存地址(Word Address)

主机发送 8 位的内存地址(0x00 到 0xFF)。

AT24C02 回应一个 ACK。

4.发送数据(Data)

主机连续发送多个字节数据(最多 8 字节)

每发送一个字节,AT24C02 回应一个 ACK。

5.停止条件(Stop Condition):

主机拉高 SDA 线,同时 SCL 为高电平

注意事项:

  1. 页边界:如果写入的数据跨越页边界(例如从地址 0x07 开始写入 8 字节),超出部分会回绕到页的开头(覆盖前面的数据)。

  2. 写入时间:每次写入后,AT24C02 需要一定时间(典型值为 5ms)来完成内部写操作。

时序图:

Start | Device Address (Write) | ACK | Word Address | ACK | Data1 | ACK | Data2 | ACK | … | DataN | ACK | Stop

代码示例:

void AT24C02_WritePage(uchar addr, uchar *data, uchar len) {
   
    uchar i;
    I2C_Start();             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值