EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

39
EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal

Transcript of EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Page 1: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

EL BUS INTER-INTEGRATED CIRCUITS I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

EL BUS I2CEL BUS I2CEL BUS I2CEL BUS I2Cbull Para simplificar la interconexioacuten de dispositivos al microprocesador Philips

desarrolloacute un sencillo bus bidireccional basado en dos hilos por el que se trasmiten los datos viacutea serie y lo llamoacute El Bus I2C

bull EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80rsquos Su propoacutesito original fue el de proporcionar una manera faacutecil de conectar un CPU a los chips perifeacutericos en un equipo de TV

EL PROBLEMA A RESOLVEREL PROBLEMA A RESOLVERbull Los dispositivos perifeacutericos en sistemas embebidos se conectan al

Controlador como dispositivos de ES mapeados en memoria usando las liacuteneas paralelas del bus de direccioacuten y de datos Esto produce una gran cantidad de pistas en el PCB para enrutar las liacuteneas de direcciones y de datos sin mencionar un nuacutemero de decodificadores de direcciones y loacutegica adicional para conectar todo

bull Muchas liacuteneas de control implican que el sistema sea maacutes susceptible a perturbaciones por Interferencia Electromagneacutetica (EMI) y Descarga Electrostaacutetica (ESD)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los dispositivos conectados al busdispositivos conectados al bus

Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a traveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel altotraveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel alto

Los dispositivo puede ser considerado como Mastero (Master) o esclavo (Slave) 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 sentildeal de ClockEl Maestro es el dispositivo que inicia la transferencia en el bus y genera la sentildeal de Clock

El Slave (esclavo) es el dispositivo direccionadoEl Slave (esclavo) es el dispositivo direccionado

Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Maestro Maestro Maestro Maestro

Esclavo1Esclavo1Esclavo1Esclavo1 Esclavo2Esclavo2Esclavo2Esclavo2 Esclavo3Esclavo3Esclavo3Esclavo3

SDASDA

SCLSCL

Transmisioacuten de bitsTransmisioacuten de bits

ndash Los bits de datos van por SDAndash Por cada bit de informacioacuten es necesario un pulso de SCLndash Los datos soacutelo pueden cambiar cuando SCL estaacute a nivel bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Los datos transitan en la bajada del relojbull El dato es recibido en el borde de bajada del relojbull El bit maacutes significativo se enviacutea primerobull El nodo que recibe debe manejar un acknowledge (bajo en SDA)

despueacutes de completado el bytebull El nodo maestro siempre genera el reloj

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 2: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

EL BUS I2CEL BUS I2CEL BUS I2CEL BUS I2Cbull Para simplificar la interconexioacuten de dispositivos al microprocesador Philips

desarrolloacute un sencillo bus bidireccional basado en dos hilos por el que se trasmiten los datos viacutea serie y lo llamoacute El Bus I2C

bull EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al principio de los 80rsquos Su propoacutesito original fue el de proporcionar una manera faacutecil de conectar un CPU a los chips perifeacutericos en un equipo de TV

EL PROBLEMA A RESOLVEREL PROBLEMA A RESOLVERbull Los dispositivos perifeacutericos en sistemas embebidos se conectan al

Controlador como dispositivos de ES mapeados en memoria usando las liacuteneas paralelas del bus de direccioacuten y de datos Esto produce una gran cantidad de pistas en el PCB para enrutar las liacuteneas de direcciones y de datos sin mencionar un nuacutemero de decodificadores de direcciones y loacutegica adicional para conectar todo

bull Muchas liacuteneas de control implican que el sistema sea maacutes susceptible a perturbaciones por Interferencia Electromagneacutetica (EMI) y Descarga Electrostaacutetica (ESD)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los dispositivos conectados al busdispositivos conectados al bus

Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a traveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel altotraveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel alto

Los dispositivo puede ser considerado como Mastero (Master) o esclavo (Slave) 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 sentildeal de ClockEl Maestro es el dispositivo que inicia la transferencia en el bus y genera la sentildeal de Clock

El Slave (esclavo) es el dispositivo direccionadoEl Slave (esclavo) es el dispositivo direccionado

Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Maestro Maestro Maestro Maestro

