12
Sistemas Basados en Microprocesadores Comunicación I2C y SPI

09b.Comunicación i2c y spi

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 09b.Comunicación i2c y spi

Sistemas Basados en

Microprocesadores

Comunicación I2C y SPI

Page 2: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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

Page 3: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

Page 4: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

Protocolo I2C

El protocolo se puede estudiar por medio de bloques funcionales:

Condición de arranque

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

Page 5: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

SSDA

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

Page 6: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

PSDA

SCL

Las líneas SDA y SCL vuelven

a nivel alto bus libre

Finaliza la generación

de la señal de reloj

Page 7: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

RSDA

SCL

Parada Arranque

Page 8: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

DATASDA

SCL

Dato válido

Bit de más peso Bit de menos peso

Page 9: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

ASDA

SCL

0 ACK

1 NACK

Page 10: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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.

Page 11: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

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

Page 12: 09b.Comunicación i2c y spi

http://paginaspersonales.deusto.es/jonathan.garibay/

I2C vs. SPI

Trabajo personal:

Identificar las ventajas y desventajas entre estos dos

buses de comunicación