Control maestro SPI dual

4

Estoy viendo una interfaz dual de spi maestra, necesita ejecutarse a 20MHz, lo que significa un "push-pull" para mí. Mi principal preocupación es la corriente de salida de los microprocesadores, podría fácilmente superar la calificación de corriente máxima absoluta si un ingeniero de software decidiera establecer una salida alta y otra baja en el microprocesador si se configuraran como push-pull.

El drenaje abierto no va a funcionar debido al requisito de 20MHz y la cantidad de capacitancia que tengo en mis GPIO. Entonces, mi pregunta es ¿qué circuito utilizo para seleccionar entre dos maestros dobles?

simular este circuito : esquema creado usando CircuitLab

    
pregunta laptop2d

3 respuestas

3

Un multiplexor digital unidireccional de 4 vías haría el truco. Puede usar un 74244 para producir esta función (74HCT244 para lógica de 5 V, 74LVC244 para 3.3 V). Contiene dos búferes de 4 bits triestados (ver más abajo).

(Lo sentimos, no puedo dibujar un esquema en este momento).

Cada maestro puede tener un canal de 4 bits. Cada SCK, MOSI y / CS de cada maestro controlan las entradas de búfer de 1A o 2A con MISO con una salida de búfer de 1Y o 2Y. El otro lado de los buffers de canal están conectados a su esclavo SPI. No te olvides de poner un pull-up de 10 K en el esclavo / CS. El SCK del esclavo también necesita un pull-up o desplegable de 10 K para llevarlo a su estado inactivo, según el modo SPI utilizado.

Conecte / 1OE a una señal de selección y / 2OE a la inversa de la señal de selección. A continuación, puede cambiar entre los dos maestros mediante la selección.

    
respondido por el TonyM
1

Reconsideraría si esto es realmente un problema. ¿Cuánto le cuesta a la resistencia de la señal agregar resistencia de la serie en cada extremo (normalmente: en los MISOs de los maestros y en el MOSI del esclavo)? High-Z?

En caso de una falla de arbitraje, una resistencia de 100Ω podría ser más que suficiente para limitar la corriente a niveles "saludables".

    
respondido por el Marcus Müller
1

El dispositivo a poner entre se llama árbitro. El árbitro puede trabajar usando varios algoritmos:

  • quién viene primero (maestro # 1 o maestro # 2)
  • round robin
  • configuración de prioridad (por ejemplo, # 1 tiene mayor prioridad)
  • cualquier otro adecuado a sus necesidades.

Debe considerar la prioridad de la solicitud, asegurarse de que ambos maestros se entreguen a tiempo , y que no haya conflictos entre los maestros y el software / firmware de ambos estén al tanto de los ciclos de espera.

Editar: lo estaba implementando en FPGA, y es posible crear una instancia de hardware lógicamente independiente allí. En su caso, puede conectar los pines juntos solo en el caso de que garantice que solo un conjunto estará activo a la vez, otro conjunto será de alta impedancia. El diseño también puede requerir pull-ups / downs (no debería ser un problema) para asegurar que no haya hi-z si no hay ningún dispositivo activo. Sin embargo, si uno de los maestros se bloquea, debería haber una manera para que otro maestro lo detecte, y poder restablecer el maestro bloqueado. Esta no es una tarea trivial. P.ej. ambos maestros deberían poder escribir en los cables de salida y también leerlos para ver qué está pasando allí, y tener implementado un controlador de vigilancia que indique la condición de bloqueo. Además, puede haber alguna interconexión separada entre maestros que indique su estado en relación con la operación del bus SPI.

Recomiendo considerar otra pieza de hardware que lo hará. Será un costo e incluso un riesgo en términos de confiabilidad (más componentes - > menos confiabilidad), pero si todos los dispositivos se pueden configurar, podrá actualizar su firmware para resolver errores lógicos (y no podrá hacerlo). para resolver errores "físicos", ya que requerirá cambios de hardware en el campo que son muy costosos).

    
respondido por el Anonymous

Lea otras preguntas en las etiquetas