Sei sulla pagina 1di 49

El bus I2C

Microcontroladores

EL BUS INTER-INTEGRATED CIRCUITS I2C

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

EL BUS I2C
Para simplificar la interconexin de dispositivos al microprocesador, Philips desarroll un sencillo bus bidireccional basado en dos hilos por el que se trasmiten los datos va serie y lo llam El Bus I2C. EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80s. Su propsito original fue el de proporcionar una manera fcil de conectar un CPU a los chips perifricos en un equipo de TV.

EL PROBLEMA A RESOLVER: Los dispositivos perifricos en sistemas embebidos se conectan al mControlador como dispositivos de E/S mapeados en memoria usando las lneas paralelas del bus de direccin y de datos. Esto produce una gran cantidad de pistas en el PCB para enrutar las lneas de direcciones y de datos, sin mencionar un nmero de decodificadores de direcciones y lgica adicional para conectar todo. Muchas lneas de control implican que el sistema sea ms susceptible a perturbaciones por Interferencia Electromagntica (EMI) y Descarga Electrosttica (ESD).
M.C. Carlos E. Canto Quintal

El Bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:


Comunicacin serial, utilizando un conductor para manejar el timming (SCL) (pulsos de reloj) y otro para intercambiar datos (SDA), que transportan informacin entre los dispositivos conectados al bus.
Las lneas SDA (Serial Data) y SCL (Serial Clock) etn conectadas a la fuente de alimentacin a travs de las resistencias de pull-up. Cuando el bus est libre, ambas lneas estn en nivel alto. Los dispositivo puede ser considerado como Mastero (Master) o esclavo (Slave). El Maestro es el dispositivo que inicia la transferencia en el bus y genera la seal de Clock. El Slave (esclavo) es el dispositivo direccionado.

Maestro

SDA SCL
Esclavo1 Esclavo2 Esclavo3
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Transmisin de bits
Los bits de datos van por SDA Por cada bit de informacin es necesario un pulso de SCL Los datos slo pueden cambiar cuando SCL est a nivel bajo

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Los datos transitan en la bajada del reloj El dato es recibido en el borde de bajada del reloj El bit ms significativo se enva primero El nodo que recibe debe manejar un acknowledge (bajo en SDA) despus de completado el byte El nodo maestro siempre genera el reloj

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:

Cada dispositivo es reconocido por una nica direccin (si es un microcontrolador, LCD, memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos, dependiendo de la funcin del dispositivo. Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:

Trasferencia de datos:
Los datos y direcciones que se transmiten por SDA son de 8 bits.
.

Tras cada bloque debe recibirse una seal


de reconocimiento.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:

La cantidad de dispositivos que se pueden conectar al


bus est limitada, solamente, por la mxima capacidad permitida de 400 pF.

El bus permite la conexin de varios Masters, ya que


incluye un detector de colisiones.

El protocolo de transferencia de datos y direcciones


posibilita disear sistemas completamente definidos por software.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:

La especificacin original, o modo de estandar, fue para transferencia de datos hasta 100 Kbps. El bus serial I2C ha sido extendido para soportar velocidades de hasta 3.4 Mbits/s. Combinado con una funcin de desplazamiento del nivel de voltaje, en modo High-speed (Hs-mode) ofrece una solucin ideal para los sistemas de tecnologa mezclada, donde las altas velocidades y la variedad de voltajes (5 V, 3 V o menor) son comnmente usados. El reloj determina la velocidad de transmisin de los datos.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Las caractersticas ms importantes del bus I2C son:

Los modos de transferencia de datos del bus I2C


Modo Estndar (S-mode) aproximadamente a 100 kBits/Seg. Modo Rpido (F-mode) aproximadamente a 400kbits/Seg. Modo Alta velocidad (Hs-mode) mas de 3,4 Mbits/Seg.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Definiciones o trminos utilizados en relacin con las funciones del bus I2C
Maestro (Master): Dispositivo que determina la temporizacin y la direccin del trfico de datos en el bus. Es el nico que aplica los pulsos de reloj en la lnea SCL. Cuando se conectan varios dispositivos maestros a un mismo bus la configuracin obtenida se denomina "multi-maestro". Esclavo (Slave): Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj. Reciben seales de comando y de reloj proveniente del dispositivo maestro. Bus Desocupado (Bus Free): Estado en el cual ambas lneas (SDA y SCL) estn inactivas, presentando un estado lgico 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 ocupacin del bus, generando esta condicin. La lnea de datos (SDA) toma un estado bajo mientras que la lnea de reloj (SCL) permanece alta.

Parada (Stop): Un dispositivo maestro puede generar esta condicin dejando libre el bus. La lnea de datos toma un estado lgico alto mientras que la de reloj permanece tambin en ese estado.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Definiciones o trminos utilizados en relacin con las funciones del bus I2C
Dato Vlido (Valid Data): Sucede cuando un dato presente en la lnea SDA es estable mientras la lnea SCL est a nivel lgico alto. Formato de Datos (Data Format): La transmisin de datos a travs 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 ingls Acknowledge). Esto se logra situando la lnea de datos a un nivel lgico bajo mientras transcurre el noveno pulso de reloj. Direccin (Address): Cada dispositivo diseado para funcionar en este bus dispone de su propia y nica direccin de acceso, que viene pre-establecida por el fabricante. Hay dispositivos que permiten establecer externamente parte de la direccin de acceso. Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacin. La direccin 00 es la denominada "de acceso general", por la cual responden todos los dispositivos conectados al bus. Lectura/Escritura (Bit R/W): Cada dispositivo dispone de una direccin de 7 bits. El octavo bit (el menos significativo LSB) enviado durante la operacin de direccionamiento corresponde al bit que indica el tipo de operacin a realizar. Si este bit es alto el dispositivo maestro lee informacin proveniente de un dispositivo esclavo. En cambio, si este bit fuese bajo el dispositivo maestro escribe informacin en un dispositivo esclavo.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Terminologa bsica del Bus I2C


