Análisis del protocolo UART

1. Base del acuerdo

1.1. Introducción al Acuerdo

UART es "Universal Asynchronous Receiver/Transmitter", abreviatura de Universal Asynchronous Transceiver. En la década de 1860, para resolver el problema de la comunicación entre computadoras y teletipos, Bell inventó el protocolo UART, que convierte las señales de entrada paralelas en señales de salida en serie. Debido a su naturaleza simple y práctica, UART se ha convertido en un protocolo de comunicación muy utilizado. Los puertos seriales a los que estamos expuestos diariamente, RS232, RS485 y otros buses, el uso interno es básicamente el protocolo UART.

Para comprender y analizar mejor la relación entre protocolos y buses, generalmente dividimos una especificación de comunicación completa en capas físicas, capas de protocolo y capas de aplicación. La capa física solo define las características verdaderas de la señal (como voltaje, corriente, capacidad de conducción, etc.), y la correspondencia entre la señal eléctrica y la señal lógica 0 y 1; A la capa de protocolo no le importa cómo se implementan los 0 y 1 subyacentes, sino que solo especifica las especificaciones de protocolo de las señales lógicas y el proceso de comunicación (como inicio, datos y fin, etc.); La capa de aplicación no se preocupa por cómo se obtienen los datos, sino que solo define el significado de la representación de datos y cómo implementar la lógica comercial específica.

La aplicación más sencilla del protocolo UART, por lo general la capa física solo necesita dos líneas de transmisión, una para transmisión y otra para recepción, logrando así una comunicación full-duplex. Para transmisiones unidireccionales, también puede usar solo una línea de transmisión. El ejemplo más típico de una aplicación de este tipo son los puertos RX/TX del microcontrolador conectados entre sí, lo que permite la comunicación UART basada en el nivel TTL. Para diferentes distancias de transmisión y requisitos de confiabilidad, reemplazando diferentes implementaciones de capa física puede obtener nuestro RS232 común, RS485 y otros buses de comunicación.

1.2. Diferentes implementaciones de capa física

Dado que la entrada a la capa de protocolo UART es una señal lógica 0/1, la señal lógica 0/1 se puede distinguir por diferentes estándares de nivel en la capa física. Para diferentes necesidades de comunicación, se pueden utilizar diferentes capas físicas. Por ejemplo, la comunicación a bordo simple o escenarios de depuración de dispositivos comunes, la comunicación del protocolo UART entre dos dispositivos se puede llevar a cabo usando un nivel LVTTL/TTL simple.

El puerto serie universal utiliza el nivel RS232, que puede aumentar la distancia de transmisión y resistir un cierto grado de interferencia de la señal. El costo es que se requiere el chip de traducción de nivel correspondiente en la capa física para lograrlo, el transmisor necesita convertir la señal interna de alto y bajo nivel en una señal de voltaje +/- de mayor voltaje, y el extremo receptor necesita convertir el +/ - señal de voltaje en una señal interna de alto y bajo nivel.

En el caso de la comunicación industrial, para mejorar aún más la distancia de transmisión y aumentar la fiabilidad de la señal, generalmente se utiliza el estándar de nivel RS485. Las señales ordinarias de alto y bajo nivel se convierten en un par de señales diferenciales en el extremo transmisor, y las señales diferenciales se convierten en señales ordinarias de alto y bajo nivel en el extremo receptor. Además, el RS485 permite conectar hasta 128 transceptores en el bus, mientras que TTL o RS232 son conexiones punto a punto.

1.2.1. Comunicación UART basada en TTL

La comunicación UART basada en TTL es el caso de uso más simple para aplicaciones de protocolo UART. Es decir, los niveles alto y bajo de la salida de E/S digital se transmiten directamente como la señal física real. En términos de conexión física, solo el dispositivo debe tener una conexión a tierra común, y la comunicación unidireccional del dispositivo se puede completar a través de una línea de señal. Si se requiere dúplex completo bidireccional, se utilizan dos líneas de señal.

Para comparar las diferencias en la implementación de diferentes capas físicas, podemos observar cómo las señales reales de diferentes capas físicas difieren cuando se envían los mismos datos. Aquí, tomando el carácter de transmisión 'D' como ejemplo, a través del osciloscopio de piedra, observe directamente la señal transmitida por el TTL (el terminal de tierra de la sonda está conectado al extremo de tierra común del dispositivo, y el extremo de la señal de la sonda está conectado a la línea de señal azul en la figura anterior), y se puede obtener la forma de onda de la señal que se muestra en la Figura 1-4. Como se puede ver en la forma de onda, cuando no hay transmisión de datos, la señal UART permanecerá en un nivel alto (la amplitud de la señal específica está determinada por el voltaje de suministro de la E/S), la señal saltará durante la transmisión de datos , y la señal volverá al estado inactivo de alto nivel después de que se complete la transmisión.

1.2.2. Comunicación UART basada en RS232

Con el fin de mejorar la capacidad de la unidad para aumentar la distancia de transmisión y la confiabilidad, el bus RS232 utiliza una señal de voltaje bipolar para la transmisión física. Antes de enviar/recibir la señal, la señal interna y la señal del bus se convierten entre sí por medio de un chip de cambio de nivel. El método de conexión es exactamente el mismo que el nivel TTL, y toda la capa física es solo una capa más de traducción de nivel.

También utilizando el carácter de transmisión 'D' como ejemplo, la sonda del osciloscopio Pushi se conecta al extremo de la señal y se puede capturar la forma de onda real que se muestra en la Figura 1-6. Se puede ver que la forma de onda RS232 es de voltaje negativo cuando está inactiva, y cuando hay transmisión de datos, la señal comienza a saltar entre voltajes positivos y negativos, y vuelve al estado de voltaje negativo inactivo una vez que se completa la transmisión.

