Dlaczego I2C został zaprojektowany do pracy z rezystorami podciągającymi, a nie z opuszczanymi?


22

Rozumiem, że w liniach I2C, SCL i SDA używamy rezystorów podciągających, a sterowniki pinów to urządzenia NPN z otwartym kolektorem, które mogą doprowadzić piny do uziemienia. Daje to I2C korzyść polegającą na tym, że ta sama magistrala może być teraz współdzielona z wieloma urządzeniami podrzędnymi, a nawet jeśli dwóch lub więcej urządzeń podrzędnych przypadkowo spróbuje prowadzić magistralę w tym samym czasie, nie spowoduje to uszkodzenia systemu.

Ale można to również zrobić za pomocą sterowników PNP i rezystorów obniżających napięcie na liniach SDA i SCL. Dzięki temu można osiągnąć takie rzeczy jak rozciąganie zegara i arbitraż wielozadaniowy.

Czy obecna implementacja protokołu I2C daje jakieś korzyści w stosunku do wyżej sugerowanej alternatywy?


1
tranzystory z otwartym kolektorem wydawały się być w większości w układach scalonych w latach 80.
PlasmaHH,

9
@PlasmaHH Myślę, że powodem był NPN (o ile niejasno pamiętam) ma większą pojemność prądową na obszar ze względu na wyższą ruchliwość elektronów w podłożu, dzięki czemu łatwiej jest zbudować z tego „mocne” stopnie wyjściowe.
Marcus Müller,

7
@ MarcusMüller Rzeczywiście, to była (i nadal jest) prawda. Stopy NPN i NMOS są „silniejsze”, jeśli mają ten sam rozmiar. W CMOS współczynnik 2–3 jest typowy. W przypadku PNP vs NPN zależy to od procesu produkcyjnego, ale prawie zawsze PNP są znacznie trudniejsze i bardziej złożone niż NPN. Podkreśla to także zaczynając od substratu z domieszką P (jak większość procesów) (lepsze NPN).
Bimpelrekkie,

@Bimpelrekkie Pamiętam współczynnik 2,3 z mojej klasy fizyki ciała stałego do tej daty :-)
winny

1
Jeśli istniejąca szyna I2C zostanie przypadkowo zwarta do masy z jakiegokolwiek powodu, wówczas pobierany będzie tylko prąd rezystora podciągającego. Dzięki komplementarnemu układowi przetworników z aktywną wysokością i rezystorami obniżającymi zniszczyłbyś proste sterowniki z początkowych lat I2C. Podczas przechodzenia między deskami należy wziąć pod uwagę zwarcie do podwozia. Ale to tylko jeden z wielu powodów, dla których warto jeździć na niskim poziomie, na które inni odpowiedzieli poniżej.
TonyM,

Odpowiedzi:


30

Elektrycznie ma to sens, ponieważ uziemienie jest jednym wspólnym połączeniem ze wszystkimi urządzeniami na magistrali IIC. To o wiele mniej ograniczeń niż wymuszanie zasilania, które jest wspólnym połączeniem ze wszystkimi urządzeniami IIC, co byłoby wymagane, gdyby linie były napędzane wysoko i unosiły się nisko za pomocą menu rozwijanego.

Należy pamiętać, że urządzenia IIC nie muszą być zasilane z tej samej sieci lub z tego samego napięcia. Nie byłoby to prawdą, gdyby obie linie magistrali musiały być doprowadzone do jednego wspólnego napięcia zasilania.


5
Nie moja opinia negatywna i musisz mieć tyle lat doświadczenia w I2C co ja, więc moje rozumowanie jest prawdopodobnie nieporozumieniem, ale: „ Urządzenia IIC nie muszą być zasilane z [...] tego samego napięcia ” postrzegane jako sugerujące, że urządzenia I2C zasilane napięciem 5V i napięciem 3V (na przykład) mogą dzielić tę samą magistralę I2C, bez żadnych dodatkowych komponentów ani środków ostrożności (ponieważ nie wspomniałeś o translatorach poziomów). I oczywiście nie mogą tego zrobić, ponieważ progi logiczne I2C każdego urządzenia są teraz powiązane z ich własnym Vcc. Być może brak wyraźnej wzmianki o tłumaczach poziomów spowodował głosowanie negatywne?
SamGibson,

