Hradla, volty, jednočipy
  • index
  • Poděkování
  • Předmluva vydavatele
  • Předmluva mentora
  • Výmluvy místo předmluvy
  • 1 Budu velkým elektronikem a budu stavět hrozně cool obvody!
    • 1.1 Blikač
    • 1.2 „Dílna“
    • 1.3 Kde nakoupit součástky?
    • 1.4 Nákupní seznam: Součástky pro blikač
  • 2 Postavte si blikač – teď už to snad půjde lépe
    • 2.1 Který rezistor je ten pravý?
    • 2.2 Měření multimetrem
    • 2.3 LED podrobněji
  • 3 Hlava, koleno, zem…
    • 3.1 „Nemá to něco společného s atomy?“
    • 3.2 Napětí
    • 3.3 Proud
    • 3.4 Vodič a nevodič
    • 3.5 Odpor
    • 3.6 Měření, měření!
    • 3.7 Ohmův zákon
    • 3.8 Výkon
    • 3.9 … a malé opáčko
    • 3.10 Zkratky u značení
    • 3.11 Vyvolená čísla
    • 3.12 Pro lepší představu
    • 3.13 Střídavý proud
    • 3.14 Zkrat
    • 3.15 Multimetr jako zkrat?
    • 3.16 Elektromagnetická indukce
    • 3.17 Značky pro schémata
  • 4 Zdroje napětí
    • 4.1 Společná zem
  • 5 Vedle sebe, za sebou
    • 5.1 Svítilna s LEDkou
    • 5.2 Sériové zapojení
    • 5.3 Dělič napětí
    • 5.4 Paralelní zapojení
    • 5.5 Kirchhof 2
    • 5.6 Baterie sériově – paralelně
    • 5.7 Potenciometr
    • 5.8 Úbytek napětí na LED
    • 5.9 Co jsou vlastně ty diody zač?
    • 5.10 Datasheet
  • 6 Základní elektronické součástky
    • 6.1 Rezistor
    • 6.2 Kondenzátor
    • 6.3 Cívka
    • 6.4 Transformátor
  • 7 Polovodiče
    • 7.1 P-N přechod
    • 7.2 Dioda
    • 7.3 Tranzistor
    • 7.4 Rozsvítíme prstem LED!
    • 7.5 Tranzistor řízený polem (FET)
    • 7.6 Šoupejte nožkou…
    • 7.7 MOSFET
    • 7.8 A to je všechno s polovodiči?
  • 8 Pouzdra elektronických součástek
    • 8.1 Co je to SMT a THT
    • 8.2 DIP, DIL
    • 8.3 Co s těmi ostatními?
  • 9 Blikač s Arduinem
    • 9.1 Když se řekne Arduino
    • 9.2 Programování Arduina
    • 9.3 Blikání Arduinem
    • 9.4 Krok zpět k drátům
    • 9.5 Arduino a EduShield
  • 10 Fotorezistor
    • 10.1 Obrácená logika
    • 10.2 Trimry
    • 10.3 Lepší řešení detektoru tmy
    • 10.4 Fotorezistor a Arduino
  • 11 Termistor
  • 12 LM35
  • 13 „Jak naučit kámen počítat“
    • 13.1 Stavebnice
    • 13.2 Logické funkce
    • 13.3 TTL a CMOS
    • 13.4 Operace s bity
    • 13.5 Booleova algebra, výroková logika
    • 13.6 Logika v číslicové technice
    • 13.7 U-káz-ka! U-káz-ka!
    • 13.8 Tlačítko a přepínač
    • 13.9 Pull Up a Pull Down
    • 13.10 Pomalé tlačítko
    • 13.11 Schmittův obvod
    • 13.12 Blokovací kondenzátor
    • 13.13 Buzení z Arduina
  • 14 Kombinační logika
    • 14.1 De Morganův zákon
    • 14.2 XOR
    • 14.3 Logické funkce dvou proměnných
    • 14.4 Vícevstupová hradla
    • 14.5 Mimochodem, když máme NAND, co ty ostatní?
    • 14.6 Zjednodušování logických výrazů
    • 14.7 AND-OR-INVERT
    • 14.8 Multiplexor
    • 14.9 Proč slučujeme přes OR?
    • 14.10 Dekodér (demultiplexor) „1-z-N“
    • 14.11 Vícebitové varianty
    • 14.12 Otevřený kolektor, třetí stav, OE
    • 14.13 Dekodéry
    • 14.14 Pojďme, budeme už fakt něco počítat!
    • 14.15 Aritmeticko-logická jednotka (ALU)
  • 15 Sedmisegmentovky LED
    • 15.1 Víc sedmisegmentovek…
  • 16 Jak vypadá hradlo uvnitř
    • 16.1 Proč zapojovat blokovací kondenzátory k napájení
    • 16.2 Negované signály
    • 16.3 MOS, CMOS
  • 17 „Plnou parou vzad!“ – „Ale jak daleko?“
    • 17.1 Ještě pípat!
  • 18 Zpětná vazba
    • 18.1 Astabi-cože?
    • 18.2 Blikač
    • 18.3 Krystalový oscilátor DIL
    • 18.4 Monostabilní klopný obvod
    • 18.5 Detektor pohybu
    • 18.6 Bistabilní klopný obvod R-S
    • 18.7 Zakázané kombinace, zpětná vazba, …
    • 18.8 Hodiny
    • 18.9 Synchronní / Asynchronní
    • 18.10 Symbol pro klopný obvod
    • 18.11 Reálný klopný obvod D: 7474
    • 18.12 Reálný latch 7475
  • 19 Panna, nebo orel?
    • 19. 1 Náhoda? Nemyslím si…
    • 19.2 Střída
    • 19.3 PWM
    • 19.4 Dělení kmitočtů
    • 19.5 Klopný obvod T
    • 19.6 Klopný obvod J-K
  • 20 Čítače
    • 20.1 Čítač s nulováním
    • 20.2 Čítače v praxi
    • 20.3 Hrací kostka
    • 20.4 Další čítače
    • 20.5 Ještě nějaké čítače?
    • 20.6 Rotační enkodér
    • 20.7 Čítač s dekodérem 1-z-10 typu 744017
    • 20.8 Počítadlo k autodráze
  • 21 Posuvné registry
  • 22 Paralelní a sériová rozhraní
    • 22.1 Buzení displeje ze sedmisegmentovek
    • 22.2 Posuvný řadič SIPO 74HCT595
  • 23 Sériová komunikace
    • 23.1 Sériová sběrnice SPI
    • 23.2 Sériová sběrnice I2C
    • 23.3 Prakticky…
    • 23.4 EduShield a displej
    • 23.5 RS-232, UART, Serial…
    • 23.6 Převodník USB na sériové rozhraní
    • 23.7 1-Wire
  • 24 Paměti
    • 24.1 7489 – 64 bitů RAM
    • 24.2 Dynamická RAM
    • 24.3 ROM, PROM a další
    • 24.4 To nejlepší z obou světů
    • 24.5 Několik tipů k pamětem
    • 24.6 Jak se zapisuje do EEPROM či FLASH?
    • 24.7 Sériové paměti
  • 25 Sériová paměť prakticky
  • 26 Hodiny reálného času
  • 27 Paměťové karty
  • 28 Logický analyzátor, logická sonda
  • 29 Elektronika a svět kolem nás
    • 29.1 Ovládáme přírodu elektronikou
    • 29.2 Příroda ovládá elektroniku
  • 30 Meteostanice
    • 30.1 Výběr součástek
    • 30.2 Špinavej trik
    • 30.3 Stavíme z polotovarů
  • 31 Bezdrátový přenos dat
    • 31.1 Vysílání na 433 MHz
    • 31.2 nRF24L01+
  • 32 Procesory, počítače, mikrořadiče
    • 32.1 Mikroprocesor 8080A
    • 32.2 Přerušení
    • 32.3 Periferie
    • 32.4 Složitější periferie
    • 32.5 Jednočipový mikropočítač
    • 32.6 Atmel AVR
    • 32.7 Další mikrokontroléry
    • 32.8 Tak málo nožiček…
    • 32.9 Programování jednočipů
  • 33 Displeje
    • 33.1 Znakový displej 1602, 2004
    • 33.2 Grafický displej 12864
    • 33.3 Další displeje
    • 33.4 Bezdrátový displej k naší meteostanici
  • 34 Klávesnice
    • 34.1 Šetříme vývody
    • 34.2 Připojujeme klávesnici od PC
    • 34.3 Matice tlačítek
    • 34.4 Postavte si třeba… kalkulačku?
  • 35 Osm tlačítek na třech vodičích
    • 35.1 Multiplexior / Demultiplexor
    • 35.2 PISO a SPI
    • 35.3 Analogová cesta
    • 35.4 R-2R
  • 36 Joystick
  • 37 ESP8266 WiFi
    • 37.1 Moduly ESP8266
    • 37.2 Převodník napěťových úrovní
    • 37.3 WeMos D1 Mini, NodeMCU
    • 37.4 Bezdrátový teploměr s WiFi
    • 37.5 Instalace podpory ESP8266 do Arduino IDE
    • 37.6 WiFi Manager
    • 37.7 Klient / server?
  • 38 Low Power
    • 38.1 Solární články
  • 39 Sigfox
    • 39.1 Co je to Sigfox?
    • 39.2 Cloudový teploměr se Sigfoxem
    • 39.3 Co s daty v Sigfoxu?
  • 40 Šťastnou cestu…
  • Přílohy
    • Nástroje a weby
    • Nákupní seznam začínajícího hobby elektronika
    • EduShield
    • Nahrání firmware do EduShieldu
    • Turris Omnia pro experimenty s elektronikou
    • Karnaughova mapa
    • „Dobré rady nad zlato“ na jednom místě
Powered by GitBook
On this page

Was this helpful?

  1. 23 Sériová komunikace

23.2 Sériová sběrnice I2C

Previous23.1 Sériová sběrnice SPINext23.3 Prakticky…

Last updated 5 years ago

Was this helpful?

I2C je z anglického Inter-Integrated Circuit a mělo by se to správně číst I squared C, nesprávně I two C. V našich luzích a hájích běžně uslyšíte „í-dva-cé“ („ájsquérdsí“ ani „í-na-druhou-cé“ se moc neuchytilo). Navíc je I2C ochranná známka společnosti Philips, která tento standard vyvinula, takže mnozí výrobci sice používají naprosto stejný typ sběrnice, se stejnými parametry a stejným ovládáním, ale cudně ji označují jinak, aby se vyhnuli použití chráněné značky. Kupříkladu Atmel označuje ve svých dokumentech tuto sběrnici jako TWI – Two Wire Interface.

Na první pohled vypadá I2C velmi podobně jako SPI, jen má míň vodičů. Kromě země si vystačí s pouhými dvěma vodiči, datovým SDA a hodinovým SCL.

Opět platí, že máme jeden „master“ obvod (může jich být i víc, ale nejčastěji je jeden) a k němu připojené periferní obvody. Každý periferní obvod má, na rozdíl od SPI, vlastní sedmibitovou adresu, tedy v rozsahu 0 až 127. Adresy nejsou úplně libovolné, většinou jsou pevně dané výrobcem – či alespoň jejich část. Pokud chceme zapojit dva obvody stejného typu naráz, musí podporovat možnost zapojit je na různé adresy. Jak vidno, sedm bitů není příliš mnoho, navíc některé kombinace jsou vyhrazené pro speciální použití, a tak se pomalu prosazuje novější standard s desetibitovými adresami.

