Komunikačné rozhranie I2C: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „{{MCU_ARM_Obsah}} Inter-Integrated Circuit alebo I²C je dvojžilová obojsmerná zbernica vyvinutá firmou Philips začiatkom 90-tych rokov 20. storočia, používaná…“)
 
Riadok 3: Riadok 3:
 
Inter-Integrated Circuit alebo I²C je dvojžilová obojsmerná zbernica vyvinutá firmou Philips začiatkom 90-tych rokov 20. storočia, používaná predovšetkým na prepojenie periférnych zariadení s mikrokontrolérom. Na zbernicu sú pripojené zariadenia rozdelené na riadiace (Master - zahajuje a ukončuje komunikáciu; generuje hodinový signál SCL) a riadené (Slave - zariadenie adresované Masterom) <ref name="upythonUcebnica">Gabriel Gašpar a Juraj Ďuďák. Využitie mikrokontrolérov v automatizovanom riadení. Spektrum, 2023. ISBN: 978-80-227-5283-1.</ref> na Obr. 1
 
Inter-Integrated Circuit alebo I²C je dvojžilová obojsmerná zbernica vyvinutá firmou Philips začiatkom 90-tych rokov 20. storočia, používaná predovšetkým na prepojenie periférnych zariadení s mikrokontrolérom. Na zbernicu sú pripojené zariadenia rozdelené na riadiace (Master - zahajuje a ukončuje komunikáciu; generuje hodinový signál SCL) a riadené (Slave - zariadenie adresované Masterom) <ref name="upythonUcebnica">Gabriel Gašpar a Juraj Ďuďák. Využitie mikrokontrolérov v automatizovanom riadení. Spektrum, 2023. ISBN: 978-80-227-5283-1.</ref> na Obr. 1
  
[[Súbor:Mcu_i2c_1_pripojenie.png|náhľad|Onr. 1. Pripojenie zaradení na zbernicu]]
+
[[Súbor:Mcu_i2c_1_pripojenie.png|Onr. 1. Pripojenie zaradení na zbernicu]]
  
 
I2C umožňuje prepojenie až 128 rôznych zariadení s pomocou iba dvoch obojsmerných vodičov. Jeden tvoria hodinový signál SCL (Synchronous Clock) a druhý dátový kanál SDA (Synchronous Data). Maximálna dĺžka vodičov je daná ich najvyššou povolenou kapacitou 400 pF, všeobecne sa uvádza cca 10cm. Každý vodič musí byť pripojený jedným pull-up rezistorom ku kladnému napätiu, čo zaistí vysokú úroveň v pokojovom stave. Pri prebiehajúcom prenose sú na SDA vysielané jednotlivé dátové bity pričom platí pravidlo, že logická úroveň na SDA sa môže nastaviť len ak je SCL v úrovni L. Toto pravidlo je porušené v dvoch špeciálnych prípadoch, a to pri vysielaní podmienok START a STOP, ktoré sa používajú na začatie komunikácie a k ukončeniu prenosu.
 
I2C umožňuje prepojenie až 128 rôznych zariadení s pomocou iba dvoch obojsmerných vodičov. Jeden tvoria hodinový signál SCL (Synchronous Clock) a druhý dátový kanál SDA (Synchronous Data). Maximálna dĺžka vodičov je daná ich najvyššou povolenou kapacitou 400 pF, všeobecne sa uvádza cca 10cm. Každý vodič musí byť pripojený jedným pull-up rezistorom ku kladnému napätiu, čo zaistí vysokú úroveň v pokojovom stave. Pri prebiehajúcom prenose sú na SDA vysielané jednotlivé dátové bity pričom platí pravidlo, že logická úroveň na SDA sa môže nastaviť len ak je SCL v úrovni L. Toto pravidlo je porušené v dvoch špeciálnych prípadoch, a to pri vysielaní podmienok START a STOP, ktoré sa používajú na začatie komunikácie a k ukončeniu prenosu.

Verzia zo dňa a času 22:21, 21. marec 2023

Architektúra ARM mikrokotnrolérov

ARM - vstupno/výstupné piny

Komunikačné rozhranie UART

Komunikačné rozhranie I2C

>I2C - základné použitie pre STM32
>I2C - komunikácia s teplomerom LM75

Komunikačné rozhranie SPI

Inter-Integrated Circuit alebo I²C je dvojžilová obojsmerná zbernica vyvinutá firmou Philips začiatkom 90-tych rokov 20. storočia, používaná predovšetkým na prepojenie periférnych zariadení s mikrokontrolérom. Na zbernicu sú pripojené zariadenia rozdelené na riadiace (Master - zahajuje a ukončuje komunikáciu; generuje hodinový signál SCL) a riadené (Slave - zariadenie adresované Masterom) [1] na Obr. 1

Onr. 1. Pripojenie zaradení na zbernicu

