4 votos

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 utilizar menos clavijas CS ¿conectando la salida digital de cada una a la entrada digital de la 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.

EDIT: Por salida digital entiendo el pin de salida que proporcionan muchos dispositivos SPI, por ejemplo, los registros de desplazamiento MAX395 o 74HC595.

7voto

user4245 Puntos 324

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

Los dispositivos que has señalado no son dispositivos SPI, sino registros de desplazamiento. No operan de la misma manera que SPI, sin embargo, SPI puede ser utilizado para conducirlos.

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

En un dispositivo de registro de desplazamiento o JTAG, la entrada de datos (TDI en el lenguaje JTAG) se introduce en un simple registro de desplazamiento, y la salida final de bits del registro de desplazamiento cae en la salida de datos (TDO en JTAG). No es así como funciona SPI.

En SPI los pines SDI y SDO están completamente separados y la relación entre los datos de uno y los del otro depende exclusivamente de los caprichos del chip. Es habitual introducir un comando o una ubicación de registro en el pin SDI y, en el siguiente byte, el contenido de ese registro se envía por el pin SDO.

Así que no, la entrada no "cae" en la salida como un registro de desplazamiento.

Si quieres reducir el número de pines CS utilizados, podrías utilizar, por ejemplo, un decodificador 74HC154 de 4 a 16 para conectar 15 dispositivos a sólo 4 pines CS (reserva 1 pin para "ningún dispositivo seleccionado").

Si todos tus dispositivos son registros de desplazamiento, o funcionan como registros de desplazamiento, y no son dispositivos SPI reales (basados en registros), entonces podrás conectarlos en cascada si todos funcionan de la misma manera. Esto, por supuesto, no está garantizado a menos que todos sean el mismo dispositivo.

5voto

ianb Puntos 659

Hay varios dispositivos (especialmente ADCs) que tienen un pin de salida de datos y "encadenarlos" es una práctica común. En efecto, si quieres hablar con 3 dispositivos, tienes que pasar los datos por el primer y segundo dispositivo para llegar al tercero. Si esto no causa un problema, entonces sí, funcionará: -

enter image description here

Espero que el diagrama tenga sentido - observe que hay una línea CS común que alimenta a los tres dispositivos. Para los 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í está una imagen más general: -

enter image description here

En este caso, puedes volver a leer en el maestro lo que has "sacado" - la belleza de esto es que puedes comprobar cuántas transiciones de bits se necesitan para llenar la matriz de registros de desplazamiento repartidos en los chips esclavos.

Wiki también puede ser bastante útil

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X