3 votos

Difusión SPI: enviar / recibir a muchos esclavos

El Maestro SPI está conectado a los esclavos con líneas comunes MISO, MOSI y CLK, con líneas individualizadas para las señales de selección. Entonces, los esclavos comparten las líneas MISO, MOSI y CLK.

Quiero transmitir desde el maestro a los esclavos. Si selecciono a todos los esclavos al mismo tiempo, recibirán los mismos datos.

Ahora, supongamos que los esclavos solo envían 1s al maestro si recibieron una palabra "aceptada" (por ejemplo, algún mecanismo de paridad en la codificación) como la última palabra (no la palabra actual). De lo contrario, los esclavos transmiten 0s a través de la línea MISO. No me interesa otro dato, solo la paridad. Entonces, el maestro SPI transmite la palabra N, mientras que los esclavos transmiten la paridad de la palabra N-1.

¿Sería posible para el maestro identificar si algún esclavo no pudo recibir la palabra transmitida, es decir, si recibe un 0 a través de las líneas MISO? Mi suposición es que debería funcionar, pero no estoy seguro.

7voto

Justme Puntos 201

No, no funcionará.

Si todos los demás dispositivos intentan llevar el nodo en una dirección (alta o baja) y solo un dispositivo intenta llevar el nodo en la otra dirección (baja o alta), los dispositivos con mayoría ganarán.

4voto

ozmank Puntos 127

Una encuesta secuencial podría funcionar, pero no una global.

introduzca aquí la descripción de la imagen REF IC REF Blocks introduzca aquí la descripción de la imagen

Básicamente estás tratando de crear una respuesta de Ping.

Los ping sweeps son la herramienta predeterminada utilizada para el descubrimiento de dispositivos de red. Es un mecanismo simple que solo requiere que los puntos finales y los dispositivos de red admitan paquetes de solicitud / respuesta de eco del Protocolo de Mensajes de Control. Programas de escaneo de red, como Nmap, y muchos sistemas de administración de redes dependen de los ping sweeps. Es el mecanismo de elección porque la única información necesaria es el rango de direcciones de destino.

La desventaja de los ping sweeps como herramienta de descubrimiento de red es que generan mucho tráfico de red innecesario.

4voto

Gustavo6046 Puntos 8

Para evitar un conflicto entre las líneas MISO, podrías usar un esquema simple de 'Y' con cable; agrega un diodo a cada una de las salidas MISO y conéctalas juntas, con una resistencia de pull-up de alrededor de 1K. Si todos los esclavos están altos, la salida resultante será alta; si uno o más está bajo, la salida será baja.

Casi cualquier diodo de baja corriente servirá, yo usaría un 1N4001 o similar. Si te preocupa los márgenes de ruido, entonces podrías usar un dispositivo schottky que tiene una caída de voltaje hacia adelante más baja, o un IC de compuerta NAND.

La única limitación de este enfoque es una ligera reducción en la velocidad con la que puedes correr el reloj SPI, ya que en un flanco ascendente la resistencia de pullup tiene que cargar la capacitancia de entrada de todos los esclavos; supongo que 5 MHz o menos probablemente está bien (dependiendo del número de esclavos) pero 20 MHz o más puede que no funcione.

[Editar] Si quieres mantener la capacidad de dirigir cada dispositivo individualmente, la pregunta es qué sucederá con las salidas de los dispositivos deseleccionados, ya que están flotando, por lo que podrían potencialmente interferir con la salida AND-ed. Sin embargo, no tendrían suficiente corriente para anular una resistencia de 1K, así que creo que esto aún funcionaría.

Si quieres ir a lo seguro, el siguiente circuito también debería funcionar, ya que asegura que todas las salidas no seleccionadas estén encendidas a un nivel alto.

Conexión AND con diodo

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