Bus I2C — atribuire, dispozitiv, transfer de date, adresare

Atunci când creează un circuit electronic, mulți dezvoltatori se confruntă cu nevoia de a utiliza un număr mare de cipuri intermediare pentru potrivirea, eșantionarea și adresarea blocurilor sale individuale. Pentru a minimiza numărul de cipuri auxiliare, Philips a propus o interfață de rețea serială I2C bidirecțională cu două fire în anii 1980, concepută special pentru a gestiona mai multe cipuri într-un singur dispozitiv.

I2C Bus - Atribuire, Dispozitiv, Transfer de date, Adresare

Astăzi, doar Philips produce peste o sută de dispozitive compatibile I2C pentru echipamente electronice cu o mare varietate de scopuri: memorie, sisteme de procesoare video, convertoare analog-digital și digital-analogic, drivere de afișare etc.

Autobuz I2C

Magistrala I2C este o modificare a protocolului de schimb de date seriale capabilă să transmită date seriale pe 8 biți în modul obișnuit „rapid” la viteze de 100 până la 400 kbps. Procesul de schimb de date este implementat aici doar pe două fire (fără a lua în calcul firul comun): linia SDA pentru date și linia SCL pentru sincronizare.

Busul devine bidirecțional datorită faptului că cascadele de ieșiri ale dispozitivelor conectate la magistrală au colectoare sau canale deschise, replicând astfel cablajul AND. Ca rezultat, magistrala minimizează numărul de conexiuni între cipuri, lăsând mai puțini pini și urme necesare pe placă. Drept urmare, placa în sine se dovedește a fi mai simplă, mai compactă și mai avansată din punct de vedere tehnologic în producție.

Acest protocol vă permite să dezactivați decodoarele de adrese și alte logică de negociere externă. Numărul de cipuri care pot funcționa simultan pe magistrala I2C este limitat de capacitatea sa - maximum 400 pF.

Protocolul I2C

Circuitele integrate compatibile cu I2C au un algoritm hardware de suprimare a zgomotului pentru a asigura integritatea datelor chiar și în prezența unor interferențe puternice. Astfel de dispozitive au o interfață care permite microcircuitelor să comunice între ele chiar și atunci când tensiunile lor de alimentare sunt diferite. În figura de mai jos, vă puteți familiariza cu principiul conectării mai multor microcircuite printr-o magistrală comună.

Fiecare dintre dispozitivele conectate la magistrală are propria sa adresă unică, este determinată de aceasta și, în conformitate cu scopul dispozitivului, poate funcționa ca receptor sau ca transmițător. La transmiterea datelor, aceste dispozitive pot fi master (master) sau slave (slave). Master este dispozitivul care inițiază transferul de date și generează semnale de ceas pe linia SCL. Sclavul, în raport cu masterul, este dispozitivul de destinație.

Schema de conectare a dispozitivului

În orice moment dat de operare pe magistrala I2C, un singur dispozitiv poate acționa ca master; generează un semnal pe linia SCL.Un master poate fi fie un receptor principal, fie un transmițător principal.

În principiu, magistrala permite mai multe mastere diferite, dar impune restricții asupra caracteristicilor de formare a semnalelor de control și de monitorizare a stării magistralei; asta inseamna ca mai multi master pot incepe sa transmita in acelasi timp, insa conflictele de acest fel sunt eliminate datorita arbitrajului, adica felului in care se comporta masterul cand detecteaza ca magistrala este ocupata de un alt master.

Sincronizarea unei perechi de dispozitive este asigurată de faptul că toate dispozitivele sunt conectate la magistrală, formând o cablare „ȘI”. Inițial, semnalele SDA și SCL sunt ridicate.

START și STOP

Schimbul începe cu masterul care generează starea «START»: pe linia SDA, semnalul trece de la starea înaltă la starea scăzută, în timp ce linia SCL are un nivel ridicat stabil. Toate dispozitivele conectate la magistrală percep această situație ca o comandă de pornire a schimbului.


Pornire și oprire - semnal de sincronizare

Fiecare master generează un semnal individual de ceas pe linia SCL atunci când transmite date pe magistrală.

Schimbul se încheie cu formarea stării STOP de către master: pe linia SDA semnalul se schimbă de la scăzut la ridicat, în timp ce linia SCL are un nivel ridicat stabil.

Șoferul acționează întotdeauna ca sursă a semnalelor START și STOP. De îndată ce semnalul «START» este fixat, înseamnă că linia este ocupată. Linia este liberă când este detectat un semnal STOP.

Transfer de date

Imediat după declararea stării START, masterul comută linia SCL la nivel scăzut și trimite cel mai semnificativ bit din primul octet de mesaj către linia SDA. Numărul de octeți dintr-un mesaj nu este limitat.Modificările pe linia SDA sunt activate numai atunci când nivelul semnalului pe linia SCL este scăzut. Datele sunt valide și nu trebuie modificate numai atunci când pulsul de sincronizare este ridicat.

Confirmarea că octetul de la transmițătorul principal a fost recepționat de către receptorul slave se face prin setarea unui bit de confirmare special pe linia SDA după ce a fost primit al optulea bit de date.

CONFIRMAREA

Deci, trimiterea a 8 biți de date de la transmițător la receptor se termină cu un impuls suplimentar pe linia SCL atunci când dispozitivul de recepție scade pe linia SDA, indicând că a primit întregul octet.

Puls de sincronizare de confirmare

Confirmarea este o parte integrantă a procesului de transfer de date. Masterul generează un impuls de sincronizare. Transmițătorul trimite o stare scăzută către SDA în timp ce ceasul de confirmare este activ. În timp ce pulsul de sincronizare este ridicat, receptorul trebuie să mențină SDA scăzut.

