Protocolo i2c
El protocolo I2C es un estándar que se utiliza para establecer comunicación entre microcontroladores, memorias y otros dispositivos, su principal ventaja está en que requiere de dos líneas de señal. Su velocidad es de unos 100 Kbits por segundo, aunque hay casos especiales en los que el reloj llega hasta los 3,4 MHz. Sus dos líneas de señal son: SCL (System Clock) es la línea de los pulsos de reloj que sincronizan el sistema y SDA (System Data) es la línea por la que se mueven los datos entre los dispositivos.
Las líneas SDA y SCL son de colector abierto, pero asociadas a un transistor de efecto de campo (o FET). Se deben polarizar en estado alto (conectando a la alimentación por medio de resistores "pull-up") lo que define una estructura de bus que permite conectar en paralelo múltiples entradas y salidas.
Los dispositivos conectados al bus I²C tienen una dirección única para cada uno. También pueden ser maestros o esclavos. El dispositivo maestro inicia la transferencia de datos y además genera la señal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo, esta característica se la pueden ir pasando los dispositivos que tengan esa capacidad. Esta característica hace que al bus I²C se le denomine bus multimaestro.
El dispositivo maestro suele ser el microcontrolador y los demás dispositivos conectados después de este son los esclavos, por lo general se pueden conectar entre 1 y 10 dispositivos esclavos, y lo interesante es que cada esclavo tiene una unica dirección (llamada slave adress) por lo tanto con dicha dirección se puede reconocer que dispositivo se esta manejando. En teoría hay un poco más de 112 diferentes direcciones disponibles.
¿Porque usar el bus I2C?
VENTAJAS
- Mucho de los semiconductores manufacturados son de bajo costo y tiene la compatibilidad del bus I2C, memorias EEPROMs, Relojes de Tiempo real, ADCs, DACs, Controladores de motores PWM, potenciometros digitales, sensores digitales de temperatura, etc.
- Mucho de estos circuitos integrados son de 8 pines, lo que hace más pequeño el circuito.
- Se pueden conectar muchos dispositivos esclavos solamente usando 2 pines del microcontrolador, lo cual es muy eficiente.
- El diseño del bus es muy simple, simplemente usa 2 lineas y 2 resistencias.
DESVENTAJAS
- En si el protocolo de comunicaciones del bus I2C es un poco complicado. Aunque al utilizar PICAXE debido al lenguaje de programación no es tan dificil programarlo.
- Cada circuito integrado esclavo tiene parametros unicos como por ejemplo la direccion (slave adress) por lo tanto tendrás que tener la hoja de datos a la mano. Aunque realmente si vas a usar un dispositivo esclavo tienes que saber que es y para que te servira.
En Resumen:
- Las líneas SDA y SCL transportan información entre los dispositivos conectados al bus.
- Cada dispositivo es reconocido por su código (dirección) y puede operar como transmisor o receptor de datos.
- 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.
Si desean conocer un poco más sobre el bus I2C y el protocolo de transmisión pueden visitar los siguientes enlaces que utilice como referencia: Wikipedia, Comunidad Electrónicos, Robots Argentina.