I2C总线概述
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
I2C总线的构成及信号类型 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在IC与IC之间进行双向传送,最高传送速率100kbps。对于并联在一条总线上的每个IC都有唯一的地址。 I2C总线有两根信号线,一根为SDA(数据线),一根为SCL(时钟线),时钟信号是由主控器件产生。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平转变为低电平跳变,表示开始通信。 结束信号:SCL为高电平时,SDA由低电平转变为高电平跳变,结束结束通信。 应答信号:接收数据的IC在接收到一个字节数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。 开始和结束信号都是由主机发出的,应答信号是由从机发出的,开始和结束通信过程的时序如图1所示。
图1 这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
I2C总线操作时序 I2C总线必须由主机(通常为微控制器)控制,主机产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
控制字节
在通信开始信号之后,发送的必须是器件的控制字节,其中高四位为器件类型识别符,接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。该字节前七位表示器件的地址。
图2
(注:SCL线上1~7位为7位接收器件地址,第8位为读写位,第9位为ACK应答位,紧接着的为第一个数据字节,然后是一位应答位,后面继续第2个数据字节。)
|