¿Cómo puedo aislar un MISO de colector abierto de un MISO de colector no abierto?

1

Estoy usando un Arduino para controlar un controlador de PlayStation 2 y una tarjeta microSD a través de SPI. Como de costumbre, comparten un pin MISO, SCLK y MOSI. Cada uno tiene su propio pin de selección de esclavo.

La línea MISO del controlador PS2 es una salida del colector abierto , por lo que supongo que necesito una resistencia pullup allí. ¿Cómo puedo aislar esto del otro colector no abierto MISO? Si el dispositivo que no es OC está activo, ¿no interferirá la resistencia de extracción con su línea MISO que no es OC?

Gracias,

Editar

Supongo que podría usar un búfer de recopilador abierto que no invierta para convertir la salida que no es de OC a OC?

    
pregunta Chris Laplante

3 respuestas

1

La única diferencia entre una salida "normal" y "colector abierto" (o "drenaje abierto") es la adición de un transistor adicional (o FET).

Agregaruntransistorexterno(conunaresistencialimitadoradecorrientedebase)aunasalidadetalmaneraloconvertiráenunasalidadecolectorabierto.UnsolotransistorNPNesprobablementemásbaratoqueunbúfernoinversorsisolonecesitaconvertirunasalida.Siestáhaciendovariassalidas,entoncesunbúfer(porejemplo,unooctal)seríamássensibledesdeelpuntodevistadelespacioyelcosto.

EDIT

Paraelsimplecircuitoanteriorseinvertirá.Unaformadeevitarqueseinviertaseríautilizardostransistores:

El primero es el equivalente del circuito de colector abierto anterior, que se invierte. El segundo es el mismo - coleccionista abierto que invierte. Una resistencia pull-up en el primer transistor le permite controlar el segundo transistor correctamente. El efecto neto es una conversión de colector abierto no invertida.

    
respondido por el Majenko
3

El resistor pull-up aparecerá como una carga para cualquiera de los pines MISO cuando se estén bajando activamente. Obviamente, la salida de colector abierto está diseñada para impulsar la resistencia de levantamiento cuando tira de la línea hacia abajo.

Es bastante posible que el colector no abierto también sea capaz de accionar la resistencia. Cuando la salida es alta, no debería haber problemas, ya que la salida estará a un nivel similar al voltaje de alimentación lógica, por lo que la corriente a través de la resistencia será despreciable. Cuando la salida es baja, la corriente a través de la resistencia está determinada por la tensión de alimentación y el valor de la resistencia, de modo que i = v / R, donde v es la tensión de alimentación y R es el valor de la resistencia. (Estoy descuidando aquí, el hecho de que el bajo voltaje impulsado no será exactamente cero).

Por lo tanto, debe verificar si la salida puede conducir la corriente necesaria para su resistencia de pull-up. Esta especificación se conoce comúnmente como salida de corriente baja, o IOL (el OL a menudo se muestra como un subíndice). Si es así, deberías estar bien.

Puede ajustar el valor del pull-up si es necesario. Los resistores de mayor valor consumirán menos energía, los valores de menor resistencia acelerarán la transición del nivel lógico bajo al alto para el controlador de colector abierto. Tenga en cuenta que la resistencia pull-up solo generará corriente cuando una de las salidas se está agotando, lo cual es solo cuando uno de los pines CS se baja y cuando se transmite un bit de nivel bajo.

    
respondido por el B Pete
0

No se sabe exactamente quién es el maestro en tu configuración. Usted dice que Arduino está controlando una PlayStation y una tarjeta SD, lo que implica que Arduino es el maestro y los otros esclavos. Pero, también dices que comparten MISO y MOSI "como de costumbre", aunque no sé lo que crees que es habitual.

SPI está diseñado para tener un único maestro fijo conocido. A diferencia de IIC, no hay un modo multi-maestro oficial. Todos los esclavos comparten las líneas MISO y MOSI, pero éstas se voltean para el maestro. Las líneas de bus SPI también están diseñadas para ser totalmente accionadas, no para ser pasivas. El maestro siempre controla SCK y MOSI, y el único esclavo seleccionado controla MISO. Cada esclavo también tiene su propia línea de selección de esclavos, de la cual solo uno a la vez es manejado por el maestro. Por lo tanto, los esclavos configuran sus salidas MISO a alta impedancia cuando no se seleccionan y controlan activamente MISO tanto alta como baja cuando se seleccionan. Es posible que haya un despliegue débil en MISO solo para evitar que flote cuando no se selecciona un esclavo. Su valor de datos en ese momento no importa, pero una señal digital flotante no es buena por otras razones.

Entonces ahora necesitas explicar lo que realmente estás haciendo en este contexto. Usted dice que la línea MISO de PS2 es colector abierto. Eso por sí mismo ya es contrario al SPI, pero aún no sabemos si el PS2 es el maestro o uno de los esclavos. Si está intentando implementar algún tipo de sistema SPI de múltiples maestros, necesita dar muchos más detalles, ya que está fuera de lo que normalmente se llama "SPI". ¿Por qué sus esclavos no pueden manejar MISO cuando están seleccionados y tienen una impedancia alta cuando no están seleccionados? Esa sería la forma normal de hacer las cosas en SPI.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas