I²C
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
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
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
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:
- Acces la memoria flash și EEPROM care păstrează datele stocate chiar și atunci când nu sunt alimentate
- Acces DAC de viteză redusă
- Acces ADC de viteză redusă
- Modificarea setărilor din monitoare
- Schimbarea volumului în difuzoarele inteligente
- Controlul afișajelor ca pe telefoanele mobile
- Citirea și diagnosticarea senzorilor, cum ar fi, de exemplu, senzorii de temperatură sau viteza ventilatorului
- Citire și reglare RTC (ceas integrat)
- Pornirea și oprirea sursei de alimentare a componentelor unui sistem electronic
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ă
- ^(RO) A se vedea dell'I²C logo - ul pe documentul oficial al Philips Filed 29 septembrie 2011 în Internet Archive .
- ^(RO) Prima versiune a protocolului și revizuirile sale Depusă la 16 mai 2008 în Internet Archive .
- ^(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.
- ^(RO) Înregistrarea unui nou cod Depus 20 martie 2008 în Internet Archive .
- ^ 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) .
- ^(RO) Exemplu de arhitectură mai completă a lui I 2 C pe site-ul Philips Arhivat pe 19 martie 2008 în Internet Archive .
- ^ 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
- Wikimedia Commons conține imagini sau alte fișiere despre I²C
linkuri externe
- ( RO ) Specificația I²C, versiunea 6, aprilie 2014, pe site-ul web NXP (Philips) ( PDF ), pe nxp.com . Adus la 3 iulie 2013 (arhivat din original la 11 mai 2013) .
- ( RO ) Descriere detaliată a protocolului , pe i2c-bus.org .
- ( EN ) Autobuzul I²C în Linux (exemplu practic de gestionare posibilă a software-ului pentru master și slave I²C)
- ( RO ) Dispozitive I²C de pe site-ul Philips la standardics.nxp.com . Adus la 23 martie 2008 (arhivat din original la 12 martie 2008) .
- ( EN ) Dispozitive I²C pe site-ul Microchip
- ( RO ) Dispozitive I²C pe site-ul web Atmel
Controlul autorității | LCCN (EN) sh96010719 · GND (DE) 4373106-5 |
---|