I²C (Inter-Integrated Circuit)
I²C, znana również jako IIC, to szeregowa, dwukierunkowa magistrala stworzona przez Philips na początku lat 80. XX wieku, używana do przesyłania danych pomiędzy urządzeniami elektronicznymi. Standard I²C określa dwie najniższe warstwy modelu OSI: warstwę fizyczną oraz warstwę łącza danych.
Historia
Standard I²C przeszedł kilka istotnych aktualizacji od swojego powstania:
- 1980: Wprowadzenie standardu z prędkością 100 kbps i 7-bitową przestrzenią adresową.
- 1992: Wersja 1.0 – dodanie trybu pracy 400 kbps (Fast Mode) oraz 10-bitowego adresowania.
- 1998: Wersja 2.0 – wprowadzenie High Speed Mode (3,4 Mbps) oraz zwiększenie tolerancji napięcia.
- 2007: Wersja 3.0 – dodanie mechanizmu identyfikacji urządzenia.
- Wersja 7 – zmiana terminologii z „master/slave” na „controller/target”.
Warstwa fizyczna
Magistrala I²C korzysta z dwóch linii: SDA (linia danych) i SCL (linia zegara). Obie linie są podciągnięte do zasilania, a transmisja opiera się na logice dodatniej. Urządzenia działają w trybie otwartego kolektora, co umożliwia detekcję kolizji. Istnieje możliwość pracy w trybie multi-master, co pozwala na współdzielenie magistrali przez wiele urządzeń.
Warstwa łącza danych
I²C przesyła dane w grupach po 8 bitów, a po każdym bajcie następuje potwierdzenie (ACK lub NACK). Adresowanie urządzeń odbywa się przy użyciu 7-bitowej przestrzeni adresowej, z możliwością zaadresowania do 128 urządzeń, z czego 112 jest dostępnych. W wersji 1.0 wprowadzono także 10-bitowe adresowanie.
Zastosowania
I²C jest idealnym rozwiązaniem w aplikacjach, gdzie prostota i niski koszt są priorytetowe, a nie prędkość transmisji. Zastosowania obejmują:
- Odczyt zegarów RTC w komputerach.
- Komunikację z przetwornikami cyfrowo-analogowymi.
- Monitorowanie czujników diagnostycznych.
- Robotykę.
- Dostęp do pamięci NVRAM.
- Sterowanie diodami LED.
- Komunikację w sprzęcie RTV.
Przykłady układów scalonych
Na rynku dostępne są liczne układy scalone z interfejsem I²C, takie jak:
- PCF8563 – zegar i kalendarz.
- PCF8574 – 8-bitowy ekspander.
- PCF8591 – przetwornik analogowo-cyfrowy.
Biblioteki i technologie pochodne
Obsługa I²C w systemach Linux jest częścią jądra. W przypadku mikrokontrolerów Atmel dostępna jest biblioteka Procyon AVRlib. Na bazie I²C opracowano także inne standardy, takie jak VESA Display Data Channel oraz ACCESS.bus.
Alternatywne nazwy
Inne nazwy odnoszące się do I²C to:
- TWI (Two Wire Interface) – używane przez Atmel.
- SCCB (Serial Camera Control) – stosowane w produktach OmniVision.