Esclavo1Esclavo1Esclavo1Esclavo1 Esclavo2Esclavo2Esclavo2Esclavo2 Esclavo3Esclavo3Esclavo3Esclavo3

SDASDA

SCLSCL

Transmisioacuten de bitsTransmisioacuten de bits

ndash Los bits de datos van por SDAndash Por cada bit de informacioacuten es necesario un pulso de SCLndash Los datos soacutelo pueden cambiar cuando SCL estaacute a nivel bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Los datos transitan en la bajada del relojbull El dato es recibido en el borde de bajada del relojbull El bit maacutes significativo se enviacutea primerobull El nodo que recibe debe manejar un acknowledge (bajo en SDA)

despueacutes de completado el bytebull El nodo maestro siempre genera el reloj

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 3: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Las caracteriacutesticas maacutes importantes del bus I2C son

Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de Comunicacioacuten serial utilizando un conductor para manejar el timming (SCL) (pulsos de reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los reloj) y otro para intercambiar datos (SDA) que transportan informacioacuten entre los dispositivos conectados al busdispositivos conectados al bus

Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a Las liacuteneas SDA (Serial Data) y SCL (Serial Clock) etaacuten conectadas a la fuente de alimentacioacuten a traveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel altotraveacutes de las resistencias de pull-up Cuando el bus estaacute libre ambas liacuteneas estaacuten en nivel alto

Los dispositivo puede ser considerado como Mastero (Master) o esclavo (Slave) 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 sentildeal de ClockEl Maestro es el dispositivo que inicia la transferencia en el bus y genera la sentildeal de Clock

El Slave (esclavo) es el dispositivo direccionadoEl Slave (esclavo) es el dispositivo direccionado

Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Maestro Maestro Maestro Maestro

Esclavo1Esclavo1Esclavo1Esclavo1 Esclavo2Esclavo2Esclavo2Esclavo2 Esclavo3Esclavo3Esclavo3Esclavo3

SDASDA

SCLSCL

Transmisioacuten de bitsTransmisioacuten de bits

ndash Los bits de datos van por SDAndash Por cada bit de informacioacuten es necesario un pulso de SCLndash Los datos soacutelo pueden cambiar cuando SCL estaacute a nivel bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Los datos transitan en la bajada del relojbull El dato es recibido en el borde de bajada del relojbull El bit maacutes significativo se enviacutea primerobull El nodo que recibe debe manejar un acknowledge (bajo en SDA)

despueacutes de completado el bytebull El nodo maestro siempre genera el reloj

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 4: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Transmisioacuten de bitsTransmisioacuten de bits

ndash Los bits de datos van por SDAndash Por cada bit de informacioacuten es necesario un pulso de SCLndash Los datos soacutelo pueden cambiar cuando SCL estaacute a nivel bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Los datos transitan en la bajada del relojbull El dato es recibido en el borde de bajada del relojbull El bit maacutes significativo se enviacutea primerobull El nodo que recibe debe manejar un acknowledge (bajo en SDA)

despueacutes de completado el bytebull El nodo maestro siempre genera el reloj

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 5: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

bull Los datos transitan en la bajada del relojbull El dato es recibido en el borde de bajada del relojbull El bit maacutes significativo se enviacutea primerobull El nodo que recibe debe manejar un acknowledge (bajo en SDA)

despueacutes de completado el bytebull El nodo maestro siempre genera el reloj

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 6: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un Cada dispositivo es reconocido por una uacutenica direccioacuten (si es un microcontrolador LCD memoria o teclado) y cualquiera puede operar como microcontrolador LCD memoria o teclado) y cualquiera puede operar como transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo transmisor o receptor de datos dependiendo de la funcioacuten del dispositivo

Un display es solo un receptor de datos mientras que una memoria recibe y Un display es solo un receptor de datos mientras que una memoria recibe y transmite datos transmite datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 7: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Trasferencia de datos

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

Tras cada bloque debe recibirse una sentildeal Tras cada bloque debe recibirse una sentildeal de reconocimientode reconocimiento

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 8: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

