目录
3.6 Acknowledge (ACK) and Not Acknowledge (NACK)
1. 引言
I2C总线是事实上的世界标准,现在由超过50家公司制造的1000多种不同的IC实现。此外,多功能I2C总线用于各种控制架构,如系统管理总线(SMBus),电源管理总线(PMBus),智能平台管理接口(IPMI),显示数据通道(DDC)和高级电信计算架构(ATCA))。
在消费者电子电讯和工业电子中看上去不相关的设计里经常有很多相似的地方例如几乎每个系统都包括:
为了使这些相似之处对系统设计者和器件厂商都得益而且使硬件效益最大电路最简单Philips (现NXP)开发了一个简单的双向两线总线实现有效的IC 之间控制这个总线就称为Inter IC 或I2C 总线。所有符合I2C总线的器件组合了一个片上接口使器件之间直接通过I2C 总线通讯。
I2C总线是由飞利浦在80年代早期设计开发的,允许在同一电路板上的组件之间轻松通信,一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。飞利浦半导体于2006年迁移至恩智浦。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
官方协议文档:https://www.i2c-bus.org/specification/
CSDN文档地址:https://download.csdn.net/download/xiewinter/11243770
2. 特征
- 只要求两条总线线路:一条串行数据线(serial data line ,SDA),一条串行时钟线(serial clock line , SCL)
- 每个连接到总线的器件都可以通过唯一的地址和始终存在的简单的主/从机关系进行软件寻址; 主机可以作为主机发送器或主机接收器
- 它是真正的多主总线,包括冲突检测和仲裁,以防止两个或多个主设备同时启动数据传输时数据损坏。
- 串行,8位,双向数据传输在标准模式下最高可达100 kbit / s,在快速模式下最高可达400 kbit / s,在快速+模式下最高可达1 Mbit / s, 或高速模式下高达3.4 Mbit / s。
- 串行,8位,单向数据传输在超快速模式下高达5 Mbit / s
- 片上的滤波器,可以滤去总线数据线上的毛刺波保证数据完整
- 可以连接到同一总线的IC数量仅受最大总线电容的限制。 在某些条件下可能允许更大的电容。详见官方参考手册。
3. 规范
I2C 总线是一个多主机的总线这就是说可以连接多于一个能控制总线的器件到总线。如果两个或多个主机尝试发送信息到总线在其他主机都产生0 的情况下首先产生一个1 的主机将丢失仲裁。仲裁时的时钟信号是用线与连接到SCL 线的主机产生的时钟的同步组合。
在I2C总线上生成时钟信号始终是主设备的责任; 在总线上传输数据时,每个主机都会生成自己的时钟信号。 来自主设备的总线时钟信号只有在被慢速从设备按下时钟线或由仲裁发生时由另一个主设备拉伸时才能被改变。
3.1 SDA 和 SCL 信号
SDA和SCL都是双向线路,通过电流源或上拉电阻连接到正电源电压(见图3)。 当总线空闲时,两条线都是HIGH。 连接到总线的器件的输出级必须具有漏极开路或开路集电极,以执行线与功能。 I2C总线上的数据可以在标准模式下以高达100 kbit / s的速率传输,在快速模式下最高可达400 kbit / s,在快速+模式下最高可达1 Mbit / s或以上 在高速模式下为3.4 Mbit / s。 总线电容限制了连接到总线的接口数量。
对于单个主应用,如果总线上没有可以延长时钟的器件,则主机的SCL输出可以是推挽式驱动器设计。
3.2 SDA 和 SCL 逻辑电平
由于可以连接到I2C总线的各种不同技术设备(CMOS,NMOS,双极),逻辑“0”(低)和“1”(高)的电平不固定,取决于 相关的VDD电平。 输入参考电平设置为VDD的30%和70%; VIL为0.3VDD,VIH为0.7VDD。 请参见图38,时序图。 一些传统器件输入电平固定为VIL = 1.5 V和VIH = 3.0 V,但所有新器件都需要30%/ 70%的规格。
3.3 数据的有效性
SDA 线上