1.2.3. Comunicación UART basada en RS485

El RS485 está diseñado para entornos industriales complejos, y la característica más importante del bus RS485 es el uso de transmisión de señal diferencial en comparación con las capas físicas de otros protocolos UART. Antes de enviar la señal, el transceptor de RS485 convierte la señal de un solo extremo en una señal diferencial y luego la envía al bus para su transmisión; Además, antes de recibir, el transceptor convierte la señal diferencial en el bus en una señal de un solo extremo y luego la envía al controlador UART para su recepción. En el bus RS485, se requieren dos pares de líneas de señal diferencial (es decir, 4 líneas de señal) para la comunicación bidireccional full-duplex. Si solo se realiza una comunicación bidireccional semidúplex, solo se requiere un par de señales diferenciales.

Nuevamente, usando el carácter de transmisión 'D' como ejemplo, la forma de onda real que se muestra en la Figura 1-8 se puede adquirir usando dos sondas de canal (comúnmente referenciadas) de las sondas del osciloscopio Pushi, que están conectadas a los extremos A/B. de una de las señales diferenciales. Puede verse que la forma de onda en el extremo A/B es complementaria. La forma de onda del terminal A es lógica directa (voltaje positivo cuando está inactivo) y la forma de onda del terminal B es lógica inversa (voltaje negativo cuando está inactivo).

2. Especificaciones del protocolo

2.1. Estructura del marco UART

En la introducción de la sección anterior, observamos la forma de onda UART real a través del osciloscopio de piedra, entonces, ¿cómo se reconoce exactamente esta forma de onda como el carácter 'D' y no como algo más? Esto implica la definición de la estructura de la trama del protocolo UART. Como se muestra en la Figura 2-1:

Cuando dos dispositivos necesitan comunicarse a través del protocolo UART, deben acordar lo siguiente al mismo tiempo:

  • Duración del tiempo por señal T (tasa de baudios = 1/T)
  • El número específico de bits en cada elemento de la estructura del marco.
  • Si hay un dígito de control y el mecanismo del dígito de control (par/impar/…). )

Con estas convenciones, el dispositivo receptor solo necesita esperar la llegada del bit de inicio y luego muestrear la siguiente forma de onda a intervalos regulares para obtener la información específica transmitida. Tomando la forma de onda del carácter 'D' como ejemplo, el proceso de resolución se muestra en la Figura 2-2:

2.1.1. Tasa de baudios

La tasa de baudios es un concepto muy importante del protocolo UART, o de todos los protocolos seriales asíncronos, es decir, la cantidad de bits que se pueden representar por unidad de tiempo (1 segundo), o también se puede expresar como el recíproco del ancho de bits. . Por ejemplo, una forma de onda UART con una velocidad de transmisión de 115200 significa que puede admitir 115200 bits por segundo, lo que significa que cada bit de datos representa aproximadamente 8.68 uS de tiempo.

Los protocolos seriales asíncronos como UART, para simplificar la conexión física de las señales y reducir los costos de comunicación, generalmente tienen solo una línea de señal y no pueden transmitir datos y señales de reloj al mismo tiempo. Para que el transceptor/dispositivo de transmisión resuelva correctamente la forma de onda, debe tener la misma configuración de velocidad en baudios. La misma forma de onda utilizando diferentes velocidades de transmisión puede obtener información completamente diferente. Para el dispositivo receptor, solo el bit de inicio se puede usar como punto de sincronización de un marco de datos, y los otros datos están determinados por la velocidad en baudios para determinar la ubicación de muestreo específica.

Nuevamente, usando la forma de onda del carácter 'D' como ejemplo, como se muestra en la Figura 2-4, si se recibe a una velocidad de transmisión incorrecta, es posible que obtenga información de datos completamente incorrecta.

2.1.2. Bits inactivos

Cuando los datos no se transfieren entre dispositivos, un nivel alto sostenido indica inactividad. Cuanto mayor sea la duración del bit inactivo y mayor el intervalo entre dos tramas de datos, menos datos se transmiten por unidad de tiempo.

2.1.3. Bit de inicio

El receptor UART siempre detectará el cambio de nivel en la línea de señal, y cuando se transmiten los datos, el remitente extraerá la línea de señal desde el nivel alto hasta el final del nivel bajo hasta el estado inactivo y mantendrá un poco de tiempo. Cuando el receptor detecta un cambio de nivel alto-bajo, comienza a recibir señales.

2.1.4. Bits de datos

El bit de datos contiene los datos reales transmitidos, que tiene una longitud de 5 a 8 bits si se usa paridad, y de 5 a 9 bits si no se usa paridad. En general, los bits de datos son 8 bits y los datos se envían primero desde el bit menos significativo, y los bits altos vienen en segundo lugar.

2.1.5. Comprobar dígitos

Los dígitos de control se pueden utilizar para mejorar la fiabilidad de la transmisión. Si la señal es incorrecta debido a una interferencia en el proceso de transmisión y provoca un error en el nivel de algunas posiciones, se puede determinar si los datos recibidos y el dígito de control coinciden calculando si los datos recibidos y los dígitos de control coinciden, de modo que como para proporcionar información válida a la capa de aplicación para decidir aceptar/descartar los datos correspondientes.

2.1.6. Bit de parada

El bit de parada representa el final de un marco de datos, y la señal real es un período de tiempo alto. La longitud del bit de parada se puede establecer en un bit de parada de 1, 1.5 o 2 bits. En la mayoría de los casos, se utiliza un bit de parada de 1 bit.

