¿Cómo puedo averiguar la velocidad de un UART desconocido?

2

Así que tengo una pieza de hardware que soy ingeniería inversa. Creo que he encontrado un UART en el tablero. Tengo un FPGA conectado a él que simplemente lo hace:

ExtTX <= PCRX;
PCTX <= ExtRX;

De esta manera, teóricamente, puedo manejar cualquier velocidad que la FTDI en mi FPGA pueda (que es bastante rápida). Por lo tanto, tengo la parte de hardware cubierta. Ahora, sin embargo, utilizando Linux (o Windows), ¿cómo puedo averiguar cuál es la velocidad y los bits de parada y otras opciones de configuración de la conexión serie?

    
pregunta Earlz

3 respuestas

5

Quiere medir el tiempo de transición más corto.

Esta voluntad, suponiendo que el bus que está viendo tenga un contenido variado decentemente, le indicará el tiempo de bit para la interfaz serial. A continuación, puede pasar de eso a la velocidad de transmisión global.

Sin embargo, realmente, si realmente desea hacer ingeniería inversa o cualquier tipo de ingeniería eléctrica, necesitará un osciloscopio (y probablemente un analizador lógico), por lo que debería pensar comprando uno pronto.

    
respondido por el Connor Wolf
2

Con un poco de suerte, la fuerza bruta a veces puede ser más rápida que sacar su osciloscopio o analizador lógico (o su única opción cuando no tiene este tipo de equipo).

Tengo un cable USB < = > Serial por ahí que uso para estos desafíos. Solo conecto los cables GND y RxD de éste al circuito y solo intento capturar datos. Normalmente comienzo en 9600 8N1 (que es bastante común), donde 9600 es la velocidad en baudios, 8 es el número de bits de datos, N es corto para la no paridad y 1 es el número de bits de parada.

El método lento utiliza un programa como PuTTY y configúralo para cada Baudrate que desees. Para intentarlo, mi método rápido es un script de Perl al que puedo acceder desde la línea de comandos y toma la tasa de baudios como opción, seguida de una herramienta que realiza el volcado de los datos recibidos. Aquí hay un ejemplo (Linux):

cat_usbCable --baudrate=2400 | hexdump -C
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  40 13 40 00 00 00 00 00  |..>.....@.@.....|
00000020  40 00 00 00 00 00 00 00  c8 62 00 00 00 00 00 00  |@........b......|
00000030  00 00 00 00 40 00 38 00  09 00 40 00 1c 00 1b 00  |[email protected]...@.....|

Las velocidades en baudios comunes son: 300, 600, 1200 , 2400, 4800, 9600 , 14400, 19200, 38400, 57600 , 115200 .

    
respondido por el jippie
1

La forma más sencilla sería utilizar un analizador lógico con decodificador RS232 incorporado o un osciloscopio para sondear las señales.

Si no tiene esas herramientas disponibles, probablemente necesitará escribir un decodificador para su FPGA para calcular los tiempos de bits y palabras usando un reloj de referencia.

    
respondido por el Amoch

Lea otras preguntas en las etiquetas