什么是I2C通讯协议?解释下工作原理。
0 607
1
该提问暂无详细描述
收藏
2021-01-26 16:10 更新 我爱喝牛奶G •  2036
共 1 个回答
高赞 时间
0

I2C(集成电路间)是仅使用两条线的同步接口-一条双向用于数据(SDA),另一条用于时钟(SCL)。因此,从本质上讲,它是半双工的。

main-qimg-56183b40ac40b76a5ace09b194e4e492

时钟线和数据线均为漏极开路,因此可以由主机或从机驱动。特别是,这允许一条线既可以用于主机的输入,也可以用于主机的输出。但是因为线的布置是对称的,所以允许实体接管主角色。

I2C将寻址作为其协议的一部分-7位或10位。每个设备都有一个唯一的硬件地址。在每次传输开始时都会发送一个地址,与之匹配的设备将作出响应。

main-qimg-9ad2c2290bfe8670af9a7925079012a9

从设备以ACK(确认)或NACK(无应答)响应每个字节。该协议还标识了一个“开始条件”,这意味着所有外围设备都应开始寻找地址,并确定一个“停止条件”,这意味着传输结束。每个时钟位移入数据一位。

当I2C信号不活动时,由于它们是漏极开路的,因此它们被上拉至电路板的逻辑1电平,通常为3.3V或5V。

尽管I2C仅用于在相同或互连电路板上的IC之间运行的信号,但Nintendo Wii游戏系统的原始Nunchuk是通过1至1.2m(3.5至4英尺)长的电缆连接到Wii遥控器的。Nunchuk包含一个2轴操纵杆,两个按钮和一个3轴±2 g加速度计,并使用I2C接口与遥控器通信,其运行频率为100 kHz,如此处所述。

你可以购买一个协议分析仪,它既可以是独立包装盒,也可以是示波器的功能部件,它们可以显示与串行接口关联的各种信号,然后可以解释其值。这是显示I2C信号及其解码值的屏幕的一部分:

main-qimg-ec6a520e3455dfeefb12f64d72f5baf5

本回答来自Tom Crosley, Embedded systems programmer for over 40 years

收藏
2021-01-26 16:12 更新 蝈蝈 •  224