Monitoreo de dos líneas seriales al mismo tiempo

Primero, esta es la configuración: Dos dispositivos seriales hablando entre sí, más dos FT232RL con pines Rx conectados a las líneas Tx de cada dispositivo(tenga en cuenta que uno de los terrenos no está conectado, ambos FTDI funcionan correctamente)

Ahora, he usado PuTTY para observar estos dos flujos en serie, ambos intercambiando datos a 9600 baudios, pero mi problema es registrar la actividad en función del tiempo.

También probé algunos monitores seriales que encontré en los tubos, pero la resolución de tiempo es en segundos.

¿Existe una herramienta para monitorear estos dos flujos al mismo tiempo? Si no lo hay, debería programar uno yo mismo en Processing (supongo que tomará menos tiempo en este idioma).

PD: el objetivo final de esto es reemplazar el dispositivo remoto (un control remoto con cable real) con una pequeña MCU como ATtiny85 o ATtiny2313 con una entrada simulada.

PS2: Solo tengo estos dos FTDI, un osciloscopio analógico y un multímetro.

Lo que realmente quieres aquí es un analizador lógico. Sin embargo, las restricciones presupuestarias parecen hacer que no esté disponible.
Tienes toda la razón Nombre falso, el presupuesto y el tiempo de entrega es una mierda cuando estás en una empresa que no está en el negocio de la electrónica y en el último país de la tierra (Chile).
Además, al final, las señales en los cables de la pregunta no eran RS232 @ TTL :(
Algo así como los analizadores lógicos USB USBee SX ( usbee.com ) o Saleae Logic ( saleae.com/logic ) harían esto fácilmente y por menos de $150. Personalmente, tengo el USBee SX, pero debería haber comprado el Saleae (no uso Windows). Por lo demás, ambos son bastante idénticos.
Tengo USBee AXPRO y Saleae Logic. USBee apesta!!!! Su software falla todo el tiempo y tiene una interfaz de usuario engorrosa. Saleae, en cambio, mucho más pulida.
No puedo corroborar la experiencia de Eric M con USBee. Descubrí que es muy confiable y me ha ahorrado mucho esfuerzo al depurar algunos problemas peculiares del protocolo serial entre dispositivos. Ciertamente hay características que desearía que tuviera, pero por el precio... No tengo experiencia con Saleae, el lanzamiento de la moneda aterrizó en USBee cuando estaba comprando.
@RBerteig: La suite USBee fallaba si usaba más de 3 canales de captura a 24Msps. Hago mucho trabajo de I2S, por lo que necesito mirar el reloj de palabras, el reloj de bits, los datos y un canal de decodificación. El AXPro tiene un alcance y el alcance son dos pequeños pines en el costado de la unidad. Las sondas para el alcance son cables baratos que se deslizan en este conector de cabecera. Los cables eran demasiado gruesos para la abertura. La construcción endeble se sentía como si estuviera a punto de romperse si intentaba forzar los pines para instalar los cables de la sonda. El software no es tan bueno como el software Saleae. Desplazarse por los datos es, en el mejor de los casos, una tarea.

Respuestas (6)

Si tiene un sistema operativo Windows de 32 bits, le recomendaría usar PortMon . Se reduce al milisegundo por lo menos. Incluso podría ser una resolución de microsegundos. Lo he usado mucho en el pasado con gran éxito.

En su caso particular, colocará cada chip FTDI en su propio puerto serie. Luego, en PortMon, simplemente seleccione los puertos que desea monitorear en el menú desplegable. Ambos conjuntos de datos se registran en alta resolución e incluso puede agregar filtros para reducir la cantidad de datos. Para el monitoreo del protocolo en serie, agrego el filtro de inclusión IRP_MJ*.

Muchas gracias a ti mi amigo! el programa funciona perfectamente!, de todos modos tengo que abrir cada puerto independientemente (con PuTTY) para que capture. Ahora miraré los datos capturados ahora.
genial, me alegro que te esté ayudando. PortMon ha sido mi amigo durante mucho tiempo. :)
Tenga en cuenta que la conversión USB afectará los tiempos, y el orden relativo de bytes en cada canal puede incluso parecer diferente. Reducir con el temporizador de latencia y la configuración en el controlador FTDI puede marcar una gran diferencia aquí (administrador de dispositivos->configuración del puerto->avanzado). Si el tiempo es crítico, no hay sustituto para los puertos COM reales.
¡absolutamente! Verá una latencia de aproximadamente 16 ms en la comunicación de ida y vuelta. Es muy notable cuando se compara la actualización de un micro a través de un adaptador USB -> serie frente a un puerto COM "real".
Otra opción es usar los chips UART duales/cuádruples FT2232 o FT4323 de FTDI; estos ejecutan USB2 de alta velocidad, por lo que la latencia del USB debería ser mucho menor.
Mi colega me había hablado de un chip FTDI mucho mejor y más nuevo que soluciona este problema. Debe ser el que usted está hablando! :) Lo investigaré, gracias por compartir el número de pieza.

Docklight es la herramienta que estás buscando: http://www.docklight.de/

