¿Cómo resolver el problema de Bus Contention en mi caso?

La siguiente imagen describe el problema:

Contención de autobuses

El procesador 1 no tiene un canal RS232, pero tiene uno SPI, por lo que usamos un controlador UART y un traductor de nivel IC.

Los dos procesadores están en placas separadas y el receptor RS232 se conectará a ellos mediante un cable que se dividirá en dos para conectarse a cada placa.

¿Cómo podemos resolver este problema de contención de autobuses?

Editar #1

Desafortunadamente, no puedo modificar el hardware. ¿Hay alguna solución de software?

Editar #2

Pensé en una solución, pero no sé si es aplicable o no. Leí la hoja de datos del chip traductor de nivel MAX3223 y descubrí que si el nivel de entrada al IC no está definido como "Irrelevante", la salida es de alta impedancia. Encontré la siguiente tabla de funciones en su hoja de datos:

ingrese la descripción de la imagen aquí

En mi circuito, las señales FORCEON y EN~ están vinculadas a nivel bajo y FORCEOFF~ está vinculada a nivel alto.

¿Cómo puedo enviarle un nivel no identificado?

Tienes una arquitectura fundamentalmente defectuosa.
@Abdella: la hoja de datos dice que si /FORCEOFF se mantiene bajo, la salida será de alta impedancia independientemente del estado de DIN . Pero dado que dice que /FORCEOFF está vinculado en lo alto de su circuito, esto no lo ayudará. En cualquier caso, ¿cómo negociarían el procesador 1 y el procesador 2 quién tiene el control del bus?
@MikeJ-UK, no hay negociación. Primero se usará el procesador 1, luego el procesador 2. Ambos están separados y el usuario no los usará en paralelo. Pero incluso esto no resolverá el problema, siempre habrá una salida en el enlace RS232. Necesito poner uno de ellos en el estado de alta impedancia.
¿Puedes controlar la salida en el procesador 2? ¿Es posible poner los pines RS232 en modo de alta impedancia o solo de entrada e ignorar esos pines? Si puede poner esos pines en un modo inactivo cada vez que el forzado está inactivo en el cambiador de nivel, probablemente pueda hacer que esto funcione. Aunque no es la mejor solución, a veces hay que trabajar con restricciones deficientes.
@MarkSmith, el procesador 2 es un procesador de computadora que ejecuta Windows o Linux, la placa base contiene un puerto COM RS232. ¿Es posible poner este puerto RS232 de PC en modo de entrada o de alta impedancia?
Lo dudo, esperaba que la computadora 2 fuera un dispositivo integrado que pudiera hacer algo con las configuraciones de los pines. El multiplexor RS232 de Joby puede ser la mejor opción.

Respuestas (2)

No se trata de una contienda por el autobús, no hay autobús. RS-232 simplemente no funciona como usted desea. Período. Fin de la historia. Es punto a punto y no un autobús. He visto tarjetas seriales en computadoras portátiles destruidas debido a esquemas de cableado 'inteligentes'.

Hablas de aplicarle un nivel indefinido y preguntas cómo puedes hacerlo. Tampoco se puede hacer. No tiene sentido producir un voltaje 'indefinido': cuando los electrones golpean el otro extremo, el voltaje está definido, punto. No puede enviarle un nivel de voltaje indefinido.

Probablemente responderá con un comentario a esta publicación preguntando si esta respuesta es real. Es. No puede hacer nada para resolver esto sin poner algún tipo de árbitro donde se encuentran los dos cables rojos. Y como dijiste, eso implica nuevo hardware. Así que juego terminado.

RS-232 simplemente no funciona de esta manera y probablemente dañará las cosas tratando de que funcione.

Gracias por aclarar expresiones. Fundamentalmente, tienes razón. Es culpa del diseñador del circuito. ¡Soy un diseñador de PCB y estoy tratando de encontrar algún truco!

Podría usar un multiplexor RS232. P.ej. http://www.maxim-ic.com/app-notes/index.mvp/id/588

Sin embargo, es posible que deba modificar el software en su receptor RS232 para demultiplexar la señal.

Desafortunadamente, no puedo modificar el hardware. ¿Hay alguna solución de software?
Nada obvio, no.
Compruebe amablemente Editar # 2