相信很多人都清楚,在I2C總線上需要接上拉電阻?但是您針對對I2C上拉電阻足夠了解嗎?本文帶您詳細掌握一下I2C的上拉電阻。
目錄如下:
上拉電阻的含義、上拉電阻在 I2C 電路中的作用
根據(jù)VOL和IOL計算I2C上拉電阻的最小值
根據(jù)總線電容計算上拉電阻的最大值
01I2C的上拉電阻
我們知道,在I2C的電路中,在SCL、SDA線與電源之間通常會接一個電阻,這個電阻稱之為上拉電阻。
但什么是上拉電阻?
上拉電阻主要用于為信號線或GPIO引腳提供默認狀態(tài)。通常選擇幾K或幾十K阻值的電阻。阻值較大的電阻確保不會通過電阻不斷地將過多的電流引入到信號線上(5V Vdd / 10KΩ = 0.5mA 電流)。在常見的MCU中有大約幾十K的電阻可以通過代碼啟用的上拉電阻將 GPIO 引腳預設為邏輯高電平狀態(tài)。
在I2C 的電路中,I2C設備(芯片)的 SCL 和 SDA 的內部電路是“開漏”的,這意味著它們可以吸收電流,但無法提供電流。通俗點講就是:這種信號可以被設置為低電平,但不能被設置為高電平。
所以我們在電路中以邏輯高電壓的形式給這些信號提供電流,在常見的芯片中,電壓通常為5V或3.3V。為了提供這個高電壓,你需要分別在在 5V 和 SCL 、SDA 總線之間連接了一個上拉電阻。如下圖所示:
但是,I2C上拉電阻的阻值和封裝可不是隨便選擇的。也是有理論依據(jù)的。
02上拉電阻最小值計算
在數(shù)字TTL電路中,通常情況下定義的高低電平電壓值如下:
“低電平的電壓”VL= 0.3 x Vdd
“高電平的電壓”VH=0.7 x Vdd
所以,我們將I2C設備接到5V系統(tǒng)的電路中時,SDA和SCL的電壓高于3.5V時被識別為“高電平”,低于1.5V時被識別為“低電平”。在1.5V3.5V之間的電平,我們不能確定為高or低
I2C設備內是有mosfet的,我們需要保證電壓值高于一定值才能使mosfet導通,但電壓值也不能高太多,否則容易造成mosfet損壞。
此處以LED舉例:假設LED的壓降是1.7V,需要高于1.7V的電壓才能使LED導通,但是電流必須在LED的限定值以內。如壓降為1.7V、額定電流為30mA的LED,想要LED點亮的理想情況是:(5V-1.7V)/30mA=110歐。所以針對該LED選用的限流電阻為110歐。
對于I2C引腳,在芯片手冊中可以清楚的查到VOl(輸出低電壓)和IOL(輸出低電流)。以AT24C128 EEPROM芯片的手冊為例:
按照上述參數(shù)計算:(5-0.4)V / 2.1mA=2.2K。
我們計算出的這個值,就是I2C總線上拉電阻的最小值。我們如果選用更小的電阻值,就可能對I2C設備造成損壞。
03上拉電阻最大值計算
電容是無處不在的,I2C總線也不例外。I2C電路中SDA和SCL引腳也會存在某種形式的引腳電容。
同樣,查看AT24C128的數(shù)據(jù)手冊可以查到對應的引腳電容。如下圖所示。
包括引腳電容、PCB電容等所有的疊加,我們可以理解成有一堆的小電容連到I2C總線上,現(xiàn)在暫且將這些電容的累加定義為Cbus。
我們之所以關心Cbus,是因為在信號變化的過程中,其實是對Cbus進行充電和放電,這樣會影響到信號的延時時間。
這些電容是如何充電的呢?就是通過VCC和上拉電阻給電容充電。
從AT24C128手冊中可發(fā)現(xiàn),SDA的引腳電容為8pF,SCL的引腳電容為6pF。假設PCB的電容平均值為10pF。則,在SDA總線的電容總計18pF;在SCL總線的電容總計為16pF。
關于PCB電容怎么計算,本公眾號將以專門的文章進行講解,此處不再講述。歡迎持續(xù)關注本公眾號。
我們現(xiàn)在關注的是上拉電阻的阻值最大值應該是多少才能保證SDA和SCL在要求的時間內進行信號高低電平的切換。引入總線電容就是為了確定上拉電阻最大值。
在AT24C128的收據(jù)手冊中,也可以查詢到上升時間tR的值,如下圖。
tR就是I2C總線最大允許的上升時間。除了芯片手冊有規(guī)定tR值,I2C總線也規(guī)定了tR的值如下:
下面引入上拉電阻計算的重量級公式:
到目前為止,我們已經確定了tR和Cb的值,就可以計算出上拉電阻的最大值。以400KHz的快速模式I2C為例計算:
Rp sda max=300ns/(0.8473x18pf)≈ 18K
Rp scl max=300ns/(0.8473x16pf)≈ 18K
所以,18K就是我們確定的I2C總線上拉電阻的最大值。
結合2.2K的最小值,I2C總線的上拉電阻只能選擇:2.2K~18K之間的阻值,一般選擇4.7K或10K。
04總結
上面的計算我們是只計算了I2C總線只有AT24C128的情況,只需要選用2.2K~18K之間的電阻即可。
當I2C總線掛接的設備增加、PCB布線不同等多個方面都會影響到上拉電阻阻值的選擇。
審核編輯:湯梓紅
-
led
+關注
關注
242文章
23277瀏覽量
660892 -
上拉電阻
+關注
關注
5文章
360瀏覽量
30621 -
TTL
+關注
關注
7文章
503瀏覽量
70250 -
總線
+關注
關注
10文章
2881瀏覽量
88090 -
I2C
+關注
關注
28文章
1487瀏覽量
123767
原文標題:I2C的上拉電阻別亂選!超全講解I2C的上拉電阻!
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論