天天看點

I2C上拉電阻取值問題I2C上拉電阻取值問題

I2C上拉電阻取值問題

轉載至http://blog.csdn.net/zyboy2000/article/details/5789005。

漏極開路上拉電阻取值為何不能很大或很小?

I2C上拉電阻取值問題I2C上拉電阻取值問題

       如果上拉電阻值過小,Vcc灌入端口的電流(Ic)将較大,這樣會導緻MOS管V2(三極管)不完全導通(Ib*β<Ic),有飽和狀态變成放大狀态,這樣端口輸出的低電平值增大(I2C協定規定,端口輸出低電平的最高允許值為0.4V)

       如果上拉電阻過大,加上線上的總線電容,由于RC影響,會帶來上升時間的增大(下降延是晶片内的半導體,是有源驅動,速度較快;上升延是無源的外接電阻,速度慢),而且上拉電阻過大,即引起輸出阻抗的增大,當輸出阻抗和負載的阻抗可以比拟的時,則輸出的高電平會分壓而減少。

I2C的上拉電阻可以是1.5K,2.2K,4.7K, 電阻的大小對時序有一定影響,對信号的上升時間和下降時間也有影響,一般接1.5K或2.2K

(實驗:接入200K上拉電阻,結果觀察到信号上升時間增大,方波變成三角波)

I2C上拉電阻确定有一個計算公式:

Rmin={Vdd(min)-o.4V}/3mA

Rmax=T/(0.847*c) ,   T=1us 100KHz, T=0.3us 400KHz

C是Bus capacitance

Rp最大值由總線最大容限(Cbmax)決定,Rp最小值由Vio與上拉驅動電流(最大取3mA)決定;

于是 Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V)

Rpmax的取值:參考周公的I2C總線規範中文版P33圖39與P35圖44

标準模式,100Kbps總線的負載最大容限<=400pF;快速模式,400Kbps總線的負載最大容限<=200pF,根據具體使用情況、目前的器件制造技術、PCB的走線距離等因素以及标準的向下相容性,設計中以快速模式為基礎,即總線負載電容<200pF,也就是傳輸速度可以上到400Kbps是不成問題的。于是Rpmax可以取的範圍是1.8K~7K @ Vio=5V對應50pF~200pF

根據Rpmin與Rpmax的限制範圍,一般取5.1K @ Vio=5V , 負載容限的環境要求也容易達到。在2.8V系統中,console設計選3.3K,portable/handset等低供耗的設計選4.7K犧牲速度換取電池使用時間

總的來說:電源電壓限制了上拉電阻的最小值 ; 負載電容(總線電容)限制了上拉電阻的最大值

補充:在I2c總線可以串連300歐姆電阻RS可以用于防止SDA和SCL線的高電壓毛刺

      : I2c從裝置的數量受總線電容,<=400pF的限制

上拉電阻阻值的确定

由于I2C接口采用Open Drain機制,器件本身隻能輸出低電平,無法主動輸出高電平,隻能通過外部上拉電阻RP将信号線拉至高電平。是以I2C總線上的上拉電阻是必須的!

I2C上拉電阻取值問題I2C上拉電阻取值問題

RP不宜過小,一般不低于1KΩ

一般IO 端口的驅動能力在2mA~4mA量級。如果RP阻值過小,VDD灌入端口的電流将較大,這樣會導緻MOS管不完全導通,有飽和狀态變成放大狀态,這樣端口輸出的低電平值增大(I2C協定規定,端口輸出低電平的最高允許值為0.4V);如果灌入端口的電流過大,還可能損壞端口。故通常上拉電阻應選取不低于1KΩ的電阻(當VDD=3V時,灌入電流不超過3mA)。

RP不宜過大,一般不高于10KΩ

由于端口輸出高電平是通過RP實作的,線上電平從低到高變化時,電源通過RP對線上負載電容CL充電,這需要一定的時間,即上升時間。端口信号的上升時間可近似用充電時間常數RPCL乘積表示。

信号線負載電容(對地)由多方面組成,包括器件引腳、PCB信号線、連接配接器等。如果信号線上挂有多個器件,負載電容也會增大。比如總線規定,對于的400kbps速率應用,信号上升時間應小于300ns;假設線上CL為20PF,可計算出對應的RP值為15KΩ。

如果RC充電時間常數過大,将使得信号上升沿變化緩慢,達不到資料傳輸的要求。

是以一般應用中選取的都是幾KΩ量級的上拉電阻,比如都選取4K7的電阻。

小阻值的RP電阻增大了端口Sink電流,故在可能的情況下,RP取值應稍大一點,以減少耗電。另外,通産情況下,SDA,SCL兩條線上的上拉電阻取值是一緻的,并上拉到同一電源上。

