Komunikačné rozhranie I2C: Rozdiel medzi revíziami
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| | + | [[Súbor:Mcu_i2c_1_pripojenie.png|600px|Obr. 1. Pripojenie zaradení na zbernicu]] |
+ | |||
+ | Obr. 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. | ||
Riadok 12: | Riadok 15: | ||
Ú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). | Ú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| | + | [[Súbor:MCU_I2C_2_strukturaSpravy.png|600px|Obr. 2. Štruktúra správy cez I2C rozhranie]] |
+ | |||
+ | 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. | * '''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. |
Verzia zo dňa a času 22:25, 21. marec 2023
Architektúra ARM mikrokotnrolérov
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
Obr. 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).
Obr. 2. Štruktúra správy cez I2C rozhranie
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.
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).
Zdroje a aOdkazy
- ↑ 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.
- ↑ Scott Campbell. BASICS OF THE I2C COMMUNICATION PROTOCOL. https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol/.
- ↑ Sal Afzal. I2C Primer: What is I2C? (Part 1). https://www.analog.com/en/technical-articles/i2c-primer-what-is-i2c-part-1.html.