EDYCJA: Powtórzono to kilkakrotnie, więc umieszczając to na górze: Tak, dobrze wiadomo, że nie ma „standardowego” złącza między urządzeniami I2C, ale na pewno ta społeczność może sformułować listę „wskazówek” do zrobienia takie interkonekty, oparte na zachowaniu sygnału, minimalizacji szumów i ograniczeniu ryzyka z powodu niewłaściwych połączeń.
Rozumiem, że NXP zdefiniowało standard I2C bez określania pin-out dla złącz I2C. Jedyną wskazówką NXP wydaje się być wzmianka o umieszczeniu uziemienia i / lub Vss między SDA i SCL, jeśli Vss / Gnd są przenoszone przez interkonekt.
Zakupy różnych modułów I2C pozostawiły mnie z różnymi pin-outami I2C i trochę zadania polegającego na śledzeniu różnych małych podkładek przełączających kabel wstążkowy, które musiałem dla nich wykonać.
na przykład
- Moduł mono OLED: SCL, SDA, GND, 5V (oczywiście nie jest idealny, ponieważ zegar i dane są obok siebie.
- Osłona czujnika dla Arduino: SDA, SCL, GND, 5 V (znowu nie jest idealny, plus przełączane SCL / SDA)
- Kolorowy moduł LCD: SCL, GND, 5 V, SDA (Yay!)
- Repeater I2C bez nazwy: SCL, 5 V, GND, SDA (ouch, zamienili piny zasilania! Prawie wypuść magię).
Moje pytanie brzmi zatem :
czy istnieje ostateczna / autorytatywna wytyczna dotycząca sekwencji wyprowadzeń 4-stykowego złącza I2C, w której Vss i GND mają być przenoszone z hosta na urządzenie?
Jeśli to się nie powiedzie, czy istnieje jakikolwiek niekompletny katalog modułów / urządzeń I2C z listą wyprowadzeń, które każdy z nich przyjął?
Wyjaśnienie: Poszukiwanie wytycznych, takich jak „zbliż Vss do SCL, ponieważ ...” zamiast określonego standardu, który najwyraźniej nie istnieje.
źródło
Odpowiedzi:
Niedawno zwinąłem własne, jeśli chodzi o złącza I2C. Samo złącze nie jest bardzo ważne, teraz używam tylko głowicy o wysokości 100 mil (zwykle żeńskiej na pokładzie, więc nie jest tak kłopotliwy, gdy nie jest podłączony), ale wystarczy dowolne złącze pin 4plus. Dodatkowo używam P82B715z TI jako przedłużacz magistrali I2C. To pozwala przezwyciężyć problemy z pojemnością związane z uruchamianiem długich I2C, które, jak ludzie mówią, na początku nie były przeznaczone do I2C. Próbowałem wielu różnych kombinacji, jak w podanych przez ciebie przykładach i nie zauważyłem absolutnie żadnej różnicy w wydajności. Uważam, że dzieje się tak, ponieważ I2C jest stosunkowo wolny, zakłócenia między SDA i SCL nie stanowią większego problemu. Zasadniczo czas narastania napięć (gdy pojawią się zakłócenia) w magistrali są znacznie mniejsze niż długość bitu. To może nie być to, co chcesz usłyszeć, ale daje więcej opcji. Osobiście poszedłem z [VCC, SDA, GND, SCL], aby łatwo kierować do / z tego układu, a także być odpornym na mieszanie VCC / GND po podłączeniu do tyłu.
źródło
Gdy został ustanowiony po raz pierwszy, magistrala I2C (obwód zintegrowany) była przeznaczona wyłącznie do łączenia układów scalonych na jednym zestawie PCB. Nigdy nie był przeznaczony do stosowania na kablach do łączenia wielu płyt razem, dlatego też nie zdefiniowano w tym celu żadnych złączy.
Jedyne znane mi „standardowe” interfejsy zewnętrzne oparte na I2C to krótkotrwały ACCESS.bus do podłączania urządzeń interfejsu użytkownika do komputerów oraz kanał danych wyświetlania VESA służący do pobierania informacji o monitorze przez złącza VGA, DVI i HDMI.
źródło
Brak standardowego wyprowadzenia, brak standardowego złącza. Standard I2C nie jest naprawdę podatny na tego typu rzeczy. Jest określony na poziomie magistrali, a nie na poziomie urządzenia. Na przykład, jeśli chcesz podłączyć urządzenie I2C, czy wiesz standardowo, czy podciągnięcia są na hoście, czy na urządzeniu? Nie. Mnóstwo innych rzeczy, których nie znasz, np. Gdzie są twoje pojemności kabli, czym Vcc musi być ...
W rzeczywistości istnieją nawet urządzenia I2C, które potrzebują dodatkowych linii do przerwań i innych zwykłych cyfrowych wejść / wyjść. Jak dodać je do standardu, jeśli nie możesz uzyskać zgody na liczbę pinów, których potrzebujesz.
Podsumowując, jeśli szukasz przenośności i stabilności w swoich interkonektach, I2C i SPI nie są tam, gdzie musisz szukać.
źródło
Wiele osób używa pewnego rodzaju złącza do przesyłania sygnałów I²C i zasilania między dwiema płytkami drukowanymi. Na przykład,
Kilka ogólnych wskazówek dotyczących przenoszenia sygnałów I²C na większe odległości:
ps: Widzę, że Wikipedia: połączenie międzysystemowe I²C ma związek z tym pytaniem.
źródło
Chociaż nie ma standardu wyprowadzania I²C ani standardu złącza, istnieje wiele miejsc, w których I²C jest używany, które są znormalizowane. Niektóre, które przychodzą na myśl, to moduły pamięci (DIMM, SO-DIMM), złącza wideo ( DDC w DVI , VGA ) i SM-Bus (tak, ich strona wygląda jak coś zrobionego w połowie lat 90.). W szczególności złącze SM-bus ma klucz i zawiera tylko I²C i zasilanie, ale SM-Bus nakłada dodatkowe ograniczenia, więc technicznie nie każde urządzenie I²C powinno być podłączone do rzeczywistej SM-Bus. W okolicy jest też kilka innych zastrzeżonych wtyczek, takich jak czujniki Lego NXT.
źródło
Nie ma standardu.
Nie ma powszechnej praktyki.
Jeśli chodzi o kwestie związane z podejmowaniem decyzji, co robić:
źródło
Jak zwykle w przypadku każdego postu z pytaniem, dlaczego coś jest [nt] standaryzowane:
Z XKCD
źródło