Depurar UART con osciloscopio: guía de captura y decodificación

Aprende a depurar UART con osciloscopio paso a paso. Configura el trigger, decodifica tramas y detecta errores en tus proyectos de electrónica y Arduino.

A todos nos ha pasado: conectas dos microcontroladores, configuras el puerto serie y, sin embargo, la comunicación falla. El LED de transmisión parpadea indicando actividad, pero el receptor no muestra nada o, peor aún, imprime una cadena interminable de caracteres sin sentido. En esos momentos de frustración, revisar el código una y otra vez suele ser insuficiente porque el problema real no siempre está en el software.

Cuando la lógica del programa parece correcta pero los datos no llegan, es necesario bajar al nivel físico para entender qué está ocurriendo en el cable. Diversas situaciones, desde una masa mal conectada hasta una discrepancia sutil en la velocidad de transmisión, pueden estar corrompiendo los bits en su viaje de un chip a otro.

Aquí es donde entra en juego la instrumentación. En esta guía aprenderás cómo utilizar esta herramienta para visualizar la ‘verdad’ eléctrica de tus señales. Veremos paso a paso cómo capturar la trama, analizar su calidad y decodificar la información para identificar exactamente dónde se rompe la comunicación.

Diagrama de la estructura de una trama UART con bit de inicio, bits de datos, paridad opcional y bits de parada

Conceptos básicos de la trama UART

Para interpretar correctamente lo que aparece en la pantalla de tu instrumento, es fundamental conocer la anatomía de una señal serie asíncrona. En reposo, la línea de transmisión se mantiene en un estado lógico alto (idle high), lo que permite al receptor detectar cuándo comienza una transmisión real y distinguirla del ruido eléctrico ambiental o de una desconexión.

La transmisión de cada byte comienza invariablemente con un bit de inicio, que fuerza la línea a nivel bajo durante un periodo de tiempo determinado por la velocidad de baudios. A continuación, se envían los bits de datos (generalmente 8), seguidos opcionalmente por un bit de paridad y finalizados por uno o dos bits de parada que devuelven la línea al estado alto. Si la configuración de velocidad no coincide exactamente entre emisor y receptor, la sincronización se pierde y la información se corrompe.

Preparación del osciloscopio para depurar UART

Antes de empezar a tocar los menús de configuración, debes asegurar un entorno de medición fiable. Muchos problemas que parecen errores de datos son, en realidad, artefactos introducidos por una mala configuración física o un cableado deficiente que actúa como antena para interferencias externas.

Es vital comprobar que la tensión de referencia es común entre el dispositivo bajo prueba y tu equipo de medida. Una diferencia de potencial entre las masas puede distorsionar la señal o incluso dañar las entradas si trabajas con un osciloscopio digital sensible conectado a la red eléctrica sin aislamiento.

Selección de la sonda y técnica de conexión a masa

El uso de una sonda configurada en atenuación 10x es prácticamente obligatorio para estas mediciones. Al utilizar la sonda en 1x, la carga capacitiva aumenta significativamente, lo que puede redondear los flancos de subida y bajada de la señal UART, especialmente si trabajas a velocidades altas como 115200 baudios o superiores.

Infografía con tres pasos clave para preparar el osciloscopio antes de medir una señal UART

La conexión de tierra es el punto más crítico para la fidelidad de la señal. Evita usar el cable largo con pinza de cocodrilo si buscas ver problemas de integridad de señal, ya que su inductancia parásita provoca rebotes y ruido inexistente en la realidad. Lo ideal es utilizar el pequeño muelle de masa que se acopla a la punta de la sonda para minimizar el bucle de tierra.

Ajuste de la escala vertical según el nivel lógico

La escala vertical debe permitirte ver claramente los niveles de tensión sin recortar los picos ni dejar la señal demasiado pequeña. Para microcontroladores modernos que operan a 3.3 V o 5 V, una escala de 1 V/div o 2 V/div suele ser adecuada, permitiendo verificar si los niveles altos alcanzan el voltaje mínimo necesario para ser interpretados como un ‘1’ lógico.