Trminos Transmisor Receptor Master (Maestro) Slave (Esclavo) Multi-Master El dispositivo que enva datos al Bus El dispositivo que recibe datos desde el Bus El dispositivo que inicia una transferencia, genera las seales del reloj y termina un envo de datos Descripcin

El dispositivo direccionado por un master


Mas de un master puede controlar el bus al mismo tiempo sin corrupcin de los mensajes Procedimiento que asegura que si uno o mas master simultneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Arbitraje

Sincronizacin

Procedimiento para sincronizar las seales del reloj de dos o mas dispositivos

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Respaldo Tecnolgico:
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
Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar informacin entre muchos dispositivos y, al mismo tiempo, se requiere poco espacio y lneas de circuito impreso. Por ello es comn ver dispositivos I2C en video grabadoras, sistemas de seguridad, electrnica automotriz, televisores, equipos de sonido y muchas otras aplicaciones ms.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Respaldo Tecnolgico:
Incluso, y gracias a que el protocolo es lo suficientemente simple, usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron diseados con puertos I2C, siendo el protocolo generado por el firmware. Tambin hay dispositivos de adaptacin que permiten conectar buses originalmente paralelos a sistemas I2C. Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tarea. Hay, adems, circuitos integrados cuya nica misin es adaptar los niveles presentes en el bus I2C y TTL, permitiendo resolver fcil y rpidamente la interconexin de dispositivos de dicha familia con el I2C.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

El protocolo del Bus I2C

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Formato del Mensaje


Un protocolo orientado a BIT Handshaking Bidireccional

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Maestro enva datos a un esclavo

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Transferencia de datos:
El Maestro genera la condicin de Start. Cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra transferida contiene la direccin del Esclavo seleccionado.

Tras el envo del start o inicio, en los siguientes 7 bits se codifica la direccin del dispositivo. Y el octavo bit indica si se hace lectura(1) o escritura(0).
Despus de cada 8 bits, el master debe esperar una seal de reconocimiento como respuesta por parte del esclavo, lee el estado de la lnea SDA, si vale 0 (impuesto por el esclavo), el proceso de transferencia contina. Si vale 1, indica que el circuito direccionado no valida la comunicacin, entonces, el Maestro genera un bit de stop para liberar el bus I2C. Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2C. Al final de la transmisin, el Maestro genera la condicin de Stop y libera el bus I2C, las lneas SDA y SCL pasan a estado alto.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Inicio de transmisin La transmisin 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

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Condiciones de START y STOP:

START:
la lnea SDA cae a cero mientras SCL permanece en nivel alto. A partir de este momento comienza la transferencia de datos.

Una vez finalizada la comunicacin se debe informar de esta situacin (condicin de Stop). La lnea SDA pasa a nivel alto mientras SCL permanece en estado alto.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Start y Stop
SDA baja antes que SCL

SCL alta antes que SDA

