I2C(发音为:”I squared see”)能用于替代标准的并行总线,能连接的各种集成电路和功能模块。对于嵌入式系统设计者来说,有以下好处:
支持I2C的设备有微控制器,A/D、D/A转换器,储存器,LCD控制器,LED驱动器,I/O端口扩展器以及实时时钟。
通过使用内建的I2C接口硬件或者连接到微控制器标准并行总线的外部I2C控制芯片,微控制器能够连接到I2C总线。任选其中一种方式,通过通常的I/0管脚和软件上的“位拆裂(bit-banging)”技术,你就能实现一种软件I2C接口。这种方式比较慢,比以硬件为基础的实现要复杂的多。
标准I2C总线传输速率可以到100Kbit/s,通过使用了7位地址码,就能支持128个设备。加强型I2C总线用了10位地址码(能够支持1024个设备),快速模式(400Kbit/s)和高速模式(最高有3.4Mbit/s)。
I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。
只要很小的电路附件,I2C总线就能够支持设备在不同电平下工作(例如:3.3伏和5伏),
I2C总线的规范中规定了如何在两个设备之间传递数据,采取的方法是总线仲裁、时钟同步和总线的电气特征。
在一次数据传输中,一个设备扮演临时主控器,开始在它和一个有单一地址设备(从控器)之间的传输。主控器为数据传输产生时钟信号。规范中要求数据线(SDA,串行数据线)只有在时钟(SCL,串行时钟线)处于低平时才能变化。
总线的一次典型工作流程如下:
1.开始:信号表明传输开始。
2.地址:主设备发送地址信息,包含7位的从设备地址和1位的指示位(表明读或者写,即数据流的方向)。
3.数据:根据指示位,数据在主设备和从设备之间传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器上用一位的ACK(回答信号)表明每一个字节都收到了。传输可以被终止和从新开始。
4.停止:信号结束传输。