Debido a que UART es un protocolo asíncrono, el comienzo de cada cuadro se puede sincronizar con un borde de salto, pero el bit de parada solo puede calcular la posición relativa por la velocidad en baudios, y si se reconoce un nivel bajo en la posición de parada, un error de cuadro es generado. En el proceso de comunicación, para reducir el problema causado por el error de la tasa de baudios, se pueden configurar diferentes longitudes de bits de parada para adaptarse.

3. Analice la comunicación UART usando un analizador lógico

3.1. Osciloscopio vs Analizador Lógico

Como el principal instrumento de medida y prueba de propósito general, los osciloscopios tienen una ventaja natural en la observación de los detalles de las señales analógicas. Por ejemplo, la operación en tiempo real, con una frecuencia de actualización de forma de onda alta, puede observar fácilmente señales anormales repentinas; Por ejemplo, al realizar la evaluación de ruido y la optimización de la calidad de la señal, el osciloscopio puede comparar las similitudes y diferencias de las señales en el mismo bus y en diferentes nodos para encontrar problemas ocultos de integridad de la señal.

Sin embargo, el osciloscopio también tiene naturalmente algunos lugares inconvenientes, además de los pocos canales, la pantalla es generalmente pequeña, la operación no es computadora + mouse manera flexible y controlable estos problemas morfológicos, para la adquisición y análisis de señales digitales, el mayor El problema del osciloscopio es que la profundidad de almacenamiento es demasiado pequeña. Un osciloscopio de varios cientos de miles de yuanes también puede tener una profundidad de almacenamiento de solo unos pocos cientos de Mpts. Al mismo tiempo, debido a la limitación de la profundidad de almacenamiento, cuando es necesario realizar una adquisición de tiempo un poco más larga, la frecuencia de muestreo real del osciloscopio caerá bruscamente, lo que provocará que la forma de onda recopilada no pueda restaurar la señal real, perdiendo la significado del analisis.

Los analizadores lógicos son instrumentos de prueba y medición diseñados específicamente para la adquisición y el análisis de señales digitales, y los resultados de forma de onda recopilados son solo niveles altos y bajos (es decir, 0 y 1 lógicos). Sin embargo, compensa la falta de osciloscopios para adquirir y analizar señales digitales.

  1. 1. La mayoría de los analizadores lógicos funcionan en una PC, con el potente rendimiento de los procesadores de escritorio y la experiencia interactiva de los sistemas operativos maduros, lo que mejora en gran medida la comodidad y la eficiencia del análisis de señales digitales.
  2. 2. La cantidad de canales del analizador lógico es grande, el analizador lógico DSLogic de nivel de entrada tiene 16 canales que se pueden recopilar al mismo tiempo, y el usuario también puede obtener productos de analizador lógico con docenas o incluso cientos de canales a un precio muy razonable. costo.
  3. 3. La profundidad de almacenamiento del analizador lógico es mayor, por ejemplo, DSLogic puede alcanzar una profundidad de almacenamiento de 16 G en modo de flujo y, al mismo tiempo, mantener una frecuencia de muestreo bastante alta, superando con creces la capacidad de adquisición de la mayoría de los osciloscopios.
  4. 4. Los analizadores lógicos generalmente proporcionan ricas funciones de decodificación de protocolos, que pueden realizar un análisis en profundidad de las señales digitales. Por ejemplo, DSLogic actualmente admite más de 100 protocolos de decodificación. La mayoría de los osciloscopios tienen capacidades de decodificación limitadas y la mayoría requiere que los complementos correspondientes se compren por separado.

A continuación, nos centraremos en cómo utilizar analizadores lógicos para la adquisición y análisis de señales UART en diversas situaciones.

3.2. Establecer un entorno de prueba para los analizadores lógicos

3.2.1. Conexión a DSLogic

DSLogic es un analizador lógico portátil basado en conectividad USB. El host DSLogic es responsable de la adquisición y el almacenamiento en caché de la señal, y luego transmite los datos a través de USB al software de la computadora host DSView en la PC. DSView es responsable del procesamiento, la visualización y el análisis de datos de forma de onda y las correspondientes funciones de interacción hombre-computadora.

Cuando lo use, simplemente conecte el host DSLogic directamente al puerto USB en la placa de PC a través de un cable de datos USB, abra el software DSView y confirme que el INDICADOR en el host DSLogic se vuelve verde. En este punto, se completa la conexión e inicialización del analizador lógico. Como se muestra en la Figura 3-4, el nombre del dispositivo actual en la esquina superior izquierda y el estado de conexión correspondiente se pueden observar en el software DSView.

3.2.2. Conexión de señal UART

Para todas las mediciones, el equipo de prueba y la señal a medir deben basarse en un plano de referencia común, que comúnmente se conoce como puesta a tierra, para que la señal medida pueda adquirirse y medirse correctamente. En algunos casos, no existe una conexión a tierra explícita, pero los resultados de la medición parecen no ser un problema, esto se debe a que el equipo de medición y la señal medida están conectados a tierra de otras maneras, como la misma fuente de alimentación utilizada o la referencia. tierra está conectada al terminal de tierra de la red eléctrica al mismo tiempo. Sin embargo, al realizar mediciones rigurosas, el equipo de medición debe conectarse a tierra de acuerdo con la señal que se está probando. Cuanto mayor sea el área del bucle del terminal de conexión a tierra de la señal desde la señal medida hasta el dispositivo de medición, más fácil será que se interfiera con la señal, lo que provocará errores de medición o incluso errores de medición.

Para señales UART, al acceder al analizador lógico, el caso más simple solo necesita conectar 2 cables, uno a la tierra de referencia y otro a la señal medida. Para las diferentes implementaciones de capa física del protocolo UART que mencionamos anteriormente, la forma en que se conectan las señales será ligeramente diferente.

