Synchrónna komunikácia I2C

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Predmet

Konfigurovateľné mikroprocesorové systémy
Tématická časť:
Sériové komunikačné zbernice

Zbernica I2C

-skratka pre zbernicu “Inter-Integrated Circuit” -protokol a zbernicu vyvinula firma Philips Semiconductor pôvodne pre svoje TV príjímače v roku 1980 za účelom komunikácie medzi IO na jednej DPS pri použití minimálneho množstva pinov -špecifikácia zbernice I2C je založená na jednoduchých hardvérových štandardoch (nie sú potrebné špeciálne konektory alebo kabeláž) a rovnako jednoduchého softvérového štandardu pre komunikačný protokol -obvody, ktoré používajú I2C protokol zahŕňajú pamäte EEPROM a RAM, senzory teploty, expandéry portov, hodiny reálneho času, atď -používa sa tiež ako riadiaca zbernica v obvodoch spracovania signálov, ktoré majú oddelenú dátovú zbernicu, napr. RF tunery, video dekódery a enkódery a audio procesory a kodeky -zbernica I2C môže pracovať pri troch prenosových rýchlostiach:

-Slow (pod 100 Kbps)
-Fast (400 Kbps)
-High-speed (3.4 Mbps) – protokol označený ako I2C v.2.0

-vzdialenosť komunikujúcich zariadení je limitovaná z dôvodu udržania komunikačnej rýchlosti na 4m približne max. kapacitancia prenosového vedenia je 400pF) -zbernica používa dva vodiče – Serial Data (SDA) a Serial Clock (SCL) -synchrónna (signál SCL), multimasterová (aj slave môže byť konfigurovaný tak, aby mohol začať komunikáciu) zbernica s polovičným duplexom -každý IO na zbernici je identifikovaný svojou adresou, ktorá je v rámci siete jedinečná, preto zbernica I2C nevyžaduje signál CS (chip select) ani ďalšiu logiku -linky SDA aj SCL sú pripojené na napájacie napätie pomocou tzv. pullup rezistorov -každé zariadenie na zbernici môže stiahnuť danú linku na nízku úroveň pomocou tranzistorov s otvoreným kolektorom

I2c Topologia zbernice.png
Topológia zbernice I2C
I2c Hardverova architektura.png
Hardvérová architektúra I2C
I2c prenos dat 1.png
I2C - prenos dát

Master: - začína a končí dátový prenos generovaním štart bitu a stop bitu - generuje hodinový signál - vysiela adresu podriadeného IO, pre ktorý budú dáta určené - určuje smer prenosu dát

Slave: - odpovedá iba v prípade, že rozpoznal svoju adresu - časovanie prenosu je riadené hodinovým signálom

Prenos bitu - počas dátového prenosu sa stav na dátovom vodiči bitu mení iba keď je hodinový signál na nízkej úrovni

I2c Prenos bitu.png
Prenos bitu

Štart bit a stop bit - začiatok alebo koniec prenosu je definovaný dátovej linky z vysokej na úroveň. Prenos prechodom nízku (štart bit) alebo z nízkej na vysokú úroveň (stop bit) kým hodinový signál je na vysokej úrovni - po štart bite považujú všetky zariadenia zbernicu za zaneprázdnenú - po príchode stop bitu čakajú zariadenia istý čas a potom považujú zbernicu za voľnú Štart bit a stop bit

I2c adresovanie.png
I2C – adresovanie

- každý uzol má jedinečnú 7 (alebo 10) bitovú adresu, 7-bitové adresy sú už všetky vyčerpané - periférne IO majú často fixnú (prideľuje komisia pre I2C) a programovateľnú (hardvérovo vyhradenými pinmi) časť svojej adresy - programovateľná časť adresy umožňuje použiť na danej zbernici viacero rovnakých IO - adresy začínajúce číslami 0000 alebo 1111 majú špeciálne funkcie - 0000000 – broadcast, adresa všeobecného volania (General Call Address) - 0000001 – adresovanie v CBUS (protokol pre automatizáciu v domácnosti a budovách) - 1111XXX – adresové rozšírenie - 1111111 – adresové rozšírenie – ďalšie bajty sú aktuálna adresa - celkovo teda môžeme pripojiť na zbernicu pri 7-bitovom adresovaní max. 119 IO

I2c prvy bajt v dytovom prenose.png
I2C – prvý bajt v dátovom prenose

- prvý bajt po štart bite určuje adresovaný IO - výnimky z pravidla: - adresa všeobecného volania (sú adresované všetky IO): 0000 000 + R/W = 0 - 10-bitové adresovanie: 1111 0XX + R/W = XXX - R/\W bit: - 0 – master bude zapisovať dáta do podriadeného IO - 1 – master bude čítať dáta z podriadeného IO - ACK bit: generuje ho adresovaný IO

I2c prenos dat 2.png
I2C – prenos dát

Postupnosť pri prenose dát: - master generuje štart bit a hodinový signál - master posiela adresu podriadeného IO + generuje bit R/\W - podriadený IO potvrdí prijatie bitom ACK - vysielacie zariadenie (master alebo slave) vyšle jeden bajt dát - prijímacie zariadenie vloží bit ACK, čím potvrdí prijatie bajtu - opakujú sa predchádzajúce dva body ak je potrebné vyslať viac bajtov - pri zápise (master vysiela), master vloží stop bit po prenesení posledného bajtu dát - pri prijímaní (master prijíma), master nepotvrdzuje posledný bajte bitom ACK, ale priamo vloží stop bit, aby oznámil podriadenému IO, že prenos bol dokončený.

Potvrdenie príjmu (Acknowledge) - vykonáva sa počas deviateho impulzu hodinového signálu a je povinný - vysielajúce zariadenie uvolní linku SDA (umožní jej „plávať“ na vysokej úrovni) - prijímajúce zariadenie stiahne linku SDA na nízku úroveň (linka SCL musí byť na vysokej úrovni) - ak nedošlo k potvrdeniu, prenos je ukončený

Natiahnutie hodín (Clock Stretching) - keď slave (prijímač) potrebuje viac času na spracovanie bitu alebo práve vykonáva iné funkcie, môže stiahnuť a podržať SCL na nízkej úrovni. Master potom čaká kým slave uvoľní linku SCL predtým bit predtým, než vyšle ďalší bit.

Existujú tri rôzne možnosti ako implementovať zbernicu I2C v systéme: - mikroradič s integrovaným radičom a rozhraním I2C - bitovo orientovaný – k prerušeniu CPU dôjde po každom prenose bitu (pr.: 87LPC76x) - bajtovo orientovaný – k prerušeniu CPU dochádza po každom prenose bajtu (pr.: 87C552) - akýkoľvek mikroradič (metóda „Bit Banging“) - protokol I2C môžeme emulovať bit po bite prostredníctvom akéhokoľvek obojsmerného portu s otvorenými kolektormi - mikroradič v súčinnosti s radičom zbernice - napr. PCF8584 alebo PCA9564 (konvertor paralelného rozhrania na I2C rozhranie)

Výhody zbernice I2C: -vhodná pre medziobvodovú komunikáciu (on-board devices), ak ku komunikácii dochádza len občas - jednoduché prepojenie viacerých zariadení z dôvodu adresovania - cena a zložitosť nerastie s počtom pripojených zariadení

Nevýhody zbernice I2C: - zložitejšie softvérové riešenie, než napr. v prípade SPI - nízke prenosové rýchlosti

Literatúra:

1. http://www.dsplab.elf.stuba.sk/mr/mr_p6.pdf str.:12-13, 25.5.2009