首先我們來(lái)聊聊,為啥I2C總線的SCL,SDA需要接上拉電阻?這個(gè)電阻有啥作用?選多大的電阻合適?
1)上拉電阻的作用
我們看I2C的內(nèi)部框架可以知道,I2C是開(kāi)漏輸出的,I2C總線協(xié)議支持多主多從,若不是開(kāi)漏輸出的話(huà),可能會(huì)出現(xiàn)別的問(wèn)題,比如若使用推挽輸出,會(huì)出現(xiàn)主設(shè)備之間短路的情況,所以一般總線會(huì)用開(kāi)漏輸出。開(kāi)漏輸出的話(huà),若想實(shí)現(xiàn)輸出高電平,就必須接上拉電阻來(lái)實(shí)現(xiàn),通過(guò)上拉電阻接到電源,可實(shí)現(xiàn)"線與"功能,且總線空閑時(shí),SCL,SDA這兩條線可以高電平。電路大概如下:
2)阻值的選擇
我們都知道一般IO口的驅(qū)動(dòng)能力一般在2mA~4mA左右,若阻值太小,電源VCC灌入端口的電流較大,功耗會(huì)較大,導(dǎo)致端口輸出的低電平值增大;而實(shí)際I2C協(xié)議規(guī)定,端口輸出的低電平不能大于0.4V。若VCC=3.3V,灌入電流約3mA左右時(shí),上拉電阻要選擇≥1KΩ的電阻。但是阻值不能選太大,若電阻過(guò)大,可能導(dǎo)致RC延時(shí)增大,波形會(huì)偏離方波,甚至?xí)蛘也ǎ瑪?shù)據(jù)讀寫(xiě)可能會(huì)不正確,且會(huì)影響讀寫(xiě)的速度。一般上拉電阻選用1.5K~4.7K。
3)I2C總線負(fù)載電容
I2C總線協(xié)議規(guī)定負(fù)載電容不能超過(guò)400pF;當(dāng)I2C總線上器件增多時(shí),總線的負(fù)載電容也會(huì)越來(lái)越大,,當(dāng)總線的負(fù)載電容超過(guò)400pf時(shí),可能會(huì)出現(xiàn)工作異常。
I2C總線工作的基本原理:當(dāng)總線空閑時(shí)兩根線均為高電平,假設(shè)主設(shè)備B需要啟動(dòng)I2C,它需要在SCL為高電平時(shí),將SDA由高轉(zhuǎn)低時(shí)作為啟動(dòng)信號(hào),主設(shè)備B拉高SDA后需要檢查下SDA電平,因線與,可能有其他設(shè)備拉低SDA,說(shuō)明有其他設(shè)備搶占總線比它早,主設(shè)備B只能放棄使用總線,若SDA為高電平,說(shuō)明主設(shè)備B可以使用總線,可以將SDA拉低來(lái)進(jìn)行通信。
-
上拉電阻
+關(guān)注
關(guān)注
5文章
366瀏覽量
31073 -
I2C總線
+關(guān)注
關(guān)注
8文章
408瀏覽量
61959 -
SDA
+關(guān)注
關(guān)注
0文章
125瀏覽量
28721 -
SCL
+關(guān)注
關(guān)注
1文章
243瀏覽量
17483 -
負(fù)載電容
+關(guān)注
關(guān)注
0文章
144瀏覽量
10754
發(fā)布評(píng)論請(qǐng)先 登錄
I2C總線上拉電阻設(shè)計(jì)要點(diǎn)

I2C總線上拉電阻的計(jì)算實(shí)例

I2C總線上拉電阻阻值如何確定?

開(kāi)發(fā)板I2C總線上為什么沒(méi)有上拉電阻呢
I2C總線上拉電阻設(shè)計(jì)要點(diǎn)
I2C總線應(yīng)用中的幾個(gè)問(wèn)題

I2C總線一定要接上拉電阻?上拉電阻阻值怎么確定?
I2C上拉電阻設(shè)計(jì)

I2C總線的常見(jiàn)通信方式

關(guān)于I2C總線的6個(gè)問(wèn)題分析
I2C總線上拉電阻的必要性
I2C總線為什么要接上拉電阻

評(píng)論