Lo he usado antes y es genial. Pruébelo al igual que PortMon.

Docklight realmente brilla cuando desea trabajar con protocolos ascii/binarios mixtos. Además, he encontrado que la función de macros es realmente útil, donde puedes preprogramar una serie de bytes para enviarlos automáticamente. La función de respuesta automática también es genial. Sin embargo, no puede registrar dos puertos simultáneamente (que yo recuerde).

Otra opción podría ser com0com o su proyecto hermano hub4com.

com0com es increíble, además funciona en Windows de 64 bits. No sabía que se registraba; solo he usado su súper práctico simulador de puerto/retroceso interno de módem nulo/función de mapeo de puertos.

Escribí algo como esto explícitamente para ver la conversación entre mi iPod y el adaptador de iPod en mi auto. La fuente está aquí en GitHub . Es bastante específico para el protocolo del iPod, pero necesito poder ver los datos que se transmiten y reciben del iPod en tiempo real y hacer coincidir una respuesta con su solicitud lo más cerca posible. Esto funciona bastante bien para mí.

Si desea una sincronización precisa, no puede ir a puertos serie separados. Necesita un microcontrolador que pueda capturar los datos de ambas fuentes y enviarlos a la PC a una velocidad de datos que sea más del doble de la velocidad de datos de los dispositivos que se comunican. Suponga que los dispositivos se comunican a 115 200 baudios y la conexión a la PC es a 500 000 baudios (una velocidad admitida por FTDI). Entonces, uno podría, 12,500 veces/segundo (cada 80us), hacer que el microcontrolador genere un registro de 1-3 bytes, que consta de un encabezado, y los 7 bits inferiores de transmisión y recepción de bytes de datos (este último solo se incluye si está presente)

Formatos de encabezado:
10rrRttT: ambos bytes están presentes;
             RX byte recibido rr*20us después del inicio de la trama; MSB es R
             Byte de TX recibido xx*20us después del inicio de la trama; MSB es T
11000rrR: solo está presente el byte RX; datos como arriba
11001ttT - Sólo está presente el byte TX; datos como arriba
11111111 - No hay datos RX ni TX presentes;
           Los siguientes uno o dos bytes pueden proporcionar una marca de tiempo larga

Incluir una marca de tiempo en el caso de que no haya ningún byte de datos evitaría tener que enviar 12.500 registros/segundo en momentos en los que no se estaba enviando nada.

El uso de un enfoque como este permitiría una evaluación mucho más precisa de la sincronización de datos que la que sería posible utilizando dos puertos serie separados (donde la resolución de sincronización sería de 1 ms en el mejor de los casos). El software de PC tendría que estar preparado para analizar los datos, por supuesto.

Este puede ser un momento en el que buscar los recursos para comprar un analizador lógico económico basado en USB sea la respuesta correcta. Recientemente adquirí un USBee SX y estoy muy satisfecho. Fuera de la caja, puede decodificar en serie en varias líneas (solo nivel TTL) y mantenerlo todo sincronizado mucho mejor que el tiempo de un solo bit.

No tiene RAM interna, por lo que envía todos los datos que muestra al USB. Eso tiene un par de ventajas y al menos una desventaja. Una gran ventaja es el precio. Casi no hay nada dentro del USBee SX entre sus señales y el USB, por lo que no tiene que costarle muchos brazos y piernas. La mayor ventaja es la profundidad de captura. Solo está limitado por el almacenamiento en la PC. Si necesita una captura de una hora para detectar un error de ventana de tiempo esquivo, puede hacerlo.

Una desventaja es que la frecuencia de muestreo superior está limitada, por lo que toda la muestra se puede cargar en el USB. Esto lo hace menos útil para la lógica digital de gama alta, pero para los protocolos de comunicaciones en serie no es gran cosa.

El SX cuesta alrededor de US$170. A ese precio, no tiene que ahorrarle a su empresa muchas horas para pagar...

Ciertamente no es el único ejemplo de la raza, pero es el único que he usado personalmente.

El software USBee apesta. Obtengo un bloqueo reproducible a los 24 ms con 3 canales lógicos. Tenía su AXE PRO y lo descarté por un producto Saleae. El software Saleae es MUCHO mejor.
Esa ciertamente no ha sido mi experiencia. Continué usando mi USBee SX en varias PC de la oficina desde que escribí la publicación original, y las únicas peculiaridades que he visto se relacionan con permitir que Windows realice modos de ahorro de energía que parecen plagar todos los dispositivos USB y son casi imposibles de reproducir. Ningún producto es perfecto, ciertamente, y su kilometraje puede y será diferente.
realmente te lo debes a ti mismo para probar el software de Saleae. Compara la navegación y el zoom. Aunque Saleae es un par de chicos en un garaje, tienen un mejor producto, su soporte apesta y es tan malo como el soporte de USBee. Pero al menos con Saleae, los propietarios responden directamente a los correos electrónicos. No tienen concepto de hoja de ruta de software... Podría continuar. Supongo que soy exigente y no debería esperar mucho de un dispositivo USB de $ 140 o $ 500, ¿verdad?