Por ejemplo, para la señal UART a nivel TTL, además de conectar la tierra de referencia, solo es necesario conectar la señal (TX o RX) a probar a la entrada del canal correspondiente del analizador lógico.

Para las señales del bus RS232, podemos medir la señal del bus después de la traducción de nivel (DSLogic tiene un rango de tensión soportada de +-30 V en la entrada del cable, y el rango de señal de +-15 V de RS232 se puede conectar directamente), o podemos medir la señal digital interna antes de la traducción de nivel. Su método de cableado es consistente con la señal TTL, lo único a tener en cuenta es que la señal RS232 invierte el nivel (voltaje negativo cuando está inactivo, es decir, nivel bajo), al decodificar el protocolo UART, podemos invertir el nivel de señal correspondiente en la ventana de configuración de decodificación de DSView (la opción Invertir señal está configurada en sí).

El bus RS485 utiliza señales diferenciales, y cuando utilizamos un analizador lógico para la adquisición de señales, debemos prestar especial atención a la conexión de la señal medida. En primer lugar, el sitio de referencia del analizador lógico debe conectarse a la tierra de referencia del dispositivo correspondiente bajo prueba transceptor RS485, de modo que se pueda garantizar que el analizador lógico tenga el plano de referencia de nivel correcto; En segundo lugar, para señales diferenciales, el analizador lógico solo necesita adquirir niveles altos y bajos de homopolaridad con la señal interna. Desde la perspectiva de las señales digitales, la forma diferencial solo mejora la confiabilidad de la transmisión de la señal, sin agregar información adicional. Como se muestra en la Figura 3-7, al probar la señal del bus 485 usando un analizador lógico, conecte la tierra de referencia del transceptor del dispositivo correspondiente y la señal A+ en el bus diferencial.

Por supuesto, si solo se puede recopilar la señal B, también podemos configurar el decodificador UART para invertir la señal para obtener el resultado de resolución de protocolo correcto al decodificar en DSView.

3.2.3. Configuración de umbral

El umbral del analizador lógico es el voltaje de juicio de los niveles alto y bajo, es decir, cuando el voltaje de la señal de entrada es más alto que el voltaje del umbral, la adquisición es de alto nivel; Cuando el voltaje de la señal de entrada está por debajo del voltaje de umbral, la adquisición es baja.

Para el protocolo UART, hemos presentado anteriormente que tiene diferentes implementaciones de capa física, y diferentes implementaciones de capa física tienen diferentes estándares de nivel. Solo necesitamos elegir un umbral correspondiente para distinguir entre niveles altos y bajos en diferentes casos. Los umbrales que se muestran en la Figura 3-8 básicamente pueden cumplir con este requisito.

En algunos casos, la amplitud de la señal diferencial del bus RS485 puede variar en un amplio rango debido a la configuración o depuración. Porque la especificación RS485 estipula que siempre que el voltaje diferencial entre AB sea superior a 200 mV, se puede considerar alto. En este punto, podemos usar el osciloscopio de piedra para observar la amplitud del nivel de señal real y luego decidir la configuración de umbral adecuada. Solo necesita asegurarse de que el voltaje de umbral que establezca pueda distinguir razonablemente entre niveles altos y bajos.

3.3. Adquisición de señal UART simple

La mayoría de las señales UART son señales de baja velocidad, como la tasa de baudios más utilizada de 115200, lo que indica que la frecuencia de la señal es de solo 115.2 KHz. Dichas señales se pueden adquirir directamente utilizando la configuración predeterminada de DSLogic. Aquí, tomando el intervalo fijo de 1s del host y enviando repetidamente el carácter 'D' como ejemplo, describe cómo usar un analizador lógico para adquirir y analizar dichas señales UART.

3.3.1. Adquisición de señal

Una vez que el hardware y la conexión de la señal estén preparados, haga clic en el botón "Iniciar" del software DSView directamente para adquirir la señal bajo prueba en la configuración predeterminada (tiempo de adquisición de frecuencia de muestreo de 1 MHz, 1 segundo). Si desea modificar la frecuencia de muestreo y la duración de la adquisición, seleccione los parámetros correspondientes directamente en el cuadro desplegable correspondiente. Se recomienda que el principio de configuración de la tasa de muestreo sea 10 veces o más de la frecuencia máxima de la señal medida, por ejemplo, para señales UART con una tasa de baudios de 115200 baudios, la frecuencia de señal más rápida es 115.2 KHz, cuando la tasa de muestreo de 1M es seleccionado, cada señal de bit tendrá 8 o 9 puntos de muestreo, y el error de fase correspondiente es +-1/8 (12.5%); Cuando se selecciona una frecuencia de muestreo de 10 M, habrá 86 u 87 puntos de muestreo por bit de señal, lo que corresponde a un error de fase de +-1/86 (1.16 %). Por supuesto, generalmente no se recomienda utilizar una frecuencia de muestreo demasiado alta, porque cuanto mayor sea la frecuencia de muestreo, menor será el tiempo durante el cual se puede recopilar, y la frecuencia de muestreo que es demasiado alta puede generar múltiples saltos en un solo salto. borde de la señal lenta, lo que causa problemas en la decodificación del protocolo. La Figura 3-9 muestra la forma de onda de la señal resultante adquirida con la configuración predeterminada.

Como se puede ver en la Figura 3-9, el Canal 0 adquiere una señal que es persistentemente alta, pero no encuentra ningún salto. Observe atentamente la regla de tiempo sobre la ventana de forma de onda y la barra de desplazamiento en la parte inferior de la ventana para saber que la ventana actual muestra solo una parte de la forma de onda recopilada, no todas las señales. En este punto, puede hacer zoom con la rueda del mouse o hacer clic con el botón derecho en el área de la forma de onda para mostrar todas las formas de onda durante toda la adquisición. Obtenga el resultado que se muestra en la Figura 3-10.

