Desenvolvido por Philips nos anos 80, I2C converteuse nun dos protocolos de comunicación serie máis comúns en electrónica. I2C permite a comunicación entre compoñentes electrónicos ou IC a IC, se os compoñentes están na mesma PCB ou se conectan a través dun cable. A característica principal de I2C é a capacidade de dispoñer dunha gran cantidade de compoñentes nun só bus de comunicación con só dous fíos que fan perfecto o I2C para aplicacións que esixen sinxeleza e baixo custo por velocidade.
Descrición xeral do protocolo I2C
I2C é un protocolo de comunicación en serie que só require dúas liñas de sinal deseñadas para a comunicación entre chip nun PCB. I2C foi deseñado orixinalmente para a comunicación de 100 kbps pero os modos de transmisión de datos máis rápidos foron desenvolvidos ao longo dos anos para alcanzar velocidades de ata 3.4Mbit. O protocolo I2C foi establecido como un estándar oficial, que proporciona unha boa compatibilidade entre as implementacións de I2C e unha boa compatibilidade con versións anteriores.
Sinais I2C
O protocolo I2C usa só dúas liñas de sinal bidireccionales para comunicarse con todos os dispositivos do bus I2C. Os dous sinais utilizados son:
- Liña de datos en serie (SDL)
- Reloj de datos en serie (SDC)
A razón pola cal I2C pode usar só dous sinais para comunicarse con varios periféricos é a maneira de manexar a comunicación ao longo do autobús. Cada comunicación I2C comeza cunha dirección de 7 bits (ou 10 bits) que chama a dirección do periférico, o resto da comunicación está destinada a recibir a comunicación. Isto permite que varios dispositivos no bus I2C xoguen o papel do dispositivo mestre segundo as necesidades do sistema dictar. Para evitar colisións de comunicación, o protocolo I2C inclúe capacidades de detección de arbitraxe e colisión que permiten unha comunicación sinxela ao longo do bus.
Vantaxes e limitacións
Como protocolo de comunicación, I2C ten moitas vantaxes que facer é unha boa opción para moitas aplicacións de deseño incorporadas. I2C presenta as seguintes vantaxes:
- I2C só require dúas liñas de sinal
- Taxas de transmisión de datos flexibles
- Cada dispositivo no autobús é direccionable de forma independente
- Os dispositivos teñen unha simple relación Master / Slave
- I2C é capaz de manexar múltiples comunicacións mestra proporcionando arbitraxe e detección de colisión de comunicacións
- Comunicación de distancia máis longa que SPI
Con todas estas vantaxes, I2C tamén ten algunhas limitacións que poden necesitar ser deseñadas ao redor. As limitacións máis importantes de I2C inclúen:
- Dado que só están dispoñibles 7 bits (ou 10 bits) para o enderezo do dispositivo, os dispositivos do mesmo bus poden compartir o mesmo enderezo. Algúns dispositivos son capaces de configurar os últimos poucos bits da dirección, pero isto aínda impón unha limitación de dispositivos no mesmo bus.
- Só están dispoñibles algunhas velocidades de comunicación limitadas e moitos dispositivos non admiten velocidades de transmisión máis altas. É necesario un soporte parcial para cada velocidade no bus para evitar que os dispositivos máis lentos poidan recibir transmisións parciais que provocan fallas operacionais.
- A natureza compartida do bus I2C pode ocasionar que todo o autobús colgase cando un único dispositivo no bus deixe de funcionar. Poderá empurrar a enerxía ao bus para reiniciar o bus e restaurar o funcionamento axeitado.
- Dado que os dispositivos poden configurar a súa velocidade de comunicación, os dispositivos operativos máis lentos poden atrasar a operación de dispositivos de velocidade máis rápida.
- I2C obtén máis potencia que outros autobuses de comunicación en serie debido á topoloxía de drenaxe aberta das liñas de comunicación.
- As limitacións do bus I2C normalmente limitan o número de dispositivos nun bus a unha ducia de dispositivos.
Aplicacións
O bus I2C é unha excelente opción para aplicacións que requiren baixo custo e unha implementación sinxela e non de alta velocidade. Por exemplo, a lectura de certos CI de memoria, o acceso a DAC e ADC, a lectura de sensores , a transmisión e control de accións dirixidas polo usuario, a lectura de sensores de hardware e a comunicación con múltiples microcontroladores son usos comúns do protocolo de comunicación I2C.