I²C

seriová komunikační sběrnice From Wikipedia, the free encyclopedia

I²C
Remove ads

I²C (anglicky Inter-Integrated Circuit, čteme I-squared-C, nesprávně I-two-C) je multi-masterová počítačová sériová sběrnice vyvinutá firmou Philips, která je používána k připojování nízkorychlostních periferií k základní desce, vestavěnému systému nebo mobilnímu telefonu. Její hlavní výhoda je užití jen dvou vodičů pro přenos dat: SCL (hodiny) a SDA (data).

Thumb
Jednoduchá schéma s jedním řídícim (mikrokontrolér) a třemi řízenými zařízeními (ADC, DAC a jiný mikrokontroler) s pull-up rezistory Rp

Prakticky identická sběrnice se skrývá i pod zkratkou TWI (Two Wire Interface – dvoudrátové rozhraní), kterou používá firma Atmel a další výrobci namísto chráněné značky I2C. Z I2C je také odvozena sběrnice SMB.

Remove ads

Charakteristika

Sběrnice rozděluje připojená zařízení na řídicí (master – zahajuje a ukončuje komunikaci; generuje hodinový signál SCL) a řízené (slave – zařízení adresované masterem). Podle stavu k 1. říjnu 2006 nejsou vyžadovány žádné licenční poplatky pro implementaci, avšak zpoplatněné je přidělování adres pro slave zařízení.[1]

Sběrnice I²C se hojně používá v různých zařízeních včetně IBM PC kompatibilních počítačů:

Remove ads

Fyzická vrstva

Umožňuje připojení více zařízení pouze dvěma obousměrnými vodiči. Na vodič SCL (Synchronous Clock) vysílá controller hodinový signál, změnu logické úrovně H/L ve stanovené frekvenci, který řídí komunikaci po datovém kanálu SDA (Synchronous Data). Při SCL ve stavu H dochází na SDA k zahajování a ukončování komunikace a čtení dat, když je SCL ve stavu L, dochází na SDA k zápisu dat a potvrzování příjmu.

Z elektrického hlediska jsou oba kanály zapojeny jako otevřený kolektor. Maximální délka vodičů je dána jejich nejvyšší přípustnou kapacitou 400 pF. Každý vodič musí být připojen jedním pull-up rezistorem ke kladnému napětí, což zajistí vysokou úroveň v klidovém stavu. Při probíhajícím přenosu jsou na SDA vysílány jednotlivé datové bity přičemž platí pravidlo, že logická úroveň na SDA se smí měnit pouze je-li SCL v úrovni L. Změna ve stavu H je vyhrazena pro vysílání podmínek START a STOP, které se používají k zahájení komunikace a k ukončení přenosu.

Maximální frekvence signálu SCL je podle verze I2C 100 kHz nebo 400 kHz. Pro obě frekvence je dána minimální povolená doba setrvání SCL v úrovni L a H. Při komunikaci i při přenosu dat si jednotlivé stanice synchronizují generátory hodin tak, že trvání úrovně H na SCL je odměřováno vnitřním časovačem každé stanice až od okamžiku, kdy SCL skutečně úrovně H dosáhne (protože je SCL typu otevřený kolektor, může být v úrovni L držen i v situaci kdy se daná stanice snaží nastavit úroveň H). Podobně je doba trvání úrovně L na SCL odměřována od sestupné hrany. Tento mechanismus umožňuje některé ze stanic zpomalit přenos: pomalá stanice může podržet po určitou dobu signál SCL v úrovni L a tím zabránit vysílající stanici ve vyslání dalšího bitu. Sběrnice I2C neumožňuje duplexní přenos, v jednom okamžiku vysílá jen jedno zařízení. Všechna zařízení připojená na sběrnici musí mít individuální adresu o délce 7 (v rozšířené verzi 10 bitů) a implementovaný mechanizmus komunikace pomocí I²C sběrnice.

Časový diagram

Thumb
Sekvence přenosu dat

Přenos dat se zahajuje START bitem (S), tj. sestupnou hranou na signálu SDA když je SCL nahoře (zvýrazněno oranžově). Poté následuje sestupná hrana SCL, následně se do SDA nastaví přenášený bit. Během přenosu smí vysílač měnit hodnotu SDA když je SCL dole (zvýrazněno modře). Hodnotu SDA lze z linky přečíst, když je SCL nahoře (zvýrazněno zeleně). Kvůli zpoždění linky bývá úroveň SDA měněna na sestupné hraně SCL a vzorkována na vzestupné hraně SCL. Když je přenos dokončen, uvolní vysílač linku vysláním STOP bitu (P). Stop bit je realizován vzestupnou hranou SDA když je SCL nahoře (zvýrazněno oranžově).

Thumb
Remove ads

Linková vrstva

Komunikace prochází následujícími kroky:

  • podmínka START (S) – obě linky H a SDA přejde na L (controller)
  • 7bitová adresa příjemce, která umožňuje adresovat až 128 zařízení (controller)
  • bit R/W (čtení/zápis), který nastavuje směr komunikace (controler)
  • bit ACK; controller nastaví SDA na H a adresovaná přijímací stanice potvrdí (acknowledgement) příjem bitem ACK – přepnutím SDA na L
  • 8 bitů dat, tedy 1 bajtu (vysílající strana dle bitu R/W)
  • bit ACK (příjemce)
  • (opakování, každých 8 bitů potvrzuje příjemce ACK)
  • (podmínka RESTART – znovuzahájení komunikace, opakování „START“ – controller)
  • (PAUSE – stanice si může změnou SCL na L vyžádat pozastavení přenosu)
  • NACK (stav H) ze strany controlleru znamená žádost o ukončení
  • podmínka STOP (P) – SCL je H, SDA přechod L>H

Řízení komunikace

Pro řízení komunikace se na I2C používá metoda s detekcí kolize. Controller může zahájit vysílání, je-li předtím sběrnice v klidovém stavu. Během vysílání musí neustále porovnávat vysílané bity se skutečným stavem SDA. Je-li zjištěn rozdíl mezi očekávaným a skutečným stavem linky SDA, je to indikace kolize mezi několika stanicemi. Vzhledem k charakteru sběrnice (otevřené kolektory) může k této situaci dojít, pokud určitá stanice vysílá úroveň H, zatímco jiná stanice vysílá úroveň L. Stanice, která na lince zjistí úroveň L zatímco sama vysílá H musí vysílání okamžitě ukončit . K řízení komunikace většinou dochází během vyslání několika prvních bitů, kdy je vysílána adresa přijímací stanice. Pokud by se např. dvě stanice současně pokusily o zápis do stejného obvodu, nastane kolize až při přenosu vlastních zapisovaných dat. V krajním případě, kdy několik stanic současně zapisuje stejná data na stejnou adresu, nemusí být kolize vůbec detekována.

Adresování

Každá stanice připojená na I2C má přidělenou 7bitovou adresu. Po zachycení podmínky START, porovnávají všechny obvody svou adresu s adresou, která je vysílána na sběrnici. Zjistí-li některý z obvodů shodu, je vysílání určeno právě jemu a musí přijetí adresy potvrdit bitem ACK. Potom přijímá nebo vysílá další data. Několik adres je na I2C vyhrazeno pro speciální účely. Například adresa 0000000 je určena pro vysílání broadcast, adresy 0000011, 00001XX a 11111XX jsou rezervovány pro další účely.

Remove ads

Reference

Externí odkazy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads