首先我們來(lái)聊聊,為啥I2C總線的SCL,SDA需要接上拉電阻?這個(gè)電阻有啥作用?選多大的電阻合適?
1)上拉電阻的作用
我們看I2C的內(nèi)部框架可以知道,I2C是開漏輸出的,I2C總線協(xié)議支持多主多從,若不是開漏輸出的話,可能會(huì)出現(xiàn)別的問題,比如若使用推挽輸出,會(huì)出現(xiàn)主設(shè)備之間短路的情況,所以一般總線會(huì)用開漏輸出。開漏輸出的話,若想實(shí)現(xiàn)輸出高電平,就必須接上拉電阻來(lái)實(shí)現(xiàn),通過上拉電阻接到電源,可實(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Ω的電阻。但是阻值不能選太大,若電阻過大,可能導(dǎo)致RC延時(shí)增大,波形會(huì)偏離方波,甚至?xí)蛘也ǎ瑪?shù)據(jù)讀寫可能會(huì)不正確,且會(huì)影響讀寫的速度。一般上拉電阻選用1.5K~4.7K。
3)I2C總線負(fù)載電容
I2C總線協(xié)議規(guī)定負(fù)載電容不能超過400pF;當(dāng)I2C總線上器件增多時(shí),總線的負(fù)載電容也會(huì)越來(lái)越大,,當(dāng)總線的負(fù)載電容超過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文章
363瀏覽量
30740 -
I2C總線
+關(guān)注
關(guān)注
8文章
406瀏覽量
61185 -
SDA
+關(guān)注
關(guān)注
0文章
124瀏覽量
28275 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17182 -
負(fù)載電容
+關(guān)注
關(guān)注
0文章
141瀏覽量
10485
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論