Este documento presenta una introducción a los buses de comunicación I2C y SPI. Explica que I2C utiliza dos líneas (SDA y SCL) para la transmisión síncrona de datos entre dispositivos maestros y esclavos conectados a un bus común, mientras que SPI utiliza tres líneas (SCLK, MOSI, MISO) y una línea de selección individual (CS) para cada dispositivo esclavo. También describe los protocolos básicos de cada bus, incluyendo condiciones de inicio, parada y transmisión de datos
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. 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. 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. 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. 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. 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. 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. 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. 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. 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