在一些I2C通信的接口中,常常會見到接入一個4.7K的上拉電阻,那么這個電阻是不是越小上拉能力就越強對通信就越有利呢?答案並不是這樣的。
上拉電阻的大小,會影響功耗和速度。如果你想盡量提高速度,那么就牽涉到總線電容的問題,其實很容易理解,上拉電阻與總線的電容形成了RC,高速時將直接影響通訊!因為總線拉高時有個充電時間以及高電平的閥值,如果還沒有充電到足以保證從器件可以識別的高電平的閥值時主器件就以為完成了一個總線動作的話,那么通訊肯定是不能進行的! 如果你想盡可能降低功耗,那么就要盡可能增大電阻以最大可能的減小電路各部分的消耗電流從而實現整體降低功耗!但不可能無限大,否則充電時間你會受不了的!
我們來看,對於5V電平(SCL口上的電流假設大約為3mA)下的上拉電阻為1K時,I2C的波形如下圖一,可以看到的是低電平的電平被抬升了大約400mv,而I2C標准協議中,對於這樣條件下的電阻最小值是1.7K,這樣也就可能造成有時通信失敗,硬件I2C從機無法識別。通過更換上拉電阻為4.7K,時鍾線和數據線的低電平被抬升的現象就解決了(如下圖二所示),至此,I2C的通信也就穩定了許多。
下面附上I2C的協議標准,僅供參考。如文件侵權,請聯系我刪除。Thanks!
下載鏈接:I2C協議標准中文版.pdf