Sobre la base de la figura anterior, queremos ver solo la parte de transición del canal 0. Puede desactivar la visualización de forma de onda de otros canales en la ventana Opciones y ajustar la altura de visualización de la señal del canal. Luego apunte el mouse hacia la forma de onda objetivo y, al mismo tiempo, a través de la rueda del mouse para ampliar la forma de onda de la posición señalada; Alternativamente, puede seleccionar el área de la forma de onda que desea ampliar manteniendo presionado el botón derecho del mouse en el cuadro. Además, mantenga presionado el botón izquierdo del mouse para mover la forma de onda hacia la izquierda y hacia la derecha. Obtenga los detalles de la forma de onda que se muestran en la Figura 3-11.

Al observar la forma de onda, colocar el mouse sobre la forma de onda del pulso puede mostrar información como el ancho del pulso, el período, la frecuencia y el ciclo de trabajo de la señal actual. Al mismo tiempo, también puede agregar un cursor haciendo doble clic en el botón izquierdo del mouse, y cuando mueva el cursor, se ajustará automáticamente al borde de salto cercano.

3.3.2. decodificación UART

La forma de onda de la señal recopilada por el analizador lógico solo cambia en el tiempo en niveles altos y bajos (0/1), lo que no es propicio para nuestro análisis específico del proceso y el contenido de la transmisión de la señal. Aunque podemos usar el ojo desnudo para traducir el contenido del protocolo correspondiente a la forma de onda de acuerdo con la especificación del protocolo, reducirá en gran medida la eficiencia del análisis. El decodificador integrado de DSView proporciona un rico contenido de decodificación de protocolos, convirtiendo formas de onda aburridas en caracteres, marcadores y contenido de datos significativos. Facilita enormemente el análisis y la comprensión de las señales por parte de los ingenieros para encontrar mensajes de error o datos críticos.

En el software DSView, la decodificación del protocolo de la forma de onda adquirida es muy simple, simplemente abra el panel "Decode", busque el decodificador correspondiente (aquí seleccionamos 1: protocolo UART) y configure las opciones del decodificador correspondiente (incluida la visualización/canal). /estructura del marco/formato, etc.). Una vez determinado, el software comenzará a decodificar el protocolo de la UART en el canal seleccionado. El resultado decodificado se muestra en el canal del protocolo. Esto se muestra en la Figura 3-12.

Al seleccionar un decodificador, DSView proporciona una función de búsqueda de protocolo conveniente, solo ingrese los caracteres clave en el cuadro de búsqueda de protocolo, DSView enumerará todos los decodificadores que contienen estos caracteres, donde el usuario puede seleccionar el decodificador correcto. Como se muestra en la Figura 3-13, hay dos protocolos relacionados con UART 0: UART y 1: UART, donde 0: UART es un decodificador simplificado que no analiza información de bits ni admite el apilamiento de protocolos de nivel superior. cuando solo queremos obtener los datos correspondientes a la forma de onda, puede usar este protocolo simplificado para reducir el tiempo de decodificación y los recursos de memoria.

La ventana de configuración del decodificador tiene muchas opciones de configuración relacionadas con la decodificación, y el contenido de la ventana de configuración de diferentes protocolos será diferente. Hay algunas opciones que todos los decodificadores deben configurar, como la correspondencia entre señales de canal y protocolo. Aquí estamos usando la señal UART captada por el canal 0, por lo que el canal correspondiente que debe decodificarse debe configurarse en el canal 0.

Y las opciones de configuración relacionadas con el protocolo que hemos explicado en detalle en la sección de estructura del marco, en la operación real también se pueden obtener a través del software de la computadora host del puerto serie (asistente de depuración del puerto serie, etc.) para obtener esta información. Esto se muestra en la Figura 3-14.

Para el contenido de datos decodificados, DSView admite diferentes formatos de visualización. Por ejemplo, la señal UART previamente adquirida muestra el carácter 'D' en forma de códigos ASCII, o puede modificarse al modo de visualización hexadecimal (Hex), y el resultado mostrará 0x44. Esto se muestra en la Figura 3-15. Los formatos de visualización admitidos actualmente son: hex (hexadecimal), dec (decimal), oct (octal), bin (binario) y código ascii.

3.4. Adquisición de una sola transmisión UART

Cuando la forma de onda que queremos capturar es una señal ocasional, no sabemos cuándo aparecerá la forma de onda, y si usamos el método de adquisición directa, es posible que solo podamos capturar la forma de onda de la señal inactiva la mayor parte del tiempo, y no podemos capturar la señal en el momento de la transmisión real.

En este momento, se puede capturar disparando. Al configurar las condiciones de activación correspondientes, podemos controlar el tiempo de inicio de la adquisición de la señal de acuerdo con el cambio de forma de onda, para capturar con precisión la forma de onda de la señal que queremos ver.

3.4.1. Modo de búfer

DSLogic admite dos modos de adquisición: modo de transmisión y modo de búfer. Los datos recopilados en el modo Stream se transmiten a la PC en tiempo real y luego DSView los procesa. Los datos recopilados en el modo de búfer primero se almacenan en caché en el caché de hardware interno de DSLogic y luego se transfieren a la PC una vez que se completa la adquisición, y DSView los procesa.

Además de las ventajas de lograr frecuencias de muestreo más altas, el modo de búfer también admite más opciones y configuraciones de activación, como activación multinivel, activación en serie y configuración de posiciones de activación. El modo de transmisión, por otro lado, solo admite la activación simple.

3.4.2. Configuración del disparador

