在一些I2C通信的接口中,常常会见到接入一个4.7K的上拉电阻,那么这个电阻是不是越小上拉能力就越强对通信就越有利呢?答案并不是这样的。
上拉电阻的大小,会影响功耗和速度。如果你想尽量提高速度,那么就牵涉到总线电容的问题,其实很容易理解,上拉电阻与总线的电容形成了RC,高速时将直接影响通讯!因为总线拉高时有个充电时间以及高电平的阀值,如果还没有充电到足以保证从器件可以识别的高电平的阀值时主器件就以为完成了一个总线动作的话,那么通讯肯定是不能进行的! 如果你想尽可能降低功耗,那么就要尽可能增大电阻以最大可能的减小电路各部分的消耗电流从而实现整体降低功耗!但不可能无限大,否则充电时间你会受不了的!
我们来看,对于5V电平(SCL口上的电流假设大约为3mA)下的上拉电阻为1K时,I2C的波形如下图一,可以看到的是低电平的电平被抬升了大约400mv,而I2C标准协议中,对于这样条件下的电阻最小值是1.7K,这样也就可能造成有时通信失败,硬件I2C从机无法识别。通过更换上拉电阻为4.7K,时钟线和数据线的低电平被抬升的现象就解决了(如下图二所示),至此,I2C的通信也就稳定了许多。
下面附上I2C的协议标准,仅供参考。如文件侵权,请联系我删除。Thanks!
下载链接:I2C协议标准中文版.pdf