Opracowany przez firmę Philips w latach 80., I2C (alternatywnie pisany I2C) stał się jednym z najczęściej używanych protokołów komunikacji szeregowej w elektronice. I2C ułatwia komunikację między komponentami elektronicznymi lub układami scalonymi, niezależnie od tego, czy komponenty znajdują się na tej samej płytce drukowanej, czy są połączone kablem.
Co to jest protokół I2C?
I2C to protokół komunikacji szeregowej, który wymaga tylko dwóch linii sygnałowych. Został zaprojektowany do komunikacji między układami scalonymi na płytce drukowanej (PCB). I2C został pierwotnie zaprojektowany do komunikacji 100 Kbps. Jednak na przestrzeni lat opracowano szybsze tryby transmisji danych, aby osiągnąć prędkości do 3.4 Mbit.
Kluczową cechą I2C jest możliwość posiadania wielu komponentów na jednej magistrali komunikacyjnej za pomocą tylko dwóch przewodów, co czyni I2C idealnym do prostych aplikacji. Protokół I2C został ustanowiony jako oficjalny standard, pozwalający na wsteczną kompatybilność między implementacjami I2C.
Sygnały I2C
Protokół I2C wykorzystuje dwie dwukierunkowe linie sygnałowe do komunikacji z urządzeniami na magistrali komunikacyjnej. Dwa używane sygnały to:
- Szeregowa linia danych (SDL)
- Szeregowy zegar danych (SDC)
Powodem, dla którego I2C może używać tylko dwóch sygnałów do komunikacji z kilkoma urządzeniami peryferyjnymi, jest sposób obsługi komunikacji wzdłuż magistrali. Każda komunikacja I2C zaczyna się od 7-bitowego (lub 10-bitowego) adresu, który wywołuje adres urządzenia peryferyjnego.
Dzięki temu wiele urządzeń na magistrali I2C może pełnić rolę urządzenia podstawowego, zgodnie z potrzebami systemu. Aby zapobiec kolizjom komunikacyjnym, protokół I2C zawiera możliwości arbitrażu i wykrywania kolizji, które umożliwiają płynną komunikację wzdłuż magistrali.
Korzyści z I2C
Jako protokół komunikacyjny, I2C ma następujące zalety:
- Elastyczne szybkości transmisji danych.
- Dłuższa komunikacja na odległość niż SPI.
- Każde urządzenie w magistrali jest niezależnie adresowalne.
- Urządzenia mają prostą relację główny/dodatkowy.
- Wymaga tylko dwóch linii sygnałowych.
- Może obsługiwać wiele podstawowych komunikatów komunikacyjnych, zapewniając arbitraż i wykrywanie kolizji komunikacyjnych.
Ograniczenia I2C
Ze wszystkimi tymi zaletami, I2C ma również kilka ograniczeń, które mogą wymagać zaprojektowania. Najważniejsze ograniczenia I2C to:
- Ponieważ tylko 7-bitowe (lub 10-bitowe) jest dostępne do adresowania urządzeń, urządzenia na tej samej magistrali mogą współdzielić ten sam adres. Niektóre urządzenia mogą skonfigurować kilka ostatnich bitów adresu, ale narzuca to ograniczenie urządzeń na tej samej magistrali.
- Dostępnych jest tylko kilka ograniczonych prędkości komunikacji, a wiele urządzeń nie obsługuje transmisji przy wyższych prędkościach. Wymagana jest częściowa obsługa każdej prędkości w magistrali, aby zapobiec przechwyceniu przez wolniejsze urządzenia częściowych transmisji, które mogą powodować usterki w działaniu.
- Wspólny charakter magistrali I2C może spowodować zawieszenie całej magistrali, gdy pojedyncze urządzenie w magistrali przestanie działać. Włączenie i wyłączenie zasilania magistrali może przywrócić prawidłowe działanie.
- Ponieważ urządzenia ustawiają własną prędkość komunikacji, wolniej działające urządzenia mogą opóźnić działanie szybszych urządzeń.
- I2C pobiera więcej energii niż inne magistrale komunikacji szeregowej ze względu na topologię linii komunikacyjnych z otwartym drenem.
- Ograniczenia magistrali I2C zazwyczaj ograniczają liczbę urządzeń na magistrali do kilkunastu.
Aplikacje I2C
I2C to świetna opcja dla aplikacji, które wymagają niskich kosztów i prostej implementacji, a nie dużej szybkości. Na przykład powszechne zastosowania protokołu komunikacyjnego I2C obejmują:
- Odczytywanie niektórych układów pamięci.
- Dostęp do przetworników DAC i ADC.
- Przesyłanie i kontrolowanie działań kierowanych przez użytkownika.
- Odczytywanie czujników sprzętowych.
- Komunikacja z wieloma mikrokontrolerami.