I 2 C (oznacza: Inter-Integrated Circuit w języku angielskim) to autobus komputerowy, który wyłonił się z „wojny standardów” rozpoczętej przez graczy w świecie elektronicznym. Zaprojektowany przez firmę Philips do zastosowań w automatyce domowej i elektronice domowej , z łatwością łączy mikroprocesor i różne obwody, w tym nowoczesnego telewizora : odbiornik zdalnego sterowania, ustawienia wzmacniacza niskotonowego, tunera , zegara, sterowanie gniazdem Scart itp.
Istnieje niezliczona ilość urządzeń peryferyjnych korzystających z tej magistrali, można ją nawet zaimplementować programowo w dowolnym mikrokontrolerze . Waga przemysłu elektroniki użytkowej pozwoliła na bardzo niskie ceny dzięki masowej produkcji.
Ta magistrala jest czasami nazywana TWI (Two Wire Interface) lub TWSI (Two Wire Serial Interface) u niektórych producentów.
Standard I 2 C (Inter-Integrated Circuit) został opracowany przez firmę Philips w 1982 roku. Od tego czasu jest utrzymywany przez NXP (dawniej oddział firmy Philips zajmujący się półprzewodnikami).
Wersja 1.0 została wydana w 1992, wersja 2.0 w 1998, wersja 2.1 w 2000, wersja 3.0 w 2007, wersja 4 w luty 2012, wersja 5 in październik 2012i 6 th wersjakwiecień 2014.
I 2 C jest dwukierunkową synchroniczną magistralą szeregową typu half-duplex , do której można podłączyć kilka urządzeń, master lub slave.
Wymiana zawsze ma miejsce między jednym masterem a jednym (lub wszystkimi) niewolnikami, zawsze z inicjatywy mistrza (nigdy z pana na pana lub od niewolnika na niewolnika). Jednak nic nie stoi na przeszkodzie, aby komponent przechodził ze statusu nadrzędnego do podrzędnego i odwrotnie.
Połączenie realizowane jest dwoma liniami:
Nie wolno nam również zapominać o masie, która musi być wspólna dla sprzętu.
2 linie są doprowadzone do poziomu napięcia V DD poprzez rezystory podciągające ( RP ).
Maksymalna liczba urządzeń jest ograniczona ilością dostępnych adresów, 7 bitów adresowania i jednym bitem R/W (odczyt lub zapis), czyli 128 urządzeń, ale zależy to również od pojemności (C B ) magistrali. od której zależy maksymalna prędkość magistrali). Należy zwrócić uwagę, że adresy są zarezerwowane dla komunikatów rozgłoszeniowych, a wiele adresów jest już przydzielanych przez producentów, co znacznie ogranicza liczbę urządzeń (wariant adresowania jest również 10-bitowy).
W „trybie ultraszybkim” (UFm) magistrala jest jednokierunkowa, więc może być tylko jeden master. Dwie linie zostały przemianowane na USCL (linia zegara) i USDA (linia danych), a po stronie głównej są zawsze typu wyjściowego i typu push-pull . Ten tryb ma ograniczone zastosowanie: możliwe są tylko zapisy, ponieważ w tym trybie przewód danych (SDA) nie jest dwukierunkowy.
Aby bit został odczytany, poziom („WYSOKI” lub „NISKI”) linii SDA musi być utrzymywany na stałym poziomie podczas poziomu „WYSOKI” na linii SCL.
Urządzenia podłączone do magistrali są połączone wyjściami typu otwarty dren (lub otwarty kolektor ) na dwóch liniach SDA i SCL.
Urządzenia są więc okablowane na magistrali zgodnie z zasadą „wired AND”, co oznacza, że w przypadku jednoczesnej transmisji z dwóch urządzeń wartość 0 nadpisuje wartość 1.
Więc mówimy:
Gdy magistrala nie jest używana, jest na wysokim poziomie (poprzez rezystory podciągające R P ).
Poziomy stosowane między liniami magistrali są proporcjonalne do V DD :
Państwo | Poziom |
---|---|
Dominujący lub „0” lub „NISKI” | od -0,5 V do 0,3x V DD |
Recesywny lub „1” lub „WYSOKI” | od 0,7x V DD do V DD |
W niektórych starych obwodach stosowane poziomy można ustalić i podać za pomocą wzorów podanych dla wartości V DD = 5 V.
Istnieje pięć prędkości transmisji:
Ponieważ magistrala jest synchroniczna, master narzuca zegar za pośrednictwem linii SCL, istnieją minimalne czasy, których należy przestrzegać dla etapów poziomów „LOW” i „HIGH” na tej linii:
Moda | t NISKI min | t WYSOKA min |
---|---|---|
Standard | 4,7 μs | 4 μs |
Szybko | 1,3 μs | 0,6 μs |
Szybki plus | 0,5 μs | 0,26 μs |
Dla dwóch wyższych prędkości czasy zależą od pojemności autobusu (C B ).
Te czasy i wartości napięcia zależy od pojemności magistrali (C, B ) i wartość rezystorami (R P ).
Trudno jest zmienić wartość pojemności magistrali, ale można wybrać wartość rezystorów podciągających.
R PminMinimalna wartość rezystorów podciągających jest ograniczona prądem wyjść SDA i SCL (I OL ) w stanie LOW (V OL ):
Moda | V OLMAX | ja stary | R Pmin dla V DD = 5V |
---|---|---|---|
Standard | 0,4 V | 3 mA | 1534 Ω |
Szybko | 0,6 V | 6 mA | 733 Ω |
Szybki plus | 0,4 V | 20 mA | 230Ω |
Dla dwóch wyższych prędkości nie podano wartości I OL .
R PmaxMaksymalna wartość RP jest ograniczona przez czas narastania i opadania.
Zmienność sygnału dana jest wzorem:
Lub dla zmiany od LOW = 0,3x V DD do HIGH = 0,7x V DD (wybrane jako odniesienie):
z tr , czas narastania sygnałów SDA i SCL.
Moda | t r | C B | R Pmax |
---|---|---|---|
Standard | 1 μs | 400 pF | 2950 Ω |
Szybko | 300 ns | 400 pF | 885 Ω |
Szybki plus | 120 ns | 550 pF | 257 Ω |
Wiadomość można podzielić na dwie części:
Warunek START jest naruszeniem zasady kodowania bitów, która jest używana przez mastera do oznaczenia początku ramki.
Stan ten charakteryzuje się przejściem linii SDA z poziomu „WYSOKI” do poziomu „NISKI” przy utrzymaniu linii „SCL” na poziomie „WYSOKI”.
Bajt adresowaniaKażdy slave musi mieć unikalny adres.
7-bitowe adresowanieBajt adresujący można podzielić na dwie części:
Możemy również wziąć pod uwagę, że adres jest zakodowany na 8 bitach, każdy slave ma wtedy dwa adresy, parzysty adres, który jest używany do wysyłania do niego danych, adres nieparzysty, aby prosić go o przesłanie danych.
Kilka adresów jest zarezerwowanych:
W przypadku adresowania 10-bitowego należy użyć dwóch bajtów.
Pierwszy to bajt „11110yz0” (jak określono powyżej), bity „yz” to 2 najbardziej znaczące bity adresu, bit R / W jest zawsze ustawiony na 0.
Drugi bajt jest używany dla 8 najmniej znaczących bitów adresu, nie ma bitu R/W.
Po przesłaniu pierwszego bajtu kilka urządzeń podrzędnych spośród tych z 10-bitowym adresem może odpowiedzieć ACK (tych z tymi samymi 2 najbardziej znaczącymi bitami). To nie ma znaczenia, na koniec 2 -go bajtu, tylko niewolnikiem, do którego mamy skierowana będzie reagował.
Bit R / W jest zawsze ustawiony na 0, aby poprosić slave'a o zapis, po przesłaniu 2 poprzedzających bajtów, konieczne jest zwrócenie warunku RESTART, po którym następuje bajt "11110yz1" (z bitem R / W na 1), aby slave wiedział, że jest to polecenie odczytu.
UniewinnienieOdbiornik ustawia bit potwierdzenia na:
Jeśli odbiornik nie jest w stanie odebrać bajtu, nie ustawi bitu potwierdzenia i będzie to de facto NACK.
Gdy urządzenie nadrzędne jest odbiornikiem, ustawia również bit potwierdzenia na NACK, aby przerwać dialog przed wysłaniem warunku STOP.
Pauza (rozciąganie zegara)W każdej chwili urządzenie podrzędne może „zablokować” linię SCL na poziomie „NISKIM”, aby zasygnalizować, że jest zajęta.
Gdy master zapewnia „WYSOKI” poziom na linii SCL, wykrywa nadpisanie. Master musi nadal podawać poziom „WYSOKI” na linii.
Gdy urządzenie podrzędne jest ponownie gotowe, zwalnia linię SCL, a ta ostatnia natychmiast osiąga poziom „WYSOKI”, cykl jest wznawiany.
Warunek RESTARTWarunek RESTART jest naruszeniem zasady kodowania bitów, która jest używana przez mastera do oznaczania początku nowej ramki od końca poprzedniej bez przechodzenia przez warunek STOP.
Warunek RESTART jest podobny do warunku START, z tym wyjątkiem, że linia SCL musi najpierw przejść z poziomu „LOW” do poziomu „HIGH”.
Warunek STOPWarunek STOP jest naruszeniem zasady kodowania bitów, która jest używana przez mastera do oznaczania końca ramki.
Stan ten charakteryzuje się przejściem linii SDA z poziomu „NISKI” na poziom „WYSOKI” przy zachowaniu linii SCL na poziomie „WYSOKI”.
Synchronizacja odbywa się na zasadzie „przewodowego AND” na linii SCL:
Mastery mogą mieć różne czasy podtrzymania „HIGH” i „LOW” niż inne mastery, jednak należy rozpocząć liczenie tego czasu tylko wtedy, gdy linia SCL jest na pożądanym poziomie.
Oznacza to, że jeśli master przechodzi z „NISKIEGO” do „WYSOKIEGO” i chce narzucić poziom „WYSOKI” na 5 ms, będzie mógł uruchomić tę konserwację tylko na 5 ms, gdy linia SCL będzie w stanie „WYSOKI” , lub gdy wszystkie suwaki są w stanie „HIGH”, więc czas podtrzymania może być dłuższy.
Mechanizm ten implikuje, że czas utrzymania linii SCL:
Mistrzowie muszą przestrzegać kilku zasad:
Moda | Czas trwania przed „bezpłatnym autobusem” |
---|---|
Standard | 4,7 μs |
Szybko | 1,3 μs |
Szybki plus | 0,5 μs |
Wysoka prędkość | (każdy) |
Ultra szybki | (każdy) |
Trzy wnioski :
I 2 C to podstawa:
Te układy mają różnice w napięciach i częstotliwościach zegara i mogą mieć linie przerwań (IRQ).