
Interfaz SPI: modos, sincronización y cableado
Comprenda CPOL, CPHA, MOSI, MISO, SCLK y CS, luego cree un bus SPI confiable con sincronización, niveles lógicos, topologías y guía de depuración.
Escrito y revisado técnicamente porEquipo de ingeniería de ElectroDesignForge
Ver el proceso editorialGuía de referencia
SPI (Interfaz periférica serie) conecta un controlador a circuitos integrados cercanos, como memorias Flash, ADC/DAC, pantallas, sensores y dispositivos RF. Este enlace serie síncrono es rápido y dúplex completo, pero no es un estándar completo: los límites eléctricos y de estructura provienen de cada hoja de datos.
Referencia rápida
| Señal | Dirección desde el controlador | Función | Punto clave |
|---|---|---|---|
| SCLK / SCK | producción | Reloj de serie | Su nivel de inactividad lo establece CPOL. |
| MOSI | controlador → periférico | Datos transmitidos | También llamado COPI, SDI o DIN. |
| MISO | periférico → controlador | Datos recibidos | También llamado CIPO, SDO o DOUT; alta impedancia cuando no está seleccionado. |
| CS / SS / nCS | salida, a menudo activa-baja | Selección y límite del marco. | Normalmente se necesita un CS independiente por periférico. |
| TIERRA | compartido | Ruta de referencia y retorno. | Mantenlo junto a las señales, especialmente fuera de borda. |
MOSI y MISO asumen el punto de vista del controlador. COPI (Controller Out, Peripheral In) y CIPO (Controller In, Peripheral Out) aclaran las funciones cuando se analiza un enlace sin un esquema.
SPI no define ni direccionamiento, ni reconocimiento ni una tarifa máxima universal. El protocolo de aplicación define comandos, direcciones de registro, bytes ficticios y respuestas. Por lo tanto, un analizador lógico puede decodificar bits válidos mientras un dispositivo permanece en silencio porque el CS o la estructura del comando es incorrecto.
Verifique antes del cableado: niveles lógicos, velocidad SCLK permitida, modo SPI, orden MSB/LSB, longitud de palabra, estado activo de CS y temporización de CS. Los dominios de 1,8 V, 2,5 V, 3,3 V y 5 V no son automáticamente compatibles.
Los cuatro modos: CPOL y CPHA
- CPOL (polaridad del reloj) establece SCLK inactivo: 0 = bajo, 1 = alto.
- CPHA (fase de reloj) establece el flanco de muestreo. Con CPHA = 0, el primer borde después de CS muestrea el primer bit; con CPHA = 1, cambia ese bit y el siguiente borde lo muestrea.
| Modo | CPOL | CPHA | SCLK inactivo | Borde de muestra | Cambios de datos en |
|---|---|---|---|---|---|
| 0 | 0 | 0 | Bajo | Creciente | Descendente |
| 1 | 0 | 1 | Bajo | Descendente | Creciente |
| 2 | 1 | 0 | Alto | Descendente | Creciente |
| 3 | 1 | 1 | Alto | Creciente | Descendente |
El borde de ataque es la primera transición desde el estado inactivo y el borde de salida es la segunda. CPHA = 0 muestras en el borde de ataque; CPHA = 1 muestras en el borde de salida. Esto funciona para cualquier configuración de CPOL.
Lectura de un diagrama de tiempos
- Verifique SCLK antes de CS: es decir, CPOL.
- Encuentre el borde donde se leen los datos estables: ese es CPHA.
- Con CPHA = 0, el primer bit debe ser válido antes del primer flanco.
- Confirmar los retrasos en la salida en la hoja de datos; los datos no siempre cambian exactamente en el borde opuesto.
Una CPHA incorrecta a menudo cambia los bits; CPOL incorrecto lee una secuencia plausible en los instantes equivocados. 0x00, 0xFF o una identificación no válida son posibles síntomas, no diagnósticos concluyentes.
Sincronización más allá de la frecuencia
| Parámetro | Significado | Riesgo cuando se viola |
|---|---|---|
fSCLK | velocidad máxima de reloj | Errores intermitentes o muestreo inestable. |
tSU(D) | MOSI/MISO setup before sample edge | Bit leído en el nivel incorrecto |
tH(D) | Retención de datos después del borde de la muestra | El siguiente bit corrompe el bit actual |
tCSS | CS activo al primer borde SCLK | Primer comando ignorado o desplazado |
tCSH | último borde a CS inactivo | Último bit no aceptado |
tCSHI | Tiempo inactivo de CS entre fotogramas | Estado interno no restablecido |
tDO | Retraso de salida MISO | Muestreo demasiado temprano a alta velocidad |
El presupuesto de tiempo incluye el retardo del traductor de nivel, el tiempo de recorrido del cable o de la traza, la tasa de borde real y la carga capacitiva. Una tarifa que funciona en una placa corta puede fallar después de agregar un conector o una rama.
Para el CS activo-bajo habitual: mantenga SCLK en su estado CPOL, afirme CS, espere tCSS, presente el primer bit lo suficientemente temprano para CPHA = 0, genere bordes y luego espere tCSH antes de liberar CS. Algunas partes requieren CS bajo en toda una secuencia de comando-dirección-datos; otros ejecutan una operación cuando CS aumenta.
Cableado MOSI, MISO, SCLK y CS
Controller MOSI ─────────► Peripheral SDI / DIN
Controller MISO ◄───────── Peripheral SDO / DOUT
Controller SCLK ─────────► Peripheral SCK
Controller nCS ─────────► Peripheral nCS
GND ─────────► GND
MISO solo se puede compartir cuando cada periférico no seleccionado realmente se vuelve de alta impedancia. Una resistencia de tracción establece un estado inactivo pero nunca resuelve dos salidas activas que luchan entre sí.
SCLK suele ser el más crítico: conmuta cada bit, sincroniza cada receptor y puede sonar. Manténgalo corto, sobre un plano de tierra continuo y alejado de entradas analógicas sensibles. Una resistencia en serie de unas pocas decenas de ohmios en el controlador puede amortiguar una conexión punto a punto; validar el valor con un osciloscopio.
CS sólo permite que responda un periférico. Un pull-up hacia inactivo es útil durante el reinicio del controlador, después de verificar los pull-ups internos, el consumo de energía y las necesidades de tiempo de subida.
Topologías SPI
Estrella con CS independiente
SCLK y MOSI van a cada IC; cada IC recibe su propio CS. Sólo la pieza seleccionada impulsa MISO.
┌──────────► Peripheral A
Controller ─ SCLK ├──────────► Peripheral B
─ MOSI ├──────────► Peripheral C
─ MISO ◄────────── shared outputs, high impedance when unselected
─ CSA ───────────► A
─ CSB ───────────► B
─ CSC ───────────► C
Esta es la topología recomendada: es sencilla de depurar y no enruta bytes a través de otros dispositivos. Cuando los GPIO son escasos, un decodificador o expansor puede generar señales CS; incluir su retraso y estado de encendido en el diseño.
Cadena de margaritas
Algunos registros de cambios y controladores LED están diseñados para conexiones en cadena. Su salida en serie alimenta la siguiente entrada; comparten SCLK y CS.
Controller MOSI ─► Device 1 ─► Device 2 ─► Device 3
Controller SCLK ─► all devices
Controller CS ─► all devices
Controller MISO ◄─ final device output, if available
La longitud de la trama es la suma de todas las palabras del dispositivo y el orden físico determina el orden de los bytes. Esto no es apropiado para periféricos SPI normales que simplemente comparten un bus.
Integridad de señal y bus compartido
Cada rama es un trozo que degrada los bordes a medida que aumenta SCLK. Prefiere distribución compacta y ramas cortas. Para enlaces de cable o placa a placa, reduzca fSCLK, proporcione un retorno a tierra cercano y mida en el receptor. SPI no es una interfaz diferencial diseñada para largas distancias.
| Situación | Práctica recomendada |
|---|---|
| Un IC, trazas muy cortas | Conexión directa; validar modo y niveles lógicos |
| Varios circuitos integrados en una placa | CS independiente, MISO de alta impedancia cuando no está seleccionado |
| SCLK sonando | Resistencia en serie cerca del controlador; inspeccionar con osciloscopio |
| Cable o interconexión | Velocidad más baja, intercalado GND, longitud límite, use transceptor si es necesario |
| Muchas líneas CS | Decodificador, registro de desplazamiento o expansor con estado de encendido seguro |
Niveles lógicos y depuración.
Compare los umbrales de VIH/VIL y las clasificaciones máximas absolutas en ambas direcciones. Un MISO de 1,8 V puede ser demasiado bajo para una entrada de 3,3 V; una salida de 5 V puede dañar una entrada de 3,3 V no tolerante. Los traductores MOSFET bidireccionales comunes en I²C no son automáticamente adecuados para SCLK o MOSI rápidos: elija un búfer o traductor clasificado para los niveles, velocidad y carga elegidos.
- Comience con un periférico a 100 kHz o menos.
- Verifique el estado de alimentación, GND, reinicio y CS antes de los datos.
- Mida SCLK, CS, MOSI y MISO juntos, activados por CS activo.
- Verifique CPOL/CPHA, el orden de bits y el recuento exacto de bordes por cuadro.
- Lea una identificación documentada o un registro de estado y luego aumente la tarifa gradualmente.
Un analizador lógico verifica el protocolo; se necesita un osciloscopio para flancos, sobreimpulsos, ruidos y reflexiones. Sonda cerca de la entrada periférica: medir solo en el controlador puede ocultar un problema de línea.
Lista de verificación
- CPOL, CPHA, orden de bits y longitud de palabras documentados explícitamente en esquemas y firmware.
- Una CS por periférico a menos que se utilice una cadena definida por la hoja de datos.
- MISO liberado cuando no está seleccionado; sin contención de salida.
- Umbrales lógicos, máximos absolutos y temporización comprobados en ambas direcciones.
- SCLK corto sobre terreno continuo; cualquier resistencia en serie validada.
- Estado CS seguro durante el reinicio y el encendido.
- Medición del lado del receptor después de agregar cable, conector, traductor o rama.
Referencias
- NXP — Guía de bloques SPI, rev. 3.0
- Microchip — Interfaz serie SPI
- Fichas técnicas de controladores y periféricos seleccionados: sus modos, temporizaciones, niveles y secuencias de fotogramas tienen prioridad sobre estas convenciones generales.