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

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

I2C總線上拉電阻設計要點
I2C總線一定要接上拉電阻?上拉電阻阻值怎么確定?
I2C上拉電阻設計

評論