Comunicación en serie entre el sistema integrado y la PC con solo puertos USB disponibles.

1

Estoy trabajando en una aplicación en la que tengo parte de un sistema Linux integrado que transfiere algunos datos a una PC utilizando PySerial (un módulo de Python). Mi pregunta es: ¿existe una alternativa a la búsqueda de una PC con un conector RS232 para establecer una comunicación bidireccional entre la PC y el sistema integrado? Gracias.

    
pregunta NewToArduino

2 respuestas

2

Un adaptador USB-Serial hará lo que quieras, están disponibles y son baratos. Sin embargo, lo más probable es que vengan con un conector RS232 SUB-D y generen niveles de voltaje RS232, que luego necesitan conversión.

También puede encontrar USB-Serial cables con encabezados de pines y agradables niveles de 3.3 V, mucho más fáciles de usar en su aplicación.

EDIT

Así que quieres vincular tus dos dispositivos a través de USB. Como dice que el dispositivo integrado usa Linux, debe tener Python. Dependiendo del rendimiento y la complejidad, hay muchas soluciones ...

  • Si su tarjeta integrada tiene Ethernet ... ¡solo use eso!
  • Dos adaptadores USB de serie espalda con espalda (aunque la velocidad es limitada)
  • El " cable de transferencia de archivos USB a USB ", que en realidad emula un puerto Ethernet para cada puerto USB, por lo que ambos dispositivos están conectados en red.
  • Programe la placa incorporada para que actúe como un dispositivo USB, hay bibliotecas para hacer esto en Linux, intenté buscar un poco en Google y encontré this y this por ejemplo.

He programado un dispositivo USB en un Cortex-M4, no es ciencia espacial pero toma un tiempo. Entonces, si necesita el menor costo posible, este sería el mejor, ya que todo lo que necesita es un cable. Si este es un proyecto único o personal, prefiero recomendar las otras soluciones.

    
respondido por el peufeu
0

@peufeu está en el camino correcto con el uso de dos adaptadores de USB a serie. Pero falta una cosa muy importante: necesitará un adaptador de "módem nulo" entre ellos.

Para un tipo de conector particular (ya sea de 9 pines o de 25 pines) hay dos tipos de cableado RS-232: "DTE" (Equipo de terminal de datos) que es típicamente una PC, y "DCE" (Equipo de comunicaciones de datos ) que puede ser un módem telefónico o equipo similar. (¡Si eres joven, dirás qué diablos es un módem telefónico!)

Por lo tanto, un DTE (PC) transmitirá datos en el pin 3 y recibirá datos en el pin 2, mientras que un DCE (módem) recibirá datos en el pin 3 y transmitirá en el pin 2.

El problema es que el adaptador USB a serie generalmente está cableado como un DTE, por lo que si simplemente los conecta directamente, ambos intentarán enviar datos al mismo pin 3 y recibirlos en el mismo pin 2.

Por lo tanto, un módem nulo es un cable o conectores back-to-back donde los pines RX y TX se intercambian para que transmitan y reciban datos en los pines correctos.

Además, los pines de handshaking se intercambian para que parezcan correctos.

Por lo tanto, en conclusión, hace que el DTE en el otro lado se vea como un DCE y las dos computadoras pueden hablar entre sí y el protocolo de enlace funciona correctamente.

Aquí hay una imagen de Wikipedia que ayuda a visualizar lo que está pasando:

La entrada completa está aquí: enlace

Puedes cortar los conectores y conectarlos tú mismo. La configuración mínima sería ignorar todas las líneas de intercambio de manos y simplemente conectar 3 cables: conecte el pin 5 de GND, y los de 2 y 3 de los cables intercambiados (2 de uno va a 3 del otro y viceversa). Eso es.

Aquí hay un fragmento de protocolo de enlace: el DTE eleva el RTS (solicitud de envío) alto y el módem, si está listo para obtener datos, debe elevar el CTS (claro para enviar) alto. Cuando el módem está ocupado y no puede aceptar datos en el momento en que baja el CTS.

Por lo tanto, en la configuración mínima, ninguno de esos cables está conectado, así que tendrías que deshabilitar el handshaking en tu SW y asumir que el otro tipo está listo para recibir cada vez que transmitas.

    
respondido por el Vince Patron

Lea otras preguntas en las etiquetas