I²C

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

I²C (prescurtare pentru Circuitul integrat inter ), (pronunțat i-quadro-ci sau i-due-ci ), este un sistem de comunicații seriale cu două fire utilizat între circuite integrate .

Autobuzul clasic I²C este format din cel puțin un stăpân și un sclav (literalmente „șef, stăpân” și „subordonat, sclav”).
Cea mai frecventă situație vede un singur stăpân și mai mulți sclavi ; cu toate acestea, arhitecturile multimaster și multislave pot fi utilizate în sisteme mai complexe.

Autobuzul a fost dezvoltat de Philips [1] în 1982 și după crearea a sute de componente și sisteme în anii 1980, în 1992 a fost produsă prima versiune a protocolului [2] care a suferit mai multe actualizări și a generat autobuze similare. care ( SMBUS ) din motive pur comerciale, brevetate de Intel , în 1995 .
De fapt, cele două standarde sunt similare în multe aspecte, cum ar fi arbitrajul autobuzului (adică alegerea în cazul mai multor posibili maeștri a dispozitivului care ar trebui să asume această funcție de control al autobuzului), impedanță ridicată ( 3state ) în starea de eliberare a magistralei, sistemul de adresare și protocolul ACK / NACK (cu toate acestea, există diferențe de reținut [3] ).

Utilizare

Fiind un protocol serial, avantajele pe care le oferă sunt acelea de a folosi doar două linii (și, prin urmare, doi pini ai dispozitivelor care îl utilizează).
Limita sa este viteza de comunicare. Standardul inițial a fost însă actualizat în acest sens.
Protocolul de comunicare poate fi utilizat în mod liber de la 1 octombrie 2006 . Numeroși producători de circuite integrate îl pot implementa (pe plăci de bază , microcontrolere și alte dispozitive integrate echipate cu acest sistem de comunicații: memorii flash , EEPROM , drivere de afișare , RTC etc.), însă, având fiecare tip de periferic propriul său cod de referință fix, înregistrarea unui nou cod necesită plata unei taxe către Philips [4] .

Potrivit Philips, circuitele integrate care comunică cu acest protocol sunt mai mult de 1000 de la peste 50 de producători diferiți.

Detalii

Exemplu de dispozitive conectate prin magistrala 2 C (două microcontrolere: unul cu funcția de master și unul de slave , un ADC și un DAC ). Rețineți prezența rezistențelor de tracțiune R p . Linia de referință comună nu este indicată (esențială)

Protocolul hardware al lui I 2 C necesită două linii de comunicații seriale:

  • SDA ( S erial DA ta ) pentru date
  • SCL ( S erial CL ock ) pentru ceas (datorită prezenței acestui semnal, I 2 C este o magistrală sincronă)

Trebuie adăugată o conexiune de referință numită, uneori în mod necorespunzător, GND (care nu este prezentată în figură) și o linie de alimentare V dd la care sunt conectate rezistențele de tracțiune [5] care nu pot fi nici măcar partajate de toate dispozitivele (tipicul tensiunile utilizate sunt +5 V sau +3,3 V, deși sunt permise tensiuni mai mici sau mai mari). Există exemple de arhitecturi mai complete [6] .

Sincronizarea semnalului

Exemplu de transfer de date:
S este bitul START (linia SDA este forțată scăzută de master în timp ce ceasul SCL este la un nivel logic ridicat). Apoi, când SCL este scăzut, setarea primului bit B 1 (în albastru) comutarea SCL indică faptul că datele sunt stabile și pot fi citite (verde). Aceeași procedură continuă până la ultimul bit B N. Tranzacția se încheie cu bitul STOP (P) în galben, unde SDA este comutat de la scăzut la înalt când SCL este ridicat.

