¿Cómo convertir de 2 líneas de datos full dúplex a 1 línea de datos half dúplex?

Estoy tratando de diseñar un circuito que pueda convertir de un dúplex completo de dos cables (piense en SPI), con una línea de transmisión y una línea de recepción, a un medio dúplex de un cable (piense en i2c), con comunicación bidireccional sobre la misma línea, pero no estoy teniendo suerte. ¿Hay un chip específico o un circuito que pueda usar?

editar: los dos protocolos son (destruidos y convertidos a un solo extremo) SpaceWire (o al menos hardware SpaceWire que transporta señales I2C) e I2C. SpaceWire usa un pin de entrada y salida de datos, por lo que me gustaría poder enviar una dirección o comando, etc. al dispositivo I2C a través del cable DOUT y recibir los datos a través del cable DIN. SpaceWire es un protocolo difícil para los circuitos integrados de interfaz, que no existen o tienen un precio exorbitante. Por 1 y 2 hilos estoy excluyendo la línea de reloj ya que será compartida entre los dos protocolos.

El dispositivo que necesitaría tendría que comprender el protocolo de las dos partes para poder arbitrar cuál tenía derechos de conducción en un solo cable. Esto lo hace complicado
I2C requiere 2 líneas... ¿Cómo funcionaría la atribución de bus?
Tu pregunta es demasiado vaga. Comience diciendo qué protocolo desea convertir. (Si hay un solo chip que puede convertir protocolos dúplex arbitrarios en un solo cable, hágamelo saber y lo nominaré para el premio Nobel). Sospecho que hay un problema X/Y.
Para poder responder esta pregunta, no puede ser vago con el protocolo con el que desea trabajar. RS-422 y SPI pueden ser dúplex completo pero son muy diferentes (uno tiene un reloj, el otro no). Menos de los cuales, uno tiene el reloj y otro no. Además, hay muchas posibilidades de que no pueda hacer esto sin el software adecuado en ambos lados. Por lo tanto, no espere una solución plug-and-play ciega a menos que involucre procesadores en ambos extremos de la línea que realicen toda la traducción y la administración.
Lo siento, copiaré y pasaré mi edición aquí: los dos protocolos son (destruidos y convertidos a un solo extremo) SpaceWire (o al menos hardware SpaceWire que transporta señales I2C) e I2C. SpaceWire usa un pin de entrada y salida de datos, por lo que me gustaría poder enviar una dirección o comando, etc. al dispositivo I2C a través del cable DOUT y recibir los datos a través del cable DIN. SpaceWire es un protocolo difícil para los circuitos integrados de interfaz, que no existen o tienen un precio exorbitante. Por 1 y 2 hilos estoy excluyendo la línea de reloj ya que será compartida entre los dos protocolos.
Como probablemente pueda imaginar, los periféricos SpaceWire no son demasiado comunes, y preferiría no tener que jugar con las líneas de selección de chips SPI. Gracias por la ayuda.
Necesitará un procesador que acompañe a cada dispositivo spacewire con un software personalizado que traduzca específicamente su esquema de mensajes I2C especificado a medida en mensajes spacewire. Compartir el reloj spacewire ya no es necesario y solo hace que las cosas sean realmente complicadas.

Respuestas (1)

Hay un protocolo que se llama sensatamente "1-Wire" en el que solo se requiere un solo cable. Este protocolo requiere un maestro para evitar colisiones. No conozco ninguna forma de evitar esto: debe tener un solo maestro o debe permitir colisiones y hacer detección de colisiones.

De todos modos, es compatible con una serie de dispositivos a través del firmware y posiblemente todavía algo de hardware. Para reemplazar un diseño de dúplex completo, el maestro tendría que establecer las reglas, solicitando datos al esclavo, y el esclavo tendría que esperar hasta que el maestro permitiera la transmisión, pero creo que podría implementarse fácilmente con la inevitable pérdida de datos. tasa.

¡Buena suerte!

Lo siento, omití las líneas del reloj ya que se compartirán entre los protocolos (ver mi edición). Me olvidé de mencionar eso. Sería una red maestro-esclavo, con un procesador central y varios sensores.