[I2C]I2C通信协议详解(一) --- 什么是I2C
摘要:内部集成电路()I2C(Inter-Integrated Circuit)总线是一种两线串行接口,最初由菲利普斯公司开发,用于消费产品。 它是一种双向总线,可在任何 IC 工艺(NMOS、CMOS、双极)中轻松实现,并允许简单的 IC 间通信。 通过使用串行数据线 (SDA)、串行时钟线 (SCL) 和公共地线来承载所有通信,可以最大限度地减少连接。 I2C 已获得广泛认可,甚至已作为 I2C 子集的系统管理总线 (SMBus) 的原型。它是由Philips(飞利浦)公司,现NXP(恩智浦)半导体开发的一种简单的双向两线制总线协议标准。I2C的基本参数:
I2C协议可以工作在以下5种速率模式下,不同的器件可能支持不同的速率(bps:bit/s,即SCL的频率)。其中超快模式是单向数据传输,通常用于LED、LCD等不需要应答的器件,和正常的I2C操作时序类似,但是只进行写数据,不需要考虑ACK应答信号。
- 标准模式(Standard):100kbps
- 快速模式(Fast):400kbps
- 快速模式+(Fast-Plus):1Mbps
- 高速模式(High-speed):3.4Mbps
- 超快模式(Ultra-Fast):5Mbps(单向传输)
I2C协议最基础的4种信号,分别是:起始、停止、应答和非应答信号。SCL处于高电平时,SDA由高到低变化,这种信号是起始信号。SCL处于高电平,SDA由低到高变化,这种信号是停止信号。数据的采样发生在SCL高电平期间,除了起始和停止信号,在数据传输期间,SCL为高电平时,SDA必须保持稳定,不允许改变,在SCL低电平时才可以进行变化。
I2C最大的一个特点就是有完善的应答机制,从机接收到主机的数据时,会回复一个应答信号来通知主机表示“我收到了”。应答信号出现在1个字节传输完成之后,即第9个SCL时钟周期内,此时主机需要释放SDA总线,把总线控制权交给从机,由于上拉电阻的作用,此时总线为高电平,如果从机正确的收到了主机发来的数据,会把SDA拉低,表示应答响应。
一、设计
I2C 通信协议遵循主/从层次结构,其中主设备定义为为总线提供时钟、寻址从设备以及向从设备中的寄存器写入或读取数据的设备。 从设备是仅在主设备通过其唯一地址询问时才做出响应的设备。 因此,必须避免从站之间的地址重复。 从站从不启动数据传输。
I2C 总线仅使用两条双向线,串行数据线 (SDA) 和串行时钟线 (SCL)。 I2C 兼容设备通过集电极开路或漏极开路引脚连接到总线,这些引脚将线路拉低。 当I2C没有数据传输时,总线处于HIGH状态空闲; 线被被动拉高。
通过拉