I2C是一种简单的通信协议,全称为Inter-Integrated Circuit,即集成电路之间串行通信,是一种用于短距离数字通信的总线系统。I2C总线由两根线构成,分别是数据线SDA(Serial Data Line)和时钟线SCL(Serial Clock Line)。设备之间通过这两根线进行数据传输,其中SDA线是双向的。
对于I2C总线来说,由于SDA线路是双向的,因此需要一个电平信号来判断它的电平状态,而SCL线路则是单向的,它只需要驱动即可。在I2C管脚上接入上拉电阻,可以使得I2C设备在无信号输入的情况下,SDA线路和SCL线路都保持高电平,防止误判。
在I2C数据传输过程中,数据线SDA上的电平只能在时钟线SCL的高电平期间改变,当SCL线路为低电平时,SDA线路上的电平状态即为静态状态。
由于I2C协议是基于时序控制的,因此需要一个时钟信号。如果一个设备作为主设备,当它要向一个从设备发送数据时,需要向该从设备发送一个设备地址,告诉它要将数据传输给谁,然后主设备开始产生时钟信号,并发送数据,从设备接收数据后,可以通过给主设备发送应答信号来进行确认信号。
在I2C总线中,上拉电阻的大小直接关系到总线的工作速率,若电阻值过大,会使得总线工作速率变慢,影响总线数据传输可靠性;若电阻值过小,会造成功耗增加。
一般来说,上拉电阻的阻值在1K到10K之间,对于高速应用,选择小一点的阻值会更好些。