Estoy tratando de hacer que dos dispositivos esclavos (es decir, sin controlador de host) se comuniquen.
Usando cables convertidores estándar de USB a RS232, no puedo hacer que los dos dispositivos se comuniquen entre sí. Creo que esto se debe a que no tiene un "controlador de host".
Entonces, para obtener comunicación, creo que necesito introducir un controlador "host" entre los dos esclavos:
TTL <-> Anfitrión <-> RS232
¿Estoy en la línea correcta con esta idea/solución?
Creo que hay una confusión en algún lugar aquí. No puede decir "dispositivo DB9 esclavo" porque aunque DB9 se usa para innumerables protocolos (CAN, USART, etc.) ninguno de ellos tiene nada que ver con el significado de dispositivo esclavo USB.
A menos, por supuesto, que este DB9 esté conectado internamente a otro convertidor de serie a USB en el interior que conduce a un esclavo USB real más adelante. Pero dado que ocultar el esclavo USB en una caja separada del mundo por una interfaz serial tiene muy poco sentido, asumiría que no es el caso aquí.
Entonces, básicamente tiene un dispositivo desconocido (para mí) con algún protocolo serial basado en TTL en el lado DB9. Al conectarle un cable RS232 a USB, NO lo convierte mágicamente en un dispositivo esclavo. O, más precisamente, lo convierte en un esclavo USB de "clase de proveedor" con descriptor de interfaz FTDI (o cualquier chip que esté dentro de ese cable).
Por otro lado, tiene un dispositivo con conector USB conectado internamente al chip FT232R y luego a MCU con interfaz serial. Esto me dice que el Esclavo 1 tampoco es un verdadero esclavo USB. Los chips FT232R se utilizan como capa de transporte entre la interfaz serial del dispositivo y el puerto serial virtual en la computadora host.
Lo que básicamente significa que también tiene otro dispositivo serie (ni anfitrión ni esclavo) en este lado. Y si tiene acceso a su firmware, puede programar cualquier protocolo serial que admita el dispositivo DB9. Ésto es una cosa buena.
Lo malo es que el chip FT232R requiere un host en el medio, no hay solución aquí. Entonces, básicamente tienes cuatro opciones:
Opción de hardware + software: Cree su propio adaptador con host USB basado en MCU compatible con USB. Su software también tendrá que funcionar como controlador FTDI. Este es el enfoque más complejo, pero debería permitir no realizar ningún cambio en el firmware del Esclavo 1.
Opción de hardware + firmware: haga su propio adaptador usando el chip Vinculum de FTDI. Cárguelo con una imagen de software de puente de host UART a FT232 preprogramada . Es posible que alguien ya fabrique estos adaptadores o cables comercialmente, así que navegue por la web para encontrarlo. Modifique el firmware en el Esclavo 1 para comunicarse con el Esclavo 2 como si estuvieran conectados directamente por UART . Este es el enfoque más portátil, básicamente su propio cable RS232 a USB.
ACTUALIZACIÓN: en realidad, FTDI hace que la placa de desarrollo esté prácticamente lista para esta aplicación.
Opción de software: Conecte ambos dispositivos a la PC, Esclavo 1 directamente, Esclavo 2 a través de un cable normal RS232 a USB. Obtendrá dos puertos COM en la computadora. Desde aquí puede escribir el programa "controlador" para comunicarse con ambos dispositivos a través de esos puertos COM.
Opción de software + firmware: conecte ambos dispositivos a la PC como se indicó anteriormente. Conecte dos puertos COM utilizando cualquier software disponible, como el controlador de puerto serie virtual de Eltima. Modifique el firmware en el Esclavo 1 (exactamente como en la opción 2 anterior).
Ignacio Vázquez-Abrams
brahans
usuario3424480
usuario76844