PCB布局布線與抗幹擾設計

I2C信号線屬于低速控制線,在手機PCB設計時,按通常的控制IO對待即可,無需做特别的保護設計,一般不用擔心受到噪聲源幹擾。

但在一些特定的情況下,比如折疊、滑蓋機型中,I2C的兩根信号線需要通過轉軸或滑軌處的FPC,此時由于信号路徑比較長,距離天線比較近,而且Open drain的輸出級對地阻抗大,對幹擾比較敏感,是以比較容易受到RF信号源的幹擾。在這種情況下,就應适當注意對I2C信号線的保護。比如I2C兩條信号線(SDA,SCL)等長度地平行走線,兩邊加地線進行保護,避免臨近層出現高速信号線等。

上拉電阻應安置在OD輸出端附近。當I2C總線上主從器件(Master & Slave)兩端均為OD輸出時,電阻放置在信号路徑的中間位置。當主裝置端是軟體模拟時序,而從裝置是OD輸出時,應将電阻安置在靠近從裝置的位置。

I2C協定還定義了串聯在SDA、SCL線上電阻Rs。該電阻的作用是,有效抑制總線上的幹擾脈沖進入從裝置,提高可靠性。這個電阻的選擇一般在100~200ohm左右。當然,這個電阻并不是必須的,在惡劣噪聲環境中,可以選用。

I2C上拉電阻取值問題I2C上拉電阻取值問題

比如常用的FM 接收子產品或者Capsense觸摸感應功能塊,都是通過I2C接口控制的。I2C接口信号從處理器出發,經過PCB上的信号路徑,進入上述電路單元。I2C信号線上載有一定幹擾,這種幹擾雖然幅度并不很大,但還是會影響敏感的FM接收子產品或Capsense觸摸感應功能塊。此時,可以通過在靠近FM子產品或觸摸感應子產品的I2C信号線上串接Rs電阻,即可有效降低幹擾的影響。此外,上拉電阻端的電源也要進行退耦處理。

軟體模拟I2C時序

由于一般的I2C應用速率并不高(400kbps),使用處理器的IO口模拟I2C波形,完全可以勝任(處理器一般擔任Master,占有I2C通信的控制權,無需擔心随機的I2C通信服務中斷其他任務的執行)。

處理器配置設定給I2C任務的IO口,要求可以輸出高低電平,還能配置為輸入端口。處理器根據總線規範以及從裝置的時序要求,利用2條IO信号線,模拟I2C接口時序波形,進行I2C通信。

處理器發送資料時,通過IO口輸出高電平,上升時間基本與外部上來電阻阻值無關,且比用外部上拉電阻上拉到高電平快很多。處理器在接受資料時,即便上拉電阻阻值選的大一些,從裝置輸出資料的波形上升沿緩慢,但由于處理器使用軟體采樣的而非硬體采樣,是以,對資料傳輸的結果并不影響。也就是說,使用IO口模拟I2C時序時,上拉電阻阻值可以适當選的大一些。

需要指出的是,使用軟體模拟最多隻能完成單Master的應用,對于多Master應用,由于需要進行總線控制權的仲裁管理,使用軟體模拟的方法很難完成。

I2C總線空閑的時候,兩條信号線應該維持高電平。否則,上拉電阻上會有耗電。特别是在上電過程中,IO線上電平也應保持在高電平狀态。也就是說:當Master的I2C使用的是IO軟體模拟時,一定要保證該兩個IO上電預設均為輸入(或高阻)或者輸出高電平,切不可預設為輸出低電平。IO預設為輸入時,可以通過外部上拉電阻将I2C信号線拉至高電平。

I2C上拉電阻取值問題I2C上拉電阻取值問題

I2C應用中上拉電阻電源問題

在部中分應用中,還存在主從裝置以及上拉電阻電源不一緻的情況,比如Camera模組。在很多設計方案中,Camera模組不工作時,并不是進入Power Down模式,而是直接關閉模組供電VDDS。此時,處理器與模組互相連接配接的所有信号線都應該進入高阻态,否則就會有電流漏入模組;而對于此時的I2C控制信号線來說,由于上拉電阻的存在,必須關斷上拉電阻電源VDDP。如果上拉電阻使用的是系統電源VDDM(VDDP=VDDM),無法關閉,就會有漏電流進入模組;是以這種情況下,應該使用VDDS作為上拉電阻電源(VDDP=VDDS),這樣上拉電阻電源與Slave電源即可同時關閉,切斷了漏電路徑。

另外需要注意的是,在上述應用執行個體中選擇的IO,應該選取上電預設為輸入(或高阻)才行。

I2C上拉電阻取值問題I2C上拉電阻取值問題

繼續閱讀