Protocolo de comunicación SPI
Conceptos básicos de SPI e I2C
SPI es un protocolo de comunicaciones con una
configuración full duplex, que utiliza cuatro señales, Chip Select (CS), reloj
(SCK), Master Out / Slave In (MOSI) y Master In / Slave Out (MISO), para las
comunicaciones entre un maestro y un esclavo. Una conexión maestro a esclavo
individual requiere una señal CS. Esto quiere decir que el número de señales CS
aumenta si hay más de un esclavo conectado al mismo bus.
No hay un límite oficial a la velocidad de un
bus SPI, y es habitual que los microcontroladores manejen el bus SPI a
velocidades de hasta 10 Mhz. Hay cuatro modos de SPI para registro de los
datos en los distintos flancos y polaridad de la señal de reloj. Sin embargo,
no existe un mecanismo estándar que permita al maestro confirmar que el esclavo
ha recibido y almacenado los datos correctamente.
El bus I2C, por el contrario, requiere solo dos líneas: la línea
de datos (SDA) y la línea de reloj (SCLK). Opera a una velocidad mucho más baja
de 100 kHz, aunque son posibles velocidades más altas que podrían no ser
compatibles con la mayoría de microcontroladores. Los dispositivos esclavo conectados
al bus I2C se identifican por la dirección de chip, definida por el hardware.
Con I2C, se logra el menor número de pines de señal en el controlador.
Un estándar de I2C bien definido cubre no
solo la velocidad del protocolo, sino también los comandos, inicialización,
transferencia de datos y confirmación entre dispositivos maestro y esclavo. De
este modo, se garantiza que todos los dispositivos compatibles con I2C observen
un mismo estándar a fin de facilitar la implementación.
Consideraciones importantes al elegir entre
SPI e I2C para los chips de memoria
Tanto SPI como I2C son protocolos populares
con chips de memoria serie, como SRAM (memoria estática de acceso aleatorio), flash o
EEPROM (ROM programable y borrable eléctricamente). Al decidir qué protocolo se
adapta mejor al diseño, no se debe tener en cuenta exclusivamente el coste.
Estos son algunos aspectos importantes que pueden servir para simplificar el
proceso de toma de decisiones:
1. Velocidad
Al transferir datos en bloque o si se tiene
un margen estrecho para cotejar la entrada de usuario con los datos almacenados
en el chip de memoria, cada microsegundo cuenta. Si la velocidad es la cuestión
principal, elige SPI para lograr una tasa de transferencia de datos común de 10
MHz, mucho mayor que el modo de alta velocidad de I2C, que es de 400 Khz.
2. Número de pines limitado
No todos los diseñadores de hardware disponen
de microcontroladores de gama alta con más de 100 pines. Algunos se las tienen
que apañar para conectar los chips de memoria con microcontroladores de 28
pines. En estos casos, I2C es la solución ideal, ya que solo necesita un par de
pistas para la comunicación.
3. Tamaño de PCB
Si no hay limitaciones en cuestión de tamaño,
tanto SPI como I2C son opciones perfectamente válidas. Sin embargo, si
necesitas encajar la PCB en una carcasa muy pequeña, el menor número de pistas
de I2C se traduce en un tamaño menor de PCB, por lo que es la alternativa más
inteligente.
4. Fallos y recuperación de errores
Los diseñadores no son perfectos, y tampoco
lo es el protocolo I2C. El bus I2C es propenso a fallos y
bloqueos, debido a que tanto la transmisión como la recepción tienen lugar en
las mismas pistas físicas. Si el maestro no libera el bus a tiempo, el esclavo
puede entrar en modo de bloqueo tras enviar una señal que el maestro no recibe.
La recuperación de errores puede ser complicada y, en algunos casos, requerir
un reinicio completo de los dispositivos bloqueados.
5. Alimentación
Si estás diseñando un dispositivo de
alimentación por baterías o solar, necesitas minimizar el consumo de energía.
Los dispositivos I2C consumen generalmente más energía que los SPI. Por tanto,
si el consumo es una cuestión importante, es mejor optar por el modelo SPI.
Comentarios
Publicar un comentario