INFO DE ESTA PAGINA
http://www.comunidadelectronicos.com/articulos/i2c.htmLas características más salientes del bus I2C son:
Se necesitan solamente dos líneas, la de datos (SDA) y la de reloj (SCL).
Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediante software. Habiendo permanentemente una relación Master/ Slave entre el micro y los dispositivos conectados
El bus permite la conexión de varios Masters, ya que incluye un detector de colisiones.
El protocolo de transferencia de datos y direcciones posibilita diseñar sistemas completamente definidos por software.
Los datos y direcciones se transmiten con palabras de 8 bits.
Funcionamiento del bus I2C
Como dijimos, las líneas SDA y SCL transportan información entre los dispositivos conectados al bus (ver: Figura 1).
Cada dispositivo es reconocido por su código (dirección) y puede operar como transmisor o receptor de datos.
Además, cada dispositivo puede ser considerado como Master o Slave.
El Master es el dispositivo que inicia la transferencia en el bus y genera la señal de Clock.
El Slave (esclavo) es el dispositivo direccionado.
Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales, conectadas al positivo de la alimentación a través de las resistencias de pull-up. Cuando el bus está libre, ambas líneas están en nivel alto.
La transmisión bidireccional serie (8-bits) de datos puede realizarse a 100Kbits/s en el modo standard o 400 Kbits/s en el modo rápido.
La cantidad de dispositivos que se pueden conectar al bus está limitada, solamente, por la máxima capacidad permitida: 400 pF.
Condiciones de START y STOP:
Antes de que se establezca un intercambio de datos entre el circuito Master y los Esclavos, el Master debe informar el comienzo de la comunicación (condición de Start): la línea SDA cae a cero mientras SCL permanece en nivel alto. A partir de este momento comienza la transferencia de datos. Una vez finalizada la comunicación se debe informar de esta situación (condición de Stop). La línea SDA pasa a nivel alto mientras SCL permanece en estado alto. Ver Figura 2
Transferencia de datos:
El Maestro genera la condición de Start.
Cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra transferida contiene la dirección del Esclavo seleccionado.
Luego el Master lee el estado de la línea SDA, si vale 0 (impuesto por el esclavo), el proceso de transferencia continúa. Si vale 1, indica que el circuito direccionado no valida la comunicación, entonces, el Maestro genera un bit de stop para liberar el bus I2C.
Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2C.
Al final de la transmisión, el Maestro genera la condición de Stop y libera el bus I2C, las líneas SDA y SCL pasan a estado alto.