Niniejsza, siódma część cyklu stanowi wprowadzenie do popularnego i prostego w użyciu interfejsu I²C. Przedstawimy użyteczny przykład praktyczny w postaci radia FM opartego na Arduino Nano, wykorzystującego I²C do sterowania zarówno modułem radiowym jak i wyświetlaczem OLED.
Współczesne mikrokontrolery i komputery jednopłytkowe dysponują bardzo wygodnym sposobem łączenia się z urządzeniami zewnętrznymi poprzez uniwersalny dwuprzewodowy interfejs, obsługiwany przez szeroką gamę układów scalonych.
System ten, znany jako „IIC”, „I2C” lub „I²C”, pozwala na łatwe połączenie mikrokontrolera z różnymi układami – portami wejścia/wyjścia, czujnikami temperatury, ciśnienia i wilgotności, magnetometrami, zegarami czasu rzeczywistego, czujnikami ruchu oraz sterownikami wyświetlaczy. I²C znajduje się również w szeregu innych interesujących układów – na przykład w radioodbiorniku FM opisanym w tym artykule.
I²C to bardzo prosty system magistrali, w którym na jednej linii (SDA) są dwukierunkowo przesyłane dane szeregowe, a na drugiej linii (SCL) jest podawany sygnał zegarowy. System wymaga więc tylko dwóch przewodów – plus oczywiście masy.
Aby nie dochodziło do konfliktów, każde urządzenie podłączone do magistrali I²C jest programowo adresowane przy użyciu unikatowego adresu. Zaletą przyjęcia tych minimalistycznych wymagań jest to, że system oparty na I²C można bardzo łatwo modyfikować i rozszerzać bez konieczności wprowadzania większych zmian sprzętowych.
Pomysłodawcą standardu I²C była firma Philips, ale produkty kompatybilne z I²C opracowało też kilku jej wiodących konkurentów (w tym Motorola/Freescale, NEC, Siemens, STM i Texas Instruments). Powstał również standard SMBus firmy Intel – wersja I²C o precyzyjniej zdefiniowanych parametrach, dzięki czemu wzrasta wymienność układów pochodzących od różnych producentów.
Rysunek 7.1 przedstawia typowy układ I²C – moduł zegara czasu rzeczywistego (RTC) zasilany bateryjnie. Interfejs I²C sprawia, że bardzo łatwo jest dołączyć ten moduł do większości systemów mikroprocesorowych i mikrokontrolerów. W celu uproszczenia połączeń złącza magistrali I²C są zdublowane i zostały rozmieszczone na przeciwległych krańcach płytki modułu.