在嵌入式設(shè)計(jì)領(lǐng)域,I2C 通信電路猶如一顆璀璨的明星,頻繁現(xiàn)身于各類產(chǎn)品之中,如家電、工控設(shè)備以及醫(yī)療器械等,在板內(nèi)通信方面發(fā)揮著至關(guān)重要的作用。然而,在設(shè)計(jì) I2C 電路時(shí),上拉電阻 Rp 的選擇問題卻如同一塊難啃的骨頭,讓眾多工程師頭疼不已。因?yàn)樯侠娮柽x小了不行,選大了也不行,這直接影響著電路的性能和通信的穩(wěn)定性。今天,我們就一同深入探討 I2C 上拉電阻的計(jì)算方法。

I2C 是一種開漏 Open - Drain 通信協(xié)議,SDA 和 SCL 線上的信號(hào)只能被拉低(輸出 0V),而拉高(輸出 1)則完全依賴上拉電阻 Rp。其工作原理如下:當(dāng)沒有信號(hào)傳輸時(shí),上拉電阻會(huì)將線路拉到高電平(接近 Vcc);當(dāng) IC 需要輸出 0 時(shí),會(huì)通過內(nèi)部的 MOSFET 把線路拉低到接近 0V。上拉電阻的作用十分關(guān)鍵,它不僅決定了線路從低電平到高電平的上升速度,同時(shí)也對(duì)功耗有著重要影響。如果上拉電阻的阻值選擇不當(dāng),要么會(huì)導(dǎo)致通信速度慢得像 “烏龜爬”,要么會(huì)使功耗高得像 “電老虎”。
接下來,我們?cè)敿?xì)講解上拉電阻的計(jì)算方法。我們需要分別計(jì)算上拉電阻的值 Rp (min)和值 Rp (max)。
對(duì)于值 Rp (min) 的計(jì)算,如果上拉電阻太小,電流會(huì)過大,IC 可能無法將電平拉低,從而導(dǎo)致通信失敗。電阻由公式Rp(min)=IoLVcc?VoL(max)決定,其中 Vcc 為電源電壓,VoL (max) 是 IC 能輸出的低電平電壓(I2C 標(biāo)準(zhǔn)要求邏輯低電平低于 0.3×Vcc),IoL 是 IC 拉低時(shí)的灌電流能力 (Sink Current)。例如,當(dāng) Vcc = 3.3V,VoL (max)=0.4V,IoL = 3mA 時(shí),代入公式可得Rp(min)=3×10?33.3?0.4=3×10?32.9≈966.67Ω。這意味著上拉電阻不能小于 966.67Ω,否則 IC 拉低電平會(huì) “力不從心”,邏輯 0 可能變成 “半吊子”,直接導(dǎo)致通信崩潰。


而對(duì)于值 Rp (max) 的計(jì)算,如果上拉電阻太大,線路的上升時(shí)間會(huì)變長(zhǎng),無法達(dá)到 I2C 標(biāo)準(zhǔn)的上升時(shí)間要求(Rise Time),同樣會(huì)導(dǎo)致通信失敗。電阻由公式Rp(max)=0.8473×Cbtr決定,其中 tr 是 I2C 標(biāo)準(zhǔn)的上升時(shí)間,Cb 是總線電容(包括線路電容和 IC 的引腳電容),0.8473 是 RC 電路上升時(shí)間的常數(shù)(從 0.3×Vcc 到 0.7×Vcc 的時(shí)間系數(shù))。例如,如果 tr = 300 ns,Cb = 200pF,代入公式可得Rp(max)=0.8473×200×10?12300×10?9≈1770Ω。這表明上拉電阻不能大于 1770Ω,不然信號(hào)上升太慢,I2C 主設(shè)備可能還沒等到高電平就 “等不及了”,通信也會(huì)失敗。
上拉電阻的范圍確定為 966.67Ω 到 1770Ω,但具體選擇多大的阻值,還需要在速度和功耗之間進(jìn)行平衡。選擇小電阻(接近 Rp (min))時(shí),優(yōu)點(diǎn)是上升時(shí)間短,通信速度快,但缺點(diǎn)是電流大,功耗高。例如使用 1kΩ 的電阻,上升時(shí)間會(huì)很短,通信速度快,但平均電流(信號(hào)頻繁切換時(shí))會(huì)較大,功耗也會(huì)相應(yīng)增加。而選擇大電阻(接近 Rp (max))時(shí),優(yōu)點(diǎn)是電流小,功耗低,但缺點(diǎn)是上升時(shí)間長(zhǎng),速度慢。例如使用 1.5kΩ 的電阻,上升時(shí)間會(huì)變長(zhǎng),速度會(huì)慢一些,但功耗會(huì)降低。
在實(shí)際設(shè)計(jì)過程中,還需要注意以下事項(xiàng):
- 總線線電容 Cb 要估準(zhǔn):Cb 包括 PCB 走線電容(每厘米約 1 - 2pF)、IC 引腳電容(通常 5 - 10pF / 個(gè))。例如 10cm 走線 + 2 個(gè) IC,Cb ≈ 20 + 2 × 10 = 40 pF。實(shí)際設(shè)計(jì)時(shí)進(jìn)行測(cè)量,并適當(dāng)留有余量。
- Vcc 變化的影響:Vcc 不是穩(wěn)定不變的,而是會(huì)波動(dòng)。例如,當(dāng) Vcc 不是 3.3V,而是在 2.9 - 3.5V 之間波動(dòng)時(shí),Rp (min) 會(huì)發(fā)生變化,需要重新進(jìn)行計(jì)算。
- 環(huán)境溫度:在高溫環(huán)境下,IC 的 IoL 可能會(huì)變小,Rp (min) 會(huì)變大,因此需要對(duì)其進(jìn)行評(píng)估。
- 多設(shè)備場(chǎng)景:當(dāng)多個(gè) IC 掛在 I2C 總線上時(shí),電容 Cb 會(huì)增加,Rp (max) 會(huì)變小,需要重新計(jì)算電阻范圍。
綜上所述,在 I2C 通信電路設(shè)計(jì)中,準(zhǔn)確計(jì)算和合理選擇上拉電阻對(duì)于保證電路的性能和通信的穩(wěn)定性至關(guān)重要。工程師們需要綜合考慮各種因素,進(jìn)行的計(jì)算和評(píng)估,以設(shè)計(jì)出的電路方案。
關(guān)鍵詞:I2C 通信