Skip to main content

Czym jest protokół I2C?

VII Sesja Rady Dzielnicy Wola m.st. Warszawy. (Kwiecień 2025)

VII Sesja Rady Dzielnicy Wola m.st. Warszawy. (Kwiecień 2025)
Anonim

Opracowany przez firmę Philips w latach 80. XX wieku, I2C stał się jednym z najpopularniejszych protokołów komunikacji szeregowej w elektronice. I2C umożliwia komunikację między komponentami elektronicznymi lub IC do IC, bez względu na to, czy komponenty są na tej samej płytce drukowanej, czy podłączone za pomocą kabla. Kluczową cechą I2C jest możliwość posiadania ogromnej liczby komponentów na jednej magistrali komunikacyjnej z tylko dwoma przewodami, co czyni I2C idealnym do zastosowań wymagających prostoty i niskiego kosztu nad prędkością.

Protokół I2C

I2C jest protokołem komunikacji szeregowej, który wymaga tylko dwóch linii sygnałowych. Został zaprojektowany do komunikacji pomiędzy układami scalonymi na płytce drukowanej. I2C został pierwotnie zaprojektowany do komunikacji 100kbps, ale szybsze tryby transmisji danych zostały opracowane na przestrzeni lat, aby osiągnąć prędkość do 3,4Mbit. Protokół I2C został ustanowiony jako oficjalny standard, który zapewnia dobrą zgodność pomiędzy implementacjami I2C i dobrą kompatybilnością wsteczną.

Sygnały I2C

Protokół I2C wykorzystuje tylko dwie dwukierunkowe linie sygnałowe do komunikacji ze wszystkimi urządzeniami na magistrali I2C. Dwa używane sygnały to:

  • Szeregowa linia danych (SDL)
  • Szeregowy zegar danych (SDC)

Powodem, dla którego I2C może wykorzystywać tylko dwa sygnały do ​​komunikowania się z wieloma urządzeniami peryferyjnymi, jest sposób, w jaki komunikacja z magistralą jest obsługiwana. Każda komunikacja I2C rozpoczyna się od 7-bitowego (lub 10-bitowego) adresu, który wywołuje adres urządzenia peryferyjnego, a pozostała część komunikacji ma na celu odbieranie komunikacji. Dzięki temu wiele urządzeń na magistrali I2C może pełnić rolę urządzenia nadrzędnego, zgodnie z potrzebami systemu. Aby zapobiec kolizjom komunikacyjnym, protokół I2C obejmuje funkcje arbitrażu i wykrywania kolizji, które umożliwiają płynną komunikację wzdłuż magistrali.

Zalety i ograniczenia

Jako protokół komunikacyjny, I2C ma wiele zalet, które sprawiają, że jest dobrym wyborem dla wielu wbudowanych aplikacji do projektowania. I2C ma następujące zalety:

  • I2C wymaga tylko dwóch linii sygnałowych
  • Elastyczne szybkości transmisji danych
  • Każde urządzenie w magistrali jest niezależnie adresowalne
  • Urządzenia mają prostą relację Master / Slave
  • I2C jest w stanie obsługiwać wiele komunikatów nadrzędnych, zapewniając arbitraż i wykrywanie kolizji komunikacyjnych
  • Komunikacja na odległość większa niż SPI

Przy tych wszystkich zaletach I2C ma również kilka ograniczeń, które mogą wymagać zaprojektowania. Najważniejsze ograniczenia I2C to:

  • Ponieważ tylko 7-bitowe (lub 10-bitowe) są dostępne dla adresowania urządzeń, urządzenia na tej samej magistrali mogą współdzielić ten sam adres. Niektóre urządzenia mogą konfigurować kilka ostatnich bitów adresu, ale to jeszcze nakłada 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. Wymagane jest częściowe wsparcie dla każdej prędkości na magistrali, aby uniemożliwić częściowym transmisjom wolniejsze urządzenia, które spowodują usterki operacyjne.
  • Wspólny charakter magistrali I2C może spowodować zawieszenie się całego autobusu, gdy jedno urządzenie w autobusie przestanie działać. Włączenie zasilania magistrali może zostać wykorzystane do ponownego uruchomienia magistrali i przywrócenia prawidłowego działania.
  • Ponieważ urządzenia mogą ustawiać szybkość komunikacji, wolniejsze urządzenia operacyjne mogą opóźniać działanie urządzeń o większej prędkości.
  • I2C pobiera więcej mocy niż inne magistrale komunikacji szeregowej ze względu na topologię otwartego spustu linii komunikacyjnych.
  • Ograniczenia magistrali I2C zazwyczaj ograniczają liczbę urządzeń w magistrali do kilkunastu urządzeń.

Aplikacje

Magistrala I2C to doskonała opcja dla aplikacji, które wymagają niskich kosztów i prostej implementacji, a nie dużej prędkości. Na przykład czytanie niektórych układów pamięci, uzyskiwanie dostępu do przetworników DAC i ADC, odczytywanie czujników, przesyłanie i kontrolowanie działań skierowanych przez użytkownika, odczytywanie czujników sprzętowych i komunikowanie się z wieloma mikrokontrolerami to powszechne zastosowania protokołu komunikacyjnego I2C.