I2C-BUS
I2C总线是由原Philips公司[如今的NXP]所开发的,最开始是开发用于的控制电池的一个总线。
I2C总线标准包含:电气层和协议层。
总线包含两个信号Serial Clock Line [SCL] 和 Serial Data Lines [SDA]。电气连接时,会在SCL和SDA信号线上接一个上拉电阻Rp[Pull],有时考虑静电保护[ESD],会在设备和总线直接加接一个保护电阻Rs。总线上的每个设备都可以发送或接收数据,也都可以作为主设备[Master]或从设备[Slave] 。总线上的时钟由主设备提供,并且总线上可以有多个从设备,但是只能有一个主设备。从设备可以和主设备进行数据的交换,而不能在从设备之间进行数据传输。
I2C总线数据传输速率:
*低速模式[Low Speed]:10Kb/s[10kbps]
*标准模式[Standard Mode]:100Kb/s
*快速模式[Fast Mode]:400Kb/s
*快速模式+[Fast Mode Plus]:1Mb/s
*高速模式[High Speed Mode]: 3.4Mbps
I2C总线通信模式:
因为只有一个数据线和一个时钟线,所以只能进行半双工通信[同一时刻只能有一个发送和一个接收]。
I2C总线的最大负载电容有400pF,这决定了总线上最多可挂载的设备数和最远的传输距离。
通信时,采用8bit一个单元进行传输,先发送最高有效位[bit[7..0],先发送bit7],并且总线上的每个设备都有一个独立的设备地址。
-数据:
*发送数据的时候,在时钟SCL为低电平时改变SDA上的数据;
*数据格式:数据长9bits,其中8bits的数据加1bit的响应位[响应位是监听总线数据的设备发出的,发送‘1’表示响应]。
*响应方式:有两种响应方式
1. 接受设备发送‘1’[相应位],然后发送‘0’表示准备好接收下一组数据;
2. 接受设备发送‘1’[相应位],然后发送‘1’表示结束接收。
Note:响应位发送时的时钟同样由主设备提供
-控制模式:
*开始位:在时钟SCL为高时,SDA上出现一个下降沿,表示数据发送的起始位;
*结束位:在时钟SCL为低时,SDA上出现一个上升沿,表示数据发送的结束位;
-设备地址和读写控制:
*总线上的每个设备会有一个7bits的地址,发送时会增加一个读写控制位[1,读;0,写]。
*通信时,主设备先给总线上发送要访问的从设备的设备地址,然后再进行数据的交换。
一个完整的读写控制如下图:
NXP的I2C总线协议标准2007年版本:
用户1701686 2013-7-21 22:56