I2C接口原理图:
可以看到只有两条线被引出,
一条为SCL:时钟线
一条为SDA:数据线
I2C总线设备互联:
I2C总线的信号类型:
开始信号:
比如:2440让时钟线保持高电平,然后让数据线由高电平转换为低电平,这就表示一个开始信号。
停止信号:
比如:2440让时钟线保持高电平,然后让数据线由低电平转换为高电平,这就表示一个停止信号。
响应信号:
在I2C总线上面的设备接受到8位数据后,在第9个周期,拉低数据线
也就是释放数据线
应答信号:
也就是说连接在I2C总线上面的设备,只会在时钟线处于高电平的时候才会去接受数据,且每次只能接受一位的数据,并且需要保持平稳的数据,如果数据线要切换数据,必须在时钟线为低电平的时候
I2C总线的数据传输格式:
数据线每次传送必须为8个位,也就是一个字节,传输的总字节数是不限制的,但是没传送一个字节,需要发送一个响应位,且数据是从高字节开始传送的
在开启一个传输时,是如何在总线上找到对应的设备的呢?
首先,主机发送一个S信号,其中包括:
S:start开始信号
7位从机数据:可以最多表示2的7次方(128)个设备
R(1):指对方的数据,读取数据到目标
W(0):表示发送数据,写数据到目标
A:也就是当遇到对于的7位的从机设备,则发送一个ACK信号,在第9位将数据线拉低
上面的协议只是一个例子,具体协议,要根据对于的I2C文档查看协议