13
W zależności od zastosowanych podciągnięć i styków we / wy komunikacja w stylu I2C może działać płynnie między urządzeniami 5 V i 3,3 V. Na przykład użycie podciągnięć 10K do 5 V pozwoliłoby na użycie urządzeń 3,3 V, jeśli mają one niezablokowane wejścia tolerujące 5 V lub jeśli mogą tolerować 150uA w swoich diodach zabezpieczających. A użycie podciągnięć do 3,3 V będzie działać, przynajmniej przy niższych prędkościach, do łączenia się z urządzeniami 5 V, które mają wysoki próg wejściowy wynoszący 2,5 V lub mniej.
supercat,

7
@Sam: W rzeczywistości urządzenia IIC 5 V i 3,3 V mogą znajdować się na tej samej magistrali IIC. Urządzenia ze stałymi poziomami napięcia niezależnie od napięcia zasilania są wyraźnie wymienione i sankcjonowane w specyfikacji IIC.
Olin Lathrop,

5
W starym dokumencie „Magistrala I2C i jak z niej korzystać” autorstwa Philipsa, rozdział 10.0 wymienia stałe progi wejściowe dla wczesnych (zazwyczaj NMOS) urządzeń 5V I2C. Następnie mówi: „ Urządzenia magistrali I2C z poziomami wejściowymi związanymi z VDD muszą mieć jedną wspólną linię zasilającą, do której podłączony jest również rezystor podciągający ” (mój pogrubienie). @ supercat - wspomniałeś: „ Urządzenia 5 V, które mają wysoki próg wejściowy, który wynosi 2,5 V lub mniej ”. Czy możesz mi pomóc, podając przykład takiego urządzenia? Czytając stare dokumenty I2C, mogę znaleźć tylko wzmianki o stałym minimum 3 V I2C Vih dla tych starych urządzeń 5 V. Dzięki.
SamGibson,

2
@SamGibson: Urządzenia z poziomami wejściowymi związanymi z VDD mogą wymagać działania przy napięciu mieszczącym się w określonym przedziale. To, jak blisko muszą być, zależy od tego, w jaki sposób napięcia są powiązane z VDD. Arkusz danych Microchip dla PIC16F877 (dowolnie wybrana część 5 V) podaje V (IH) dla swoich normalnych pinów jako 0,25 VDD + 0,8 V, chociaż dla wejść Schmitt Trigger byłby znacznie wyższy. Przy VDD = 5,2 V normalne napięcie wejściowe miałoby określone V (IH) wynoszące 2,1 wolta; Nie widziałem specyfikacji dla sprzętowego I2C V (IH), chociaż typowy wykres wydajności sugeruje, że jest pomiędzy normalnym a ST wejściowym.
supercat,

24

W dawnych dobrych czasach kierowcy TTL byli znacznie lepsi w odciąganiu sygnału niż w górę. Dlatego protokoły, takie jak I2C, ale także linie przerwania, reset i inne, zostały zaimplementowane przy użyciu pull-up z rozproszonym pull-down.


8
W lepszych współczesnych czasach to samo pozostaje prawdą, ponieważ jest to nieodłączna właściwość półprzewodników. Dzisiaj po prostu nie kosztuje tyle, aby uzyskać mocniejszy tranzystor podciągający do obsługi tego samego prądu.
Arsenał

2
Powiedziano mi, że dzięki CMOS znacznie łatwiej jest zbliżyć się do napięcia szyny zasilającej. Kolejny „problem”, w którym zmagało się TTL. (Może powinniśmy liczyć na to, że mamy szczęście, ponieważ pozwoliło to na połączenie CMOS 3V3 z TTL)
Oldfart

14

Łatwiej jest używać uziemienia jako wspólnego odniesienia dla podsystemów, które mogą mieć różne napięcia zasilania. Jeśli użyjesz tranzystorów PNP do podniesienia napięcia zasilania, wszystkie podsystemy musiałyby być podłączone do tego samego źródła zasilania.


