I2C es un protocolo de comunicación serie diseñado por Philips que se utiliza esencialmente entre dispositivos que pertenecen al mismo circuito, por ejemplo, sensores con un microcontrolador.
Características:
- Velocidad standard de 100Kbit. Se puede cambiar al modo de alta velocidad (400Kbit/s)
- Configuración maestro/esclavo. La direccion del esclavo se configura con software
- Solo se necesitan dos lineas:
- SDA (Serial Data Line): Linea de datos.
- SCL/CLK (Serial Clock Line): Linea de reloj, será el que marque el tiempo de RW (Lectura/Escritura)
- Los comunicación siempre tiene la estructura siguiente:
- Transmisor: Byte de datos (8 Bits)
- Receptor: Bit llamado ACK de confirmación.
La conexion SDA y SCL van a su pin correspondiente en cada dispositivo, de manera que todos quedan en paralelo.
Las lineas SDA y SCL estan independientemente conectadas a dos resistores Pull-Up que se encargaran de que el valor logico siempre sea alto a no ser que un dispositivo lo ponga a valor lógico bajo.
¿Qué tipo de comunicación es?
Es una comunicación de tipo half duplex. Comunicación bidireccional por la misma linea pero no simultáneamente bidireccional.
La estructura de la comunicación básica es la siguiente:
- START condition (Master)
- 7 Bits de direccion de esclavo (Master)
- 1 Bit de RW, 0 es Leer y 1 Escribir. (Master)
- 1 Bit de Acknowledge (Slave)
- Byte de dirección de memoria (Master)
- 1 Bit de Acknowledge (Slave)
- Byte de datos (Master/Slave (Escritura/Lectura))
- 1 Bit de Acknowledge (Slave/Master (Escritura/Lectura))
- STOP condition (Master)
Fuente:http://www.quadruino.com/guia-2/sensores/protocolo-i2c-twi