
相信不少設(shè)計者在進行學(xué)習(xí)時,都是從較為簡單且經(jīng)典的器件或電路開始著手,STM32就恰恰符合這一特點,因此不少新手在進行單片機學(xué)習(xí)時都是先從STM32開始。在本文中,小編將為大家介紹在STM32中的I2C上拉電阻的選擇問題。
從設(shè)計過程中我們可以發(fā)現(xiàn),I2C的上拉電阻通常為1.5K、2.2K、4.7K,然而電阻的大小對時序有一定影響,對信號的上升時間和下降時間也有影響,所以一般接1.5K或2.2K。
上拉電阻阻值的確定
由于I2C接口采用OpenDrain機制,器件本身只能輸出低電平,無法主動輸出高電平,只能通過外部上拉電阻RP將信號線拉至高電平。因此I2C總線上的上拉電阻是必須的。
RP不宜過小,一般不低于1KΩ:一般IO端口的驅(qū)動能力在2mA~4mA量級。如果RP阻值過小,VDD灌入端口的電流將較大,這導(dǎo)致端口輸出的低電平值增大(I2C協(xié)議規(guī)定,端口輸出低電平的最高允許值為0.4V)。如果灌入端口的電流過大,還可能損壞端口。故通常上拉電阻應(yīng)選取不低于1KΩ的電阻(當(dāng)VDD=3V時,灌入電流不超過3mA)。
RP不宜過大,一般不高于10KΩ:由于端口輸出高電平是通過RP實現(xiàn)的,線上電平從低到高變化時,電源通過RP對線上負載電容CL充電,這需要一定的時間,即上升時間。端口信號的上升時間可近似用充電時間常數(shù)RPCL乘積表示。信號線負載電容(對地)由多方面組成,包括器件引腳、PCB信號線、連接器等。如果信號線上掛有多個器件,負載電容也會增大。比如總線規(guī)定,對于的400kbps速率應(yīng)用,信號上升時間應(yīng)小于300ns。假設(shè)線上CL為20PF,可計算出對應(yīng)的RP值為15KΩ。如果RC充電時間常數(shù)過大,將使得信號上升沿變化緩慢,達不到數(shù)據(jù)傳輸?shù)囊?。因此一般?yīng)用中選取的都是幾KΩ量級的上拉電阻,比如都選取4K7的電阻。
I2C上拉電阻計算公式
Rmin={Vdd(min)-o.4V}/3mA
Rmax=(T/0.874)*c,T=1us100KHz,T=0.3us400KHz。(C是Buscapacitance)
上拉電阻Rp最大值由總線最大容限(Cbmax)決定,Rp最小值由上拉電源Vio與上拉驅(qū)動電流(最大取3mA)決定。于是Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V)。
Rpmax的取值:參考周立功的I2C總線規(guī)范中文版來說,標準模式下100Kbps總線的負載最大容限<=400pF??焖倌J较?00Kbps總線的負載最大容限<=200pF,根據(jù)具體使用情況、目前的器件制造工藝、PCB的走線距離等因素以及標準的向下兼容性,設(shè)計中以快速模式為基礎(chǔ),即總線負載電容<200pF,也就是傳輸速度可以上到400Kbps是不成問題的。于是Rpmax可以取的范圍是1.8K~7K@Vio=5V對應(yīng)50pF~200pF。根據(jù)Rpmin與Rpmax的限制范圍,一般取5.1K@Vio=5V,負載容限的環(huán)境要求也容易達到。在2.8V系統(tǒng)中,console設(shè)計選3.3K,portable/handset等低供耗的設(shè)計選4.7K犧牲速度換取電池使用時間。
總的來說:電源電壓限制了上拉電阻的最小值。負載電容(總線電容)限制了上拉電阻的最大值。補充一點,在I2c總線可以串連300歐姆電阻RS可以用于防止SDA和SCL線的高電壓毛刺。
本文從阻值的計算與確定等方面,來對STM32中的I2C上拉電阻問題進行了講解,并給出了I2C上拉電阻的計算公式。對于STM32和上拉電阻之間存在疑惑的朋友不妨花上幾分鐘來閱讀本文,相信一定會有意想不到的收獲。
聲明:本內(nèi)容為作者獨立觀點,不代表電源網(wǎng)。本網(wǎng)站原創(chuàng)內(nèi)容,如需轉(zhuǎn)載,請注明出處;本網(wǎng)站轉(zhuǎn)載的內(nèi)容(文章、圖片、視頻)等資料版權(quán)歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經(jīng)濟損失,請電郵聯(lián)系我們,以便迅速采取適當(dāng)處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
微信關(guān)注 | ||
![]() |
技術(shù)專題 | 更多>> | |
![]() |
技術(shù)專題之EMC |
![]() |
技術(shù)專題之PCB |