I 2 C are 7 biți de adresă (B1 este cel mai semnificativ bit , B7 cel mai puțin semnificativ ) și, prin urmare, 128 de adrese diferite posibile (numite noduri). Dintre acestea, însă, 16 sunt rezervate, astfel încât dispozitivele care pot fi conectate pe aceeași magistrală sunt de cel mult 112. Vitezele de transmisie în modul standard sunt de 100 kbit / s și 10 kbit / s ( viteza modului de viteză redusă ), dar nimic.împiedică coborârea la viteze mai mici.
Revizuirile I 2 C au introdus dispozitive cu viteze de 400 kbit / s (numit mod rapid ) și 3,4 Mbit / s (numit mod High Speed ). Posibilitățile de adresare ale dispozitivelor au fost, de asemenea, extinse la 10 biți.
Numărul maxim de noduri pe lângă faptul că este limitat de numărul de adrese diferite posibile este limitat de capacitățile parazite introduse de fiecare dispozitiv. Capacitatea totală prezentată de SDA și SCL trebuie să fie limitată la 400 pF (rezistențele de tracțiune trebuie dimensionate pe aceste date, adică capacitatea maximă datorată sumei dispozitivelor conectate, în plus față de limita curentului pe care fiecare dispozitivul poate absorbi la un nivel logic scăzut).

Detalii dispozitiv

După cum sa menționat anterior, i2c este o magistrală cu ceas (SCL) și o linie de date (SDA) și 7 biți de adresare posibili. Un autobuz are două tipuri de noduri:

  • nod principal - dispozitivul care transmite semnalul de ceas
  • nodul sclav - nodul care se sincronizează cu semnalul ceasului fără a-l putea controla

Pe magistrală pot exista mai multe dispozitive care pot îndeplini funcția master , dar numai unul câte unul poate îndeplini această funcție (altfel nu poate avea loc o comunicare corectă).
În faza de proiectare (în dezvoltarea de software / firmware ) puteți decide:

  • să ai mereu același stăpân
  • să aleagă, la fiecare comunicare între circuite integrate, care dintre posibili maeștri trebuie să îndeplinească această funcție (prin intermediul unei proceduri numite arbitraj )

În general, există 4 moduri distincte de operare:

  • un maestru transmite - controlează ceasul și trimite date sclavilor
  • un maestru primește - controlează ceasul, dar primește date de la sclav
  • sclavul transmite - dispozitivul nu controlează ceasul, ci trimite date către comandant
  • slave primește - dispozitivul nu controlează ceasul și primește date de la master .

Maestrul începe schimbul de informații prin trimiterea bitului de început (S) urmat de adresa sclavului cu care dorește să comunice (B1, ..., B7). Urmează un bit (B8) care indică dacă dorește să transfere informații către sclav (scrie, cu condiția ca dispozitivul să permită această posibilitate) sau să primească informații (citite). În primul caz, bitul B8 menținut scăzut de master în cazul în care dorește să primească informații va elibera linia de date (mare datorită prezenței pull-up-ului).

Dacă sclavul adresat (B1, ..., B7) există, acesta preia controlul liniei de date pe următorul impuls înalt al SCL și forța redusă (ACK). Maestrul știe apoi că dispozitivul selectat a primit solicitarea și așteaptă să răspundă. Adresele și datele prin convenția autobuzului sunt transmise începând cu bitul cel mai semnificativ (B1) și terminând cu bitul cel mai puțin semnificativ. Pornirea și oprirea urmează indicațiile din figură:

  • startul (S) constă într-o tranziție de la mare la scăzut a magistralei de date SDA în timp ce ceasul (SCL) este ridicat
  • oprirea (P) este reprezentată de o tranziție scăzută la înaltă a SDA în timp ce SCL este ridicat.

Dacă comandantul dorește să primească informații de la un sclav , acesta trimite un ACK la fiecare octet primit, cu excepția ultimului octet. După aceasta poate trimite un bit STOP (P) sau un bit START (S) dacă dorește să păstreze controlul autobuzului pentru un alt transfer.

Nivelul fizic

Autobuzul I 2 C cu rezistențe suplimentare R s (pentru funcția lor vezi nota [7] )

