Monografias.com > Computación > Hardware
Descargar Imprimir Comentar Ver trabajos relacionados

El bus inter-integrated circuits I2C




Enviado por Pablo Turmero



    Monografias.com
    EL BUS I2C Para simplificar la interconexión de
    dispositivos al microprocesador, Philips desarrolló un
    sencillo bus bidireccional basado en dos hilos por el que se
    trasmiten los datos vía serie y lo llamó El Bus
    I2C. EL Bus I2C (Inter- Integrated Circuits) fue desarrollado al
    principio de los 80’s. Su propósito original fue el
    de proporcionar una manera fácil de conectar un CPU a los
    chips periféricos en un equipo de TV. EL PROBLEMA A
    RESOLVER: Los dispositivos periféricos en sistemas
    embebidos se conectan al mControlador como dispositivos de E/S
    mapeados en memoria usando las líneas paralelas del bus de
    dirección y de datos. Esto produce una gran cantidad de
    pistas en el PCB para enrutar las líneas de direcciones y
    de datos, sin mencionar un número de decodificadores de
    direcciones y lógica adicional para conectar todo. Muchas
    líneas de control implican que el sistema sea más
    susceptible a perturbaciones por Interferencia
    Electromagnética (EMI) y Descarga Electrostática
    (ESD).

    Monografias.com
    Las características más importantes del bus I2C
    son:   SubComunicación serial, utilizando un
    conductor para manejar el timming (SCL) (pulsos de reloj) y otro
    para intercambiar datos (SDA), que transportan información
    entre los dispositivos conectados al bus. Las líneas SDA
    (Serial Data) y SCL (Serial Clock) etán conectadas a la
    fuente de alimentación a través de las resistencias
    de pull-up. Cuando el bus está libre, ambas líneas
    están en nivel alto. Los dispositivo puede ser considerado
    como Mastero (Master) o esclavo (Slave). El Maestro es el
    dispositivo que inicia la transferencia en el bus y genera la
    señal de Clock. El Slave (esclavo) es el dispositivo
    direccionado. (Gp:) Maestro (Gp:) Esclavo1 (Gp:) Esclavo2 (Gp:)
    Esclavo3 (Gp:) SDA (Gp:) SCL

    Monografias.com
    Transmisión de bits – Los bits de datos van por SDA
    – Por cada bit de información es necesario un pulso
    de SCL – Los datos sólo pueden cambiar cuando SCL
    está a nivel bajo

    Monografias.com
    Los datos transitan en la bajada del reloj El dato es recibido en
    el borde de bajada del reloj El bit más significativo se
    envía primero El nodo que recibe debe manejar un
    acknowledge (bajo en SDA) después de completado el byte El
    nodo maestro siempre genera el reloj

    Monografias.com
    Cada dispositivo es reconocido por una única
    dirección (si es un microcontrolador, LCD, memoria o
    teclado) y cualquiera puede operar como transmisor o receptor de
    datos, dependiendo de la función del dispositivo. Un
    display es solo un receptor de datos mientras que una memoria
    recibe y transmite datos. Las características más
    importantes del bus I2C son:  

    Monografias.com
    Sub Trasferencia de datos: Los datos y direcciones que se
    transmiten por SDA son de 8 bits. Tras cada bloque debe recibirse
    una señal de reconocimiento. . Las características
    más importantes del bus I2C son:  

    Monografias.com
    La cantidad de dispositivos que se pueden conectar al bus
    está limitada, solamente, por la máxima capacidad
    permitida de 400 pF. El bus permite la conexión de varios
    Masters, ya que incluye un detector de colisiones. El protocolo
    de transferencia de datos y direcciones posibilita diseñar
    sistemas completamente definidos por software. Las
    características más importantes del bus I2C son:
     

    Monografias.com
    La especificación original, o modo de estandar, fue para
    transferencia de datos hasta 100 Kbps. El bus serial I2C ha sido
    extendido para soportar velocidades de hasta 3.4 Mbits/s.
    Combinado con una función de desplazamiento del nivel de
    voltaje, en modo High-speed (Hs-mode) ofrece una solución
    ideal para los sistemas de tecnología mezclada, donde las
    altas velocidades y la variedad de voltajes (5 V, 3 V o menor)
    son comúnmente usados. El reloj determina la velocidad de
    transmisión de los datos. Las características
    más importantes del bus I2C son:  

    Monografias.com
    Los modos de transferencia de datos del bus I2C Modo
    Estándar (S-mode) aproximadamente a 100 kBits/Seg. Modo
    Rápido (F-mode) aproximadamente a 400kbits/Seg. Modo Alta
    velocidad (Hs-mode) mas de 3,4 Mbits/Seg. Las
    características más importantes del bus I2C son:
     

    Monografias.com
    Definiciones o términos utilizados en relación con
    las funciones del bus I2C Maestro (Master): Dispositivo que
    determina la temporización y la dirección del
    tráfico de datos en el bus. Es el único que aplica
    los pulsos de reloj en la línea SCL. Cuando se conectan
    varios dispositivos maestros a un mismo bus la
    configuración obtenida se denomina "multi-maestro".
    Esclavo (Slave): Cualquier dispositivo conectado al bus incapaz
    de generar pulsos de reloj. Reciben señales de comando y
    de reloj proveniente del dispositivo maestro. Bus Desocupado (Bus
    Free): Estado en el cual ambas líneas (SDA y SCL)
    están inactivas, presentando un estado lógico alto.
    Unicamente en este momento es cuando un dispositivo maestro puede
    comenzar a hacer uso del bus. Comienzo (Start): Sucede cuando un
    dispositivo maestro hace ocupación del bus, generando esta
    condición. La línea de datos (SDA) toma un estado
    bajo mientras que la línea de reloj (SCL) permanece alta.
    Parada (Stop): Un dispositivo maestro puede generar esta
    condición dejando libre el bus. La línea de datos
    toma un estado lógico alto mientras que la de reloj
    permanece también en ese estado.

    Monografias.com
    Dato Válido (Valid Data): Sucede cuando un dato presente
    en la línea SDA es estable mientras la línea SCL
    está a nivel lógico alto. Formato de Datos (Data
    Format): La transmisión de datos a través de este
    bus consta de 8 bits de datos (ó 1 byte). A cada byte le
    sigue un noveno pulso de reloj durante el cual el dispositivo
    receptor del byte debe generar un pulso de reconocimiento,
    conocido como ACK (del inglés Acknowledge). Esto se logra
    situando la línea de datos a un nivel lógico bajo
    mientras transcurre el noveno pulso de reloj. Dirección
    (Address): Cada dispositivo diseñado para funcionar en
    este bus dispone de su propia y única dirección de
    acceso, que viene pre-establecida por el fabricante. Hay
    dispositivos que permiten establecer externamente parte de la
    dirección de acceso. Esto permite que una serie del mismo
    tipo de dispositivos se puedan conectar en un mismo bus sin
    problemas de identificación. La dirección 00 es la
    denominada "de acceso general", por la cual responden todos los
    dispositivos conectados al bus. Lectura/Escritura (Bit R/W): Cada
    dispositivo dispone de una dirección de 7 bits. El octavo
    bit (el menos significativo ó LSB) enviado durante la
    operación de direccionamiento corresponde al bit que
    indica el tipo de operación a realizar. Si este bit es
    alto el dispositivo maestro lee información proveniente de
    un dispositivo esclavo. En cambio, si este bit fuese bajo el
    dispositivo maestro escribe información en un dispositivo
    esclavo. Definiciones o términos utilizados en
    relación con las funciones del bus I2C

    Monografias.com
    Terminología básica del Bus I2C

    Monografias.com
    Respaldo Tecnológico: Tanto Philips como como otros
    fabricantes de dispositivos compatibles con I2C disponen de una
    amplia gama de circuitos integrados, incluyendo memorias RAM y
    EEPROM, microcontroladores, puertos de E/S, codificadores DTMF,
    tranceptores IR, conversores A/D y D/A, relojes de tiempo real,
    calendarios, etc Dado que no siempre se requiere alta velocidad
    de transferencia de datos este bus es ideal para sistemas donde
    es necesario manejar información entre muchos dispositivos
    y, al mismo tiempo, se requiere poco espacio y líneas de
    circuito impreso. Por ello es común ver dispositivos I2C
    en video grabadoras, sistemas de seguridad, electrónica
    automotriz, televisores, equipos de sonido y muchas otras
    aplicaciones más.

    Monografias.com
    Incluso, y gracias a  que el protocolo es lo suficientemente
    simple, usualmente se ven dispositivos I2C insertados en sistemas
    microcontrolados que no fueron diseñados con puertos I2C,
    siendo el protocolo generado por el firmware. También hay
    dispositivos de adaptación que permiten conectar buses
    originalmente paralelos a sistemas I2C. Tal es el caso del chip
    PCD 8584 de Philips el cual incorpora en el chip todo lo
    necesario para efectuar dicha tarea. Hay, además,
    circuitos integrados cuya única misión es adaptar
    los niveles presentes en el bus I2C y TTL, permitiendo resolver
    fácil y rápidamente la interconexión de
    dispositivos de dicha familia con el I2C. Respaldo
    Tecnológico:

    Monografias.com
    El protocolo del Bus I2C

    Monografias.com
    Formato del Mensaje Un protocolo orientado a BIT Handshaking
    Bidireccional

    Monografias.com
    Maestro envía datos a un esclavo

    Monografias.com
    Transferencia de datos: SubEl Maestro genera la condición
    de Start. Cada palabra puesta en el bus SDA debe tener 8 bits, la
    primera palabra transferida contiene  la dirección
    del Esclavo seleccionado. Tras el envío del start o
    inicio, en los siguientes 7 bits se codifica la dirección
    del dispositivo. Y el octavo bit indica si se hace lectura(1) o
    escritura(0). Después de cada 8 bits, el master debe
    esperar una señal de reconocimiento como respuesta por
    parte del esclavo, lee el estado de la línea SDA, si vale
    0 (impuesto por el esclavo), el proceso de transferencia
    continúa. Si vale 1, indica que el circuito direccionado
    no valida la comunicación, entonces, el Maestro genera un
    bit de stop para liberar el bus I2C. Este acuse de recibo se
    denomina ACK (acknowledge) y es una parte importante del
    protocolo I2C. Al final de la transmisión, el Maestro
    genera la condición de Stop y libera el bus I2C, las
    líneas SDA y SCL pasan a estado alto.

    Monografias.com
    Inicio de transmisión – La transmisión la
    inicia el maestro – Flanco de bajada en SDA con SCL a nivel
    alto – Cuando nadie accede al bus hay un nivel alto en SCL
    y SDA

    Monografias.com
    Condiciones de START y STOP: Una vez finalizada la
    comunicación se debe informar de esta situación
    (condición de Stop). La línea SDA pasa a nivel alto
    mientras SCL permanece en estado alto. START: la línea SDA
    cae a cero mientras SCL permanece en nivel alto. A partir de este
    momento comienza la transferencia de datos.

    Monografias.com
    Start y Stop Start –SDA baja cuando el reloj (SCL) es alto
    Stop – SDA sube cuando SCL es alto (Normalmente no hay
    transición cuando el reloj es alto) (Gp:) SDA baja antes
    que SCL (Gp:) SCL alta antes que SDA

    Monografias.com
    Enviando a un Esclavo

    Monografias.com
    Eventos del bus I2C : leyendo un Acknowledge de un Esclavo Cuando
    se ha transmitido al bus un byte de dirección o de dato
    éste debe ser “ RECONOCIDO” por el o los
    esclavos. En el caso de una dirección: Si la
    dirección concuerda con la propia entonces ese esclavo y
    solamente ese esclavo enviará un acuse de recibido de la
    dirección con un ACK. También 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
    línea SDA inmediatamente después de la
    recepción del octavo bit, o, en caso de un byte de
    dirección , inmediatamente después de la
    evaluación de su dirección. Esto significa que tan
    pronto como el maestro baja SCL para completar la
    transmisión del bit (1), SDA será puesto a bajo por
    el esclavo (2). El maestro ahora emite un pulso de reloj en la
    línea SCL (3) El esclavo liberará la línea
    SDA hasta la terminación de este pulso (4) de reloj.
      El Bus queda disponible de nuevo para que el maestro
    continúe enviando datos o generar una condición de
    STOP. En caso de que un dato vaya a ser escrito al esclavo, este
    ciclo debe completarse antes de que se genere una
    condición STOP. El esclavo estará bloqueando el bus
    (la línea SDA es mantenida en bajo por el esclavo) hasta
    que el maestro haya generado un pulso de reloj en la línea
    SCL.

    Monografias.com
    Reconocimiento (Acknowledge) :

    Monografias.com
    Reconocimiento El bit de reconocimiento es obligatorio en la
    transferencia de datos. El pulso de reloj correspondiente al bit
    de reconocimiento (ACK) es generado por el Master. El Transmisor
    desbloquea la línea SDA ("1") durante el pulso de
    reconocimiento. El receptor debe poner a "0" la línea SDA
    durante el pulso ACK de modo que siga siendo "0" durante el
    tiempo que el master genera el pulso "1" de ACK. Normalmente un
    receptor cuando ha sido direccionado esta obligado a generar un
    ACK después de que cada byte a sido recibido. Cuando un
    dispositivo esclavo no genera el bit ACK (porque esta haciendo
    otra cosa y no puede atender el Bus) debe mantener el esclavo la
    línea SDA a nivel "1" durante el bit ACK. El Master
    entonces puede generar una condición de STOP abortando la
    transferencia de datos o repetir la condición de Inicio
    enviando una nueva transferencia de datos. Si un Esclavo-receptor
    que esta direccionado no desea recibir mas bytes, el master debe
    detectar la situación y no enviar mas bytes. Esto se
    indica porque el esclavo no genera el bit ACK en el primer byte
    que sigue. El esclavo pone la línea SDA a "1" lo que es
    detectado por el Master el cual genera la condición de
    Stop o repite la condición de Inicio. Si un
    Master-receptor esta recibiendo datos de un Esclavo-transmisor
    debe generar un bit ACK tras cada byte recibido de transmisor,
    para finalizar la transferencia de datos no debe generar el ACK
    tras el ultimo byte enviado por el esclavo. El esclavo-transmisor
    debe permitir desbloquear la línea SDA generando el master
    la condición de Stop o de Inicio.

    Monografias.com
    Transferencia completa

    Monografias.com
    RELACIÓN ENTRE LOS NIVELES DE SDA Y SCL Todos los maestros
    deben generar una subida en la línea SCL (2), leer el
    nivel en SDA (3) y generar una caida en la línea SCL (4).
    El Esclavo no debe cambiar el dato durante el tiempo que SCL es
    alto ( de lo contrario podría generarse una
    condición START o STOP imprevista) . Durante (1) y (5), el
    esclavo puede cambiar el estado de la línea SDA.  En
    total está secuencia debe ser realizada 8 veces para
    completar el byte dato. Los bytes siempre son transmitidos con el
    Bit Más Significativo primero.

    Monografias.com
    Maestro lee datos de un esclavo

    Monografias.com
    Eventos del Bus I2C : Recibiendo un byte de un Esclavo Una vez
    que el esclavo ha sido direccionado y el esclavo ha reconocido
    ésto, el maestro puede recibir un byte del esclavo si el
    bit R/W en la dirección se puso en modo READ ( puesto a
    ‘1’) La sintaxis del protocolo es la misma que cuando
    se transmite un byte a un esclavo, excepto que ahora no se le
    permite al maestro tocar la línea SDA. Previo al
    envió por la línea SCL,de los 8 pulsos de reloj
    necesarios para el envió del byte , el maestro libera la
    línea SDA. Ahora el esclavo tomará el control de
    esta línea. La línea se irá a alto si se
    desea transmitir un ‘1’ o si el esclavo desea mandar
    un ‘0’, se mantiene en bajo.

    Monografias.com
    Para operar un esclavo sobre el Bus I2C solo son necesarios seis
    simples códigos, suficientes para enviar o recibir
    información. Un bit de Inicio 7-bit o 10-bit de
    direccionamiento Un bit R/W que define si el esclavo es
    transmisor o receptor Un bit de reconocimiento Mensaje dividido
    en bytes Un bit de Stop

    Monografias.com
    Las líneas SDA y SCL son del tipo drenador abierto,
    similares a las de colector abierto pero asociadas a un
    transistor de efecto de campo (ó FET).. Se deben poner en
    estado alto (conectar a la alimentación por medio de
    resistores Pull-Up) para construir una estructura de bus tal que
    se permita conectar en paralelo múltiples entradas y
    salidas Esquema básico de conexiones

    Monografias.com
    Esquema básico de conexiones Características de una
    conexión en colector abierto – Permite conectar
    varias fuentes de datos a un mismo hilo – Nivel alto en el
    bus – Si ningún dispositivo accede al bus – Si
    ningún dispositivo transmite un cero – Nivel bajo en
    el bus – Si un dispositivo pone un nivel bajo – Si
    dos dispositivos escriben a la vez siempre prevalecen los ceros
    • AND cableada – Si un dispositivo escribe un nivel
    alto pero lee un cero indica que otro dispositivo está
    también accediendo al b

    Monografias.com
    Esquema básico de conexiones Inconvenientes de la
    conexión en colector abierto – Las capacidades de la
    línea se cargan a través del pull-up – Se
    puede solucionar utilizando una carga activa en lugar de un
    resistor

    Monografias.com
    Esquema básico de conexiones Las dos líneas de
    comunicación disponen de niveles lógicos altos
    cuando están inactivas. De entrada el número de
    dispositivos que se puede conectar al bus es ilimitado, pero las
    líneas tienen una especificación de capacidad de
    carga máxima de 400pF.

    Monografias.com
    Terminación de Bus

    Monografias.com
    El bus I2C Ejemplo de una configuración del bus I2C usando
    dos microcontroladores

    Monografias.com
    Configuración Multi-Maestro Cuando el MCU1 emite una
    condición start e enviá una dirección, todos
    los esclavos escucharán ( incluyendo a MCU2 el cual en ese
    momento es considerado un esclavo también) . Si la
    dirección no concuerda con la dirección del CPU2,
    este dispositivo debe mantenerse de regreso a cualquier actividad
    hasta que el bus se desocupe de nuevo después de una
    condición stop. As long as the two MCU's monitor what is
    going on on the bus (start and stop) and as long as they are
    aware that a transaction is going on because the last issued
    command was not a STOP, there is no problem. Let's assume one of
    the MCU's missed the START condition and still thinks the bus is
    idle, or it just came out of reset and wants to start talking on
    the bus which could very well happen in a real-life scenario.
    This could lead to problems.

    Monografias.com
    Protocolo multimaestro – Con dos maestros en el bus existe
    posibilidad de conflicto Arbitración: procedimiento para
    asegurar que sólo un maestro tiene el control del bus en
    un instante – Si un maestro está utilizando el bus
    no puede ser interrumpido por otro. • Desde START hasta STOP
    – Si dos maestros intentan comenzar a utilizar el bus a la
    vez: • Conexión del bus en colector abierto ??
    prevalecen los ceros • A la vez que ponen datos en el bus,
    escuchan la línea. • Si un maestro está
    intentando enviar un nivel alto y lee un nivel bajo –
    Existe otro maestro utilizando el bus – Deja de transmitir
    esperando que la línea quede libre (condición de
    STOP) Configuración Multi-Maestro

    Monografias.com
    Ejemplo de aplicaciones del Bus I2C

    Monografias.com
    LECTOR DE SMARTCARDS Conexión de una EEPROM serial y un
    Reloj de tiempo real, con bus I2C, para su uso en un lector de
    smartcards Ejemplo de aplicaciones del Bus I2C

    Monografias.com
    El bus I2C Conexión de medidores ultrasónico de
    distancias a un mC Basic Stamp 2 usando el bus I2C. El
    módulo SRF10 es un medidor ultrasónico de
    distancias miniatura para robots que representa la ultima
    generación en sistemas de medidas de distancias por sonar.
    El sensor es capaz de detectar objetos a una distancia de 6 m con
    la facilidad de conectarse al microcontrolador mediante un bus
    I2C, por lo que se pueden conectar cuantos sensores sean
    necesarios en el mismo bus. Con una alimentación unica de
    5V, solo requiere 15 mA, para funcionar y 3mA mientras esta en
    reposo. Ejemplo de aplicaciones del Bus I2C

    Monografias.com
    El bus I2C Para el programador, el sensor SRF10 se comporta de la
    misma manera que las EEPROM de las series 24xx, con la
    excepción de que la dirección I2C es diferente. La
    dirección por defecto de fábrica del sensor es
    0xE0. El usuario puede cambiar esta dirección con 16
    direcciones diferentes: E0, E2, E4, E6, E8, EA, EC, EE, F0, F2,
    F4, F6, F8, FA, FC o FE, por lo que es posible utilizar hasta 16
    sensores sobre un mismo bus I2C. Además de las direcciones
    anteriores, todos los sonares conectados al bus I2C
    responderán a la dirección 0 -al ser la
    dirección de atención general. Esto significa que
    escribir un comando de medición de la distancia para la
    dirección 0 de I2C (0x00) iniciará las mediciones
    en todos los sensores al mismo tiempo. Ejemplo de aplicaciones
    del Bus I2C

    Monografias.com
    Esquema del circuito para la conexión de dos sensores
    ultrasónicos SRF08 al controlador Basic Stamp 2 Ejemplo de
    aplicaciones del Bus I2C

    Monografias.com
    Dispositivos I2C con el PICAXE WRITEI2C Sintáxis:
    WRITEI2Clocation,(variable,…) – Location es una variable
    /constante que especifica la dirección de un byte o
    palabra – Variable(s) contiene el byte(s) de dato que se va a
    escribir Función: Escribe a la localidad I2C el contenido
    de la variable(s). READI2C Sintáxis: READI2C
    location,(variable,…) – Location es una variable /constante que
    especifica la dirección de un byte o palabra – Variable(s)
    recibe el byte(s) leido(s). Funcción: Lee la localidad I2C
    contenida en la(s) variable(s). I2CSLAVE Sintáxis:
    I2CSLAVE slave, speed, address – Slave es la dirección i2c
    del esclavo – Speed es la palabra i2cfast (400kHz) o i2cslow
    (100kHz) a 4Mhz Address es la palabra i2cbyte o i2cword
    Función: El comando i2cslave es usado para configurar las
    terminales PICAXE para usar el I2C y para definir el tipo de
    dispositivo I2C a ser direccionado Instrucciones en Basic del
    PICAXE par usar el bus I2C

    Monografias.com

    Monografias.com

    Monografias.com

    Monografias.com

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter