linux-I2C驱动(1)--i2c的简单介绍
I²C(Inter-Integrated Circuit)“集成电路之间”,是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了主板、嵌入式系统或手机用以连接低速周边设备而发展。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。
I2C总线只有两根双向信号线。
SDA: Serial Data Line-数据线
SCL :Serial Clock-时钟线
I2C在传输数据是共有三种信号:
- 开始信号(S):SCL为高电平时,SDA由高电平变为低电平,开始传送数据;
- 结束信号(P):SCL为高电平时,SDA由低电平变为高电平,结束传送数据;
- 相应信号(ACK):接收器在收到8位数据后,在第九个时钟周期,拉低SDA;
SDA上传输数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间发生电平变化。发送到SDA线上的每个字节必须是8位的,每次传输可以发送的字节不受限制。每个字节后必须跟一个响应位。首先传输是数据的最高位(MSB)。
启动一个传输时,主机先发出S信号,然后发出8位数据。这8位数据中的前7位为从机地址,第八位表示传输方向(R/W:0表示写操作;1表示读操作)。被选中的从机发出响应信号。然后,进行字节读写操作和其响应。最后,主机发出P信号结束本次传输。
以AT24C08为例
1、写一个字节:
2、