8

Mnóstwo dobrych odpowiedzi tutaj, ale jest też inny powód.

Jeśli stan spoczynku autobusu jest na ziemi, nie ma sposobu, aby stwierdzić, czy autobus jest podłączony, czy po prostu wisi w przestrzeni.

To normalne, że podciąganie znajduje się w urządzeniu głównym. Niewolnicy zwykle nie mają podciągania. Wynika to z faktu, że prąd obniżający, który byłby wymagany do zapewnienia niskiego poziomu, zwiększałby się wraz z liczbą urządzeń podłączonych do magistrali.

Niewolnik po podłączeniu do magistrali może wykryć, że linia jest podniesiona do góry (zakładając, że nie jest używana) i wiedzieć, że magistrala jest rzeczywiście tam i cicho. Nie byłoby tak w przypadku autobusu z tendencją do ziemi.


Aby wykryć, że autobus jest wyciągany wysoko, niewolnik musi przede wszystkim pociągnąć go nisko. Nie jestem pewien, dlaczego podobna procedura nie byłaby możliwa z odwrotną polaryzacją.
Dmitrij Grigoryev

@DmitryGrigoryev dlaczego miałby wyciągać coś, co już jest wysoko niskie?
Trevor_G,

5

Jeśli dobrze rozumiem pytanie, jednym z aspektów jest:

  • Dlaczego używasz rezystorów podciągających i tranzystorów NPN zamiast rezystorów podciągających i tranzystorów PNP?

Przede wszystkim należy zauważyć, że nie używasz tranzystorów bipolarnych (NPN, PNP), ale tranzystory MOSFET (które występują w czterech różnych wariantach).

Urządzenia korzystające z wariantu „ pull-up i NPN ” używają MOSFET -u z rozszerzeniem n-kanałowym . Ponieważ źródło tego tranzystora MOSFET jest podłączone do uziemienia, napięcie bramka-źródło (kontrolujące przepływ prądu) jest równe napięciu między bramką a masą. Tak więc MOSFET może być kontrolowany za pomocą napięcia pomiędzy 0 a Vdd.

Istnieją trzy możliwości wdrożenia wariantu „ rozwijanie i PNP ”:

  • Korzystanie z rozszerzenia M -kanałowego M-F

    Na NMOS lub CMOS IC p-kanałowe MOSFETY o porównywalnych charakterystykach (rezystancja itp.) Wymagają więcej miejsca niż MOSFETY n-kanałowe.

    W mikroelektronice przestrzeń to pieniądz, więc jeśli to możliwe, unikaj tranzystorów MOSFET.

  • Korzystanie z rozszerzenia n-kanałowego MOSFET

    Wymagałoby to, aby wyjście obwodu logicznego napędzającego tranzystor miało napięcie „LOW” napięcia zasilania (np. + 5 V) i napięcie „HIGH” powyżej napięcia zasilania (np. + 10 V, gdy reszta obwodu jest zasilana z + 5 V).

    Powód: napięcie uziemienia źródła będzie wynosić Vdd, gdy MOSFET przewodzi. Napięcie źródła bramki musi być dodatnie, aby napięcie między bramą a masą było jeszcze wyższe.

    Potrzebne byłyby dwa źródła napięcia - i obwód zmieniający moc wyjściową obwodu logicznego z 0 ... + 5 V na + 5 V ... + 10 V ...

  • Używanie MOSFET -u zubożającego n-kanał

    Niestety nie mogę wiele powiedzieć o tym rozwiązaniu. Znalazłem jednak pewną stronę za pomocą Google, która mówi, że wyczerpywanie tranzystorów MOSFET jest trudniejsze do wytworzenia niż ulepszanie tranzystorów MOSFET i dlatego też ich unika się.

    Wiem z elektroniki energetycznej (nie mikroelektroniki), że opisany powyżej wariant „dwóch zasilaczy” jest nawet lepszy niż tranzystory MOSFET zubożone. (Ale nie potrafię powiedzieć dlaczego).

    EDYCJA Używając tranzystorów MOSFET zubożających n-kanał, prawdopodobnie potrzebujesz napięcia ujemnego (np. -5 V), więc potrzebujesz również dwóch napięć zasilania ...