La nivel hardware, așa cum am menționat, liniile SCL și SDA sunt open-drain sau open-collector în funcție de tehnologia utilizată (respectiv MOSFET sau BJT ).
Prin urmare, prezența unui rezistor de tracțiune este esențială. Când un dispozitiv își activează ieșirea, forțează linia scăzută, aducându-l la nivelul logic zero, lăsându-l liber, este adus de rezistența de tracțiune și este considerat a fi la nivel logic ridicat (Vdd).
Aceasta are avantajul de a nu avea conflicte hardware (niciun dispozitiv nu poate forța nivelul logic ridicat).

De asemenea, trebuie spus că, pentru a îmbunătăți citirea în prezența unor perturbări, o histerezis este adesea prezentă pe intrările dispozitivelor.

Autobuzul se numește cu două fire, ceea ce înseamnă că comunicarea necesită două linii de comunicare. Cu toate acestea, în realitate, este esențial să aveți un fir de referință comun (numit GND sau V ss ), astfel încât, în practică, numărul minim de conexiuni fizice este de trei.
În ceea ce privește conexiunea de alimentare pozitivă (indicată ca V dd , V dd1 , V dd2 etc., V cc sau similar; de obicei +5 V sau +3,3 V) nu este esențial ca acesta să fie comun tuturor componentelor conectate (deși în majoritatea aplicațiilor este).
Există, de asemenea, posibilitatea de a utiliza diferite tensiuni de alimentare pentru dispozitivele conectate la magistrală. În acest caz, dacă toate dispozitivele sunt „tolerante” în ceea ce privește tensiunea de alimentare disponibilă, acestea pot fi conectate direct la magistrală; altfel va trebui să introduceți circuite integrate adaptor (disponibile comercial) între nodurile care au tensiuni de alimentare diferite.

Aplicații

I 2 C este utilizat pentru a comunica cu dispozitive în care simplitatea și costul redus au prioritate față de viteza de transmisie. Aplicațiile obișnuite sunt:

Deși în multe microcontrolere există o secțiune care gestionează direct acest protocol de comunicație și hardware-ul dedicat (adesea menționat în fișele tehnice în mod generic ca interfață serială cu două fire ), este posibil să îl implementați direct folosind doi pini I / O generici și un software / firmware destul de simplu (în engleză această metodă se numește bit-banging ).
Sistemele de comunicații seriale precum I 2 C au devenit populare atunci când, pentru a conține costurile, au fost adoptate dispozitive cu pachete reduse și un număr limitat de pini. Un pachet mic cântărește de obicei mai puțin și are nevoie de mai puțină energie, ceea ce este deosebit de important în telefoane și laptopuri .

Notă

  1. ^(RO) A se vedea dell'I²C logo - ul pe documentul oficial al Philips Filed 29 septembrie 2011 în Internet Archive .
  2. ^(RO) Prima versiune a protocolului și revizuirile sale Depusă la 16 mai 2008 în Internet Archive .
  3. ^(RO) Pe documentul oficial Philips diferențele dintre SMBus și I²C Arhivat pe 16 mai 2008 Internet Archive .. În special, frecvența minimă a ceasului (0 Hz la I²C; 10 k Hz pentru SMBus) și diferențele în praguri niveluri logice.
  4. ^(RO) Înregistrarea unui nou cod Depus 20 martie 2008 în Internet Archive .
  5. ^ Pentru calculul rezistențelor Rp, a se vedea, de exemplu: ( EN )Specificația I-C-bus 2 și manualul de utilizare ( PDF ), pe nxp.com , NXP, 9 octombrie 2012, p. 55. Accesat la 3 iulie 2013 ( arhivat la 11 mai 2013) .
  6. ^(RO) Exemplu de arhitectură mai completă a lui I 2 C pe site-ul Philips Arhivat pe 19 martie 2008 în Internet Archive .
  7. ^ Rezistențele adăugate R s au funcțiile de:
    • protejați dispozitivele indicate în figura 1 și 2 de perturbări de înaltă tensiune (numite vârfuri ) induse pe liniile SDA și SCL care le-ar putea deteriora
    • în aplicațiile standard și mai ales în modul rapid (adică transmisia de date la frecvențe înalte) adaptează impedanța dispozitivelor conectate la magistrală

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh96010719 · GND (DE) 4373106-5
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT