Professional Documents
Culture Documents
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
mControlador 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).
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
– Los bits de datos van por SDA
– Por cada bit de información es necesario un pulso de SCL
– Los datos sólo pueden cambiar cuando SCL está a nivel bajo
Trasferencia de datos:
.
Tras cada bloque debe recibirse una señal
de reconocimiento.
• 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.
• 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)
Multi-Master Mas de un master puede controlar el bus al mismo tiempo sin corrupción de los 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
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.
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
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
Reconocimiento (Acknowledge) :
Transferencia completa
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
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.
Terminación de Bus
El bus I2C
Ejemplo de una configuración del bus I2C usando dos 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.
As long as the two MCU's monitor what is going on on the bus (start and stop) and as
long as they are aware that a transaction is going on because the last issued
command was not a STOP, there is no problem.
Let's assume one of the MCU's missed the START condition and still thinks the bus is
idle, or it just came out of reset and wants to start talking on the bus which could very
well happen in a real-life scenario. This could lead to problems.
M.C. Carlos E. Canto Quintal
Configuración Multi-Maestro
Protocolo multimaestro
– Con dos maestros en el bus existe posibilidad de conflicto
LECTOR DE
SMARTCARDS