Upload
jonathan-ruiz-de-garibay
View
4.487
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Sistemas Basados en
Microprocesadores
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
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.
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
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
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
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
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
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
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.
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
http://paginaspersonales.deusto.es/jonathan.garibay/
I2C vs. SPI
Trabajo personal:
Identificar las ventajas y desventajas entre estos dos
buses de comunicación