参考链接:https://www.bilibili.com/video/BV1Mb411e7re?p=27
1. I2C介绍
(1)I2C总线是由philips公司开发的一种通用数据总线,两根通信线:SCL
、SDA
,同步、半双工,带数据应答。I2C设备的SCL
连在一起,SDA
连在一起。
(2)设备的SCL
和SDA
均要配置成开漏输出模式,SCL
和SDA
各添加一个上拉电阻,阻值一般为4.7KΩ左右。开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通讯互相干扰的问题。图为I2C总线连接图。
(3)开漏输出就是不输出电压,控制输出低电平0时引脚接地,控制输出高电平1时引脚既不输出高电平,也不输出低电平,为高阻态(不能正常输出1)。
2. AT24C02中引脚的作用
(1)AT24C02存储芯片中WP
引脚为写保护引脚,高电平有效(禁止写,只读),低电平失效(可读可写),一般连接低电平。
(2)A0
、A1
、A2
引脚在使用多个AT24C02才会使用,可以根据A0-A2
的地址不同,选择对应地址的AT24C02进行通信,一般只使用一个AT24C02时A0-A2
都接低电平。
3. I2C通信–起始条件和终止条件
起始条件:SCL
高电平期间,SDA
从高电平切换到低电平
终止条件:SCL
高电平期间,SDA
从低电平切换到高电平
4. I2C通信–主机发送一个字节
SCL
低电平期间,主机将数据位依次放到SDA
线上(高位在前),然后拉高SCL
,从机将在SCL
高电平期间读取数据位,所以SCL
高电平期间SDA
不允许有数据变化,依次循环上述过程8次,即可发送一个字节
5. I2C通信–主机接收一个字节
SCL
低电平期间,从机将数据位依次放到SDA
线上(高位在前),然后拉高SCL
,主机将在SCL
高电平期间读取数据位,所以SCL
高电平期间SDA
不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA
,让从机掌控SDA
线)
6. I2C通信–主机接收应答
在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0
表示应答,数据1
表示非应答(主机在接收之前,需要释放SDA
给从机发送应答)
7. I2C通信–主机发送应答
在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0
表示应答,数据1
表示非应答
8. I2C通信–主机发送数据给从机的流程
9. I2C通信–主机接收一帧数据的流程
10. I2C通信–主机先发送在接收数据帧(也称复合格式)
11. I2C通信–字节写:在WORD ADDRESS的对应地址处写入数据DATA
12. I2C通信–随机读:读出在WORD ADDRESS处的数据DATA