La cantidad de dispositivos que se pueden conectar al La cantidad de dispositivos que se pueden conectar al bus estaacute limitada solamente por la maacutexima capacidad bus estaacute limitada solamente por la maacutexima capacidad permitida de 400 pFpermitida de 400 pF

El bus permite la conexioacuten de varios Masters ya que El bus permite la conexioacuten de varios Masters ya que incluye un detector de colisiones incluye un detector de colisiones

El protocolo de transferencia de datos y direcciones El protocolo de transferencia de datos y direcciones posibilita disentildear sistemas completamente definidos por posibilita disentildear sistemas completamente definidos por software software

El bus I2C

Las caracteriacutesticas maacutes importantes del bus I2C son

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 9: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

bull La especificacioacuten original o modo de estandar fue para La especificacioacuten original o modo de estandar fue para transferencia de datos hasta 100 Kbpstransferencia de datos hasta 100 Kbps

bull El bus serial I2C ha sido extendido para soportar El bus serial I2C ha sido extendido para soportar velocidades de hasta 34 Mbitss Combinado con una velocidades de hasta 34 Mbitss Combinado con una funcioacuten de desplazamiento del nivel de voltaje en modo funcioacuten de desplazamiento del nivel de voltaje en modo High-speed (Hs-mode) ofrece una solucioacuten ideal para High-speed (Hs-mode) ofrece una solucioacuten ideal para los sistemas de tecnologiacutea mezclada donde las altas los sistemas de tecnologiacutea mezclada donde las altas velocidades y la variedad de voltajes (5 V 3 V o menor) velocidades y la variedad de voltajes (5 V 3 V o menor) son comuacutenmente usadosson comuacutenmente usados

bull El reloj determina la velocidad de transmisioacuten de los

datos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 10: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Los modos de transferencia de datos del bus Los modos de transferencia de datos del bus I2C I2C

ndash Modo Estaacutendar (S-mode) aproximadamente a 100 Modo Estaacutendar (S-mode) aproximadamente a 100 kBitsSeg kBitsSeg

ndash Modo Raacutepido (F-mode) aproximadamente a Modo Raacutepido (F-mode) aproximadamente a 400kbitsSeg 400kbitsSeg

ndash Modo Alta velocidad (Hs-mode) mas de 34 Modo Alta velocidad (Hs-mode) mas de 34 MbitsSegMbitsSeg

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Las caracteriacutesticas maacutes importantes del bus I2C son

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 11: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

bull Maestro (Master)Maestro (Master) Dispositivo que determina la temporizacioacuten y la direccioacuten del traacutefico de datos en el bus Es el uacutenico que aplica los pulsos de reloj en la liacutenea SCL Cuando se conectan varios dispositivos maestros a un mismo bus la configuracioacuten obtenida se denomina multi-maestro

bull Esclavo (Slave)Esclavo (Slave) Cualquier dispositivo conectado al bus incapaz de generar pulsos de reloj Reciben sentildeales de comando y de reloj proveniente del dispositivo maestro

bull Bus Desocupado (Bus Free)Bus Desocupado (Bus Free) Estado en el cual ambas liacuteneas (SDA y SCL) estaacuten inactivas presentando un estado loacutegico alto Unicamente en este momento es cuando un dispositivo maestro puede comenzar a hacer uso del bus

bull Comienzo (Start)Comienzo (Start) Sucede cuando un dispositivo maestro hace ocupacioacuten del bus generando esta condicioacuten La liacutenea de datos (SDA) toma un estado bajo mientras que la liacutenea de reloj (SCL) permanece alta

bull Parada (Stop)Parada (Stop) Un dispositivo maestro puede generar esta condicioacuten dejando libre el bus La liacutenea de datos toma un estado loacutegico alto mientras que la de reloj permanece tambieacuten en ese estado

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 12: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

