I2C – Inter Integrated Circuit bus

Reading time: 3 – 5 minutes

Tornant al tema dels busos que poden treballar sobre GPIO aquí teniu un altre bus molt i molt usat en aquest tipus de ports.

Definició

El I2C (“eye-squared-see”) el va inventar Philips cap als anys 80 amb la finalitat de connectar diferents IC (circutis integrats) amb les seves CPUs dintre d’una TV. Bàsicament és un bus pensat per curtes distàncies i poc ampla de banda.

A més I2C és capaç de detectar col·lisions, sincronitzar el rellotge i negociar el master en sistemes on n’hi pugui haver més d’un. El rellotge sempre el genera el master, però els slaves poden mantenir el rellotge parat per generar un estat d’espera.
Sovint el master en un bus I2C és el microcontrolador.

El número màxim de dispositius que es pot connectar en un bus I2C és calcula a partir de la màxima capacitància de la linia (uns 400pF), i el límit d’adreces és de 16k; normalment cada dipositiu té una capacitància d’uns 10pF. Així doncs diposem de 127 adreces disponibles. En principi les adreces de cada IC és assignable pel dissenyador del sistema.

Com funciona

Només es necessiten dos cables per treballar amb I2C, dos cables actius i el terra. Els cables actius són el SDA (Serial Data Line) i el SCL (Serial Clock Line). O sigui, el primer per dades i el segon pel rellotge.

i2c.gif

Només amb aquests dos cables actius en tenim prou per establir comunicacions full-duplex. L’interficie sovint funciona a velocitats baixes, de 100KHz a 400KHz. En un bus I2C, cada IC connectat al bus té una adreça única. Cada dispositiu pot treballar com a receptor i/o transmisor depenent de la seva funcionalitat.

Sobre el tema de l’amplada de banda, escencialment hi ha tres modes de funcionament un estàndard de fins a 100kbps i un de ràpid de fins a 400kpbs. El darrer mode és el High-Speed que pot arribar fins a 3.4Mbps.

Usos

Un dispositiu molt comú que sovint s’usa a través d’un bus I2C són les EEPROMs, també n’hi ha d’altres com els sensors, i els rellotges de temps real. A vegades també s’usen busos I2C només com a línia de senyalització per altres línies de dades, per exemple, en aplicacions multimèdia, on sovint s’usen sintonitzadors RF, codificadors i/o decodificadors de video, processadors d’audio. De fet, el mercat és ple de centenars d’IC que usen el bus I2C com a protocol de comunicacions en els seus busos.

Exemples d’us

Maxim té dintre del seu repositori d’articles tècnics un munt de referències a aplicacions sobre aquest protocol. He trobat molt interessant concretament una aplicació que ens permet controlar una pantalla LCD amb interficie HD44780 (local). Al document s’explica com serialitzar els 11 pins que necessita aquest dispositu per treballar només amb els 2 cables que té el bus I2C.

Un altre ús, jo diria que més que útil, és el que ens permet connectar el bus I2C al port paral·lel del PC. De fet, el circuit que ens ho permet fer és força simple si en voleu més informació: I2C interfacing via PC parallel port.

Fonts