導(dǎo)讀
I2C總線在產(chǎn)品設(shè)計(jì)中被廣泛應(yīng)用,盡管其結(jié)構(gòu)簡(jiǎn)單,但經(jīng)常發(fā)生上拉電阻設(shè)計(jì)不合理的問(wèn)題。本文將對(duì)I2C上拉電阻的選擇進(jìn)行簡(jiǎn)要分析。
一根信號(hào)線上,通過(guò)電阻連接一個(gè)固定的高電平VCC,信號(hào)線初始、空閑時(shí)一直保持高電平狀態(tài),稱(chēng)為上拉電阻。
總線的上拉電阻各有不同作用,如I2C的上拉電阻是由I2C端口內(nèi)部結(jié)構(gòu)決定的,而RS485和CAN總線的上拉電阻是為了做終端匹配。那這不同總線的上拉電阻,是否接上拉,阻值的選擇有何講究嗎?
是的,這些電阻阻值的選擇都是有理論依據(jù)的,如果阻值選擇不正確,會(huì)引起一些異常,例如曾經(jīng)有一個(gè)案例,I2C上拉電阻阻值為10K,而應(yīng)用卻要求I2C跑400KHz的高速率,顯然這樣的上拉電阻不能滿(mǎn)足400kHz的高速率要求,出現(xiàn)通信錯(cuò)誤也是不可避免的了。
對(duì)于RS485和CAN總線而言,則需要根據(jù)現(xiàn)場(chǎng)情況進(jìn)行靈活使用,就算節(jié)點(diǎn)數(shù)相同的兩個(gè)應(yīng)用,由于布線和所接設(shè)備的差異,需要的匹配電阻也是不同的。理論計(jì)算值可做為重要的參考依據(jù)。
?I2C上拉電阻有什么作用、阻值如何確定?
目的:保證通訊正常。
常說(shuō)I2C需要加上拉電阻,卻不知道為什么需要加上拉電阻?
第一是I2C本身的協(xié)議決定,空閑時(shí)兩線均保持高電平狀態(tài),能夠?qū)崿F(xiàn)線“與”功能。
第二是器件內(nèi)部結(jié)構(gòu),如圖1所示,SCL和SDA引腳內(nèi)部結(jié)構(gòu),內(nèi)部無(wú)法提供高電平,只能依靠外部高電平。目前部分器件支持上拉功能的復(fù)用功能開(kāi)漏模式,芯片內(nèi)部可配置為上拉模式(建議使用外部上拉電阻)。
![6d966ef2-c403-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20241227/6d966ef2-c403-11ef-9434-92fbcf53809c.png)
圖1 I2C端口內(nèi)部結(jié)構(gòu)等效電路
I2C上拉電阻的取值大小怎么確定?
考慮IO灌電流,阻值不能過(guò)小。通常在標(biāo)準(zhǔn)模式100Khz,灌電流不超過(guò)3mA,
VOL不超過(guò)0.4V,若上拉電阻至3.3V,上拉電阻阻值約大于1k。
![6db84c2a-c403-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20241227/6db84c2a-c403-11ef-9434-92fbcf53809c.png)
代入Vdd = 3.3,Vol(max)=0.4,Iol(max)= 3,得到Rmin = 966Ω。
考慮上升時(shí)間,阻值不能過(guò)大。高電平是靠外部上拉電阻提供,電阻和總線電容組成RC網(wǎng)絡(luò),電阻過(guò)大充電時(shí)間過(guò)長(zhǎng),造成信號(hào)上升緩慢,未在規(guī)定時(shí)間內(nèi)到達(dá)高電平,導(dǎo)致數(shù)據(jù)錯(cuò)誤。針對(duì)I2C系統(tǒng),在上拉電壓的30%至70%時(shí)來(lái)測(cè)量上升時(shí)間和下降時(shí)間,總線電容100pF,總線最大上升時(shí)間300ns。
![6dc54f74-c403-11ef-9434-92fbcf53809c.png](http://images.elecfans.net/uploads/20241227/6dc54f74-c403-11ef-9434-92fbcf53809c.png)
代入Tr=300,Cb=100,計(jì)算得到Rmax=3.54kΩ。
根據(jù)以上計(jì)算,上拉電阻的取值在966~3.54k之間。工程實(shí)際設(shè)計(jì)中,并不是完全按照這個(gè)值來(lái)設(shè)計(jì),通常可選取2.2k,3k,4.7k。
解決I2C通信問(wèn)題,建議抓取I2C波形,觀察總線上升/下降時(shí)間,并分析總線電容和上拉電阻等因素,并結(jié)合驅(qū)動(dòng)代碼全面分析。
-
上拉電阻
+關(guān)注
關(guān)注
5文章
360瀏覽量
30621 -
CAN總線
+關(guān)注
關(guān)注
145文章
1951瀏覽量
130760 -
I2C總線
+關(guān)注
關(guān)注
8文章
391瀏覽量
60936
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
I2C總線上拉電阻設(shè)計(jì)要點(diǎn)
![<b class='flag-5'>I2C</b><b class='flag-5'>總線上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>設(shè)計(jì)要點(diǎn)](https://file.elecfans.com/web2/M00/7E/47/poYBAGOEewuAWZhdAAB8iYKgIdo190.png)
I2C總線上拉電阻的計(jì)算實(shí)例
![<b class='flag-5'>I2C</b><b class='flag-5'>總線上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>的計(jì)算實(shí)例](https://file1.elecfans.com/web2/M00/89/1B/wKgZomR5Tk2AWReyAAAKF6elzvA443.jpg)
開(kāi)發(fā)板I2C總線上為什么沒(méi)有上拉電阻呢
I2C總線上拉電阻設(shè)計(jì)要點(diǎn)
I2C總線一定要接上拉電阻?上拉電阻阻值怎么確定?
I2C上拉電阻設(shè)計(jì)
![<b class='flag-5'>I2C</b>上<b class='flag-5'>拉</b><b class='flag-5'>電阻</b>設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
I2C總線的常見(jiàn)通信方式
![<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的常見(jiàn)通信方式](https://file.elecfans.com/web2/M00/4D/FD/poYBAGK7xo-ARh1JAAEl-5nG8Qk945.png)
I2C為什么要接上拉電阻?上拉電阻阻值怎么確定?
I2C上拉電阻如何選擇合適的阻值?
![<b class='flag-5'>I2C</b>上<b class='flag-5'>拉</b><b class='flag-5'>電阻</b>如何選擇合適的<b class='flag-5'>阻值</b>?](https://file1.elecfans.com/web2/M00/82/A4/wKgaomRbVX2AOHT1AACgDt2yhyg239.png)
I2C總線上拉電阻的必要性
I2C總線為什么要接上拉電阻
![<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>為什么要接上<b class='flag-5'>拉</b><b class='flag-5'>電阻</b>](https://file1.elecfans.com/web2/M00/0C/00/wKgZomc9RkuAGE4iAAAPWoT2er0275.jpg)
評(píng)論