IIC通信為什么使用開漏輸出+上拉電阻的模式
前言
最近遇到技術(shù)群里有小伙伴在問為什么IIC通信需要掛上拉電阻,查閱了一些資料做一個小結(jié)留作備用。方便后面復(fù)習(xí)。

一、什么是開漏輸出和推挽輸出
推挽輸出和開漏輸出
?推挽輸出(Push-Pull Output)是由兩個MOS或者三極管受到互補(bǔ)控制信號的控制,兩個管子始終處在一個導(dǎo)通另一個截止的狀態(tài);
輸入邏輯1,則P-MOS激活,輸出為高電平;圖1;
輸入邏輯0,則N-MOS激活,輸出為低電平;圖2;

? ? ? ? ??

? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
開集輸出是針對三極管來說,開漏輸出是針對MOS管來說。現(xiàn)在MOS管用普遍,而且性能要比晶體管要好,所以很多開漏輸出電路,和上面講的推挽輸出電路都用MOS管實(shí)現(xiàn)。由于使用MOS管的情況較多,很多時候就用"開漏輸出"這個詞代替了開漏輸出和開集輸出。
開漏(OC/OD門)輸出最主要的特性就是高電平?jīng)]有驅(qū)動能力,需要借助外部上拉電阻才能真正輸出高電平,此時,如果在集電極或漏極上增加上拉電阻,就具備了輸出高、低電平的功能,而且電平被固定的鉗位在VCC或者GND。

?①開漏輸出的這一特性一個明顯的優(yōu)勢就是可以很方便的調(diào)節(jié)輸出的電平,因?yàn)檩敵鲭娖酵耆缮侠娮柽B接的電源電平?jīng)Q定。所以在需要進(jìn)行電平轉(zhuǎn)換的地方,非常適合使用開漏輸出。
②開漏輸出的這一特性另一個好處在于可以實(shí)現(xiàn)"線與"功能,所謂的"線與"指的是多個信號線直接連接在一起,只有當(dāng)所有信號全部為高電平時,合在一起的總線為高電平;只要有任意一個或者多個信號為低電平,則總線為低電平。而推挽輸出就不行,如果高電平和低電平連在一起,會出現(xiàn)電流倒灌,損壞器件。
二、開漏和推挽的區(qū)別
1)推挽輸出:可以吸電流也可以灌電流,相對于開漏,輸出電平取決于IC電源。然而,一條總線上只能有一個推挽輸出。
2)開漏輸出:實(shí)現(xiàn)電平轉(zhuǎn)換,實(shí)現(xiàn)”線與“邏輯(I2C等接口總線應(yīng)用中),利用外電路提高驅(qū)動能力,利用上拉電阻提供高電平,顯然,沒有上拉電阻只能輸出低電平。
3)如果你想要電平轉(zhuǎn)換速度快的話,那么就選推挽(push-pull),但是缺點(diǎn)是功耗相對會大些。
4)如果你想要功耗低,且同時具有“線與”的功能,那么就用開漏(open-drain)的模式。
三、開漏輸出上下拉電阻應(yīng)用
1.?上下拉電阻的應(yīng)用場景
1)用在OC/OD門
2)用在按鍵電路
3)用在IIC總線
4)用在邏輯IC懸空的管腳
5)用在終端匹配
2.?上下拉電阻的選型
1)定義
上拉電阻的定義:在某信號線上,通過電阻與一個固定的高電平VCC相接,使其電壓在空閑狀態(tài)保持在VCC電平,此時電阻被稱為上拉電阻。
下拉電阻的定義:將某信號線通過電阻接在固定的低電平GND上,使其空閑狀態(tài)保持GND電平,此時的電阻被稱為下拉電阻。
若上拉電阻的阻值在上百K,能提供給信號線上負(fù)載電流非常小,對負(fù)載電容充電比較慢,此時電阻被稱為弱上拉。
同理當(dāng)下拉的電阻非常大時,導(dǎo)致下拉的速度比較緩慢,此時的電阻被稱為弱下拉。而當(dāng)上下拉的電平可以提供較大的電流給芯片時,此時的電阻被稱為是強(qiáng)上拉或強(qiáng)下拉。
2)驅(qū)動能力
在OC門和OD門電路中,上拉電阻取太大,在輸出高電平時,無法為后級提供較大的電流。以最簡單的驅(qū)動LED燈為例:LED正常工作時需要5~10mA電流,如果電阻取太大,LED燈無法點(diǎn)亮,因此需結(jié)合LED燈的電流和電壓來選取上拉電阻。
3)信號速率
在IIC的總線上需要增加上拉電阻,上拉電阻太大,會減慢信號由低向高電平轉(zhuǎn)變的時間,上升沿變緩,影響信號上速率。
總結(jié)
IIC總線選擇開漏輸出的原因?yàn)橥仆燧敵龃嬖诙搪凤L(fēng)險;且使用開漏輸出可以實(shí)現(xiàn)線與功能;在進(jìn)行上拉電阻選擇時,必須根據(jù)實(shí)際需要選擇電阻值不能太大也不能太?。唤ㄗh上拉電阻可選用1.5K,2.2K,4.7K。