AT24C02是一种失去电源供给后依旧能保持数据的储存器,常用来储存一些配置信息,在系统重新上电之后也可以加载。它的容量是2k bit的EEPROM存储器,采用I2C通信方式。
AT24C02支持两种写操作:字节写操作和页写操作。本实验中我们采用的是字节写操作,就是一个地址一个数据这样进行数据写入。页写模式就是连续写入数据,只需写入一个地址,连续写入数据的时候,地址会自动后移,但有页限制,超出一页的时候,超出数据会覆盖原先写入的数据。
AT24C02支持三种读操作:当前地址读操作,随机地址读操作和顺序读操作模式。
当前地址读模式是基于上一次读/写操作的最后位置继续读出数据。随机地址读模式是指定地址读出数据。顺序读操作模式就是连续读出数据,会自动翻页。
注意到我们采用的STM32F1系列里,SCL时钟线为PB6,SDA数据线为PB7。本次实验中,时钟线我们就正常的设置为推挽输入,数据线则设置为开漏模式(因为我们引入了外部上拉电阻,提供稳定的空闲高电平,而且我们的数据线既要作为输出,又要作为输入,用开漏输出模式,能很好地实现输入输出共用,避免频繁IO模式切换带来的麻烦)。编写代码时,注意完成发送的时候,主机要释放SDA。
在开漏模式下,MCU读取IDR状态寄存器,来获取引脚高低电平。

接下来编写我们的实验代码:
首先编写我们的函数头文件iic.c:
#include "./BSP/IIC/iic.h"
#include "./SYSTEM/delay/delay.h"
void iic_init(void){
GPIO_InitTypeDef gpio_init_struct = {0};
IIC_SCL_GPIO_CLK_ENABLE();
IIC_SDA_GPIO_CLK_ENABLE();
//SCL设置
gpi

本文详细介绍了如何使用STM32F1系列微控制器通过I2C通信协议与AT24C02EEPROM进行交互,包括初始化GPIO、设置I2C时序、执行写入和读取操作。代码示例展示了字节写操作和读操作的实现,以及如何处理应答信号。
最低0.47元/天 解锁文章
1760





