Dająca się zauważyć w ostatnich latach tendencja do zwiększania skali integracji obwodów elektronicznych spowodowała konieczność zwiększania liczby połączeń między modułami i podzespołami. Pociągnęło to za sobą wzrost ryzyka wadliwego funkcjonowania sprzętu elektronicznego oraz utrudnienia przy jego konserwacji czy naprawie.
Magistrala I2C (Inter-IC Communication) powstała jako alternatywa - umożliwia komunikowanie się układów za pomocą tylko dwóch linii. Ten rodzaj (szeregowej) transmisji zapewnia relatywnie wolną wymianę danych nie umożliwiającą, powiedzmy, budowania rozszerzeń pamięci RAM komputerów ale całkowicie wystarczającą do np. konstruowania portów wejścia/wyjścia (I/O) czy zegarów czasu rzeczywistego (RTC).
Opisywany interfejs magistrali I2C wraz z oprogramowaniem ułatwi komputerom Amiga komunikowanie się z układami zgodnymi z I2C w zewnętrznych projektach.
Magistrala I2C jest oparta na trzech sygnałach:
W każdej konfiguracji musi istnieć przynajmniej jeden nadzorca (układ inicjujący transmisję danych oraz generujący główny takt zegarowy) oraz jeden lub więcej odbiorników.
Nadzorcą może być np. mikroprocesor 8048, 8051 czy 68000 dostępne w specjalnych wersjach z wbudowanymi interfejsami magistrali I2C. Dwa porty I/O mikroprocesora są wykorzystywane jako linie SDA i SCL. Razem z masą tworzą magistralę zapewniającą łączność między urządzeniami z wydajnością rzędu 100kbit na sekundę (około 12kB/sek). Linie SDA i SCL są typu otwarty dren lub otwarty kolektor i muszą być podłączone przez tzw. rezystory podciągające do dodatniego bieguna zasilania by utworzyć strukturę magistrali umożliwiającą podłączanie wielu nadajników i odbiorników równolegle.
Do magistrali może być podłączona praktycznie nieskończona liczba układów z czego jedynie 127 może być bezpośrednio adresowne.
Definicje terminów/zwrotów używanych w kontekście magistrali I2C
W przypadku gdy magistrala jest wolna, nadzorca może zająć ją generując warunek startu.
Pierwszy bajt transmitowany po warunku startu musi zawierać 7-bitowy adres oraz 1-bitowy kierunek transmisji (odczyt/zapis). Jeżeli adresowany układ został odnaleziony (jest podłączony do magistrali) odpowiada impulsem ACK, po którym wymiana danych może już przebiegać swobodnie. Jeżeli bit R/W = 0 (bit R/W jest wyczyszczony) wtedy nadzorca wysyła dane do odbiornika dopóki generuje on impulsy ACK lub dopóki wszystkie dane nie zostaną przesłane. Jeżeli R/W = 1 (bit R/W jest ustawiony) to nadzorca generuje impulsy zegarowe podczas których odbiornik może wysyłać dane do zarządcy. Po każdym odebranym bajcie, nadzorca (który na dobrą sprawę jest wtedy odbiornikiem) generuje impulsy ACK. Trwa to dotąd aż nadzorca przestanie wysyłać impulsy ACK.
Nadzorca może zwolnić magistralę generując warunek zatrzymania. Jeśli zachodzi potrzeba dalszej transmisji danych to nadzorca może ponownie wygenerować warunek startu zaraz po warunku zatrzymania. Takie nowe zainicjowane połączenia nazywa się powtarzanym warunkiem startu i może być użyte do zaadresowania innego układu lub zmiany kierunku transmisji.
Interfejs magistrali I2C można bardzo łatwo wykonać dla każdego komputera mającego przynajmniej jeden port użytkownika. Nie znaczy to oczywiście, że może go każdy wykonać. Główną przeszkodą jest oczywiście umiejętność posługiwania się lutownicą i jako takie pojęcie o elektronice.
Poniżej znajduje się interfejs wykorzystujący złącze równoległe komputera Amiga.
UWAGA! Korzystanie z opcji drukowania (ogólnie: korzystanie ze złącza równoległego) w momencie gdy podłączony jest interfejs może doprowadzić do uszkodzenia komputera.
Obsługą magistrali zajmuje się zewnętrzna biblioteka i2c.library w której zawarte są procedury odczytu i zapisu danych. Opis procedur a także i w/w biblioteka znajduje się w archiwum I2Clib38.lha (amintet, katalog hard/hack).
O tym jak popularna stała się magistrala I2C w ciągu ostatnich lat może świadczyć fakt, że znajduje się ona, między innymi, w każdym telewizorze wyposażonym w teletekst (układ scalony odpowiedzialny za dekodowanie sygnału telegazety pracuje w oparciu o magistralę I2C). Zatem w zasadzie nic nie stoi na przeszkodzie by "dobrać się" do telewizora, wyselekcjonować sygnały i zdekodować je by otrzymać telegazetę na ekranie komputera…
Philips oraz inni producenci podzespołów elektronicznych produkują wiele układów kompatybilnych z I2C np. pamięci RAM, EEPROM, mikrokontrolery, porty I/O, nadajniki podczerwieni, przetworniki ADC/DAC itp. Jest więc w czym wybierać a układy te nie są specjalnie drogie ponieważ znajdują się od lat w masowej produkcji.
Artykuł powstał na postawie 'I2C interface for PCs' J. Ruffel (Elektor Electronics FEB '92) oraz materiałów autorstwa Bran Ipsena z archiwum I2Clib38.lha