Dacă slave destinație nu își recunoaște adresa, de exemplu pentru că este ocupat în prezent, linia de date trebuie să fie menținută la nivel ridicat. Comandantul poate da apoi un semnal STOP pentru a anula expedierea.

Dacă recepția este efectuată de receptorul principal, atunci acesta este obligat să informeze transmițătorul slave după finalizarea transmisiei - nu prin confirmarea ultimului octet. Transmițătorul slave eliberează linia de date, astfel încât masterul să poată emite un semnal STOP sau un semnal START repetat.

Sincronizarea dispozitivelor este asigurată de faptul că conexiunile la linia SCL se realizează după principiul „ȘI”.

Comandantul nu are dreptul exclusiv de a controla tranziția liniei SCL de la scăzut la ridicat.Dacă slave are nevoie de mai mult timp pentru a procesa un bit recepționat, acesta poate menține independent SCL scăzut până când este gata să primească următorul bit de date. Linia SCL într-o astfel de situație va fi scăzută pe durata celui mai lung impuls de sincronizare de nivel scăzut.

Dispozitivele cu cel mai scăzut nivel susținut vor rămâne inactiv până la sfârșitul perioadei lungi. Când toate dispozitivele au terminat perioada de sincronizare scăzută, SCL va crește.

Toate dispozitivele vor începe să facă cea mai mare, iar primul dispozitiv care își va finaliza perioada va fi primul care va seta linia SCL la un nivel scăzut. Ca urmare, durata stării scăzute a SCL va fi determinată de cea mai lungă stare scăzută a impulsului de sincronizare a unuia dintre dispozitive, iar durata stării superioare va fi determinată de cea mai scurtă perioadă de sincronizare a unuia dintre dispozitive. dispozitive.

Semnalele de sincronizare pot fi utilizate de către receptori ca mijloc de control al transmisiei de date la nivel de biți și octeți.

Dacă dispozitivul este capabil să primească octeți la o rată mare, dar este nevoie de o anumită perioadă de timp pentru a stoca octetul recepționat sau pentru a se pregăti pentru a primi octetul următor, poate continua să mențină SCL scăzut după primirea și confirmarea unui octet, forțând transmițătorul într-o stare de așteptare.

Un microcontroler fără circuite hardware încorporate, de exemplu la nivel de biți, poate încetini viteza ceasului prin creșterea duratei stării lor scăzute. Ca urmare, viteza de transmisie a dispozitivului master va fi determinată de viteza dispozitiv mai lent.


Autobuz I2C

ADRESAREA

Fiecare dispozitiv conectat la magistrala I2C are o adresă unică de program la care masterul o adresează prin trimiterea unei comenzi specifice. Microcircuitele de același tip sunt caracterizate de un selector de adresă, implementat fie sub formă de intrări digitale ale selectorului, fie sub formă analogică. Adresele sunt împărțite în spațiul de adrese al dispozitivelor conectate la magistrală.

Modul normal presupune adresarea pe șapte biți. Adresarea funcționează după cum urmează: după comanda «START», masterul trimite primul octet, care determină ce dispozitiv slave este necesar pentru a comunica cu masterul. Există, de asemenea, o adresă de apel comună care definește toate dispozitivele de pe magistrală, toate dispozitivele (teoretic) răspund la aceasta cu o confirmare, dar în practică acest lucru este rar.

Deci primii șapte biți ai primului octet sunt adresa slave. Bitul cel mai puțin semnificativ, al optulea, indică direcția de trimitere a datelor. Dacă există un «0», atunci informațiile vor fi scrise de la master către acest sclav. Dacă „1”, informațiile vor fi citite de către master de la acest slave.

După ce masterul termină de trimis octetul de adresă, fiecare slave își compară adresa cu acesta. Oricine are aceeași adresă este slave și este definit ca transmițător slave sau receptor slave, în funcție de valoarea bitului cel mai puțin semnificativ al octetului de adresă.

O adresă slave poate include părți fixe și programabile. Destul de des, un număr mare de dispozitive de același tip funcționează într-un sistem, apoi partea programabilă a adresei permite utilizarea unui maxim de același tip de dispozitive pe magistrală. Câți biți din octetul de adresă sunt programabili depinde de numărul de pini liberi de pe cip.

Uneori este suficient un pin cu o setare analogică a intervalului de adrese programabile, de exemplu SAA1064 - un driver de indicator LED care are exact o astfel de implementare. Potențialul unui anumit pin determină decalajul spațiului de adresă al cipului, astfel încât cipurile de același tip să nu intre în conflict în funcționarea pe aceeași magistrală. Toate cipurile care acceptă magistrala I2C conțin un set de adrese pe care producătorul le specifică în documentație.

Combinația «11110XX» este rezervată pentru adresare pe 10 biți. Dacă ne imaginăm schimbul de date de la comanda «START» la comanda «STOP», va arăta astfel:


Adresarea

Aici sunt permise formate simple și combinate de schimb de date. Formatul combinat înseamnă că între „START” și „STOP” masterul și slave pot acționa ca receptori și transmițători, acest lucru este util de exemplu în gestionarea memoriei seriale.

Lăsați primul octet de date să transfere o adresă de memorie. Apoi, repetând comanda «START» și citind adresa slave, datele din memorie vor funcționa. Deciziile de a incrementa sau decrementa automat adresa accesată anterior sunt luate de dezvoltatorul dispozitivului după ce a studiat în prealabil documentația cipului. Într-un fel sau altul, după primirea comenzii START, toate dispozitivele trebuie să-și restabilească logica și să se pregătească pentru faptul că adresa va fi acum numită.

Vă sfătuim să citiți:

De ce este curentul electric periculos?