Sběrnice I2C – co to je a k čemu slouží

Čas čtení: 3 min.

Sběrnice I2C je jedním z nejoblíbenějších standardů pro lokální sériovou komunikaci v digitálních zařízeních. Naučte se základy a praktické použití I2C!

Dnešní elektronická zařízení používají více standardů přenosu dat mezi jednotlivými zařízeními, moduly a dokonce i jednotlivými integrovanými obvody – a to i v rámci jedné desky tištěného spoje. Vzhledem k malému počtu linek potřebných k vytvoření spojení jsou dnes zdaleka nejoblíbenější sériové sběrnice. V mnoha aplikacích úspěšně nahrazují mnohem rozsáhlejší paralelní spoje. Mezi nejběžnější standardy v elektronice patří I2C, SPI a I2S – dnes se podíváme na první z nich, který je rozšířen zejména ve světě digitálních senzorů a integrovaných periferních obvodů.

Konstrukce sběrnice I2C - problematika

Co se týče technické stránky je konstrukce spojení I2C velmi jednoduchá. K přenosu dat se používají pouze dva vodiče (obvykle ve formě kolejí na desce plošných spojů nebo krátkého kabelu o délce maximálně několika metrů), ke kterým lze přímo připojit nejméně dvě zařízení.

Tato konstrukce znamená, že obě linky jsou sdílené mezi obvody, a proto může v daném okamžiku fungovat jako vysílač pouze jedna z nich, zatímco druhá (nebo všechny ostatní) může fungovat jako přijímač. Linie označená SCL slouží k přenosu hodinového signálu, který určuje “rytmus”, v jakém jsou přenášeny po sobě jdoucí bity adres, dat a potvrzení příjmu, zatímco SDA je zodpovědná za přenos příslušných informací mezi spolupracujícími obvody.

Důležité je, že na straně každého čipu musí vývody, které komunikují s liniemi SDA a SCL, pracovat v režimu označovaném jako open-collector (OC) nebo open-drain (OD).

Princip činnosti tohoto typu výstupu je nekomplikovaný – sepnutím výstupního tranzistoru, umístěného ve struktuře integrovaného obvodu (např. mikrokontroléru nebo senzoru), dojde ke zkratu dané linie (např. SDA) na zem obvodu, a tím na ní vynutí logický nízký stav (L).

Vypnutí tranzistoru vede k vysokému stavu (H), což je způsobeno externími pull-up rezistory, které by měly být pro sběrnici I2C obvykle v řádu 4,7 kΩ.

PCF8574 - 8bitový expandér pinů I2C.

Způsob přenosu dat a adres

Začátek přenosu na sběrnici I2C je určen signálem START – nejde o nic jiného než o klesající hranu na lince SDA, zatímco linka SCL je ve vysokém stavu. Jakmile je tato podmínka splněna, může již začít přenos dat – stav linie SDA se přitom může změnit pouze tehdy, když je na vodiči SCL nízký stav, zatímco čtení (vzorkování) SDA přijímačem probíhá při kladným impulsu (stav H) na hodinové linií.

Důležité je, že bity jsou přenášeny v pořadí od nejvýznamnějšího, tj. nejstaršího (MSB), po nejméně významný (nejmladší – LSB). První přenášený bajt ve většině případů obsahuje 7bitovou adresu slave (tzv. otrok) a bit směru přenosu (R/W) – ten nabývá logickou hodnotu 1, když má master číst po sobě jdoucí bajty z podřízeného zařízení a 0, když zapisuje data z masteru do podřízeného zařízení.

Pro pořádek je třeba dodat, že od aktualizace specifikace standardu I2C v roce 1992 může být adresování 10bitové, v takovém případě první byte obsahuje 5 bitů 11110, dva nejstarší bity adresy a směrový bit R/W, přičemž zbývajících 8 bitů adresy přechází do dalšího bytu. Toto řešení bylo zavedeno za účelem rozšíření dostupného adresního prostoru z původních 128 možností (což odpovídá číslu 27) na 1024 adres (tj. 210). Důležité je, že po každém plném bajtu vysílá master další impuls na linku SCK, čímž podřízenému zařízení umožní potvrdit přijetí rámce (vydáním logické nuly na linku SDA). Po přenesení všech dat v určitém paketu může master ukončit přenos vysláním signálu STOP (vzestupná hrana na linií SDA, zatímco SCL je ve vysokém stavu).

Rychlost přenosu

Důležitou otázkou u linií I2C je přenosová rychlost. Nejstarší verze standardu předpokládala rychlost 100 kb/s – dodnes se používá v mnoha zařízeních díky větší odolnosti proti šumu a nižším hardwarovým nárokům ve srovnání s rychlejšími sběrnicemi I2C.

Aktualizovaná verze 1.0 (1992) umožňovala čtyřikrát vyšší rychlost (400 kb/s – Fast režim) a o šest let později se objevila specifikace 2.0, která umožňovala přenosovou rychlost až 3,4 Mb/s.

Aby však byla zajištěna dostatečná strmost hran na hodinových a datových liniích, je nutné udržet kapacitu sběrnice relativně nízkou – nejdůležitější jsou kapacity mezi signálovými cestami a zemí na desce plošných spojů (nebo mezi vodiči a stíněním kabelu, pokud se uvažují obvody mimo stejnou desku PCB).

Je to proto, že spolu s odporem rezistorů, které vytahují kapacitu přenosového vedení, tvoří poměrně účinný RC filtr – jeho “přetížení” v případě příliš velké výsledné kapacity nemusí být možné v čase potřebném pro provoz při dané přenosové rychlosti. Z tohoto důvodu se doporučuje minimalizovat kapacitu na sběrnici I2C, zejména při delších spojeních nebo při spolupráci více obvodů na stejné komunikační sběrnici.

Jak hodnotíte tento článek na blogu?

Klikněte na hvězdičku a ohodnoťte!

Průměrné hodnocení 4.5 / 5. Počet hlasů 2

Zatím nejsou žádné hlasy! Buďte první, kdo ohodnotí tento článek.

Sdílet:

Picture of Mateusz Mróz

Mateusz Mróz

Snílek, milovník cestování a technologických inovací. Své nápady s Raspberry Pi a Arduinem by rád proměnil ve skutečnost. Je tvrdohlavý samouk - o pomoc požádá, až když mu dojdou pozice ve vyhledávačích. Věří, že se správným přístupem lze dosáhnout jakéhokoli cíle.

Viz více:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Z důvodu bezpečnosti je nutné používat službu reCAPTCHA společnosti Google, která podléhá zásadám ochrany osobních údajů a podmínkám používání společnosti Google. S těmito podmínkami souhlasím..