AT24C01
AT24C02-----可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息
存储介质:E2PROM
通信接口:I2C总线
容量:256字节
逐行扫描
引脚及应用电路
I2C
支持总线挂载多设备(一主多从、多主多从)
一主多从:单片机作为主机,主导I2C总线的运行,挂载在I2C总线的所有外部模块都是从机。只有主机同意才能控制I2C总线。(大多数)
[例如:老师上课]
多主多从:任一模块都可以是主机,同一时间只有一个主机,会发生总线冲突。
通过通信线实现单片机读写外挂模块寄存器的功能,其中至少实现在指定的位置写寄存器和在指定的位置读寄存器两个功能,实现读写寄存器就对模块进行完全控制。
(//自我理解:通过通信线实现单片机和外部寄存器的数据传输 )
使用同步时序可以极大的降低单片机对硬件电路的依赖,即使没有硬件电路也可以用软件手动翻转电平来实现通信。
异步时序:省一根时钟线,节约资源;对时间要求严格,对硬件电路的依赖比较严重。(同步正好相反,低端单片机也可以使用软件模拟时序)
代码:
void I2C_Start(void) //起始
{
I2C_SDA = 1;
I2C_SCL = 1;
I2C_SDA = 0;
I2C_SCL = 0; //占用总线 & 方便基本单元的拼接 保证除了起始和终止条件,每个时序单元的SCL都是以低电平开始,低电平结束
}
void I2C_Stop(void) //终止
{
I2C_SDA = 0;
I2C_SCL = 1;
I2C_SDA = 1;
}
接收:主机将SDA控制权交给从机
主机发送应答:SCL发送完最后一个字节下降沿后,主机变化SDA,释放SDA不给从机应答,拉低SDA给从机应答,从机在SCL高电平处读取是否应答
从机接收应答:SCL低电平期间,主机释放SDA,从机应答即拉低,不应答默认高
I2C数据帧
S(开始)–从机地址(4位固定+3位可配置[见电路引脚])+读写位(1位0)–接收应答0–第一个字节–接受应答……