I 2 C ( v angličtině znamená Inter-Integrated Circuit ) je počítačová sběrnice, která vznikla z „války standardů“ zahájené hráči v elektronickém světě. Navržený společností Philips pro domácí automatizaci a aplikace domácí elektroniky, snadno připojuje mikroprocesor a různé obvody, včetně obvodů moderního televizního přijímače : přijímač dálkového ovládání, nastavení nízkofrekvenčního zesilovače, tuner , hodiny, ovládání zásuvky scart atd.
Tuto sběrnici využívá bezpočet periferií, lze ji dokonce implementovat softwarem v libovolném mikrokontroléru . Váha průmyslu spotřební elektroniky umožnila velmi nízké ceny hromadnou výrobou.
Tato sběrnice se u některých výrobců někdy nazývá TWI (dvouvodičové rozhraní) nebo TWSI (dvouvodičové sériové rozhraní).
Standard I 2 C (Inter-Integrated Circuit) byl vyvinut společností Philips v roce 1982. Od té doby jej udržuje společnost NXP (dříve polovodičová divize společnosti Philips).
Verze 1.0 byla vydána v roce 1992, verze 2.0 v roce 1998, verze 2.1 v roce 2000, verze 3.0 v roce 2007, verze 4 v února 2012, verze 5 v října 2012a 6 th verzedubna 2014.
I 2 C je poloduplexní obousměrná synchronní sériová sběrnice , kde lze ke sběrnici připojit několik zařízení, masters nebo slave.
Výměny vždy probíhají mezi jedním pánem a jedním (nebo všemi) otroky, vždy z iniciativy pána (nikdy od pána k pánovi nebo od otroka k otrokovi). Nic však nebrání tomu, aby komponenta přešla ze stavu master do slave a naopak.
Připojení se provádí dvěma linkami:
Nesmíme také zapomenout na hmotu, která musí být společná vybavení.
Dvě čáry jsou vytaženy na úroveň napětí V DD pomocí vytahovacích rezistorů (R P ).
Maximální počet zařízení je omezen počtem dostupných adres, 7 adresovacích bitů a jedním bitem R / W (čtení nebo zápis), tj. 128 zařízení, ale také to závisí na kapacitě (C B ) sběrnice. (Na na kterém závisí maximální rychlost sběrnice). Upozorňujeme, že adresy jsou vyhrazeny pro hromadné zprávy ve vysílání a mnoho adres je již přiděleno výrobci, což značně omezuje počet zařízení (varianta adresování je také 10bitová).
V „ultrarychlém režimu“ (UFm) je sběrnice jednosměrná, takže může být pouze jeden hlavní. 2 řádky jsou přejmenovány na USCL (hodinová čára) a USDA (datová čára) a na hlavní straně jsou vždy výstupní a push-pull . Tento režim má omezené použití: možné jsou pouze zápisy, protože v tomto režimu není datový vodič (SDA) obousměrný.
Úroveň („VYSOKÁ“ nebo „NÍZKÁ“) linky SDA musí být udržována stabilní během úrovně „VYSOKÁ“ na lince SCL, aby byl bit čitelný.
Zařízení připojená ke sběrnici jsou spojena výstupy typu otevřený odtok (nebo otevřený kolektor ) na dvou linkách SDA a SCL.
Zařízení jsou proto připojena na sběrnici pomocí principu „kabelové AND“, což znamená, že v případě současného přenosu ze dvou zařízení přepíše hodnota 0 hodnotu 1.
Říkáme tedy:
Pokud se sběrnice nepoužívá, je na vysoké úrovni (prostřednictvím pull-up rezistorů R P ).
Úrovně použité mezi linkami sběrnice jsou úměrné V DD :
Stát | Úroveň |
---|---|
Dominantní nebo „0“ nebo „NÍZKÝ“ | od -0,5 V do 0,3x V DD |
Recesivní nebo „1“ nebo „VYSOKÝ“ | od 0,7x V DD do V DD |
Na některých starých obvodech mohou být použité úrovně pevné a dány vzorci danými pro hodnotu V DD = 5 V.
Existuje pět přenosových rychlostí:
Vzhledem k tomu, že sběrnice je synchronní, ukládá master hodiny přes linku SCL, je nutné dodržet minimální časy pro stupně „LOW“ a „HIGH“ na této lince:
Móda | t LOWmin | t VYSOKÁ min |
---|---|---|
Standard | 4,7 μs | 4 μs |
Rychle | 1,3 μs | 0,6 μs |
Rychlé plus | 0,5 μs | 0,26 μs |
U dvou vyšších rychlostí časy závisí na kapacitě sběrnice (C B ).
Tyto časy a úrovně napětí závisí na kapacitě sběrnice (C B ) a hodnoty pull-up rezistory (R P ).
Je těžké upravit hodnotu kapacity sběrnice, ale můžete zvolit hodnotu pull-up rezistorů.
R PminMinimální hodnota pull-up rezistorů je omezena proudem výstupů SDA a SCL (I OL ), když jsou ve stavu LOW (V OL ):
Móda | V OLmax | I OL | R Pmin pro V DD = 5V |
---|---|---|---|
Standard | 0,4 V | 3 mA | 1534 Ω |
Rychle | 0,6 V | 6 mA | 733 Ω |
Rychlé plus | 0,4 V | 20 mA | 230 Ω |
U dvou vyšších rychlostí nejsou uvedeny hodnoty I OL .
R PmaxMaximální hodnota R P je omezena dobami náběhu a doběhu.
Variace signálu je dána vzorcem:
Nebo pro variantu od LOW = 0,3x V DD do HIGH = 0,7x V DD (zvoleno jako reference):
t r , doba náběhu signálů SDA a SCL.
Móda | t r | C B | R Pmax |
---|---|---|---|
Standard | 1 μs | 400 pF | 2950 Ω |
Rychle | 300 ns | 400 pF | 885 Ω |
Rychlé plus | 120 ns | 550 pF | 257 Ω |
Zprávu lze rozdělit na dvě části:
Podmínkou START je porušení pravidla kódování bitů, které používá hlavní server k označení začátku rámce.
Tento stav je charakterizován přechodem linie SDA z úrovně „VYSOKÁ“ na úroveň „NÍZKÁ“, zatímco linka „SCL“ je udržována na úrovni „VYSOKÁ“.
Adresování bajtůKaždý otrok musí mít jedinečnou adresu.
7bitové adresováníAdresovací bajt lze rozdělit na dvě části:
Můžeme také vzít v úvahu, že adresa je kódována na 8 bitech, každý slave pak má dvě adresy, sudá adresa, která se používá k odesílání dat na ni, lichá adresa, která ji požádá o odeslání dat.
Je vyhrazeno několik adres:
V případě 10bitového adresování je nutné použít dva bajty.
První je bajt „11110yz0“ (jak je uvedeno výše), bity „yz“ jsou 2 nejvýznamnější bity adresy, bit R / W je vždy nastaven na 0.
Druhý bajt se používá pro 8 nejméně významných bitů adresy, není tam žádný R / W bit.
Po přenosu prvního bajtu může několik slave mezi těmi s 10bitovou adresou reagovat pomocí ACK (ti se stejnými 2 nejvýznamnějšími bity). Nezáleží na tom, na konci 2 nd bajtu, pouze s otroky, na kterou jsme oslovili bude reagovat.
Bit R / W je vždy nastaven na 0, aby bylo možné požádat slave o zápis, po přenosu 2 předchozích bytů je nutné vrátit podmínku RESTART následovanou bajtem „11110yz1“ (s bitem R / W na 1), aby otrok věděl, že se jedná o příkaz pro čtení.
OsvobozeníPřijímač nastaví potvrzovací bit na:
Pokud přijímač nedokáže přijmout bajt, nenastaví potvrzovací bit a bude to de facto NACK.
Když je hlavní přijímač, nastaví také potvrzovací bit na NACK, aby přerušil dialog, před odesláním podmínky STOP.
Pauza (natahování hodin)Slave může kdykoli „zablokovat“ linku SCL na úrovni „LOW“, aby signalizoval, že je zaneprázdněn.
Když master poskytuje úroveň „HIGH“ na lince SCL, detekuje přepsání. Master musí nadále dodávat na linku úroveň „VYSOKÁ“.
Když je slave znovu připraven, uvolní linku SCL a ta okamžitě přejde na úroveň „VYSOKÁ“, cyklus pokračuje.
Podmínka RESTARTPodmínkou RESTART je porušení pravidla kódování bitů, které používá master k označení začátku nového rámce od konce předchozího rámce, aniž by prošlo podmínkou STOP.
Podmínka RESTART je podobná podmínce START, až na to, že linka SCL musí nejdříve přejít z úrovně „LOW“ na úroveň „HIGH“.
Stav STOPPodmínkou STOP je porušení pravidla kódování bitů, které používá hlavní pro označení konce rámce.
Tento stav je charakterizován průchodem linie SDA z úrovně „LOW“ na úroveň „HIGH“, zatímco linie SCL je udržována na úrovni „HIGH“.
Synchronizace se provádí pomocí principu „kabelové AND“ na lince SCL:
Mastery mohou mít jiné doby zdržení „VYSOKÉ“ a „NÍZKÉ“ než ostatní mastery, ale měli by začít počítat tento čas, pouze když je linie SCL na požadované úrovni.
To znamená, že pokud master přejde z „NÍZKÉ“ na „VYSOKÉ“ a chce uložit úroveň „VYSOKÉ“ na 5 ms, bude moci zahájit tuto údržbu pouze na 5 ms, když je linka SCL na „VYSOKÉ“ , nebo když jsou všichni pánové na „VYSOKÉ“, může být trvání blokování delší.
Tento mechanismus naznačuje, že doba údržby linky SCL:
Mistři musí dodržovat několik pravidel:
Móda | Doba před „autobusem zdarma“ |
---|---|
Standard | 4,7 μs |
Rychle | 1,3 μs |
Rychlé plus | 0,5 μs |
Vysoká rychlost | (žádný) |
Ultra rychlý | (žádný) |
Tři závěry :
I 2 C je základ:
Tato rozvržení mají rozdíly v napětích a taktovacích frekvencích a mohou mít přerušovací linky (IRQ).