Najpogostejši način komunikacije med integriranimi vezji znotraj zahtevnih elektronskih naprav je komunikacija po I2C protokolu. Članek opisuje preprosto napravo, s katero lahko nadziramo promet na I2C vodilu in tako ugotovimo, kakšna sporočila si integrirana vezja pošiljajo med seboj.
Osnovno o I2C komunikaciji
Vsa integrirana vezja v I2C mreži si delijo vodilo, ki je sestavljeno iz dveh aktivnih dvosmernih linij (SCL in SDA) ter skupne mase. SDA služi za prenos ukazov in podatkov. SCL je taktni signal, ki sinhronizira prenos ter hkrati določa hitrost komunikacije (fSCL<= 100 kHz: standardni mod; 100 kHz < fSCL <= 400 kHz: hitri mod). Vsako vezje, spojeno na vodilo, ima svoj naslov in, odvisno od svoje specifičnosti, lahko deluje kot sprejemnik in/ali kot oddajnik.
Komunikacijo upravlja nadzorna enota (»master«) (največkrat je to mikrokontroler), ki generira takt, naslavlja podrejene enote (»slave«) in jim pošilja različne ukaze in podatke. Tudi podrejena enota lahko pošlje podatke proti nadzorni enoti, vendar samo takrat, ko nadzorna naprava to zahteva. Podatek se pošilja bit po bit in po vsakem 8. poslanem bitu sledi 9. SCL takt, v katerem sprejemna stran potrdi sprejem sporočila (ACK) tako, da SDA linijo potegne na logično 0.
Stran, ki pošilja podatke, mora postaviti naslednji bit na SDA linijo za toliko časa, dokler je SCL v stanju 0. Enako velja za ACK. I2C protokol pozna dve posebni stanji vodila: START in STOP, ki se pojavita, če se stanje SDA linije menja, dokler je SCL v stanju 1:
SCL = 1, SDA = 1 ->0: START
SCL = 1, SDA = 0->1: STOP
Vsaka podrejena naprava mora imeti svoj naslov, ki je različen od naslovov ostalih naprav na vodilu. Pri nekaterih integriranih vezjih je naslov tovarniško vpisan v vezje, pri nekaterih se naslov lahko spreminja glede na postavljanje logičnih stanj na naslovnih priključkih (na primer: pri AT24C02 so to naslovni priključki A0, A1 in A2). Nekatera I2C vezja imajo 7-bitni naslov in 8. bit (bit 0) predstavlja ukaz (bit 0 = 0: pisanje; bit 0 = 1: branje). Danes obstaja precej več I2C integriranih vezij kot jih 7-bitno naslavljanje omogoča, zato je naslavljanje nekaterih vezij 10-bitno. Oba načina naslavljanja sta medsebojno združljiva, tako da so lahko na I2C vodilu vezja s 7 ali 10-bitnim naslavljanjem.
Komunikacijo začenja nadzorna naprava z generiranjem START signala, nato sledi naslov vezja, ki ga kliče. START prebudi vsa vezja na vodilu in samo vezje, ki prepozna svoj naslov odgovori z ACK signalom. Ostala vezja se deaktivirajo in čakajo naslednji START signal. Nadzorna naprava nadaljuje komunikacijo s klicanim vezjem, ki se konča s STOP signalom.
I2C monitor