Aplicación de USB a UART y RS-485 a UART al único puerto MCU UART

Básicamente, me gustaría poner dos interfaces externas en un dispositivo. Uno de ellos será RS-485 (yo usaría SN75176 para eso) y el segundo es USB (con FT232BM ).

Usaré la CPU ATmega48PA-AU como núcleo. Entonces tendré solo un puerto USART en el extremo de la CPU.

Una suposición importante es que solo se utilizará una interfaz a la vez.

Lo que pretendo hacer es usar el desacoplamiento diodo-diodo para la línea RxD:

ingrese la descripción de la imagen aquí

Espero que este esquema funcione para frecuencias bajas (9600 en mi caso). Pero nunca he usado el chip FT232BM en particular, además nunca he diseñado ningún dispositivo con interfaz USB. Entonces, algunos problemas de los que no estoy al tanto pueden sorprenderme. ¿Hay alguna?

¿Y hay mejores soluciones baratas y simples para desacoplar interfaces para tal caso?

Esto no funcionará si las dos interfaces están conectadas al mismo tiempo, sin importar si se usan o no, ya que pueden desconectar su línea RX.
Quizás una solución más simple sería usar una MCU con dos UART. O, aún más eficiente: una MCU con UART y una interfaz USB (más barata, más pequeña). ¿Alguna razón por la que parece haber excluido estas opciones?
@AdamCalvetBohl, el receptor inactivo debe mantener alta su línea RXD. Tomado de este artículo: en.wikipedia.org/wiki/Universal_asynchronous_receiver/…
@dim tengo el dispositivo ya diseñado, probado e incluso puesto en pequeña producción. Lo que necesito es agregar una sola opción en él. Por lo tanto, reemplazar la MCU será una molestia para mí: cambiar la ruta de la placa, reemplazar los componentes originales, reescribir el software. Entonces, en mi caso, no será una solución simple de todos modos :(
Ok, entonces no encuentro ninguna otra razón para que esto falle, pero no estoy seguro. He usado la familia FT232 a diferentes velocidades pero nunca he trabajado con RS-485 en MCU...
@AdamCalvetBohl, desde mi punto de vista, RS-485 es el protocolo de transmisión de datos industrial (o nunca) más simple.
Sí, lo sé, pero nunca trabajé con eso.

Respuestas (1)

Una solución alternativa: el FT232BM tiene un pin llamado #PWREN: pasa a nivel bajo después de configurar el dispositivo a través de USB, luego a nivel alto durante la suspensión de USB. Se puede usar para controlar la alimentación a la lógica externa (por ejemplo, usando un interruptor MOSFET de nivel lógico de canal P). Tal vez apague el dispositivo RS485.

La señal PWREN# será alta (alimentación = apagada) en las siguientes condiciones:

· El dispositivo FT232BM / FT245BM está en reset

O

·El dispositivo FT232BM / FT245BM aún no está configurado por enumeración USB, o la secuencia de enumeración USB ha fallado

O

·El sistema de la PC host está en estado de suspensión USB