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

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

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

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

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

I2C總線的常見通信方式

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

評論