Asegúrate de que el acoplamiento del canal esté en DC (corriente continua). Si lo dejas en AC, la señal se deformará y perderás la referencia del nivel de cero voltios, haciendo imposible saber si la línea está realmente en reposo o si hay un desplazamiento de tensión. Debes ajustar la posición del nivel de referencia para que el cero esté claramente visible en la parte inferior de la cuadrícula.

Configuración del trigger para capturar comunicaciones serie

El modo de disparo automático (‘Auto’) es útil para ver si hay actividad en la línea, pero resulta inservible para analizar datos concretos porque la señal se moverá erráticamente por la pantalla. Para congelar una trama UART específica y estudiarla, debes cambiar el modo de disparo a ‘Normal’ o ‘Single’, lo que asegura que el osciloscopio solo actualice la pantalla cuando detecte una condición válida.

Infografía que compara modos de disparo y opciones de decodificación UART en un osciloscopio

El método más básico consiste en configurar un trigger por flanco de bajada. Dado que el bit de inicio siempre es una transición de alto a bajo, ajustar el nivel de disparo a la mitad de la tensión lógica (por ejemplo, 1.65 V para sistemas de 3.3 V) te permitirá capturar el comienzo de cualquier byte transmitido. Esto es suficiente para verificar la presencia de datos o medir tiempos básicos.

Sin embargo, si necesitas aislar un carácter concreto o depurar un comando específico, lo ideal es utilizar el disparo por protocolo serie si tu equipo lo permite. Esta función avanzada deja configurar el osciloscopio para que se dispare únicamente cuando reconozca un valor hexadecimal determinado o una condición de error específica, filtrando todo el tráfico irrelevante.

Activación y lectura de la decodificación automática

La mayoría de los osciloscopios modernos incluyen funciones de decodificación de bus que traducen los pulsos eléctricos en valores legibles. Para que esto funcione, debes acceder al menú de ‘Decode’ o ‘Bus’ y seleccionar el protocolo UART/RS-232, asignando el canal analógico correspondiente a la línea RX o TX que estés midiendo.

Es imprescindible que introduzcas manualmente los parámetros de la comunicación para que coincidan con los del microcontrolador:

  • Velocidad de baudios: Debe ser exacta (ej. 9600, 115200).
  • Polaridad: Normalmente ‘Idle High’ para TTL.
  • Formato de datos: Número de bits, paridad y bits de parada.

Una vez configurado, verás una tabla o una línea superpuesta a la onda que muestra los valores decodificados en Hexadecimal, ASCII o Binario. Esto te permite correlacionar visualmente si un defecto en la forma de onda coincide con un carácter erróneo en el mensaje, facilitando enormemente el diagnóstico de depurar UART con osciloscopio.

Diagnóstico de fallos comunes en la señal

Cuando la comunicación falla, el osciloscopio te permite discernir rápidamente si el problema es lógico o físico. Un error lógico implica que la señal eléctrica es perfecta, pero el contenido de los bytes o la configuración de velocidad es incorrecta, lo que sugiere un fallo en el firmware del emisor o en la configuración del receptor.

Por otro lado, los problemas físicos se manifiestan como deformaciones en la onda. Si ves que la señal tiene una forma correcta pero el receptor no la entiende, es probable que haya ruido excesivo, niveles de tensión insuficientes o problemas de capacitancia en el cableado que están alterando los tiempos de subida y bajada.

Detección de errores de protocolo y paridad

La decodificación automática del osciloscopio suele marcar en rojo los tramos donde la trama no cumple con el estándar esperado. Un error de ‘Framing’ ocurre cuando el equipo espera encontrar un bit de parada (nivel alto) al final del byte, pero la línea se mantiene baja; esto suele indicar una desincronización en la velocidad de baudios.

Los errores de paridad, por su parte, señalan que el número de bits recibidos no coincide con el bit de control de paridad configurado. Visualizar este error en pantalla te ayuda a confirmar si el problema es aleatorio, causado quizás por una interferencia esporádica, o si es sistemático debido a una configuración errónea en el código.

