I2C - magistrala obwodów zintegrowanych
Magistrala I2C jest bardzo często używana w systemach wbudowanych. Wyjaśniamy, jak ona działa i jak ją skonfigurować na przykładzie Raspberry Pi.
Charakterystyka I2C
Magistrala Inter-Integrated Circuit Bus to synchroniczna szeregowa magistrala komunikacyjna. Za jej wynalezienie w 1982 roku odpowiedzialna była firma Philips Semiconductors, ale interfejs szybko zyskał popularność.
Powszechnie używane synonimy to I2C, I2C lub IIC. Interfejs wykorzystuje architekturę Controller-Target i umożliwia kontrolerowi komunikację z maksymalnie 112 urządzeniami za pomocą tylko dwóch przewodów.
Sterownik może dostosować szybkość transmisji do potrzeb konkretnego celu. Dlatego I2C jest kompatybilny z wieloma urządzeniami, takimi jak czujniki, pamięci EEPROM, zegary, sterowniki silników i wiele innych.
Okablowanie
Podłączenie magistrali I2C nie może być prostsze, ponieważ potrzebne są tylko dwa przewody. Podłącz pin zegara szeregowego (SCL) kontrolera do pinów zegara szeregowego urządzeń docelowych i podłącz również ich piny danych szeregowych (SDA). Oprogramowanie I2C zajmie się resztą.
Jeśli potrzebujesz dostarczyć zasilanie do urządzenia I2C, możesz użyć pinów 3V3, 5V i GROUND w Raspberry Pi.
Niektóre urządzenia, takie jak nasze BME688 Breakout Board są wyposażone w złącze I2C, dzięki czemu do ich połączenia nie są potrzebne żadne przewody.
Komunikacja I2C
Za pomocą magistrali Inter-Intergrated Circuit Bus można połączyć 128 urządzeń za pomocą zaledwie dwóch przewodów. Jest to możliwe dzięki pomysłowej zasadzie komunikacji.
Przewody (SDA i SCL) nigdy nie są aktywnie pobudzane do stanu wysokiego. Jeśli urządzenie chce wysłać logiczną jedynkę, pozostawia przewód w stanie spoczynku. Aby wysłać logiczne zero, podciąga przewód do masy.
Kontroler inicjuje komunikację. Każde urządzenie w sieci może pełnić rolę kontrolera i celu.
Na poniższej ilustracji przedstawiono poszczególne bity.
Aby rozpocząć komunikację, kontroler wysyła bit Start, po którym następuje adres I2C urządzenia docelowego i żądany tryb pracy (R - odczyt lub W - zapis).
W komunikacji I2C urządzenie docelowe musi zwracać bit ACK co 8 bitów (po każdym bajcie). Ponieważ przestrzeń adresowa jest zwykle 7-bitowa, istnieje 128 (od 0 do 127) adresów. 16 z nich jest zarezerwowanych. Pozostaje więc 112 możliwych adresów dla urządzeń.
Adres celu i tryb pracy to jeden bajt, więc cel musi odesłać bit ACK. Następnie kontroler wysyła (8-bitowy) adres rejestru, który cel ponownie potwierdza. Od tego momentu komunikacja w trybie odczytu i zapisu różni się.
W przypadku zapisu kontroler wysyła dane w 8-bitowych blokach. Cel potwierdza każdy blok. Gdy kontroler zakończy zapis, wysyła bit Stop.
Przy odczycie kontroler ponownie wysyła bit Start, a następnie adres docelowy. Cel potwierdza i zaczyna wysyłać dane w 8-bitowych blokach. Tym razem kontroler musi potwierdzić każdy bajt. Aby przerwać odczyt, kontroler wysyła bit NACK, a na koniec bit Stop.
Zalety, wady i zastosowania
Zalety
Zalety magistrali I2C są dość oczywiste. Do połączenia 128 urządzeń wystarczą dwa przewody i dwa styki. To naprawdę duża moc. Dodatkowo masz do dyspozycji elastyczne prędkości. Konfiguracja sprzętu nie może być prostsza. W przeciwieństwie do SPI kontroler wie, czy urządzenie docelowe poprawnie odebrało dane.
Wady
Magistrala Inter-Integrate Circuit Bus wymaga więcej miejsca i energii, ponieważ wykorzystuje rezystory podciągające. Jest wolniejsza w porównaniu z SPI. Można napotkać problemy, jeśli dwa urządzenia używają tego samego adresu I2C. Adres jest zapisywany bezpośrednio na urządzeniu. Niektóre urządzenia umożliwiają wybór jednego z dwóch możliwych adresów przez przylutowanie zworki w określonym miejscu na urządzeniu.
Aplikacje
Jeśli wyszukasz Czujnik W naszym sklepie można zauważyć, że prawie wszystkie czujniki, które nie są analogowe, używają interfejsu I2C. Jest on bardzo powszechny w urządzeniach wbudowanych. Istnieją takie rzeczy jak pamięć I2C. Często mikrokontrolery używają tej magistrali do komunikacji. Poza tym wiele przetworników cyfrowo-analogowych (Digital Analog Cprzetwornik) i przetworniki analogowo-cyfrowe (Analog Digital Cfalownik) są kompatybilne z interfejsem.
I2C na Raspberry Pi
Nasza strona wideo pokazuje, jak skonfigurować magistralę Inter-Integrated Circuit na Raspberry Pi.
[...] Ponadto, jeśli chcesz dowiedzieć się więcej o I2C, sprawdź ten artykuł. [...]
[...] Chcesz dowiedzieć się więcej o I2C? Sprawdź nasz artykuł na ten temat tutaj. [...]
[...] I2C - The Inter-Integrated Circuit Bus [...]
[...] I2C - Inter-Integrated Circuit Bus [...]
[...] I2C - The Inter-Integrated Circuit Bus [...]
[...] Jak wyjaśnia Naveen, połączenie między Nano a wyświetlaczem TFT opiera się na szeregowym interfejsie peryferyjnym (SPI). Tymczasem joystick i przyciski są połączone za pośrednictwem magistrali Inter-Integrated Circuit Bus (I2C). [...]