Start SDA baja cuando el reloj (SCL) es alto Stop SDA sube cuando SCL es alto (Normalmente no hay transicin cuando el reloj es alto)
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Enviando a un Esclavo

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Eventos del bus I2C : leyendo un Acknowledge de un Esclavo


Cuando se ha transmitido al bus un byte de direccin o de dato ste debe ser RECONOCIDO por el o los esclavos. En el caso de una direccin: Si la direccin concuerda con la propia entonces ese esclavo y solamente ese esclavo enviar un acuse de recibido de la direccin con un ACK. Tambin se responde con un ACK en el caso de un byte transmitido a un esclavo ya direccionado . El esclavo que va a dar un ACK pone a bajo la lnea SDA inmediatamente despus de la recepcin del octavo bit, o, en caso de un byte de direccin , inmediatamente despus de la El Bus queda disponible de nuevo para que evaluacin de su direccin. el maestro contine enviando datos o Esto significa que tan pronto como el maestro baja generar una condicin de STOP. En caso de que un dato vaya a ser escrito SCL para completar la transmisin del bit (1), SDA ser puesto a bajo por el esclavo (2). al esclavo, este ciclo debe completarse El maestro ahora emite un pulso de reloj en la lnea antes de que se genere una condicin SCL (3) El esclavo liberar la lnea SDA hasta la STOP. El esclavo estar bloqueando el bus terminacin de este pulso (4) de reloj. (la lnea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya
generado un pulso de reloj en la lnea SCL. M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Reconocimiento (Acknowledge) :

M.C. Carlos E. Canto Quintal

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 lnea SDA ("1") durante el pulso de reconocimiento. El receptor debe poner a "0" la lnea 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 despus 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 lnea SDA a nivel "1" durante el bit ACK. El Master entonces puede generar una condicin de STOP abortando la transferencia de datos o repetir la condicin 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 situacin 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 lnea SDA a "1" lo que es detectado por el Master el cual genera la condicin de Stop o repite la condicin 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 lnea SDA generando el master la condicin de Stop o de Inicio.

El bus I2C

Microcontroladores

Transferencia completa

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

RELACIN ENTRE LOS NIVELES DE SDA Y SCL


Todos los maestros deben generar una subida en la lnea SCL (2), leer el nivel en SDA (3) y generar una caida en la lnea SCL (4). El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podra generarse una condicin START o STOP imprevista) .

Durante (1) y (5), el esclavo puede cambiar el estado de la lnea SDA. En total est secuencia debe ser realizada 8 veces para completar el byte dato.

Los bytes siempre son transmitidos con el Bit Ms Significativo primero.

M.C. Carlos E. Canto Quintal

Maestro lee datos de un esclavo

El bus I2C

Microcontroladores

Eventos del Bus I2C : Recibiendo un byte de un Esclavo


Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido sto, el maestro puede recibir un byte del esclavo si el bit R/W en la direccin se puso en modo READ ( puesto a 1)

La sintaxis del protocolo es la misma que cuando se transmite un byte a un esclavo, excepto que ahora no se le permite al maestro tocar la lnea SDA. Previo al envi por la lnea SCL,de los 8 pulsos de reloj necesarios para el envi del byte , el maestro libera la lnea SDA. Ahora el esclavo tomar el control de esta lnea. La lnea se ir a alto si se desea transmitir un 1 o si el esclavo desea mandar un 0, se mantiene en bajo.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples cdigos, suficientes para enviar o recibir informacin.
Un bit de Inicio 7-bit o 10-bit de direccionamiento Un bit R/W que define si el esclavo es transmisor o receptor Un bit de reconocimiento Mensaje dividido en bytes Un bit de Stop
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Esquema bsico de conexiones


Las lneas SDA y SCL son del tipo drenador abierto, similares a las de colector abierto pero asociadas a un transistor de efecto de campo ( FET)..

Se deben poner en estado alto (conectar a la alimentacin por medio de resistores Pull-Up) para construir una estructura de bus tal que se permita conectar en paralelo mltiples entradas y salidas

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Esquema bsico de conexiones


Caractersticas de una conexin en colector abierto Permite conectar varias fuentes de datos a un mismo hilo Nivel alto en el bus Si ningn dispositivo accede al bus Si ningn dispositivo transmite un cero Nivel bajo en el bus Si un dispositivo pone un nivel bajo Si dos dispositivos escriben a la vez siempre prevalecen los ceros AND cableada Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo est tambin accediendo al b

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Esquema bsico de conexiones