Identificación de problemas de integridad de señal

Una señal digital ideal debería ser cuadrada, pero en el mundo real, la impedancia y la capacitancia del circuito la alteran. El ringing o sobreimpulso excesivo en los cambios de estado puede provocar que un bit se lea múltiples veces o que se superen los límites de tensión del chip receptor.

Otro defecto común son los tiempos de subida muy lentos, donde la señal tarda demasiado en pasar de 0 a 1, pareciéndose más a una aleta de tiburón que a un muro vertical. Esto suele deberse a una capacitancia excesiva en la línea o a una resistencia de pull-up demasiado alta, y puede causar que el receptor lea el bit más tarde de lo debido.

Verificación de la velocidad de baudios real

A veces, el osciloscopio no decodifica nada porque la velocidad real del dispositivo no es la que crees. Para comprobarlo, busca el pulso más estrecho en la trama capturada, que corresponde a un solo bit, y utiliza los cursores verticales para medir su duración en el tiempo.

La frecuencia real se calcula invirtiendo ese tiempo (1 / duración del bit). Si esperas 115200 baudios, el bit debería medir aproximadamente 8.68 microsegundos. Una desviación superior al 2-3 % en esta medida es suficiente para romper la comunicación y generar caracteres basura.

Cuándo es preferible usar un analizador lógico

Aunque el osciloscopio es insustituible para ver la calidad eléctrica, tiene limitaciones de memoria y canales. Si necesitas analizar conversaciones muy largas entre dispositivos o correlacionar el puerto serie con muchas otras señales digitales (como SPI o I2C) simultáneamente, un analizador lógico es una herramienta más adecuada.

La siguiente tabla resume cuándo elegir cada instrumento:

Situación Herramienta recomendada
Ver ruido, niveles de voltaje o forma de onda Osciloscopio
Capturar minutos u horas de tráfico de datos Analizador Lógico
Decodificar más de 4 líneas simultáneas Analizador Lógico
Detectar glitches o pulsos espurios muy cortos Osciloscopio

Para un aficionado que ya dispone de un osciloscopio USB o de banco, este suele ser el primer paso para descartar problemas físicos antes de pasar a un análisis de protocolo más profundo con herramientas lógicas dedicadas.

Dudas frecuentes al medir puertos serie

Una pregunta habitual es qué hacer si no conoces la configuración del puerto serie del dispositivo que estás reparando. En ese caso, debes capturar una trama utilizando el trigger por flanco y medir manualmente el bit más corto como se explicó anteriormente; esto te dará la velocidad aproximada para configurar la decodificación.

También es frecuente la duda sobre el uso de sondas 1x en señales ‘lentas’ como 9600 baudios. Aunque técnicamente es posible, no es recomendable porque sigues introduciendo carga al circuito y limitas el ancho de banda para ver posibles ruidos de alta frecuencia que podrían estar montados sobre esa señal lenta.

Por último, si al decodificar solo ves caracteres extraños o símbolos de interrogación, verifica primero que la tierra del osciloscopio esté bien conectada. Si la masa es sólida, prueba a invertir la polaridad de la señal en el menú de decodificación, ya que algunos transceptores RS-232 o adaptadores USB invierten los niveles lógicos.

Dominar la técnica para depurar UART con osciloscopio transforma la manera de afrontar los problemas de comunicación en sistemas embebidos. En lugar de adivinar qué ocurre entre el transmisor y el receptor basándote solo en el código, la visualización directa de la señal te permite confirmar si el fallo es un error de configuración de software o un problema de integridad física en la placa.

Recuerda que, aunque los analizadores lógicos son potentes para leer grandes volúmenes de datos, solo el osciloscopio revela la calidad eléctrica de la trama. Verificar la limpieza de los flancos, la ausencia de ruido y los niveles de voltaje correctos es el paso definitivo para asegurar que tus prototipos con Arduino o ESP32 funcionen de forma robusta y profesional.


Deja un comentario