【導(dǎo)讀】I2C信號需要上拉電阻的原因與其工作原理密切相關(guān)。I2C是一種開放漏極(open-drain)或開集電極(open-collector)的通信協(xié)議,這意味著驅(qū)動器(主設(shè)備或從設(shè)備)只能將線拉低到低電平(邏輯0),但不能主動將線拉高到高電平(邏輯1)。
I2C信號需要上拉電阻的原因與其工作原理密切相關(guān)。I2C是一種開放漏極(open-drain)或開集電極(open-collector)的通信協(xié)議,這意味著驅(qū)動器(主設(shè)備或從設(shè)備)只能將線拉低到低電平(邏輯0),但不能主動將線拉高到高電平(邏輯1)。
在I2C通信中,SDA(數(shù)據(jù)線)和SCL(時鐘線)在空閑狀態(tài)下都應(yīng)處于高電平。為了實現(xiàn)這一點,需要在總線的SDA和SCL線上添加上拉電阻。當總線上的所有驅(qū)動器都處于不工作狀態(tài)(高阻態(tài))時,這些上拉電阻會將信號線拉升至電源電壓,確保線路保持高電平。
當需要發(fā)送低電平信號時,設(shè)備會通過將信號線連接到地,從而克服上拉電阻,使信號線達到低電平。當設(shè)備不再驅(qū)動線時,信號線會再次被上拉電阻拉回到高電平。
具體而言,上拉電阻的作用包括以下幾個方面:
確保信號線在空閑時保持高電平:I2C總線在空閑時要求信號線為高電平狀態(tài),上拉電阻實現(xiàn)了這一功能。
防止浮空狀態(tài):沒有上拉電阻時,SDA和SCL線在設(shè)備不驅(qū)動時可能處于不確定的狀態(tài),上拉電阻可以防止這種浮空狀態(tài),確保信號線有明確的電平。
適應(yīng)多設(shè)備通信:I2C總線允許多個設(shè)備連接在同一條總線上,任何一個設(shè)備都可以驅(qū)動總線。上拉電阻使得每個設(shè)備都可以在不工作時保持總線的高電平,確保通信的可靠性。
因此,上拉電阻是I2C總線正常工作和通信穩(wěn)定性的重要組成部分。
一些總線有輸出輸出接口,本質(zhì)就是OC或OD的接口。I2C(Inter Integrated Circuit,內(nèi)部集成電路)總線就是典型的OD輸出結(jié)構(gòu)的應(yīng)用,典型的I2C電路都有上拉電阻,如圖所示。
I2C接口的SCL與SDA都是OD輸出結(jié)構(gòu)輸出,這樣的好處是可以作為雙向數(shù)據(jù)總線。OC、OD電路往往是剛剛說的輸入輸出管腳,然而一些總線的I/O就是一些雙向數(shù)據(jù)的信號,其實就是把輸入和輸出短接在一起,然后把輸出做成OC或OD。這樣處理不單用一根信號實現(xiàn)了雙向數(shù)據(jù),既可以輸出又可以輸入,同時解決了雙向數(shù)據(jù)如果同時發(fā)送帶來的數(shù)據(jù)沖突的問題。
一般來說,芯片的輸出管腳是推挽結(jié)構(gòu)。如果兩個芯片的推挽結(jié)構(gòu)輸出管腳連接在一起,某一個時刻兩個芯片同為輸出,一個如果輸出為高、一個輸出為低,則可能出現(xiàn)短路的現(xiàn)象,工作中稱為“總線沖突”,如圖所示。用OC、OD電路可以避免短路,所有絕大多數(shù)總線都是采用這種方式設(shè)計,如I2C、LPC、PCI等總線的輸入輸出管腳都是這樣的管腳類型。當然也有些總線方式,I/O端口不需要外接,是芯片內(nèi)置了上拉電阻。
I2C被設(shè)計成開放漏極(Open-Drain, OD)或開集電極(Open-Collector, OC)結(jié)構(gòu)的原因主要與總線的多主機、多從機通信架構(gòu)和信號線的共用特點有關(guān)。具體原因包括:
1. 支持多設(shè)備共用總線
I2C總線可以連接多個主設(shè)備和從設(shè)備,這就要求多個設(shè)備可以共享同一條SDA(數(shù)據(jù)線)和SCL(時鐘線)。如果信號線是由設(shè)備主動驅(qū)動到高電平或低電平(推挽結(jié)構(gòu)),則當一個設(shè)備試圖驅(qū)動信號線為高電平而另一個設(shè)備試圖驅(qū)動信號線為低電平時,會發(fā)生電平?jīng)_突,可能會導(dǎo)致短路或其他問題。
開放漏極或開集電極結(jié)構(gòu)允許多個設(shè)備將線拉低,而不會引起沖突。當所有設(shè)備都不工作時(即處于高阻態(tài)),上拉電阻會將信號線拉回到高電平。這樣,多個設(shè)備可以安全地共用同一條I2C總線,而不會發(fā)生沖突。
2. 簡化多主機仲裁
I2C協(xié)議允許多個主設(shè)備共用同一總線。在多主設(shè)備嘗試同時傳輸數(shù)據(jù)的情況下,需要進行仲裁。開放漏極/開集電極結(jié)構(gòu)使得這種仲裁變得簡單可行。
仲裁過程是通過監(jiān)視SDA線來完成的:每個主設(shè)備在發(fā)送數(shù)據(jù)時都監(jiān)視SDA線。如果一個主設(shè)備試圖發(fā)送高電平,但監(jiān)視到的是低電平(因為另一個設(shè)備在拉低SDA線),它就知道有另一個設(shè)備在傳輸數(shù)據(jù),因此它將停止傳輸。這個過程使得仲裁成為可能,而不會導(dǎo)致信號沖突。
3. 簡化電路設(shè)計
使用開放漏極或開集電極的驅(qū)動方式可以簡化電路設(shè)計。因為設(shè)備只需要一個下拉開關(guān)來控制信號線的電平(拉低到地),而不需要額外的電路來推動信號線到高電平。這樣,電路更加簡單,也減少了功耗。
4. 適應(yīng)不同電壓的設(shè)備
I2C總線的開放漏極/開集電極結(jié)構(gòu)允許不同電壓的設(shè)備共用一條總線。例如,一個3.3V的設(shè)備和一個5V的設(shè)備可以通過上拉電阻連接到同一個I2C總線,并且上拉電阻可以選擇一個中間電壓(如3.3V或5V)來適應(yīng)不同電壓的設(shè)備。
總的來說,I2C采用開放漏極或開集電極結(jié)構(gòu)是為了實現(xiàn)多設(shè)備安全共用總線、支持多主設(shè)備仲裁、簡化電路設(shè)計以及兼容不同電壓的設(shè)備。這些特性使得I2C在簡單的雙線通信協(xié)議中具有很大的優(yōu)勢。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。
推薦閱讀:
貿(mào)澤電子對FIRST創(chuàng)始人兼發(fā)明家Dean Kamen進行視頻專訪
在工業(yè)電機驅(qū)動器中采用碳化硅設(shè)計的實用工具
授權(quán)代理商貿(mào)澤電子為工程師提供AMD的全新AI和邊緣技術(shù)
高精度UWB技術(shù)滿足物聯(lián)網(wǎng)設(shè)備需求