Inconvenientes de la conexin en colector abierto Las capacidades de la lnea se cargan a travs del pull-up Se puede solucionar utilizando una carga activa en lugar de un resistor

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Esquema bsico de conexiones

Las dos lneas de comunicacin disponen de niveles lgicos altos cuando estn inactivas. De entrada el nmero de dispositivos que se puede conectar al bus es ilimitado, pero las lneas tienen una especificacin de capacidad de carga mxima de 400pF.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Terminacin de Bus

M.C. Carlos E. Canto Quintal

El Bus I2C

Microcontroladores

El bus I2C
Ejemplo de una configuracin del bus I2C usando dos microcontroladores

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Configuracin Multi-Maestro

Cuando el MCU1 emite una condicin start e envi una direccin, todos los esclavos escucharn ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambin) . Si la direccin no concuerda con la direccin del CPU2, este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despus de una condicin 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

Configuracin Multi-Maestro
Protocolo multimaestro
Con dos maestros en el bus existe posibilidad de conflicto Arbitracin: procedimiento para asegurar que slo un maestro tiene el control del bus en un instante Si un maestro est utilizando el bus no puede ser interrumpido por otro.
Desde START hasta STOP

Si dos maestros intentan comenzar a utilizar el bus a la vez:


Conexin del bus en colector abierto prevalecen los ceros A la vez que ponen datos en el bus, escuchan la lnea. Si un maestro est intentando enviar un nivel alto y lee un nivel bajo

Existe otro maestro utilizando el bus Deja de transmitir esperando que la lnea quede libre (condicin de STOP)

El bus I2C

Microcontroladores

Ejemplo de aplicaciones del Bus I2C

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Ejemplo de aplicaciones del Bus I2C


Conexin de una EEPROM serial y un Reloj de tiempo real, con bus I2C, para su uso en un lector de smartcards
LECTOR DE SMARTCARDS

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Ejemplo de aplicaciones El bus I2C del Bus I2C


Conexin de medidores ultrasnico de distancias a un mC Basic Stamp 2 usando el bus I2C. El mdulo SRF10 es un medidor ultrasnico de distancias miniatura para robots que representa la ultima generacin en sistemas de medidas de distancias por sonar. El sensor es capaz de detectar objetos a una distancia de 6 m con la facilidad de conectarse al microcontrolador mediante un bus I2C, por lo que se pueden conectar cuantos sensores sean necesarios en el mismo bus. Con una alimentacin unica de 5V, solo requiere 15 mA, para funcionar y 3mA mientras esta en reposo.
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Ejemplo de aplicaciones El bus I2C del Bus I2C


Para el programador, el sensor SRF10 se comporta de la misma manera que las EEPROM de las series 24xx, con la excepcin de que la direccin I2C es diferente. La direccin por defecto de fbrica del sensor es 0xE0. El usuario puede cambiar esta direccin 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. Adems de las direcciones anteriores, todos los sonares conectados al bus I2C respondern a la direccin 0 -al ser la direccin de atencin general. Esto significa que escribir un comando de medicin de la distancia para la direccin 0 de I2C (0x00) iniciar las mediciones en todos los sensores al mismo tiempo.

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Ejemplo de aplicaciones del Bus I2C


Esquema del circuito para la conexin de dos sensores ultrasnicos SRF08 al controlador Basic Stamp 2

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

Dispositivos I2C con el PICAXE


Instrucciones en Basic del PICAXE par usar el bus I2C
I2CSLAVE
Sintxis: I2CSLAVE slave, speed, address - Slave es la direccin i2c del esclavo - Speed es la palabra i2cfast (400kHz) o i2cslow (100kHz) a 4Mhz -Address es la palabra i2cbyte o i2cword Funcin: El comando i2cslave es usado para configurar las terminales PICAXE para usar el I2C y para definir el tipo de dispositivo I2C a ser direccionado

WRITEI2C
Sintxis: WRITEI2Clocation,(variable,...) - Location es una variable /constante que especifica la direccin de un byte o palabra - Variable(s) contiene el byte(s) de dato que se va a escribir Funcin: Escribe a la localidad I2C el contenido de la variable(s).

READI2C
Sintxis: READI2C location,(variable,...) - Location es una variable /constante que especifica la direccin de un byte o palabra - Variable(s) recibe el byte(s) leido(s). Funccin: Lee la localidad I2C contenida en la(s) variable(s).
M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

M.C. Carlos E. Canto Quintal

El bus I2C

Microcontroladores

M.C. Carlos E. Canto Quintal

Potrebbero piacerti anche