bull Dato Vaacutelido (Valid DataDato Vaacutelido (Valid Data) Sucede cuando un dato presente en la liacutenea SDA es estable mientras la liacutenea SCL estaacute a nivel loacutegico alto

bull Formato de Datos (Data Format)Formato de Datos (Data Format) La transmisioacuten de datos a traveacutes de este bus consta de 8 bits de datos (oacute 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 ingleacutes Acknowledge) Esto se logra situando la liacutenea de datos a un nivel loacutegico bajo mientras transcurre el noveno pulso de reloj

bull Direccioacuten (Address)Direccioacuten (Address) Cada dispositivo disentildeado para funcionar en este bus dispone de su propia y uacutenica direccioacuten de acceso que viene pre-establecida por el fabricante Hay dispositivos que permiten establecer externamente parte de la direccioacuten de acceso Esto permite que una serie del mismo tipo de dispositivos se puedan conectar en un mismo bus sin problemas de identificacioacuten La direccioacuten 00 es la denominada de acceso general por la cual responden todos los dispositivos conectados al bus

bull LecturaEscritura (Bit RW)LecturaEscritura (Bit RW) Cada dispositivo dispone de una direccioacuten de 7 bits El octavo bit (el menos significativo oacute LSB) enviado durante la operacioacuten de direccionamiento corresponde al bit que indica el tipo de operacioacuten a realizar Si este bit es alto el dispositivo maestro lee informacioacuten proveniente de un dispositivo esclavo En cambio si este bit fuese bajo el dispositivo maestro escribe informacioacuten en un dispositivo esclavo

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Definiciones o teacuterminos utilizados en relacioacuten con las funciones del bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 13: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Terminologiacutea baacutesica del Bus I2C

Teacuterminos Descripcioacuten

Transmisor El dispositivo que enviacutea datos al Bus

Receptor El dispositivo que recibe datos desde el Bus

Master (Maestro)

El dispositivo que inicia una transferencia genera las sentildeales del reloj y termina un enviacuteo de datos

Slave (Esclavo)

El dispositivo direccionado por un master

Multi-MasterMas de un master puede controlar el bus al mismo tiempo sin corrupcioacuten de los mensajes

ArbitrajeProcedimiento que asegura que si uno o mas master simultaacuteneamente deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente no es deteriorado

Sincronizacioacuten Procedimiento para sincronizar las sentildeales del reloj de dos o mas dispositivos

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 14: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

bull Tanto Philips como como otros fabricantes de dispositivos Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C disponen de una amplia gama de circuitos compatibles con I2C disponen de una amplia gama de circuitos integrados incluyendo memorias RAM y EEPROM integrados incluyendo memorias RAM y EEPROM microcontroladores puertos de ES codificadores DTMF microcontroladores puertos de ES codificadores DTMF tranceptores IR conversores AD y DA relojes de tiempo real tranceptores IR conversores AD y DA relojes de tiempo real calendarios etccalendarios etc

bull Dado que no siempre se requiere alta velocidad de transferencia de Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es ideal para sistemas donde es necesario manejar datos este bus es ideal para sistemas donde es necesario manejar informacioacuten entre muchos dispositivos y al mismo tiempo se informacioacuten entre muchos dispositivos y al mismo tiempo se requiere poco espacio y liacuteneas de circuito impreso Por ello es requiere poco espacio y liacuteneas de circuito impreso Por ello es comuacuten ver dispositivos I2C en video grabadoras sistemas de comuacuten ver dispositivos I2C en video grabadoras sistemas de seguridad electroacutenica automotriz televisores equipos de sonido y seguridad electroacutenica automotriz televisores equipos de sonido y muchas otras aplicaciones maacutesmuchas otras aplicaciones maacutes

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 15: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

bull Incluso y gracias a que el protocolo es lo suficientemente simple Incluso y gracias a que el protocolo es lo suficientemente simple usualmente se ven dispositivos I2C insertados en sistemas usualmente se ven dispositivos I2C insertados en sistemas microcontrolados que no fueron disentildeados con puertos I2C siendo microcontrolados que no fueron disentildeados con puertos I2C siendo el protocolo generado por el firmwareel protocolo generado por el firmware

bull Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar Tambieacuten hay dispositivos de adaptacioacuten que permiten conectar buses originalmente paralelos a sistemas I2C Tal es el caso del buses originalmente paralelos a sistemas I2C Tal es el caso del chip PCD 8584 de Philips el cual incorpora en el chip todo lo chip PCD 8584 de Philips el cual incorpora en el chip todo lo necesario para efectuar dicha tareanecesario para efectuar dicha tarea

bull Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los Hay ademaacutes circuitos integrados cuya uacutenica misioacuten es adaptar los niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y niveles presentes en el bus I2C y TTL permitiendo resolver faacutecil y raacutepidamente la interconexioacuten de dispositivos de dicha familia con el raacutepidamente la interconexioacuten de dispositivos de dicha familia con el I2CI2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Respaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo TecnoloacutegicoRespaldo Tecnoloacutegico

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 16: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

El protocolo del Bus I2CEl protocolo del Bus I2C

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 17: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

Formato del Mensajebull Un protocolo orientado a BIT

bull Handshaking

bull Bidireccional

El bus I2C

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 18: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Maestro enviacutea datos a un esclavoMaestro enviacutea datos a un esclavo

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 19: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Transferencia de datosTransferencia de datosEl Maestro genera la condicioacuten de StartEl Maestro genera la condicioacuten de Start

Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida Cada palabra puesta en el bus SDA debe tener 8 bits la primera palabra transferida contiene la direccioacuten del Esclavocontiene la direccioacuten del Esclavo seleccionadoseleccionado

Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del Tras el enviacuteo del start o inicio en los siguientes 7 bits se codifica la direccioacuten del dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)dispositivo Y el octavo bit indica si se hace lectura(1) o escritura(0)

Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como Despueacutes de cada 8 bits el master debe esperar una sentildeal de reconocimiento como respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por respuesta por parte del esclavo lee el estado de la liacutenea SDA si vale 0 (impuesto por el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito el esclavo) el proceso de transferencia continuacutea Si vale 1 indica que el circuito direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop direccionado no valida la comunicacioacuten entonces el Maestro genera un bit de stop para liberar el bus I2Cpara liberar el bus I2C

Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante Este acuse de recibo se denomina ACK (acknowledge) y es una parte importante del protocolo I2Cdel protocolo I2C

Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus Al final de la transmisioacuten el Maestro genera la condicioacuten de Stop y libera el bus I2C las liacuteneas SDA y SCL pasan a estado altoI2C las liacuteneas SDA y SCL pasan a estado alto

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 20: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