0

Jest jeszcze jedna dodatkowa korzyść z posiadania wspólnych linii danych i linii danych (w porównaniu do wspólnego VCC i linii rozwijanych):

Nawet jeśli pierwotnym zamiarem było łączenie urządzeń na tej samej płytce drukowanej w odległości zaledwie kilku cali, to było to wystarczająco udane, więc teraz nierzadko zdarza się, że linie mają kilka stóp i łączą „urządzenia”, które mogą być komputerami lub czymś równym złożoność, ponieważ niektóre urządzenia mają własne źródła zasilania (różnej jakości, powiedzmy, że podłączasz coś zasilanego z gniazdka ściennego z zasilaniem bateryjnym). Lepiej, jeśli połączenie działa „co najmniej dobrze”, nawet w nie idealnych i niespecyficznych warunkach.

I wiele takich podłączonych urządzeń może być w jakiś sposób połączonych także w inny sposób, niż tylko komunikacja I2C. Zwykle łącząc ze sobą urządzenia, łączysz je common ground- czasami jako część innych funkcji, czasami tylko dlatego, że jest on zamontowany na metalowej obudowie, a urządzenia są również uziemione z obudową (lub ze zwykłą chłodnicą lub coś takiego) lub może być ekranowanym kablem z uziemionym ekranem wewnątrz - który również łączy uziemienie.

Jeśli również bezpośrednio podłączysz linie elektroenergetyczne (VCC) takich urządzeń, będziesz mieć problemy, gdy te linie będą naturalnie pod innym napięciem (jasne, może powiedzieć 5 V tu i tam, ale w zależności od budowy i tolerancji częściowych źródeł zasilania to może również wynosić 4,9 V lub 5,2 V, a nawet zmieniać, jeśli jest zasilany bateryjnie i czasami pracuje z niektórymi silnikami, powodując spadek mocy i wzrost w czasie).

W takim przypadku występuje skutecznie zwarcie między źródłami zasilania części a Volt, a w zależności od źródeł (i rezystancji dróg) mogą przepływać stosunkowo wysokie prądy, powodując nie tylko marnotrawstwo energii i wzrost ciepła, ale może nawet uszkodzenie ( lub skrócenie życia) niektórych z tych źródeł. Co nie jest dobre.

Posiadanie wspólnego uziemienia i podciągania pozwala uniknąć takich problemów - uziemienie jest uziemione, a rezystory podciągające pozwalają na bardzo mały prąd krzyżowy, nawet jeśli VCC różni się znacznie między urządzeniami.


1
Jest to zasadniczo to samo, co odpowiedź Dave'a Tweeda.
Janka

-2

Nie musisz przesyłać tak dużej mocy przez układ, jeśli jest podciągnięty.

Ponieważ układ nic nie napędza, po prostu tworzy zwarcie, aby sprowadzić autobus do 0, i robi otwarcie, aby doprowadzić go do 1.

Gdyby został rozebrany, musiałbyś wysłać moc przez układ, aby poprowadzić autobus do 1. Jeśli autobus jest przypadkowo zwarty, może to być duża moc, którą przejeżdżasz przez ten układ, aby go popchnąć do 1.

Oświadczenie: Jestem w tej chwili dość kiepskim EE.


3
Witamy w EE.SE. „ Nie musisz przesyłać tak dużej mocy przez układ, jeśli jest on podciągnięty. Jeśli rezystory podciągające i podciągające mają ten sam rozmiar, wówczas prądy będą takie same. Podciąganie będzie wymagało pozyskiwania prądu z napędzanego układu scalonego i zatapiania w sterującym układzie scalonym. Rozkładanie będzie wymagało, aby prąd pochodził z układu napędowego i został zatopiony przez układ napędzany. Przypadkowe zwarcie może być do V + lub do ziemi.
Tranzystor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.