I2C相關(guān)文章:
全面解析 I2C 通信協(xié)議


今天就來分享下,為什么要在 IIC 信號線上加上拉電阻。
主要原因就是 IIC 芯片的 SDA 和 SCL 的引腳是開漏輸出,就是只有一個 NMOS 管,不像推挽輸出有兩個 MOS 管。

當芯片 SDA 和 SCL 的引腳輸出 MOS 管導(dǎo)通,IIC 信號線電平為低電平。

當芯片 SDA 和 SCL 的引腳輸出 MOS 管關(guān)閉,如果沒有上拉電阻,IIC 信號線是處于一個高阻狀態(tài),電平是未知的,開漏輸出是沒有高電平的輸出能力的。

所以加上上拉電阻后,當芯片 SDA 和 SCL 的引腳輸出 MOS 管關(guān)閉,IIC 信號線上的電平就是一個確切的高電平。

當多個 IIC 設(shè)備通過 IIC 總線接在一起,這就要求 IIC 設(shè)備間可以實現(xiàn)線與,而芯片的 IIC 引腳是開漏輸出的話就能很好的實現(xiàn)這個線與。只要有一個 IIC 設(shè)備的引腳電平是低電平,那么相應(yīng)的 SCL 或 SDA 總線也會成為一個低電平。如果 IIC 設(shè)備引腳為推挽輸出,多個 IIC 設(shè)備接在一條總線上很容易燒壞芯片。

IIC 上拉電阻的取值
IIC 信號的上拉電阻阻值不能太大,因為 IIC 芯片 SCL 和 SDA 引腳都存在寄生電容,同時 SDA 和 SCL 信號的走線也會有寄生電容,整個 IIC 總線上相當于接了一個負載電容 Cl

上拉電阻過大,IIC 總線高電平的驅(qū)動能力差,總線電平從 0 到 1 變化時,等效為這個 RC 的充電電路,上拉電阻越大,波形上升沿會變緩,一定程度會影響 IIC 的時序,可能會出現(xiàn)誤碼。所以這個上拉電阻不能太大。

IIC SDA 和 SCL 信號的上升時間和總線電容在不同的模式下有不同的要求,大家可以看下這個表。

IIC 總線信號上升時間可以根據(jù)公式 Tr=0.8473*R*Cl ? Cl 就是 IIC 總線的等效負載電容
IIC 信號上拉電阻也不能太小,如果太小了,當 IIC 引腳輸出低電平時,灌進芯片 IIC 引腳的電流會變大,可能會使 IIC 信號線的低電平變大,同時 IO 口電流過大還可能燒壞芯片。

我們一般要求,IIC 引腳低電平時,流過芯片 IIC 引腳的電流小于 3mA,所以如果是 3.3V 上拉的話,這個電阻就要 R>(3.3-VoL)l3KΩ=0.96KΩ ,其中 VoL 是 IIC 引腳為低電平時的最大電壓,一般是 0.4V。再加上前面的這個公式我們就可以確定這個上拉電阻的取值范圍。

電源電壓決定上拉電阻的最小值,總線負載電容決定上拉電阻的最大值。
IIC 信號上拉電阻取值常用的值就是 4.7K,一般小于 10K,大于 1K,如果 IIC 總線比較長,從設(shè)備比較多,可以適當降低電阻。
如果 IIC 總線接了很多 IIC 設(shè)備,是不是每個 IIC 設(shè)備都要加上拉電阻?

答案是否定的,我們只要在 SDA 和 SCL 總線上合適的位置各加一個上拉電阻即可,如果每個設(shè)備都加上拉,相當于這些電阻是并聯(lián)在一起了,減小了電阻值。至于上拉電阻的位置一般沒有特別的要求。一般加在 IIC 的末端。

原文:https://blog.csdn.net/weixin_42693097/article/details/128366489
文章來源于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。

關(guān)注我【一起學(xué)嵌入式】,一起學(xué)習(xí),一起成長。
覺得文章不錯,點擊“分享”、“贊”、“在看” 唄!