AT24C02驱动学习笔记

       

         AT24C02是一个2K位串行CMOS E2PROM, 内部含有2568位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个8字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

       一、器件地址

      

从图中可以看出,2k/4k8k/16k器件地址高四位都为1010低四位的前三位为可编程地址,这样一个iic总线最多可接8at系列eeprom,最后一位为数据传送方向控制位。

二、写一个字节

图二为主机向从机写一个字节的时序,可以看到先是启动iic然后写器件地址,7位器件地址+位数据传送方向控制位,产生ack应答,写字地址,再产生ack应答,然后发送数据产生ack应答,最后发送iic结束信号。

 三、页写

    通过阅读AT24的数据手册可以发现,2kEEPROM支持8个字节的页写,后面的数据最多能发送8个而且要从页头开始写(这个还是调试过程中发现的,还好用了逻辑分析仪,通过逻辑分析仪我发现写的时序都是正确的,但是读出数据最后几位总是错误然后又查了下手册才发现这条规定)。4K/8K/16K一页则可以写16个字节。通过写多个字节和写一个字节时序图比较可以发现,在发送完上一个字节的数据收到ack应答后不需要再次写器件地址和字地址,只需在收到ack应答后继续发送字节数据,在最后一个字节发送完毕收到ack应答产生一个iic结束信号便可结束写操作。

    四、当前地址读取一个字节

    主机读数据:第一主机先发送iic启动信号,二发送7位器件地址+一位读写方向控制位,三等待ack应答,四读取数据同时后主机发送非应答信号(不是等待从机产生ack应答信号),五产生iic停止信号

    五、从指定字地址开始读

任意读,就是从指定的字节地址开始读。第一先发送iic启动信号,第二发送7器件地址+一位写操作的数据传送位等待ack应答,第三发送要读的字节地址等待ack应答,第四像图四那样操作。

六、读取n个字节

连续读和连续写类似,这里只需要在读取一个字节数据读完发送ack应答继续读取字节,但在读取最后一个字节后要发送非ack应答告诉从机读完了,最后发送iic停止信号。

### AT24C02 HAL库使用指南 #### 关于AT24C02 EEPROM芯片 AT24C02是一款常见的I²C接口EEPROM存储器,具有低功耗特性以及简单的硬件连接方式。该器件支持标准模式下的100kHz I²C总线速度,并提供2K位(即256字节)的串行电可擦除只读存储空间[^1]。 #### STM32 HAL库简介 STM32系列微控制器广泛采用HAL(Hardware Abstraction Layer)库来简化外设驱动程序开发工作。通过调用这些高层API函数可以轻松实现对外部设备的操作而无需深入了解底层寄存器配置细节[^2]。 #### 获取官方资源的方法 意法半导体公司提供了丰富的文档和技术支持材料供开发者查阅下载。对于想要获取有关如何利用HAL库操作AT24C02的具体指导而言,可以从官方网站上找到对应的参考手册、数据表以及应用笔记等文件;此外,在GitHub平台上也有许多开源项目可供学习借鉴[^3]。 #### 示例代码展示 下面给出一段基于STM32CubeMX生成框架下编写用于测试写入并读取指定地址处单个字节数据至/自AT24C02内存位置上的简单例子: ```c #include "main.h" // 定义IIC句柄结构体变量 extern I2C_HandleTypeDef hi2c1; #define AT24C02_ADDRESS (0xA0 << 1) void Error_Handler(void); int main(void) { uint8_t data_to_write = 'A'; uint8_t read_data; /* 初始化所有已使能的外围设备 */ MX_GPIO_Init(); MX_I2C1_Init(); // 向AT24C02的第一个地址单元写入字符'A' HAL_I2C_Mem_Write(&hi2c1, AT24C02_ADDRESS, 0x00, I2C_MEMADD_SIZE_8BIT, &data_to_write, sizeof(data_to_write), HAL_MAX_DELAY); // 从第一个地址单元读回之前写入的数据 HAL_I2C_Mem_Read(&hi2c1, AT24C02_ADDRESS, 0x00, I2C_MEMADD_SIZE_8BIT, &read_data, sizeof(read_data), HAL_MAX_DELAY); if (read_data != data_to_write){ Error_Handler(); } } /** * @brief 错误处理函数 */ void Error_Handler(void) { while (1) { // 发生错误时进入死循环 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenhuaifeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值