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

I2C總線上拉電阻的計算實例

開發(fā)板I2C總線上為什么沒有上拉電阻呢
I2C總線上拉電阻設計要點
I2C總線一定要接上拉電阻?上拉電阻阻值怎么確定?
I2C上拉電阻設計

I2C總線的常見通信方式

評論