Para una activación simple, podemos configurar la opción de activación directamente al lado del canal. Corresponde secuencialmente al flanco ascendente, alto, flanco descendente, nivel bajo y cualquier disparador de flanco. Simplemente mantenga el modo de activación simple predeterminado en el panel de activación. Por ejemplo, para una transmisión UART que no sabe cuándo ocurre, podemos optar por activar el flanco descendente. Cuando la señal UART permanece inactiva, el disparador no se satisface. DSLogic espera a que llegue la condición de disparo, como se muestra en la Figura 3-17.

Cuando el UART comienza a transmitir el primer bit de inicio, la condición de disparo se activa y DSLogic adquiere la forma de onda de la señal en el momento del disparo. Esto se muestra en la Figura 3-18.

Consideremos un escenario de activación más complejo, como que el dispositivo A envíe constantemente datos al dispositivo B al azar, y el dispositivo B responda a diferentes datos de acuerdo con el contenido de datos enviado por el dispositivo A. Si queremos saber qué datos envió el dispositivo A al dispositivo B antes de enviar datos 0, ¿cómo establecemos la condición de disparo para capturar la forma de onda en el momento correspondiente?

Hay dos problemas que deben resolverse aquí, primero debemos establecer la ubicación del disparador para que podamos ver los datos antes del disparador, no los datos después del disparador; En segundo lugar, necesitamos encontrar las características de forma de onda del dispositivo B que envía datos 0 y convertirlos en la condición de activación correspondiente.

Análisis del protocolo UART

Figura 3-19 Posición del disparador

De acuerdo con las reglas de protocolo de UART, la forma de onda que envía datos 0 será una señal de pulso de bajo nivel continua relativamente amplia. Si la tasa de baudios del UART es 115200 y la tasa de muestreo que configuramos es 1 MHz, la forma de onda de los datos 0 se muestra en la Figura 3-20, que será un pulso de bajo nivel de aproximadamente 78.125 uS.

Para configurar el disparador avanzado o la posición del disparador requiere compatibilidad con el modo de búfer, primero debe configurar el "Modo de ejecución" en "Modo de búfer" en las "Opciones" y no seleccionar la opción "Compresión de hardware RLE". Establezca la condición de disparo avanzado en el canal 1 con un mínimo continuo de 75 puntos de muestra (que corresponde a una frecuencia de muestreo de 1 MHz, que es un nivel bajo de 75us) y establezca la posición de disparo en 80 % para facilitar la observación de datos antes del disparo. Los ajustes específicos se muestran en la Figura 3-21.

De acuerdo con esta condición de activación, se activa cuando el dispositivo B envía datos 0 y la forma de onda adquirida se muestra en la Figura 3-22.

3.4.3. Repetir la colección

En algunos casos, necesitamos observar dinámicamente el estado de algunas señales, como el contenido de datos enviado por Burst cada vez, pero no sabemos cuándo se envían los datos y es imposible hacer clic en el botón "Iniciar" con frecuencia. . DSView proporciona un modo de adquisición de "repetición" que adquiere y actualiza automáticamente las formas de onda cuando se alcanza la activación. Cuando depuramos algunas señales de ráfagas periódicas, es muy conveniente observar los resultados de la adquisición dinámica y el análisis del protocolo a través del modo de repetición.

El modo de repetición se puede configurar como se muestra en la Figura 3-23. El intervalo de repetición es el tiempo mínimo de permanencia entre dos muestras para facilitar la observación de la forma de onda y la decodificación de los resultados de la adquisición anterior.

3.5. Adquisición de transmisiones UART de largo plazo

Cuando es necesario adquirir formas de onda ultra largas para el análisis, podemos usar el modo Stream. DSLogic puede lograr una profundidad de muestreo de 16G por canal en modo Stream. A una tasa de muestreo de 1 MHz, el tiempo de adquisición puede llegar a 16 G/1 M ≈ 16000 4 s, que es más de XNUMX horas.

3.5.1.Modo de transmisión

La configuración del modo de transmisión se muestra en la Figura 3-24, y las diferentes versiones de hardware de DSLogic admiten diferentes opciones de canal del modo de transmisión. Para U3Pro16, basado en el puerto USB3.0, puede lograr 3 canales a una frecuencia de muestreo de hasta 1 GHz, 6 canales a una frecuencia de muestreo de hasta 500 MHz, 12 canales a una frecuencia de muestreo de hasta 250 MHz y 16 canales a una frecuencia de muestreo de hasta 125 MHz.

Cuando la cantidad de datos recopilados es relativamente grande, el protocolo 0:UART se puede usar para decodificar, en comparación con 1:UART, que omite la salida de información de bits, no admite el apilamiento de protocolos de alto nivel y puede acortar el tiempo de decodificación y reducir la ocupación de la memoria. Las otras funciones son las mismas que 1: UART. El efecto de decodificación se muestra en la Figura 3-25.

3.5.2. Se muestra la lista de protocolos.

Como se muestra en la siguiente figura, el resultado de la decodificación gráfica está completamente sincronizado con la forma de onda adquirida en el tiempo, lo que nos ayuda a comprender la forma de onda y encontrar el problema, pero al mismo tiempo, debido a la escala de visualización del tiempo, no es propicio para ver el resultado de la decodificación. Las pantallas de lista compensan esta deficiencia, lo que facilita la visualización y el análisis de grandes cantidades de contenido decodificado.

DSView proporciona una forma de saltar entre resultados gráficos y de lista. Haga clic en cualquier fila de los resultados de la lista para saltar automáticamente al resultado de la forma de onda correspondiente, y también puede elegir si desea acercar automáticamente la forma de onda al saltar o corregir la columna de relación de zoom actual de la forma de onda. Además, cuando visualizamos la forma de onda en un momento determinado, si queremos saltar a la posición donde se muestra en la lista el resultado de la decodificación correspondiente a esta forma de onda, solo debemos hacer clic en el botón de posicionamiento en la esquina superior derecha de la pantalla. ventana de visualización de lista.

