什么是I²C?
I²C的正确读法为“I-squared-C”,而“I-two-C”则是另一种错误但被广泛使用的读法,在大陆地区则多以“I方C”称之。截至2006年11月1日为止,使用I²C协定不需要为其专利付费,但制造商仍然需要付费以获得I²C从属装置位址。
I²C是Inter Integrated-Circuit的简称,中文译为内部集成电路。I²C是一种串行通讯总线,所以I²C和I²C总线基本上是一个概念。I²C总线是由PHILIPS公司在1980年代为了让主板、嵌入式系统或手机能够连接周边低速装置而发明的一种电路板级串行总线标准。通过两根双向开漏(Open Drain)信号线(时钟线SCL和数据线SDA)即可完成主从机的通信,总线硬件连接极其简单。不同I²C设备挂接在总线上,只需在信号线安装上拉电阻即可完成硬件线路的搭建。另外,I²C总线采用器件地址的硬件设置方法,通过软件寻址方式完全避免了片选寻址的弊端,从而使硬件系统扩展更为灵活。I²C允许相当大的工作电压范围,但典型的电压准位为+3.3V或+5V。
由于书写原因,I²C也可以写为I2C。下文统一使用I2C,与本文主题及章节标题一致。
I2C的优缺点
I2C总线最主要的优点是其简单性和有效性。其次I2C支持多主机(Multi-Mastering),任何能够进行发送和接收的设备都可以成为主机。主机控制数据的传输和时钟的频率。在任何时间点只能有一个主机。由于只有两条线,在处理地址和应答时,I2C存在一定的开销,效率不如设备直接相连的SPI总线。
由于简单有效,I2C在业界得到广泛应用。基于I2C衍生出来的标准有SMBus、PMBus、IPMI、DDC和ATCA等。常见集成I2C硬件接口的设备有微控制器、温度传感器、LED控制器、EEPROM、ADC/DAC、RTC、时钟振荡器和I/O控制器等。
I2C主要特点
- 只有两根信号线:串行数据线SDA和串行时钟线SCL
- 总线上所有器件的SDA、SCL引脚输出驱动都为漏极开路结构,通过外接上拉电阻实现总线上所有节点SDA、SCL信号的“线与”逻辑关系
- 总线上的所有设备通过软件寻址且具有唯一的地址(7位或10位)。7位“从机专用地址码”,其高4位为设备类型地址(由生产厂家制定),低3位为器件引脚定义地址(由使用者定义)。10位地址不常见
- 任何时刻都只存在简单的主/从关系,按数据传输的方向,主机可以是主发送器或主接收器
- 支持多主机。在总线上存在多个主机时,通过冲突检测和仲裁机制防止多个主机同时发起数据传输时存在的冲突
- I2C总线上所有器件都具有“自动应答”功能,保证数据传输的正确性
- 主机和从机的区别在于对SCL的发送权,只有主机才能发送SCL
- I2C总线不仅广泛应用于电路板级的内部通信,还可以通过I2C总线驱动器进行不同系统间的通信
- 支持传输速率包括标准模式(Standard Mode)100kb/s、快速模式(Fast Mode)400kb/s、增强快速模式(Fast Mode Plus)1Mb/s和高速模式(High Speed Mode)3.4Mb/s;极速模式(Ultra-Fast Mode),单向数据传输速率可达5Mb/s
- I2C总线允许挂载最多的设备数量取决于总线上最大电容值,一般为400pf(Hs模式100pf)