目录
1 I2C 总线通信协议
1.1 I2C 通信协议
I2C/IIC 通信协议(Inter-Integrated Circuit)是由 PHILIPS 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 UART、CAN 等通讯协议的外部收发设备,现在多用于系统内多个 IC 间的通讯。
I2C 物理层
I2C 是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。
一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
I2C 协议层
I2C 的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。
空闲状态
I2C 总线的 SDA 和 SCL 两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
通讯的起始和停止信号(一般由主机产生):
数据有效性
数据在 SCL 的上升沿到来之前就需要准备好,并在下降沿到来之前必须保持稳定。
应答信号 ACK