¿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.
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.
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á: -
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: -
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
Majenko
joaoandre