Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Comunicación I2C y SPI

13,886 views

Published on

Published in: Engineering
  • Login to see the comments

Comunicación I2C y SPI

  1. 1. Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Comunicación I2C y SPI
  2. 2. Sistemas Electrónicos Programables Introducción a I2C  I2C (Inter-Integrated Circuit ) es un bus de comunicaciones serie síncrona muy utilizado en la industria para la comunicación entre µcontroladores y sus periféricos en sistemas integrados.  Utiliza únicamente dos líneas para trasmitir los datos (SDA) y la señal de reloj (SCL).  Necesitan resistencias pull-up, ya que los dispositivos sólo pueden forzar al bus a ponerse a ‘0’.  La línea de tierra debe ser común a todos los dispositivos (estar unida).  Es bidireccional Half-Duplex y sigue el modelo maestro-esclavo. Línea de datos Línea de relojµC Master µC Slave µC Slave µC Slave VDD SDA SDL RpCoordinador de la red Resistencias Pull-up
  3. 3. Sistemas Electrónicos Programables Introducción a I2C (continuación…)  Los dispositivos de un bus I2C tienen una dirección única para cada uno, y pueden clasificarse como maestros o como esclavos.  El maestro es el que inicia la trasferencia de datos y genera la señal de reloj.  El esclavo espera a que un maestro se comunique con el para generar la trasferencia.  El bus I2C es multimaestro, lo que quiere decir que puede haber más de un maestro conectado y controlando el bus.  Existen mecanismos para evitar que dos maestros comiencen una trasferencia de información al mismo tiempo.
  4. 4. Sistemas Electrónicos Programables Protocolo I2C  El protocolo se puede estudiar por medio de bloques funcionales: Condición de arranque (Start Condition). Condición de parada (Stop Condition). Condición de re-arranque (Restart Condition). Trasmisión de datos (Data Transfer). Condición de Acknoledge (Ack/Nack Condition).  Escritura de un dato  Lectura de un dato S P R DATA A S PDIR (w) A REG AA DATAMaestro Esclavo S PDIR (r) A REG N A DATA Maestro Esclavo Indica que no se quieren leer más datos
  5. 5. Sistemas Electrónicos Programables Protocolo I2C (continuación…)  Condición de arranque  La genera un maestro y con ella ocupa el bus e indica que va a comenzar una trasmisión de datos.  Los esclavos la detectan y se ponen a la escucha.  SDA se pone a nivel bajo cuando SCL está a nivel alto. S SDA SCL Cuando nadie trasmite, las líneas SDA y SCL están a nivel alto  bus libre Comienza a generarse la señal de reloj
  6. 6. Sistemas Electrónicos Programables Protocolo I2C (continuación…)  Condición de parada  La genera el maestro y con ella libera el bus e indica que se ha finalizado la trasmisión de datos.  SDA se pone a nivel alto cuando SCL está a nivel alto. P SDA SCL Las líneas SDA y SCL vuelven a nivel alto  bus libre Finaliza la generación de la señal de reloj
  7. 7. Sistemas Electrónicos Programables Protocolo I2C (continuación…)  Condición de re-arranque  La genera un maestro y con ello reinicia el bus.  Se compone de una condición de parada seguida de una condición de arranque. R SDA SCL Parada Arranque
  8. 8. Sistemas Electrónicos Programables Protocolo I2C (continuación…)  Transferencia de información  Todos los datos están formados por 8 bits y la trasmisión comienza con el bit de más peso.  Todo byte debe ir acompañado de un bit de reconocimiento ACK.  El dato es válido cuando la señal SCL está a nivel alto  Entre un byte y el siguiente puede haber un tiempo ‘t’ de espera para que uno de los dispositivo realice las operaciones que corresponda. DATA SDA SCL Dato válido Bit de más peso Bit de menos peso
  9. 9. Sistemas Electrónicos Programables Protocolo I2C (continuación…)  Validación:  Es obligatorio, valida la trasferencia de un byte y se envía en el siguiente pulso, como “9º bit”.  El maestro genera un pulso se reloj, y el receptor pone a nivel bajo la línea SDA durante dicho pulso.  Si el receptor no pone la línea SDA a nivel bajo, el emisor detecta un nivel alto y aborta la transferencia de información. A SDA SCL 0  ACK 1  NACK
  10. 10. Sistemas Electrónicos Programables Introducción a SPI  SPI (Serial Peripheral Interface) es un bus de comunicaciones serie síncrona usado para la transferencia de información entre circuitos integrados en equipos electrónicos.  Utiliza 3 líneas para trasmitir (SDO), recibir (SDI) y para generar la señal de reloj (SCK).  La señal de reloj la genera uno de los dispositivos (el que actúa de maestro).  La línea de tierra debe ser común a todos los dispositivos (estar unida).  Permite comunicación Full-Duplex y utiliza el modelo maestro-esclavo.
  11. 11. Sistemas Electrónicos Programables Introducción a SPI (continuación…)  Los dispositivos no tienen direcciones  se utiliza una línea de control (CS  Chip Select) para cada circuito integrado que tenga que ser controlado.  La transferencia no se inicia con todos sino con un dispositivo concreto activando (por nivel bajo) su correspondiente línea SS. SCLK SDO SDI CS1# CS2# CS2# SPI Master SCLK SDI SDO CS# SCLK SDI SDO CS# SCLK SDI SDO CS# SPI Slave SPI Slave SPI Slave Señal de reloj común a todos CS1 selecciona el esclavo azul CS2 selecciona el esclavo verde CS3 selecciona el esclavo marrón La SDO del maestro se conecta con la SDI del esclavo y viceversa
  12. 12. Sistemas Electrónicos Programables I2C vs. SPI  ¿Qué ventajas y desventajas tienen estos dos buses de comunicación?  Ventajas  Desventajas
  13. 13. Esta presentación está sujeta a la licencia de Reconocimiento de Creative Commons mediante la cual se permite la copia, la distribución, la comunicación pública y la generación de obras derivadas sin ninguna limitación siempre que se cite al autor y se mantenga el aviso de la licencia. © 2014, Jonathan Ruiz de Garibay Algunos derechos reservados

×