Ve všech zařízeních jsou vývody SDA a SCL navrženy „s otevřeným kolektorem“. Už jsme se s tím setkali, vzpomeňte si: takový výstup je buď ve stavu 0, nebo ve stavu „odpojeno“. Výhodou je, že můžeme takové vývody spojovat dohromady, nevýhoda je, že potřebuje pull-up rezistor, aby mohla být na vedení za klidového stavu logická 1. Další výhoda takového zapojení je, že vývod může být zároveň výstup i vstup. Pokud funguje jako výstup, je buď 0, nebo „odpojen“. Pokud má fungovat jako vstup, nechává se „odpojen“, a obvod „naslouchá“, jestli je na vedení 0, nebo 1.

Komunikaci opět zahajuje master, a to tím, že na vývod SDA pošle logickou 0 (říkáme, že vývod „stáhne k zemi“), a poté (to je důležité!) stáhne i hodinovou linku SCL. Tím vytvoří takzvaný „startovní signál“ (Start Condition). Následně master začne vysílat hodiny, a zároveň nastavuje na vodič SDA data (postupně od nejvyššího bitu k nejnižšímu – zde je rozdíl proti SPI).

Přenos dat vždy začíná tím, že je přenesena sedmibitová adresa (A6 – A0) a bit R/W, který říká, zda bude následovat čtení ze zařízení (1), nebo zápis do zařízení (0). Během té doby všechna zařízení naslouchají a čtou adresu. Pokud je adresa jiná, než jejich, opět se odpojí a čekají na STOP signál (stop condition), kdy se při SCL=1 změní SDA z 0 na 1. Pokud je adresa stejná, zařízení se připraví na přenos dat.

Poté nechá master datovou sběrnici odpojenou, začne naslouchat a pošle ještě jeden hodinový puls. Zařízení, které rozpoznalo svou adresu, stáhne SDA k zemi, tedy vyšle log. 0, a tím potvrdí připravenost komunikovat (říkáme tomu puls ACK – z Acknowledge, neboli potvrzení). Master tento bit sleduje, a pokud přijme 0, ví, že je vše OK. Pokud ale během devátého hodinového pulsu najde na SDA hodnotu 1, znamená to, že žádné zařízení nerozpoznalo svou adresu.

Po této výměně následuje vlastní přenos dat, a to buď z masteru do periferie, nebo opačným směrem. V obou případech ale časování řídí master. Když je přeneseno vše, co přeneseno mělo být, uvolní master sběrnici tím, že nejprve „pustí“ SCL (a pullup rezistor jej vytáhne k log. 1), a poté uvolní i SDA. Tím všechna zařízení na sběrnici poznají, že nastal konec přenosu.

Sběrnice I2C umožňuje i některé zajímavé činnosti, například poslat desetibitovou adresu, pokud ji zařízení podporují. Master nemusí přenos ukončovat „stop stavem“, ale může znovu zahájit vysílání dalším startem a opětovným vysláním adresy. Existuje i možnost „natažení času“ – pokud je periferní zařízení příliš pomalé a trvá mu delší dobu, než má k dispozici data, udělá takový trik: samo stáhne hodinový signál k 0, čímž naznačí masteru, že má chvíli počkat. Když je pak připravené, tak opět hodinovou linku uvolní, master zjistí, že je volno, a pokračuje v přenosu.

Přenos dat probíhá po této sběrnici základní rychlostí 100 kHz, tedy 100 kbit / sec. Většina zařízení umí pracovat i s rychlostí 400 kHz. Zařízení standardu High Speed mohou komunikovat s frekvencí 3,4 MHz. Nejnovější ultra fast zařízení používají, stejně jako SPI, vedení bez pull-up rezistorů, ovšem komunikují pouze jednosměrně.

Vlastnost

SPI

I2C

Rychlost

Závisí na zařízení, teoreticky neomezená, prakticky omezená fyzikálními limity (délka vedení, jeho kvalita apod.)

100 kbit/s 400 kbit/s 3,4 Mbit/s (pouze nové obvody)

Počet vodičů

1 × hodinový signál 2 × datový signál 1 řídicí vodič pro každé zařízení Společná zem

1x hodinový signál 1x datový signál Společná zem

Počet připojených zařízení

Teoreticky neomezený, prakticky omezený potřebou mít pro každé zařízení jeden řídicí signál

Teoreticky neomezený, prakticky omezený adresováním zařízení. V případě připojení více obvodů stejného typu je třeba vyřešit, aby každý měl svou adresu. Pokud to obvod neumožňuje, nelze jich připojit víc.

284-1.png