Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microcontroladores
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
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
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
El bus I2C
Microcontroladores
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
Trasferencia de datos:
Los datos y direcciones que se transmiten por SDA son de 8 bits.
.
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
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
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.
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
Arbitraje
Sincronizacin
Procedimiento para sincronizar las seales del reloj de dos o mas dispositivos
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.
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.
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
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.
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
El bus I2C
Microcontroladores
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
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
El bus I2C
Microcontroladores
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 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
El bus I2C
Microcontroladores
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.
El bus I2C
Microcontroladores
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
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
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
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
El Bus I2C
Microcontroladores
El bus I2C
Ejemplo de una configuracin del bus I2C usando dos microcontroladores
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.
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
Existe otro maestro utilizando el bus Deja de transmitir esperando que la lnea quede libre (condicin de STOP)
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
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
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores
El bus I2C
Microcontroladores