I2C

Page

Stránky / Zbernice /

I2C je počítačová zbernica, vyvinutá firmou Philips. Používa sa na pripojenie rôznych periférií, pričom na prenos údajov sa používajú dva vodiče. Komunikácia prebieha tak, že jedno zariadenia hrá úlohu mastera (ovláda ostatné) a ostatné zariadenia hrajú úlohu slave. V našom prípade budeme predpokladať, že master je Arduino. Slave bude obvykle nejaká súčiastka, ktorú ste si kúpili na Ebayi, ale nič nám nebráni použiť aj druhé Arduino.

  • Master - Zahajuje komunikáciu a aktívne posiela alebo číta z podriadených zariadení. Master pozná adresu každého zariadenia a keď potrebuje osloviť konkrétne zariadenie, urobí to pomocou tejto adresy.
  • Slave - Takéto zariadenia čaká na svoje oslovenie a keď ho master osloví, podľa okolnosti si len prečíta, čo za údaje dostalo, alebo odpovie nejakými inými údajmi.

Piny na Arduine

 Pin Arduino Uno  Arduino Mega
 SDA serial data  A4  20
 SLC serial clock  A5  21

Zoznam známych adries

Tu je zoznam adries, ktoré obvykle používajú niektoré zariadenia:
  • 0x23 - BH1750FVI svetelný senzor na rozptýlené svetlo. Pin ADDR=L.
  • 0x50-0x58 - EEPROM.
  • 0x5C - BH1750FVI svetelný senzor na rozptýlené svetlo. Pin ADDR=H.
  • 0x68 - DS1307 hodiny reálneho času. DS3231 hodiny reálneho času.

Simulácia I2C

V simulátore LTSpice IV som vytvoril simuláciu toho, čo sa deje pri komunikácii. Dátová linka je pripojená cez pull-up rezistor 4,7k na +5 V. To ju drží stále na napätí 5 V a obe strany komunikácie pripájajú línku na GND, keď potrebujú niečo oznámiť druhej strane.

Pripojenie na GND je simulované pomocou napätím ovládaného prepínača, ktorým je možné toto napodobniť. V simulácii najprv jedna strana dvakrát pripojí linku na GND, potom je menšia pauza a potom zase pripája linku dvakrát druhá strana. V červenom grafe je potom znázornená úroveň napätia na samotnej linke.

I2C tester

V súbore i2c_tester.ino sa nachádza program, ktorý prekontroluje celú I2C zbernicu a vypíše všetky nájdené zariadenia, ktoré dokážu odpovedať týmto protokolom. Tento program je kompletne prevzatý zo stránky arduino.cc.

Môžete použiť aj modernejšiu modifikáciu, ktorú som napísal podľa vzoru, ktorý som našiel na Raspberry Pi. Táto verzia vypíše nájdené I2C zariadenia v podobe tabuľky. Môžete použiť aj verziu pre OLED displej, ktorú som napísal pre ESP8266.

Zdrojový kód sa nachádza na serveri GitHub.

I2C a hodiny reálneho času DS1307

Dobrým príkladom protokolu je komunikácia s hodinami reálneho času. Tieto moduly sa dajú lacno kúpiť, ale nie je problém si ich aj poskladať z niekoľkých súčiastok. Napríklad v článku o DS1307 na skúšobnom poli si môžete pozrieť príklad takejto komunikácie.

I2C komunikácia medzi dvomi Arduinami

V nasledovnej sérii článkov si postupne vysvetlíme, ako možno zrealizovať I2C komunikáciu medzi dvomi Arduinami.

 



Download
  • I2C Tester Sketch - This sketch tests the standard I2C 7-bit addresses and shows every connected addresses.

I2C Arduino - Master odosiela znaky na slave I2C Arduino - Master odosiela binárne dáta na slave I2C Arduino - Kontrola chýb spojenia

16.07.2015


Menu