Dezvoltat de Philips în anii 1980, I2C a devenit unul dintre cele mai comune protocoale de comunicație serială în domeniul electronicii. I2C permite comunicarea între componentele electronice sau IC la IC, dacă componentele sunt pe același PCB sau conectate prin intermediul unui cablu. Caracteristica cheie a I2C este capacitatea de a avea un număr mare de componente pe o singură magistrală de comunicație, cu numai două fire, ceea ce face ca I2C să fie perfect pentru aplicații care necesită simplitate și costuri reduse.
Protocolul I2C
I2C este un protocol de comunicație serială care necesită doar două linii de semnal. Acesta a fost proiectat pentru comunicarea între chips-uri pe un PCB. I2C a fost conceput inițial pentru o comunicație de 100kbps, dar au fost dezvoltate mai mult moduri de transmisie a datelor de-a lungul anilor pentru a atinge viteze de până la 3,4Mbit. Protocolul I2C a fost stabilit ca un standard oficial, ceea ce asigură o bună compatibilitate între implementările I2C și compatibilitate bună înapoi.
Semnalele I2C
Protocolul I2C utilizează numai două linii de semnal bidirecțional pentru a comunica cu toate dispozitivele de pe magistrala I2C. Cele două semnale utilizate sunt:
- Linia de date serial (SDL)
- Ceas de date serial (SDC)
Motivul pentru care I2C poate utiliza doar două semnale pentru a comunica cu un număr de periferice este modul în care comunicarea de-a lungul autobuzului este manipulată. Fiecare comunicație I2C începe cu o adresă de 7 biți (sau 10 biți) care solicită adresa periferică, restul comunicării fiind destinat recepționării comunicației. Acest lucru permite mai multor dispozitive de pe magistrala I2C să joace rolul dispozitivului master în funcție de necesitățile sistemului. Pentru a preveni coliziunile de comunicare, protocolul I2C include capabilități de arbitraj și detectare a coliziunilor care permit o comunicare netedă de-a lungul magistralei.
Avantaje și limitări
Ca un protocol de comunicare, I2C are multe avantaje care fac ca este o alegere buna pentru multe aplicatii de design embedded. I2C aduce următoarele avantaje:
- I2C necesită doar două linii de semnal
- Ratele flexibile de transmisie de date
- Fiecare dispozitiv din magistrală este adresabil independent
- Dispozitivele au o relație Master / Slave
- I2C este capabil să se ocupe de mai multe comunicări master prin furnizarea de arbitraj și de detectare a coliziunii de comunicare
- Mai multă comunicare decât SPI
Cu toate aceste avantaje, I2C are, de asemenea, câteva limitări care ar putea fi necesare pentru a fi proiectate în jur. Cele mai importante limitări ale I2C includ:
- Deoarece sunt disponibile numai 7 biți (sau 10 biți) pentru adresarea dispozitivului, dispozitivele din aceeași magistrală pot partaja aceeași adresă. Unele dispozitive sunt capabile să configureze ultimii biti ai adresei, dar acest lucru impune încă o limitare a dispozitivelor pe aceeași magistrală.
- Există doar câteva viteze limitate de comunicare și multe dispozitive nu acceptă transmisia la viteze mai mari. Sprijinul parțial pentru fiecare viteză de pe magistrală este necesar pentru a împiedica dispozitivele mai lent să prindă transmisii parțiale care vor duce la erori operaționale.
- Natura comună a magistralei I2C poate duce la întreruperea întregii magistrale atunci când un singur dispozitiv din autobuz nu mai funcționează. Ciclul de alimentare cu autobuzul poate fi folosit pentru a reporni autobuzul și pentru a restabili funcționarea corectă.
- Deoarece dispozitivele își pot seta viteza de comunicație, dispozitivele de operare mai lent pot întârzia funcționarea dispozitivelor cu viteză mai mare.
- I2C atrage mai multă putere decât alte magistrale de comunicație serială datorită topologiei deschise a scurgerii liniilor de comunicații.
- Limitările autobuzului I2C limitează în mod obișnuit numărul de dispozitive pe o magistrală la aproximativ o duzină de dispozitive.
Aplicații
Autobuzul I2C este o opțiune excelentă pentru aplicații care necesită costuri reduse și o punere în aplicare mai degrabă decât viteză mare. De exemplu, citirea unor IC-uri de memorie, accesarea DAC-urilor și a ADC-urilor, citirea senzorilor, transmiterea și controlul acțiunilor direcționate de către utilizator, citirea senzorilor hardware și comunicarea cu mai multe microcontrolere sunt utilizări comune ale protocolului de comunicație I2C.