Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EL BUS I2C
• Para simplificar la interconexión de dispositivos al microprocesador, Philips
desarrolló un sencillo bus bidireccional basado en dos hilos por el que se
trasmiten los datos vía serie y lo llamó El Bus I2C.
• EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80’s.
Su propósito original fue el de proporcionar una manera fácil de conectar un
CPU a los chips periféricos en un equipo de TV.
EL PROBLEMA A RESOLVER:
• Los dispositivos periféricos en sistemas embebidos se conectan al
Controlador como dispositivos de E/S mapeados en memoria usando las
líneas paralelas del bus de dirección y de datos. Esto produce una gran
cantidad de pistas en el PCB para enrutar las líneas de direcciones y de datos,
sin mencionar un número de decodificadores de direcciones y lógica adicional
para conectar todo.
• Muchas líneas de control implican que el sistema sea más susceptible a
perturbaciones por Interferencia Electromagnética (EMI) y Descarga
Electrostática (ESD).
El Bus I2C Microcontroladores
Las líneas SDA (Serial Data) y SCL (Serial Clock) etán conectadas a la fuente de alimentación a
través de las resistencias de pull-up. Cuando el bus está libre, ambas líneas están en nivel alto.
Los dispositivo puede ser considerado como Mastero (Master) o esclavo (Slave).
SDA
Maestro
SCL
Transmisión de bits
Transmisión de bits
• Los datos transitan en la bajada del reloj
• El dato es recibido en el borde de bajada del reloj
• El bit más significativo se envía primero
• El nodo que recibe debe manejar un acknowledge (bajo en SDA) después de
completado el byte
• El nodo maestro siempre genera el reloj
El bus I2C Microcontroladores
Trasferencia de datos:
• Bus Desocupado (Bus Free): Estado en el cual ambas líneas (SDA y SCL) están
inactivas, presentando un estado lógico alto. Unicamente en este momento es
cuando un dispositivo maestro puede comenzar a hacer uso del bus.
• Comienzo (Start): Sucede cuando un dispositivo maestro hace ocupación del bus,
generando esta condición. La línea de datos (SDA) toma un estado bajo mientras
que la línea de reloj (SCL) permanece alta.
• Parada (Stop): Un dispositivo maestro puede generar esta condición dejando libre el
bus. La línea de datos toma un estado lógico alto mientras que la de reloj permanece
también en ese estado.
El bus I2C Microcontroladores
• Formato de Datos (Data Format): La transmisión de datos a través de este bus consta
de 8 bits de datos (ó 1 byte). A cada byte le sigue un noveno pulso de reloj durante el
cual el dispositivo receptor del byte debe generar un pulso de reconocimiento, conocido
como ACK (del inglés Acknowledge). Esto se logra situando la línea de datos a un nivel
lógico bajo mientras transcurre el noveno pulso de reloj.
• Dirección (Address): Cada dispositivo diseñado para funcionar en este bus dispone de
su propia y única dirección de acceso, que viene pre-establecida por el fabricante. Hay
dispositivos que permiten establecer externamente parte de la dirección de acceso. Esto
permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo
bus sin problemas de identificación. La dirección 00 es la denominada "de acceso
general", por la cual responden todos los dispositivos conectados al bus.
Términos Descripción
Transmisor El dispositivo que envía datos al Bus
Receptor El dispositivo que recibe datos desde el Bus
Master El dispositivo que inicia una transferencia, genera las señales del reloj y termina un envío
(Maestro) de datos
Slave
El dispositivo direccionado por un master
(Esclavo)
Mas de un master puede controlar el bus al mismo tiempo sin corrupción de los
Multi-Master
mensajes
Procedimiento que asegura que si uno o mas master simultáneamente deciden controlar
Arbitraje
el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado
Sincronización Procedimiento para sincronizar las señales del reloj de dos o mas dispositivos
El bus I2C Microcontroladores
Respaldo Tecnológico:
• Tanto Philips como como otros fabricantes de dispositivos
compatibles con I2C disponen de una amplia gama de circuitos
integrados, incluyendo memorias RAM y EEPROM,
microcontroladores, puertos de E/S, codificadores DTMF,
tranceptores IR, conversores A/D y D/A, relojes de tiempo real,
calendarios, etc
Respaldo Tecnológico:
• Incluso, y gracias a que el protocolo es lo suficientemente simple,
usualmente se ven dispositivos I2C insertados en sistemas
microcontrolados que no fueron diseñados con puertos I2C, siendo
el protocolo generado por el firmware.
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.
Tras el envío del start o inicio, en los siguientes 7 bits se codifica la dirección del
dispositivo. Y el octavo bit indica si se hace lectura(1) o escritura(0).
Después de cada 8 bits, el master debe esperar una señal de reconocimiento como
respuesta por parte del esclavo, 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.
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.
El bus I2C Microcontroladores
Inicio de transmisión
– La transmisión la inicia el maestro
– Flanco de bajada en SDA con SCL a nivel alto
– Cuando nadie accede al bus hay un nivel alto en SCL y SDA
El bus I2C Microcontroladores
START:
la línea SDA cae a cero
mientras SCL permanece
en nivel alto. A partir de
este momento comienza la
transferencia de datos.
Start y Stop
SDA baja antes que SCL SCL alta antes que SDA
Enviando a un Esclavo
El bus I2C Microcontroladores
Reconocimiento (Acknowledge) :
• Reconocimiento
• El bit de reconocimiento es obligatorio en la transferencia de datos. El pulso de reloj
correspondiente al bit de reconocimiento (ACK) es generado por el Master. El Transmisor
desbloquea la línea SDA ("1") durante el pulso de reconocimiento. El receptor debe poner a "0"
la línea SDA durante el pulso ACK de modo que siga siendo "0" durante el tiempo que el master
genera el pulso "1" de ACK.
• Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK después
de que cada byte a sido recibido.
• Cuando un dispositivo esclavo no genera el bit ACK (porque esta haciendo otra cosa y no puede
atender el Bus) debe mantener el esclavo la línea SDA a nivel "1" durante el bit ACK. El Master
entonces puede generar una condición de STOP abortando la transferencia de datos o repetir la
condición de Inicio enviando una nueva transferencia de datos.
• Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes, el master debe
detectar la situación y no enviar mas bytes. Esto se indica porque el esclavo no genera el bit
ACK en el primer byte que sigue. El esclavo pone la línea SDA a "1" lo que es detectado por el
Master el cual genera la condición de Stop o repite la condición de Inicio.
• Si un Master-receptor esta recibiendo datos de un Esclavo-transmisor debe generar un bit ACK
tras cada byte recibido de transmisor, para finalizar la transferencia de datos no debe generar el
ACK tras el ultimo byte enviado por el esclavo. El esclavo-transmisor debe permitir desbloquear
la línea SDA generando el master la condición de Stop o de Inicio.
El bus I2C Microcontroladores
Transferencia completa
El bus I2C Microcontroladores
•Los bytes siempre son transmitidos con el Bit Más Significativo primero.
primero
Maestro lee datos de un esclavo
El bus I2C Microcontroladores
Se deben poner en
estado alto (conectar a
la alimentación por
medio de resistores
Pull-Up) para construir
una estructura de bus
tal que se permita
conectar en paralelo
múltiples entradas y
salidas
El bus I2C Microcontroladores
Las dos líneas de comunicación disponen de niveles lógicos altos cuando están
inactivas. De entrada el número de dispositivos que se puede conectar al bus es
ilimitado, pero las líneas tienen una especificación de capacidad de carga máxima de
400pF.
El bus I2C Microcontroladores
Terminación de Bus
El Bus I2C Microcontroladores
El Bus I2C
Ejemplo de una configuración del bus I2C usando dos microcontroladores
El bus I2C Microcontroladores
Configuración Multi-Maestro
Cuando el MCU1 emite una condición start e enviá una dirección, todos los esclavos
escucharán ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo
también) . Si la dirección no concuerda con la dirección del CPU2, este dispositivo
debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de
nuevo después de una condición stop.
Configuración Multi-Maestro
Protocolo multimaestro
– Con dos maestros en el bus existe posibilidad de conflicto
LECTOR DE
SMARTCARDS
El bus I2C Microcontroladores
El bus I2C
Ejemplo de aplicaciones del Bus I2C
Para el programador, el sensor SRF10 se comporta de la
misma manera que las EEPROM de las series 24xx, con
la excepción de que la dirección I2C es diferente. La
dirección por defecto de fábrica del sensor es 0xE0. El
usuario puede cambiar esta dirección con 16 direcciones
diferentes: E0, E2, E4, E6, E8, EA, EC, EE, F0, F2, F4,
F6, F8, FA, FC o FE, por lo que es posible utilizar hasta
16 sensores sobre un mismo bus I2C.