I2C umožňuje prepojenie až 128 rôznych zariadení s pomocou iba dvoch obojsmerných vodičov. Jeden tvoria hodinový signál SCL (Synchronous Clock) a druhý dátový kanál SDA (Synchronous Data). Maximálna dĺžka vodičov je daná ich najvyššou povolenou kapacitou 400 pF, všeobecne sa uvádza cca 10cm. Každý vodič musí byť pripojený jedným pull-up rezistorom ku kladnému napätiu, čo zaistí vysokú úroveň v pokojovom stave. Pri prebiehajúcom prenose sú na SDA vysielané jednotlivé dátové bity pričom platí pravidlo, že logická úroveň na SDA sa môže nastaviť len ak je SCL v úrovni L. Toto pravidlo je porušené v dvoch špeciálnych prípadoch, a to pri vysielaní podmienok START a STOP, ktoré sa používajú na začatie komunikácie a k ukončeniu prenosu. Maximálna frekvencia signálu SCL je podľa verzie I2C 100 kHz alebo 400 kHz. Pre obe frekvencie je daná minimálna povolená doba zotrvania SCL v úrovni L a H. Pri komunikácii aj pri prenose dát si jednotlivé stanice synchronizujú generátory hodín tak, že trvanie úrovne H na SCL je odmeriavané vnútorným časovačom každej stanice až od okamihu, keď SCL skutočne úrovne H dosiahne (pretože je SCL typu otvorený kolektor, môže byť v úrovni L držaný aj v situácii kedy sa daná stanica snaží nastaviť úroveň H). Podobne je doba trvania úrovne L na SCL odmeriavaná od zostupnej hrany. Tento mechanizmus umožňuje pre niektoré zo staníc spomaliť prenos: pomalá stanica môže podržať po určitú dobu signál SCL v úrovni L a tým zabrániť vysielajúcej stanici vo vyslaní ďalšieho bitu. Zbernica I2C neumožňuje duplexný prenos, v jednom okamihu vysiela len jedno zariadenie. Všetky zariadenia pripojené na zbernicu musia mať individuálnu adresu a implementovaný mechanizmus komunikácie pomocou I²C zbernice [1].

Protokol prenášaných údajov

Údaje v rozhraní I2C sa prenášajú v tzv. správach. Každá správa je rozdelená do jednotlivých rámcov, a to: adresný rámec, ktorý identifikuje binárnu adresu Slave zariadenia a následne jeden alebo viacero dátových rámcov, ktoré obsahujú prenášaný obsah. Správy obsahujú aj bity pre čítanie/zápis, bity ACK/NACK a podmienky START a STOP (Obr. 2).

Súbor:MCU I2C 2 strukturaSpravy.png
Obr. 2. Štruktúra správy cez I2C rozhranie
  • START - podmienka štart signalizuje začiatok komunikácie. Linka SDA sa prepne z vysokej (log. 1) na nízku hodnotu (log. 0) skôr, ako sa linka SCL prepne z vysokej na nízku hodnotu.
  • ADDRESS - adresa Slave zariadenia, s ktorým chce Master komunikovať. Adresa predstavuje 7 alebo 10 bitové celé číslo v binárnom tvare, ktoré predstavuje jedinečný identifikátor každého Slave zariadenia. Dve zariadenia by nemali mať tú istú adresu v jednej I2C zbernici.
  • RW - jeden bit, ktorý určuje či sa vykonáva operácia zápisu alebo čítania:
    • Ak RW = 0, zápis údajov na Slave zariadenie.
    • Ak RW = 1, čítanie údajov zo Slave zariadenia.
  • ACK/NACK nasleduje za každým rámcom v správe. Je to bit potvrdenia/nepotvrdenia:
    • Ak bol úspešne prijatý adresný alebo dátový rámec, prijímajúce zariadenie vráti odosielateľovi log. 0 (ACK - Acknowledged).
    • Ak nastala chyba v prenose, prijímajúce zariadenie vráti odosielateľovi log. 1 (NACK - Not Acknowledged).

Existuje niekoľko situácií, ktoré vedú k vytvoreniu NACK:

    • Prijímač vykonáva nejakú funkciu v reálnom čase a nie je pripravený začať komunikáciu s Masterom.
    • Prijímač odbrží neznáme údaje alebo príkazy.
    • Počas prenosu prijímač nemôže prijímať ďalšie dátové bajty.
    • Master ukončí čítanie údajov a oznámi to Slave zariadeniu pomocou NACK.
  • DATA - Dátový rámec je vždy dlhý 8 bitov a posiela sa s najvýznamnejším bitom (MSB) ako prvým. Za každým dátovým rámcom bezprostredne nasleduje bit ACK/NACK na overenie, či bol rámec úspešne prijatý. Pred odoslaním ďalšieho dátového rámca musí bit ACK prijať buď master, alebo slave (v závislosti od toho, kto dáta odosiela).
  • STOP - ukončovacia podmienka štart signalizuje koniec komunikácie. Linka SDA sa prepne z nízkej (log. 0) na vysokú hodnotu (log. 1) potom, čo sa linka SCL prepne z nízkej úrovne na vysokú [2][3].

Na Obr.3 je vyobrazený časový diagram zápisu a čítania údajov s veľkosťou 2B prostredníctvom rozhrania I2C.

Obr. 3. Časový priebeh zápisu a čítania údajov v I2C rozhraní


Modifikácia I2C protokolu pre displeje

Pri displejoch treba v prenášanej správe obsiahnuť aj informáciu o tom či sa posiela príkaz alebo dáta. Preto je do správy pridaný 8-bitový DC rámec, ktorý nasleduje vždy za rámcom adresy. DC rámec obvykle nadobúda hodnoty 0 pre príkaz a 64 pre dáta, avšak toto pravidlo nie je pevne dané. Po odoslaní DC rámca sa odošle N rámcov dát (Obr.~4).

Súbor:MCU I2C 4 displeje.png
Obr. 4. Štruktúra displejovej správy cez I2C rozhranie

Zdroje a aOdkazy

  1. 1,0 1,1 Gabriel Gašpar a Juraj Ďuďák. Využitie mikrokontrolérov v automatizovanom riadení. Spektrum, 2023. ISBN: 978-80-227-5283-1.
  2. Scott Campbell. BASICS OF THE I2C COMMUNICATION PROTOCOL. https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol/.
  3. Sal Afzal. I2C Primer: What is I2C? (Part 1). https://www.analog.com/en/technical-articles/i2c-primer-what-is-i2c-part-1.html.