¿UART como analizador lógico?

Me gustaría aplicar ingeniería inversa a cierto circuito digital de 2 hilos. Estoy buscando el analizador lógico más barato posible. No sé la frecuencia exacta del circuito, pero es sub-1MHz. (Probablemente en el rango de 50kHz-500kHz.)

Obviamente, he oído hablar de Bus Pirate, pero pensé: bueno, ¿por qué no usar un puerto serie en mi computadora portátil? Tengo un dongle UART a USB basado en un chip de la familia FT232, que se supone que funciona con velocidades de transmisión no estándar, hasta 1 Mbd y más (según el modelo específico que busque).

Hay dos desafíos que puedo ver de inmediato:

  1. Voltaje. ¿Supongo que un simple divisor de voltaje de dos resistencias será suficiente?
  2. Reloj. Como no conozco la tasa de baudios del sujeto, no veré la señal adecuada de inmediato. ¿Tal vez podría sobremuestrear inicialmente y averiguar la frecuencia real de la señal observada?
Los chips FTDI, incluso el FT232, tienen un modo bitbang, que puede usar para muestrear una señal digital a una velocidad específica. Sin embargo, es probable que tenga que escribir su propio software y no estoy seguro de que pueda probar de forma continua a lo largo del tiempo. pero si tienes mucho más tiempo que dinero, o mucho más sentido común que dinero, podría valer la pena intentar comprar algo como un Bus Pirate.

Respuestas (1)

Hay más en serie que solo la velocidad en baudios. RS-232 es un protocolo enmarcado . Es decir, cada byte de datos está enmarcado por marcadores de identificación, a saber, los bits de inicio y parada . Solo cuando se haya detectado un paquete RS-232 válido delineado por estos bits de marcador, se enviará a su computadora portátil como un byte válido.

A menos que su flujo de datos desconocido sea RS-232 en su formato, el chip FT232 no podrá identificar paquetes válidos y, por lo tanto, no podrá decirle qué está pasando.

Hay otros chips FT* disponibles que pueden funcionar con flujos de datos arbitrarios o pines de E/S sin procesar, y es posible que pueda encontrar un chip que sea adecuado, pero encontrar uno en un dongle fácil de usar puede ser más complicado.

Realmente quieres algo más genérico, como un Bus Pirate, pero de hecho cualquier cosa que sea capaz de inspeccionar el estado de las líneas de señal digital lo suficientemente rápido y convertirlo en un formato que la computadora pueda leer (USB) haría el trabajo.

A menudo uso una placa basada en un microcontrolador genérico para hacer el trabajo (utilizo chips PIC32MX de 80 MHz o PIC32MZ de 200 MHz y la plataforma chipKIT principalmente). Estas tablas tienen la ventaja de que también puedes usarlas para otras cosas. Arduino es popular, pero los de gama baja pueden ser un poco lentos para una detección confiable sin usar trucos sofisticados (interrupciones, etc.).

Uno puede intentar usar las señales de control de UART con algún tiempo personalizado. Pero será un desastre.
@EugeneSh. Y también posiblemente demasiado lento para una detección confiable.
¡Gracias por una respuesta inmediata! :) ¿Haría el trabajo un Raspberry Pi GPIO? (Tengo un RPi en algún lugar de casa). EDITAR: ¡No! RPi GPIO es demasiado lento.
Bueno, resulta que si usas el software correcto, ¿quizás RPi GPIO pueda funcionar? codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-velocidad
Un RPi es ciertamente una posibilidad, sí. Especialmente si ejecuta su software de análisis directamente en el Pi para que no tenga problemas para transferir los datos lo suficientemente rápido a su PC.