El protocolo de comunicaciones I²C es de tipo sincrono y bidireccional, por lo que existirá un dispositivo MAESTRO y otro ESCLAVO. El maestro es quien inicia la comunicación enviando una secuencia especial de inicialización, además genera una señal de reloj para sincronizar los datos entre este y el esclavo.
Las líneas de comunicación son:
SDA Serial Data
SCL Serial Clock
Debido a que la línea SDA es bidireccional debe ser open-collector, por lo que se debe conectar una resistencia pull-up, cuyo valor depende de la velocidad a la cual se transmitirán los datos.
<100Kbps R= 4.7KO
100Kbps R= 2.2KO
400Kbps R= 1K
Durante una comunicación I²C se deben generar ciertas secuencias que controlan el flujo de los datos
Secuencia para escribir en un dispositivo usando I²C
(MAESTRO) ! (ESCLAVO)
---------------------------------------------------------------
START
PERMISO DE ESCRITURA
....................................................... ACK
DIRECCION A ESCRIBIR
....................................................... ACK
DATO
....................................................... ACK
STOP
Secuencia para leer un dispositivo usando I²C
(MAESTRO) ! (ESCLAVO)
---------------------------------------------------------------
START
PERMISO DE ESCRITURA
....................................................... ACK
DIRECCION A LEER
....................................................... ACK
RESTART
....................................................... ACK
PERMISO DE LECTURA
....................................................... DATO
NACK
STOP
Espero que esta informacion le sirva de algo. espero que si.