Además, el contenido decodificado se puede exportar a un archivo a través de la visualización de la lista. Como se muestra en la figura anterior, al hacer clic en el botón "Guardar" que se muestra en la lista, puede elegir exportar el contenido decodificado actualmente a un archivo csv o txt, lo cual es conveniente para más procesamiento de datos de terceros, como la entrada a matlab para análisis, o como entrada de datos para otro software.

3.5.3. Decodificar búsqueda de datos

Otra ventaja de la visualización de la lista es que los resultados decodificados se pueden usar como cadenas para búsquedas de resultados, como la búsqueda de operaciones específicas o bytes de datos específicos, que pueden ubicar rápidamente la ubicación que se debe ver.

Ingrese la palabra clave que desea buscar en el cuadro de búsqueda, luego presione los botones de avance/retroceso para encontrar el contenido decodificado que contiene la palabra clave, y la interfaz de forma de onda saltará a la ubicación adecuada para el análisis. Si está analizando los resultados de un segmento, puede hacer clic en una fila en la lista de verificación y los botones Adelante/Atrás buscan las coincidencias anteriores y siguientes que comienzan con este comportamiento en lugar de comenzar desde cero.

Para el protocolo UART, DSView también admite la búsqueda de datos de varias filas. Se puede usar para encontrar algunos resultados de cadenas contiguas que aparecen en sus datos. Como se muestra en la Figura 3-29, una búsqueda de datos de varias líneas concatena varias palabras clave con el carácter "-".

3.5.4. Búsqueda de forma de onda

DSView admite no solo la búsqueda de resultados decodificados, sino también la función de búsqueda de la forma de onda original. Las formas de onda se pueden ubicar rápidamente en muchas escenas. Por ejemplo, cuando la forma de onda se transmite repentinamente, debido a que el período de inactividad es relativamente largo, es imposible ver la forma de onda detallada transmitida varias veces al mismo tiempo, puede usar la búsqueda de forma de onda e inmediatamente saltar al siguiente salto de forma de onda después ver la forma de onda en el momento anterior para garantizar que la relación de zoom no cambie.

Verifique la barra de herramientas "Buscar", el cuadro de búsqueda aparecerá debajo de la ventana del software, haga clic en el cuadro de búsqueda, abra la ventana de configuración de búsqueda, determine el borde de salto del canal, puede buscar la forma de onda que cumple con los criterios por la izquierda y la derecha llaves. Al mismo tiempo, también puede mover manualmente el cursor de búsqueda para determinar dónde comienza la búsqueda.

Cuando se selecciona la búsqueda, aparece un cursor con una etiqueta "S", el estado inicial es gris, si hace clic hacia la izquierda/derecha para buscar y encuentra una forma de onda que cumpla con los criterios, el cursor se volverá azul y se moverá automáticamente a la ubicación de búsqueda . Si mueve manualmente el cursor "S", el cursor se vuelve gris nuevamente.

3.5.5. Uso de cursores

DSView admite una amplia gama de operaciones de cursor, lo que permite no solo medir el tiempo con el cursor, sino también marcar y rastrear formas de onda especiales con el cursor. Cuando la forma de onda está inactiva o el intervalo es largo, puede insertar un cursor en cada posición de interés, y cuando desea saltar a una forma de onda de interés, solo necesita hacer clic derecho en el área de la regla y luego hacer clic en el número de secuencia del cursor al que desea saltar, que puede saltar a la posición del cursor correspondiente.

Si desea mover el cursor, solo necesita mover el mouse cerca del cursor, cuando el cursor aparece en negrita, haga clic en el botón izquierdo del mouse para seleccionar, el cursor seguirá el movimiento del mouse, determine la posición y haga clic en el botón izquierdo nuevamente para soltar el cursor. Cuando desee que el cursor se ajuste a uno de los bordes de salto de una forma de onda de canal en particular, solo necesita mover el mouse cerca del borde de salto y el cursor se ajustará automáticamente al borde del salto.

3.5.6. Medidas del ratón

Además de las mediciones basadas en el cursor, DSView proporciona mediciones de mouse más convenientes. Por ejemplo, mediciones de ancho de pulso actual, período, ciclo de trabajo y frecuencia (solo necesita colocar el mouse sobre el pulso cambiante); Medición del número de flancos (al hacer clic en las posiciones inicial y final de la forma de onda, se contarán automáticamente los flancos de salto de este intervalo); y medición de la distancia al borde (haga clic con el mouse en el borde inicial y muévase al borde final).

Como se muestra en la Figura 3-31, mueva el mouse a la posición del borde de transición inicial, haga clic con el botón izquierdo del mouse, seleccione el borde de transición inicial, mueva el mouse a la posición del borde de transición final y la distancia entre los dos Se mostrarán los bordes de transición (duración/punto de intervalo de muestreo) y se volverá a hacer clic con el botón izquierdo del mouse para completar la medición.

4. Preguntas frecuentes

4.1. Determinar la tasa de baudios desconocida

Cuando no podemos obtener la tasa de baudios de la forma de onda UART por adelantado, también podemos adivinar la verdadera tasa de baudios por la forma de onda adquirida. DSView proporciona un decodificador de "velocidad de bits adivinada" para adivinar los parámetros de velocidad en baudios de una cadena de forma de onda arbitraria. El principio de la tasa de bits de Guess es encontrar el ancho de pulso más estrecho en la forma de onda, como el ancho de forma de onda de un bit, y luego calcular su recíproco como la tasa de baudios. Por lo tanto, puede haber múltiples resultados, solo necesitamos observar si el pulso correspondiente tiene un ancho de pulso razonable y luego seleccionar el resultado de velocidad máxima en baudios. Esto se muestra en la Figura 4-1.

