GNU/Linux >> Znalost Linux >  >> Linux

Co je I2C (Inter-Integrated-Circuit)?

Cílové publikum

Tento článek předpokládá, že čtenář zná základní elektronické obvody a terminologii.

Úvod

Účelem tohoto článku je seznámit čtenáře se základy komunikační sběrnice I2C, včetně toho, jak je nastavena, její fyzikální vlastnosti a kde a proč se často používá.


.

I2C

I2C se běžně vyslovuje „I-dva-C“, i když se také někdy píše jako IIC (a vyslovuje se „I-I-C“) nebo IC (vyslovuje se „I-squared-C“). Zkratka znamená Inter-Integrated-Circuit. Jedná se o typ sériové počítačové sběrnice a komunikačního protokolu, který byl poprvé uveden na trh společností Philips Semiconductor v roce 1982.

I2C je způsob umožňující vzájemnou komunikaci více elektronických zařízení (nejčastěji nízkorychlostních periferních integrovaných obvodů) prostřednictvím jednoho páru vodičů. Tyto vodiče se také nazývají datové linky nebo sběrnice. První z těchto sběrnic je datová linka a nazývá se SDA (S číslo DA ta) a druhou sběrnicí jsou hodiny neboli SCL (S číslo CL ock) řádek. Vzhledem k tomu, že všechna zařízení v libovolném obvodu I2C jsou připojena k těmto dvěma linkám, aby komunikovala, má většina zařízení kompatibilních s I2C kolíky označené SDA a SCL a také kolíky VIN a GND pro kladné a zemní spojení.
.

Typické schéma I2C / licencováno pod CC BY-SA 3.0

.
Jak hodinová, tak datová sběrnice jsou linky typu open-drain. Aby sběrnice správně fungovala, musí být mezi každou linku a zdroj kladného napětí obvodu (také označovaný jako Vcc) připojen odpor. Velikost těchto rezistorů se může lišit, od 1 kΩ až po 47 kΩ, ale musí být přítomny mezi sběrnicí a vysokým napětím systému. Pokud nejsou přítomny, všechny linky budou sníženy a sběrnice I2C přestane fungovat. Naštěstí je pro celý systém nutný pouze jeden pár rezistorů (jeden pro každou linku), nikoli pár pro každé zařízení – to by se u mnoha zařízení mohlo rychle zamotat.

K těmto sběrnicím lze připojit poměrně mnoho zařízení (nazývaných také uzly). Ve skutečnosti je počet zařízení, která lze prakticky připojit k jakémukoli obvodu I2C, normálně omezen pouze prostorem, vlastní kapacitou linek a adresami připojených zařízení. Většina odborníků se shoduje, že tento limit se pohybuje kolem 1008 zařízení.

V komunikaci I2C existují dva druhy zařízení:master a slave. Ve většině implementací protokolu je jedno hlavní zařízení připojeno k mnoha podřízeným zařízením. Je možné mít více než jeden master komunikující s různými slave zařízeními i s jinými mastery, ale tato forma je méně obvyklá a trochu přesahuje rámec tohoto úvodu. Mnoho I2C zařízení může být nakonfigurováno buď jako master nebo slave, v závislosti na požadovaných výsledcích systému. Hlavní uzel je jediné zařízení, které řídí linku hodin (SCL) a je jediným zařízením, které může zahájit přenos dat. Podřízené uzly jsou omezeny na naslouchání a odpovídání na volání z hlavního uzlu. Každý uzel, včetně hlavního, má jedinečnou (obvykle 7bitovou) adresu, která jej identifikuje v síti I2C. V některých případech může být adresa dlouhá 10 bitů, což umožňuje více než 128 různých zařízení, ale toto není normální nastavení.

Během provozu I2C systému posílá master uzel příkazy a požadavky na datové lince. Tyto signály mají délku 8 bitů, spouštějí se pouze tehdy, když je hodinový řádek VYSOKÝ a začínají konkrétní „start“ sekvencí a končí konkrétní „stop“ sekvencí. Spouštěcí sekvence upozorní všechny připojené podřízené uzly, že se blíží požadavek na přenos dat. Další sekvence, kterou master odešle, je adresa podřízeného zařízení, se kterým chce komunikovat. Pojmenovaný podřízený uzel poté odpoví nadřízenému, počínaje dalším signálem VYSOKÉHO hodinového signálu, a ostatní podřízené jednotky poslouchají, aby byla volána jejich adresa.

Osmý bit, který je odeslán s příkazem po 7bitové adrese zařízení, je jednoduchý bit pro čtení/zápis. Sděluje adresovanému zařízení, zda z něj bude hlavní zařízení číst nebo do něj zapisovat. To umožňuje přijímajícímu zařízení buď připravit data k odeslání, nebo připravit se na příjem dat po lince SDA při příštím signálu HIGH.

Rychlost hodin (a související přenosy signálu) na většině obvodů I2C normálně spadá někde mezi sériovou komunikaci a rychlost SPI, mezi 100 kHz a 400 kHz. I2C se běžně používá v systémech, kde je důležitější jednoduchost, nízká cena a nízký výkon než rychlost. Některé z těchto aplikací zahrnují analogově-digitální převodníky, LCD displeje, hodiny reálného času a mnoho různých senzorů, jako jsou barometry, kompasy a dokonce i přijímače GPS.

I2C je velmi užitečný komunikační protokol, i když může být použitelný pouze pro malý počet aplikací. Je ideální pro malá nastavení s nízkou spotřebou energie, a proto si našel následovníky mezi mnoha nadšenci, kteří jej používají k propojení senzorů a ovládacích prvků s vestavěnými zařízeními a mikrokontroléry, jako jsou Arduino a Raspberry Pi. Dva z pinů GPIO Pi jsou přednastaveny pro rozhraní se zařízeními používajícími protokol a drátová knihovna Arduino umožňuje komunikaci se zařízeními I2C. Učení se a používání I2C může výrazně rozšířit sadu nástrojů pro nadšence, pokud jde o stavební projekty.

Atlantic.Net

Atlantic.net nabízí hosting VPS a také spravované hostingové služby, které zahrnují vrstvu základních spravovaných služeb pro vaše hostingové balíčky. Kontaktujte nás ještě dnes pro více informací.


Linux
  1. Co je uživatel Linuxu?

  2. Co je to sysadmin?

  3. Co dělá „lc_all=c“?

  1. Co dělá ?

  2. Co dělá Echo $? Dělat??

  3. Linuxové pásky, co je la a m na konci páskových zařízení ve vývoji?

  1. Co je ioremap()

  2. Co je :-!! v C kódu?

  3. Co je Options +FollowSymLinks?