Nuru_Banmian
Nuru_Banmian
Published on 2025-04-07 / 61 Visits
0
0

I2C-底层原理和协议

概念

一个引脚少,硬件实现简单,可扩展性

广泛的使用在系统内多个集成电路(IC)间的低速通讯

简单的双向两线制总线协议标准,支持同步串行半双工通讯

说明两线中其中有一条线是时钟信号线,一条是信息传输线,所以同步半双工

物理层

I2C_图_物理层.png

SCL:串行时钟总线,用于数据手法同步

时钟总线的时钟频率由主设备输出频率来同步其他设备的频率

SDA:串行数据总线,用高低电平表示数据

当从设备想要输出数据时,从设备会将输出变为0,此时总线上的高电平全被此处的0拉低,告诉其他设备有设备将要输出信息,随后从设备再发送数据,实现了总线数据输出时不会和其他设备串用总线

这种提醒一般是在SDA中进行的,也有特殊情况可以从SCL发送提醒

可连接多个I2C通讯设备,支持一主多从也支持多主多从

每一个设备都有唯一的地址,主机通过这个地址与从机通信

总线通过上拉电阻接到电源. 设备空闲时,输出高阻态,当所有设备空闲时,都输出高阻态,由上拉电阻把总线拉成高电平

协议层

位传输: 作为串行通信,是按照位进行传输,一般是高位先行

起始信号:当SCL是高电平时,SDA线从高电平向低电平切换时就是起始信号

就是前面讲述SDA从设备发送数据时前的操作

停止信号:当SCL是高电平时,SDA线从低电平向高电平切换时就是停止信号

传输地址:主机通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机,最后的R/W_是数据的传送方向(主机->从机/从机->主机,1为read,主机读取,0为write,主机写入)

传输地址信息有8位或11位,最后一位是信息传输方向位

I2C_图_协议层_地址.png

数据的有效性

只有当SCL为1时,读取SDA的数据I2C_图_协议层_数据的有效性.jpg

为了保持数据的有效性,要保证在读取数据时,SDA的电平不能变化,因此,SDA数据保持的时长会比SCL长

当SCL为1时,SDA从低变为高,表示结束,从高到低,表示开始

响应

当发送数据端发送完成时,电平由低到高表示发送结束,此时接收端将电平拉低表示接收结束,做出响应

应答响应:最后接收端将电平拉低即为应答响应

非应答响应:最后接收端电平为高位即为非应答响应

I2C_图_协议层_响应.jpg



Comment