Documente Academic
Documente Profesional
Documente Cultură
Interfaţa I2C
Interfaţa I2C
Descrierea interfeei
Interfaa I2C (Inter Integrated Circuits) este o interfa serie, aprut din necesitatea de a realiza
sisteme ieftine cu microcontrolere, destinate n principal conducerii proceselor industriale. Acest tip
de comunicare a fost definit de Philips n 1970 . Popular aceast interfa este cunoscut i sub numele
de comunicare pe doua fire sau two wire interface. Un astfel de sistem este constituit, de regul,
dintr-unul sau mai multe microcontrolere i o serie de echipamente periferice (de intrare/ieire,
memorie etc.). Conectarea acestora printr-o interfa serie satisface cerinele enunate. Viteza mic de
transfer, caracteristic interfeelor serie, nu constituie un neajuns pentru aplicaiile principale avute n
vedere (conducerea proceselor).
Realizarea unui sistem I2C presupune interconectarea unor circuite integrate (specializate) prin
numai trei linii: dou de semnal i una de mas. Cele dou linii de semnal sunt denumite "serial data"
(SDA) i "serial clock" (SCL). Fiecare circuit integrat are o adres unic i poate funciona fie ca
transmitor, fie ca receptor, n funcie de tipul circuitului. De exemplu, un circuit pentru comanda unui
afiaj cu cristale lichide poate fi numai receptor, n timp ce un circuit de memorie RAM poate fi att
transmitor ct i receptor (evident, nu simultan). Dintr-un alt punct de vedere, un circuit integrat din
sistem poate fi coordonator sau executant. Circuitul integrat coordonator este circuitul care iniiaz un
transfer de date i tot el genereaz semnalele de tact pentru a permite realizarea unui transfer. Orice alt
circuit integrat adresat de coordonator este subordonat. Structura I 2C este o structur multicoordonator, adic se pot interconecta mai multe circuite care pot avea rolul de coordonator. Termenii
implicai n descrierea funcionrii interfeei I2C, precum i semnificaia acestora sunt prezentate n
tabelul 1.
Termenul
Transmitor
Receptor
Coordonator
Descrierea termenului
Dispozitivul care pune datele pe magistral
Dispozitivul care preia datele de pe magistral
Dispozitivul care iniiaz un transfer, genereaz semnalele de tact i
Subordonat
Multicoordonator
termin transferul
Dispozitiv adresat de ctre coordonator
Exist mai multe dispozitive care pot s cear n acelai timp funcia de
Arbitraj
Sincronizare
Pentru a nelege mai bine noiunile prezentate, n figura 1 se prezint un exemplu de sistem
realizat pe structura I2C i se consider urmtoarele situaii :
Figura 4 - Definirea intervalelor n care datele se pot schimba i n care trebuie s fie stabile
Datele sunt transferate pe magistral sub form de octei. Dup transmiterea fiecrui octet
transmitorul trebuie s afle dac acesta a fost recepionat n bune condiii de ctre receptor. Aceasta
se face prin procedura de acceptare (figura 5). Dup transmiterea celui de-al 8-lea bit, transmitorul
las n starea sus linia de date SDA; dac recepia s-a facut corect (fiecare bit a fost preluat, s-a
verificat paritatea, cuvntul recepionat n registrul de deplasare pentru recepie a fost preluat de
registrul tampon pentru recepie), atunci receptorul trage jos linia SDA pe durata celui de-al 9-lea tact
de pe linia SCL.
Numrul de octei care poate fi transmis n cadrul unui transfer nu este limitat. n cadrul unui
octet, primul bit transferat este bitul cel mai semnificativ (figura 8.6). Dup primele opt impulsuri de
tact necesare transmiterii unui octet urmeaz un al noulea impuls, utilizat pentru recunoaterea
efecturii transferului (a se vedea mai sus). Dac, dup recepia unui octet, receptorul nu admite un
nou octet (pentru c, de exemplu, trateaz o ntrerupere intern), el poate menine linia SCL la nivel
cobort pentru a fora transmitorul ntr-o stare de ateptare. Transferul poate continua cnd receptorul
este gata, situaie indicat prin eliberarea liniei SCL (figura 8.6). n felul acesta se face adaptarea
vitezei de transmisie dup viteza celui mai lent participant. ntotdeauna, primul octet transmis dup
condiia de START reprezint adresa unui subordonat, mpreun cu tipul operaiei solicitate (scriere
sau citire). Primii apte bii ai acestui octet reprezint adresa. Tipul operaiei este precizat de bitul 8,
notat R/W. Astfel, dac R/W = 1, coordonatorul va citi date de la subordonatul adresat iar dac R/W =
0, coordonatorul va transmite date subordonatului adresat. Un transfer complet este ilustrat n figura 7.
poate recepiona. n aceast situaie, transmitorul subordonat trebuie s elibereze linia SDA pentru a
permite coordonatorului s genereze o condiie de STOP.
3.Generarea impulsurilor de tact i arbitrarea coordonatorilor
Structura I2C este, dup cum s-a precizat anterior, o structur multicoordonator, adic ntr-un
sistem interconectat prin magistrala I2C pot s existe mai multe circuite care pot avea rolul de
coordonator. n cadrul unui transfer, delimitat de condiiile de START i STOP, exist un singur
coordonator. Se poate ntmpla ns ca mai muli coordonatori s ncerce simultan s iniieze un
transfer. Prin urmare, este necesar o procedur de arbitrare n urma creia s rezulte un coordonator
unic n cadrul fiecrui transfer. Procedura de arbitrare este descris n continuare. Fiecare circuit
coordonator genereaz propriile lui impulsuri de tact. Sincronizarea acestora este absolut necesar
pentru evitarea funcionrii haotice. Sincronizarea este posibil datorit funciei logice I-cablat,
realizat prin legarea mpreun a tuturor terminalelor SCL. Sincronizarea se produce n modul descris
mai jos, cu referire la figura 8. n legtur cu aceast figur, precum i cu alte diagrame de timp ce vor
fi prezentate, se face precizarea c semnalele CLK1, CLK2 i DATA1, DATA2 sunt semnalele aduse la
intrrile etajelor de ieire corespunztoare, cuplate la liniile SCL respectiv SDA.
transmite un nivel cobort (figura 9). Coordonatorul care pierde arbitrarea trebuie s i deconecteze
etajul de ieire date, astfel nct s nu mai influeneze starea liniei SDA. Arbitrarea poate continua mai
muli bii. n prima etap se compar biii de adres. Dac ambii coordonatori ncearc s adreseze
acelai executant, arbitrarea continu cu compararea biilor de date. Deoarece arbitrarea folosete biii
de adres i de date, nu se pierde informaia n timpul acestui proces. Coordonatorul care pierde
arbitrarea poate continua s transmit impulsuri de tact pn la sfritul octetului n care pierde
arbitrarea. Dac un coordonator pierde arbitrarea n faza de adresare, este posibil ca acel coordonator
care o ctig s ncerce s-l adreseze. n aceast situaie, coordonatorul care pierde arbitrarea trebuie
s treac imediat n regim de executant (asculttor). Observaie. Deoarece controlul magistralei I2C
depinde numai de adresele i datele transmise de coordonatori, nu exist nici coordonator central i
nici vreo ordine de prioritate pe magistral. Procedura de sincronizare a impulsurilor de tact, descris
mai sus, se poate utiliza i pentru adaptarea vitezei de transfer fie la nivel de octet, fie la nivel de bit.
Adresa unui subordonat poate avea o parte fix i o parte programabil. Partea fix definete clasa
dispozitivului (spre exemplu: memorii, dispozitive de afiare, microprocesoare, etc.) iar partea
programabil identific dispozitivul din clasa respectiv. Mrimea prii programabile depinde de
numrul de pini pentru adres pe care circuitul i are. Spre exemplu, un circuit are 4 bii de adresa fix
i 3 bii programabili; aceasta nseamn c se pot conecta la magistrala I 2C 8 dispozitive de acest fel.
Comitetul de coordonare al magistralei I2C a recomandat o alocare a celor 127 de adrese prezentat n
tabelul 8.6. Exist dou grupe de cte 8 adrese: 0000xxx i 1111xxx rezervate pentru scopurile artate
n tabel. Adresele 11110xx sunt rezervate pentru adresarea cu 10 bii, folosit n sisteme I 2C de mare
ntindere. Adresarea general Este o adresare pentru toate dispozitivele din sitemul I 2C care au fost
prevzute s recunoasc adresarea general. Adresarea general se face pe doi octei (figura 13):
primul este 0000.0000, iar al doi-lea octet specific aciunea pe care trebuie s o relizeze subordonaii.
c) 06h = reset i scrie partea programabil a adresei hard i soft Elementele din sistem
realizeaz dou operaii: se iniializeaz (revin n starea bine definit de fabricant) i i preiau adresa,
att partea fix ct i partea programabil i n ordinea stabilit de proiectantul sistemului. n figura 14
Se arat secvena de ncrcare a adreselor. Cu ABCD s-a notat partea fix a adresei.
d) 00h - acest cod nu este permis a fi utilizat ca al doilea octet ntr-o adresare general. Observaie.
Este important ca la punerea sub tensiune nici un element din sistem s nu trag jos linia SCL sau
SDA, caz n care sistemul nu poate porni.
ias numai dac pe linia SDA se transmit unul dup altul 7 bii cu valoarea 0. Dup detectarea
acestei condiii, microprocesorul monitorizeaz liniile SDA i SCL pe fiecare impuls de tact. Pentru a
fi eficient acest mod de lucru se impune ca fiecare transfer de date s fie precedat de transmisia unui
octet de START, procedura fiind urmtoarea:
1. Coordonatorul magistralei iniiaz condiia de start S,
2. Coordonatorul transmite octetul de START (0000.0001),
3. Coordonatorul transmite impulsul de tact pentru confirmare i nu ateapt s fie confirmat de
ctre cineva pri tragerea jos a liniei SDA,
4. Coordonatorul iniiaz o repetare a condiiei de start Sr i continu procedura obinuit de
transfer prin transmiterea adresei subordonatului, a bitului R/W, .a.m.d. Microprocesorul ce nu este
coordonator ias din modul sleep n faza 3), detecteaz condiia repetat de start, observ adresa
subordonatului i dac nu este a lui, poate s intre din nou n modul sleep de monitorizare a
magistralei. Magistrala I2C are posibilitatea de a transmite unui receptor din sistemul CBUS. Sistemul
CBUS are 3 linii: SDA, SCL i DLEN. Pe linia SCL nu se transmite cel de-al noulea impuls (de
confirmare), ci confirmarea se realizeaz prin intermediul liniei DLEN. Ca urmare transmitorul, ce
lucreaz n I2C, trebuie s transmit octet dup octet, s suprime bitul de confirmare i s activeze linia
suplimentar DLEN. Restul elementelor din I2C nu trebuie s rspund la un mesaj CBUS. De aceea
exist o adres special (0000.001x) pentru conectri CBUS. La transmiterea acestei adrese,
elementele I2C nu rspund i se activeaz linia DLEN. Revenirea n sistemul I 2C se face dup
identificarea condiiei STOP.