Conexión en cascada de varios dispositivos SPI

¿Es posible conectar en cascada varios circuitos integrados diferentes en la misma línea de datos, para usar menos pines CS , vinculando la salida digital de cada uno a la entrada digital del siguiente? Estoy familiarizado con este enfoque en dispositivos similares/iguales, pero no estoy seguro de si hay algunos problemas adicionales que debería tener en cuenta.

EDITAR: por salida digital pin el pin de salida que proporcionan muchos dispositivos SPI, por ejemplo, registros de cambio MAX395 o 74HC595.

¿Qué salida digital? SPI tiene entrada de datos, salida de datos, entrada de reloj y entrada de selección de chip. ¿Qué es esta salida digital de la que habla?
@Majenko editó mi pregunta

Respuestas (2)

No, no puede hacer lo que está pensando (si está pensando lo que creo que está pensando) con cualquier dispositivo SPI.

Los dispositivos que ha señalado no son dispositivos SPI, sino registros de desplazamiento. No funcionan de la misma manera que SPI, sin embargo, se puede usar SPI para impulsarlos.

En realidad, son más parecidos a JTAG que a SPI.

En un registro de desplazamiento o dispositivo JTAG, la entrada de datos (TDI en el lenguaje JTAG) se alimenta a un registro de desplazamiento simple, y la salida de bit final del registro de desplazamiento cae en la salida de datos (TDO en JTAG). Así no es como funciona SPI.

En SPI, los pines SDI y SDO están completamente separados y la relación entre los datos en uno y los datos en el otro depende únicamente de los caprichos del chip. Es común registrar un comando o una ubicación de registro en el pin SDI y, en el siguiente byte, el contenido de ese registro se registra fuera del pin SDO.

Entonces no, la entrada no "cae" en la salida como un registro de desplazamiento.

Si desea reducir la cantidad de pines CS utilizados, puede usar, por ejemplo, un decodificador 74HC154 de 4 a 16 para conectar 15 dispositivos a solo 4 pines CS (reserve 1 pin para "ningún dispositivo seleccionado").

Si todos sus dispositivos son registros de desplazamiento, o funcionan como registros de desplazamiento, y no como dispositivos SPI reales (basados ​​en registros), es posible que pueda conectarlos en cascada si todos funcionan de la misma manera. Eso, por supuesto, no está garantizado a menos que sean todos el mismo dispositivo.

Lo que pide OP es posible con los chips tipo SPI que proporcionan una entrada o salida de datos 'encadenada', como es el caso de los registros de desplazamiento comunes. Pero estoy de acuerdo en que los chips SPI normales no proporcionan dichos pines, por lo que no se pueden conectar en cascada. Tenga en cuenta que los chips como el MCP23S16 proporcionan un mecanismo de direccionamiento similar a I2C que les permite ponerse en paralelo .

Hay varios dispositivos (especialmente los ADC) que tienen un pin de salida de datos y "conectarlos en cadena" es una práctica común. En efecto, si desea hablar con 3 dispositivos, debe transmitir los datos a través del primer y segundo dispositivo para llegar al tercero. Si esto no causa ningún problema, entonces sí, funcionará: -

ingrese la descripción de la imagen aquí

Espero que el diagrama tenga sentido: observe que hay una línea CS común que alimenta los tres dispositivos. Para diferentes dispositivos, deben tener una salida de datos compatible y algunos requieren un pull-up en la salida de datos, pero no veo por qué no se puede lograr. Aquí hay una imagen más general: -

ingrese la descripción de la imagen aquí

En esto, puede volver a leer en el maestro lo que ha "salido": la belleza de esto es que puede verificar cuántas transiciones de bits se necesitan para llenar la matriz de registros de desplazamiento distribuidos en los chips esclavos.

Wiki también puede ser bastante útil

Lo que describes allí es un bus JTAG.
@Majenko: también se puede describir como un bus JTAG, pero ADI y maxim lo llaman dispositivos SPI de conexión en cadena, al igual que Wiki
El encadenamiento tipo margarita funciona con algunos dispositivos SPI y no con otros. Realmente es como dice @Majenko: "Depende del capricho del diseñador del chip". Entonces, Andyaka, su respuesta, si bien es correcta para ciertos dispositivos, podría interpretarse como engañosa para el caso general.
@MichaelKaras tenga en cuenta que en mi respuesta dije "Para diferentes dispositivos, deben tener una salida de datos compatible"