El bus I2C

Inicio de transmisioacutenndash La transmisioacuten la inicia el maestrondash Flanco de bajada en SDA con SCL a nivel altondash Cuando nadie accede al bus hay un nivel alto en SCL y SDA

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 21: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Condiciones de START y STOPCondiciones de START y STOP

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten Una vez finalizada la comunicacioacuten se debe informar de esta situacioacuten (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en (condicioacuten de Stop) La liacutenea SDA pasa a nivel alto mientras SCL permanece en estado altoestado alto

STARTSTARTla liacutenea SDA cae a cero la liacutenea SDA cae a cero mientras SCL permanece mientras SCL permanece en nivel alto A partir de en nivel alto A partir de este momento comienza la este momento comienza la transferencia de datostransferencia de datos

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 22: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Start y StopStart y Stop

bull Start ndashSDA baja cuando el reloj (SCL) es altobull Stop ndash SDA sube cuando SCL es altobull (Normalmente no hay transicioacuten cuando el reloj es alto)

SDA baja antes que SCL SCL alta antes que SDA

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 23: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Enviando a un EsclavoEnviando a un EsclavoEnviando a un EsclavoEnviando a un Esclavo

MC Carlos E Canto Quintal

Microcontroladores El bus I2C

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 24: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Eventos del bus I2C leyendo un Eventos del bus I2C leyendo un Acknowledge de un EsclavoAcknowledge de un Esclavo

bull Cuando se ha transmitido al bus un byte de direccioacuten o de dato eacuteste debe ser ldquo RECONOCIDOrdquo por el o los esclavos

bull En el caso de una direccioacuten Si la direccioacuten concuerda con la propia entonces ese esclavo y solamente ese esclavo enviaraacute un acuse de recibido de la direccioacuten con un ACK Tambieacuten 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 liacutenea SDA inmediatamente despueacutes de la recepcioacuten del octavo bit o en caso de un byte de direccioacuten inmediatamente despueacutes de la evaluacioacuten de su direccioacuten

bull Esto significa que tan pronto como el maestro baja SCL para completar la transmisioacuten del bit (1) SDA seraacute puesto a bajo por el esclavo (2)

bull El maestro ahora emite un pulso de reloj en la liacutenea SCL (3) El esclavo liberaraacute la liacutenea SDA hasta la terminacioacuten de este pulso (4) de reloj

bull

El Bus queda disponible de nuevo para que el maestro continuacutee enviando datos o generar una condicioacuten de STOPEn caso de que un dato vaya a ser escrito al esclavo este ciclo debe completarse antes de que se genere una condicioacuten STOP El esclavo estaraacute bloqueando el bus (la liacutenea SDA es mantenida en bajo por el esclavo) hasta que el maestro haya generado un pulso de reloj en la liacutenea SCL

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 25: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Reconocimiento Reconocimiento (Acknowledge) (Acknowledge) Reconocimiento Reconocimiento (Acknowledge) (Acknowledge)

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 26: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

bull Reconocimiento bull 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 liacutenea SDA (1) durante el pulso de reconocimiento El receptor debe poner a 0 la liacutenea SDA durante el pulso ACK de modo que siga siendo 0 durante el tiempo que el master genera el pulso 1 de ACK

bull Normalmente un receptor cuando ha sido direccionado esta obligado a generar un ACK despueacutes de que cada byte a sido recibido

bull 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 liacutenea SDA a nivel 1 durante el bit ACK El Master entonces puede generar una condicioacuten de STOP abortando la transferencia de datos o repetir la condicioacuten de Inicio enviando una nueva transferencia de datos

bull Si un Esclavo-receptor que esta direccionado no desea recibir mas bytes el master debe detectar la situacioacuten 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 liacutenea SDA a 1 lo que es detectado por el Master el cual genera la condicioacuten de Stop o repite la condicioacuten de Inicio

bull 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 liacutenea SDA generando el master la condicioacuten de Stop o de Inicio

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 27: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Transferencia completa Transferencia completa

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 28: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

RELACIOacuteN ENTRE LOS NIVELES DE SDA Y SCL

bull Todos los maestros deben generar una subida en la liacutenea SCL (2) leer el nivel en SDA (3) y generar una caida en la liacutenea SCL (4)

bull El Esclavo no debe cambiar el dato durante el El Esclavo no debe cambiar el dato durante el tiempo que SCL es alto ( de lo contrario podriacutea tiempo que SCL es alto ( de lo contrario podriacutea generarse una condicioacuten START o STOP generarse una condicioacuten START o STOP imprevista)imprevista)

bull Durante (1) y (5) el esclavo puede cambiar el Durante (1) y (5) el esclavo puede cambiar el estado de la liacutenea SDAestado de la liacutenea SDA

bull En total estaacute secuencia debe ser realizada 8 veces para completar el byte dato

bullLos bytes siempre son transmitidos con el Bit Maacutes Significativo primeroLos bytes siempre son transmitidos con el Bit Maacutes Significativo primero

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 29: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Maestro lee datos de un esclavo

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 30: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Eventos del Bus I2C Recibiendo un Eventos del Bus I2C Recibiendo un byte de un Esclavobyte de un Esclavo

Una vez que el esclavo ha sido direccionado y el esclavo ha reconocido eacutesto el maestro puede recibir un byte del esclavo si el bit RW en la direccioacuten se puso en modo READ ( puesto a lsquo1rsquo)

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 liacutenea SDA Previo al envioacute por la liacutenea SCLde los 8 pulsos de reloj necesarios para el envioacute del byte el maestro libera la liacutenea SDA Ahora el esclavo tomaraacute el control de esta liacutenea La liacutenea se iraacute a alto si se desea transmitir un lsquo1rsquo o si el esclavo desea mandar un lsquo0rsquo se mantiene en bajo

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 31: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Para operar un esclavo sobre el Bus I2C solo son necesarios seis simples coacutedigos suficientes para enviar o recibir informacioacuten ndash Un bit de Inicio ndash 7-bit o 10-bit de direccionamiento ndash Un bit RW que define si el esclavo es transmisor o

receptor ndash Un bit de reconocimiento ndash Mensaje dividido en bytes ndash Un bit de Stop

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 32: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

bullLas liacuteneas SDA y SCL son del tipo drenador abierto similares a las de Las liacuteneas SDA y SCL son del tipo drenador abierto similares a las de colector abierto pero asociadas a un transistor de efecto de campo (oacute colector abierto pero asociadas a un transistor de efecto de campo (oacute FET) FET)

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

Esquema baacutesico de conexiones

El bus I2C

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 33: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Caracteriacutesticas de una conexioacuten en colector abierto

ndash Permite conectar varias fuentes de datos a un mismo hilondash Nivel alto en el bus

ndash Si ninguacuten dispositivo accede al busndash Si ninguacuten dispositivo transmite un cero

ndash Nivel bajo en el busndash Si un dispositivo pone un nivel bajondash Si dos dispositivos escriben a la vez siempre prevalecen los ceros

bull AND cableadandash Si un dispositivo escribe un nivel alto pero lee un cero indica que otro dispositivo estaacute tambieacuten accediendo al b

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 34: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Microcontroladores

MC Carlos E Canto Quintal

Esquema baacutesico de conexiones

El bus I2C

Inconvenientes de la conexioacuten en colector abierto

ndash Las capacidades de la liacutenea se cargan a traveacutes del pull-upndash Se puede solucionar utilizando una carga activa en lugar de un resistor

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 35: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Esquema baacutesico de conexiones

Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten Las dos liacuteneas de comunicacioacuten disponen de niveles loacutegicos altos cuando estaacuten inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es inactivas De entrada el nuacutemero de dispositivos que se puede conectar al bus es ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de ilimitado pero las liacuteneas tienen una especificacioacuten de capacidad de carga maacutexima de 400pF400pF

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 36: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Terminacioacuten de Bus

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 37: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

El bus I2C El bus I2C Microcontroladores El Bus I2C

MC Carlos E Canto Quintal

Ejemplo de una configuracioacuten del bus I2C usando dos microcontroladores

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 38: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

Cuando el MCU1 emite una condicioacuten start e enviaacute una direccioacuten todos los esclavos escucharaacuten ( incluyendo a MCU2 el cual en ese momento es considerado un esclavo tambieacuten) Si la direccioacuten no concuerda con la direccioacuten del CPU2 este dispositivo debe mantenerse de regreso a cualquier actividad hasta que el bus se desocupe de nuevo despueacutes de una condicioacuten stopAs long as the two MCUs 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 problemLets assume one of the MCUs 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

Microcontroladores El bus I2C

MC Carlos E Canto Quintal

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
Page 39: EL BUS INTER-INTEGRATED CIRCUITS I2C Microcontroladores El bus I2C M.C. Carlos E. Canto Quintal.

Protocolo multimaestrondash Con dos maestros en el bus existe posibilidad de conflicto

Arbitracioacuten procedimiento para asegurar que soacutelo un maestro tiene elcontrol del bus en un instantendash Si un maestro estaacute utilizando el bus no puede ser interrumpido por

otrobull Desde START hasta STOP

ndash Si dos maestros intentan comenzar a utilizar el bus a la vezbull Conexioacuten del bus en colector abierto 1048774 prevalecen los cerosConexioacuten del bus en colector abierto 1048774 prevalecen los cerosbull bull A la vez que ponen datos en el bus escuchan la liacuteneaA la vez que ponen datos en el bus escuchan la liacuteneabull bull Si un maestro estaacute intentando enviar un nivel alto y lee un nivel bajoSi un maestro estaacute intentando enviar un nivel alto y lee un nivel bajo

ndash Existe otro maestro utilizando el busndash Deja de transmitir esperando que la liacutenea quede libre (condicioacuten de

STOP)

Configuracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-MaestroConfiguracioacuten Multi-Maestro

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39