SPI o I2C: ¿Qué protocolo de chip de memoria es mejor?
Hace unos días, salí a mirar zapatos y me dí cuenta exactamente por qué no los compro tan a menudo: el problema está en la cantidad de parámetros. Estaba buscando zapatillas de deporte en particular, por lo que entraban en juego aspectos como el confort, la flexibilidad, la durabilidad, la impermeabilidad, el peso, el ajuste, etc. A veces, te da la impresión de que necesitas tener una titulación universitaria para poder elegir el calzado adecuado. A eso le llamo sobrecarga de información.
Algo parecido ocurre cuando estás diseñando circuitos electrónicos y tienes que elegir entre los protocolos SPI (interfaz de periféricos serie) e I2C (circuito inter-integrado). La decisión se vuelve todavía más difícil cuando ambas opciones no difieren mucho en términos de coste. Llevar un control de los requisitos en cuanto respecta a los parámetros del chip de memoria conlleva saber qué funciones desempeñará el producto.
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.
Si la velocidad es lo que cuenta, elige chip SPI
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.
Elige un chip I2C si necesitas una PCB pequeña y compacta
Elige la opción mejor para tu diseño
Con independencia de la elección final, los protocolos SPI e I2C requieren que las señales se enruten en paralelo e implican una longitud similar para evitar fallos en la señal. La decisión afecta no solo a la funcionalidad del diseño, sino también al tiempo de entrega y a la eficiencia global.
Con un software de diseño de PCB que te ofrezca la funcionalidad y herramientas que necesitas para pasar sin esfuerzo del esquemático a la producción, pasando por la composición, podrás tomar estas decisiones sobre el diseño con facilidad. Saca partido de las herramientas de enrutamiento de múltiples señales y de un contenido de diseño ilimitado para simplificar el proceso con Altium CircuitStudio.
¿Todavía tienes dudas sobre qué protocolo se adapta mejor a tu diseño? Pregunta a un experto de Altium.