I2C(Inter-Intergrated Circuit)總線是微電子通信控制領(lǐng)域中常用的一種總線標(biāo)準(zhǔn),具有接線少,控制方式簡(jiǎn)單,通信速率高等優(yōu)點(diǎn)。
I2C總線的內(nèi)部結(jié)構(gòu)圖如圖1所示,I2C器件連接到總線輸出級(jí)必須是集電極開路或漏極開路形式才能實(shí)現(xiàn)線“與”的邏輯功能。輸出端未接上拉電阻的時(shí)候只能輸出低電平,所示保證I2C總線正常工作輸出端必須接上拉電阻。
在I2C電路中常見的上拉電阻是1K,1.5K,2.2K,3.3K,4.7K,5.1K,10K等等,但選哪一個(gè)阻值更合適?
圖1 I2C總線內(nèi)部結(jié)構(gòu)
I2C總線上拉電阻阻值如何選?I2C規(guī)范將低于VIL或低于0.3VDD的電壓定義為邏輯低電平,同樣將高于VIH或高于0.7VDD的電壓定義為邏輯高電平,如圖2所示。
圖2 指定為邏輯高電平和邏輯低電平的電壓電平
電源電壓限制了可允許總線拉低的最小上拉電阻值,過強(qiáng)的上拉會(huì)阻止器件充分拉低拉線的電平,導(dǎo)致無(wú)法確保邏輯低電平能被檢測(cè)到。在輸出級(jí)V_OLmax=0.4V 時(shí)指定I_OL為3mA,允許總線電壓拉低的最小上拉電阻公式:
V_DD與Rp的函數(shù)關(guān)系分別如圖3所示。
圖3 Rp的最小值是電壓的函數(shù)
由于端口的輸出的高電平是通過上拉電阻實(shí)現(xiàn),線上的電平從低變到高時(shí),電源通過上拉電阻對(duì)線上負(fù)載電容CL充電,這需要一定的時(shí)間,即上升時(shí)間,上拉電阻的最大值由總線容限負(fù)載決定,總線負(fù)載圖如圖4所示。
圖4 總線負(fù)載結(jié)構(gòu)圖
總線電容主要由引腳、連接、PCB走線和導(dǎo)線等因素引起,總線電容與上拉電阻R具有一個(gè)RC時(shí)間常數(shù),隨著I2C通信速率的增加,該常數(shù)變得越發(fā)重要。通過電阻對(duì)電容進(jìn)行充電的一般公式:
重新排列,
之后我們可計(jì)算電壓上升至VIL的時(shí)間T1、上升至VHL的時(shí)間T2以及精確計(jì)算兩個(gè)電平之間的時(shí)間TR,如圖5所示。由于VIL與VHL都是有V_DD產(chǎn)生,因此該公式與電源電壓無(wú)關(guān),V_DD項(xiàng)已抵消。
圖5 總線電平上升時(shí)間
求解,
在I2C標(biāo)準(zhǔn)模式下,100Kbps總線的負(fù)載最大容限小于等于400pF;快速模式,400Kbps總線的負(fù)載最大容限小于等于200pF,快速模式下I2C總線上升時(shí)間更快,總線上拉電阻要比標(biāo)準(zhǔn)模式小,設(shè)計(jì)時(shí)以快速模式50Pf~200pF為參考,由上面(6)式得最大Rp值與總線電容的關(guān)系如圖6所示。
圖6 符合快速模式I2C總線TRmax要求的Rp最大值是總線電容的函數(shù)
由上面的計(jì)算可得出上拉電阻RP可以取的范圍是1.53K~7K @VDD = 5V,一般取5.1K ,綜合到3.3V VDD低功耗設(shè)計(jì)中,通常選用4.7K犧牲速度換取電池使用時(shí)間,此阻值也是常規(guī)阻值。
關(guān)于I2C的上拉電阻,最好的方式是看官方給出的參考設(shè)計(jì),如果走線長(zhǎng)了或總線上有多從機(jī),就相應(yīng)把電阻改小一些,如若參考設(shè)計(jì)沒有就在計(jì)算范圍內(nèi)選用一個(gè)常規(guī)阻值。實(shí)際的時(shí)候我們沒有去測(cè)量總線電容的問題,只能在選件、走線的時(shí)候給予些許關(guān)注。
原文標(biāo)題:I2C總線上拉電阻阻值如何選擇?
文章出處:【微信號(hào):murata-eetrend,微信公眾號(hào):murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論