Una vez que se obtiene la tasa de baudios, se puede configurar en las opciones para el decodificador UART. Debido a que el protocolo UART resincroniza cada bit de inicio, el error de la tasa de baudios solo se acumulará en un cuadro de datos, y siempre que el error dentro de un cuadro no exceda el límite del bit, se puede obtener el resultado de decodificación correcto. .

Por supuesto, si hay una pequeña muestra de la forma de onda, como ningún pulso de un solo bit de ancho en la forma de onda, es probable que la tasa de baudios estimada sea incorrecta, lo que da como resultado un resultado de decodificación incorrecto. Cuando hay una forma de onda que no se ajusta al protocolo, el decodificador UART también dará posibles sugerencias de error, como un error de trama, como se muestra en la Figura 4-2. Los ingenieros experimentados pueden ajustar la tasa de baudios observando la forma de onda y los resultados de decodificación para obtener los resultados de decodificación correctos.

4.2. Decodificación de señales anticonfianza

En la sección anterior mencionamos que el protocolo UART puede ser transmitido por diferentes señales físicas, y algunas señales de la capa física pueden tener una relación inversa con la señal del protocolo (nivel alto y bajo intercambiables), como RS232, o la señal B en la señal diferencial RS485. Cuando la señal que recopilamos se invierte, el decodificador UART de DSView también se puede configurar para obtener el resultado de decodificación correcto.

El usuario solo necesita reemplazar el mensaje "¿Invertir señal?" en la configuración del decodificador UART. La opción está configurada en "sí". La decodificación de la señal inversa se muestra en la siguiente figura.

4.3. Decodificación de comunicación UART multigrupo

El decodificador UART de DSView está diseñado deliberadamente para ser un enfoque de un solo canal, lo que facilita la configuración de canales arbitrarios para la comunicación multiplexada al decodificar. Por ejemplo, para una comunicación UART full-duplex, que tiene tanto una señal TX como una señal RX, solo necesitamos agregar dos decodificadores UART para corresponder a la decodificación de TX y RX.

Como se muestra en la figura a continuación, es el caso en el que se decodifican tres señales UART al mismo tiempo.

4.4. Error de decodificación causado por la posición inicial

Para cualquier proceso de comunicación, el dispositivo debe partir del estado inicial para poder recibir correctamente el contenido de la comunicación, es decir, identificar y analizar correctamente la trama del protocolo. Lo mismo es cierto para los analizadores lógicos, si la adquisición de una señal comienza exactamente en el medio de un marco de datos, es probable que la posición de inicio incorrecta conduzca a un resultado de decodificación incorrecto. Como se muestra en la siguiente figura, el dispositivo sigue enviando la cadena "DreamSourceLab", pero debido a que la ubicación de la primera captura está exactamente en el medio del marco de datos, la decodificación de la primera forma de onda se confunde.

Para evitar la decodificación incorrecta de datos, podemos establecer artificialmente la posición inicial y la posición final de la decodificación, para evitar errores de decodificación causados ​​por marcos de datos truncados. La posición de decodificación puede ser la posición especificada de cualquier cursor, y la operación solo necesita establecer las posiciones de inicio y finalización correspondientes en la configuración del decodificador después de insertar el cursor correspondiente. Como se muestra en la siguiente figura, establecer la posición inicial evita la decodificación incorrecta de la primera forma de onda truncada.

5. Análisis avanzado

5.1. Análisis de protocolo multicapa

UART es un protocolo base muy utilizado, y muchos de los protocolos de transmisión utilizados en aplicaciones prácticas se amplían sobre la base de UART. Por ejemplo: DMX512, LIN, MIDI y Modbus, etc., la base de comunicación subyacente es el protocolo UART. 、

De acuerdo con esta función, DSView también es compatible con el apilamiento de análisis de protocolos multicapa. Cuando agregamos un decodificador de un protocolo complejo, DSView creará automáticamente toda la pila de protocolos desde el nivel superior, lo que hace que los resultados de la decodificación sean más ricos y perfectos, lo que es muy útil para el análisis profundo y la comprensión del protocolo por parte del usuario.

Tomemos Modbus RTU como ejemplo para comprender el proceso de análisis de protocolos multicapa de DSView. Basado en la función de transferencia de bytes UART, Modbus RTU especifica el significado específico de cada byte en detalle, de modo que la estructura de trama de Modbus se forma combinando varias tramas de protocolo UART. Esto se muestra en la siguiente figura.

Cuando utilice DSView para tal decodificación de protocolo, solo necesita ingresar el protocolo correspondiente en el cuadro de búsqueda de protocolo y agregarlo. DSView crea automáticamente la página de configuración para todo el protocolo de apilamiento, como se muestra en la siguiente figura, y el usuario puede realizar la configuración correspondiente.

Como se muestra en la siguiente figura, la estructura de apilamiento del protocolo se puede ver claramente a partir del resultado de la decodificación de Modbus RTU. El Modbus para cada marco consta de 8 marcos de bytes UART. El contenido de una trama Modbus también tendrá comentarios claros que indiquen su significado específico. Cuando ocurre un error de transmisión, dicho resultado de decodificación puede ubicar muy claramente la ubicación del error, así como la causa del error (ya sea un problema con el UART subyacente o un problema con la capa del protocolo Modbus). Si no desea ver los detalles subyacentes, puede ocultar el contenido decodificado correspondiente en la página de configuración del decodificador.

Se el primero en comentar

Déjenos un comentario

Tu dirección de correo electrónico no será publicada.


*