Tabla de contenido:

¡Abre tus ojos! Analizador lógico: 21 pasos
¡Abre tus ojos! Analizador lógico: 21 pasos

Video: ¡Abre tus ojos! Analizador lógico: 21 pasos

Video: ¡Abre tus ojos! Analizador lógico: 21 pasos
Video: Analizador Lógico a Buen Precio, DSLogic Plus 2024, Mes de julio
Anonim
Image
Image
Montaje
Montaje

El analizador lógico facilita la visualización del tren de pulsos, que son los bits que viajan en una línea de comunicación. Así, abre los ojos para identificar un posible problema. ¿Porque es esto importante? Es una herramienta de desarrollo y detección de fallas muy eficiente que puede ahorrarle tiempo. En este video de hoy, evaluaremos la importancia del analizador lógico, observaremos algunos protocolos de prácticas comunes mientras usamos este dispositivo y ejemplificaremos una falla de detección sin la ayuda de un analizador lógico.

En este video, utilicé un modelo relativamente económico (alrededor de $ 35) y eficiente, con una interfaz gráfica y software gratuito.

Paso 1: Montaje

Paso 2: Funciones utilizadas: servidor

Funciones utilizadas: servidor
Funciones utilizadas: servidor

• Jumpers para conexiones

• 2 Arduinos (usamos 2 Mega Arduinos 2560)

• Analizador lógico (usamos Saleae)

• Cables de conexión USB para Arduino y analizador.

• Osciloscopio (opcional)

• Protoboard

Paso 3: circuito utilizado

Circuito utilizado
Circuito utilizado

Aquí tenemos el esquema, que muestra el monitoreo de tres pines: TX0, SDA y SCL. Tenemos dos Arduinos: un maestro y un esclavo.

Paso 4: Código fuente: Maestro

En la configuración, incluiremos la biblioteca para la comunicación i2c. Ingresamos a la red como Maestro e inicializamos el serial 0. En el Loop, solicitamos bytes de datos esclavos para la comunicación con nuestro Arduino número 8, como definimos en el ejemplo. Imprimimos en el serial, que será evaluado con el analizador lógico, los bytes recibidos.

#include // inclui una biblioteca para la comunicación I2C void setup () {Wire.begin (); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia un serial 0} void loop () {Wire.requestFrom (8, 6); // require 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para receber… char c = Wire.read (); // recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}

Paso 5: Código fuente: esclavo

En este código esclavo, vuelvo a incluir la biblioteca para la comunicación i2c. Entro a la red como esclavo con la dirección 8. Registramos el evento de solicitud y lo asociamos con la función "solicitud". No es necesario que haga nada en el bucle, solo dé un retraso de 0,1 segundos.

Finalmente, tenemos la función de solicitud que se ejecutará cuando ocurra el evento de solicitud por parte del Maestro, el cual fue registrado en el Setup. Respondemos, finalmente, con un mensaje de 6 bytes.

#include // inclui una biblioteca para la comunicación I2C void setup () {Wire.begin (8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // registro del evento de requisito // y asociación de la función requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que será ejecutada quando ocorrer o evento de requisição pelo mestre // foi registrado como evento no setup void requestEvent () {Wire.write ("teste"); // responde com uma mensagem de 6 bytes}

Paso 6: Analizador: hardware

Analizador: hardware
Analizador: hardware

Frecuencia de muestreo hasta: 24 MHz

Lógica: 5 V a 5,25 V

Umbral de nivel bajo 0,8 V

Umbral de alto nivel 2,0 V

Impedancia de entrada de aproximadamente 1 Mohm o más

Paso 7: instalación del software Saleae

Instalación del software Saleae
Instalación del software Saleae

El programa que recibe los datos capturados por el analizador lógico y decodifica los bits se puede descargar en el siguiente enlace:

Paso 8: configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

Aquí muestro la interfaz, que me gustó especialmente porque estaba limpia.

Paso 9: configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

A continuación, se muestran algunas opciones de configuración:

• Al hacer clic en el nombre del canal, podemos cambiarlo.

• Podemos determinar si uno de los canales servirá como disparador para la captura y la forma de detección.

• Al hacer clic y mantener presionado el número de canal, puede cambiar su posición en la lista.

• Al hacer clic en el engranaje, podemos configurar la visualización del canal, expandiendo…

•… u ocultando el canal. Ocultaremos todos los canales que no usaremos.

Paso 10: Configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

Al hacer clic en las flechas del botón "Inicio", se encuentran las opciones de Frecuencia de muestreo y duración de la grabación.

Por alguna razón, si el software detecta que la tasa no se puede mantener, se mostrará un mensaje y automáticamente la tasa se reducirá hasta que se alcance un valor funcional.

Paso 11: Configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

También incluiremos los analizadores de protocolo. Primero es el I2C, siguiendo las definiciones de la biblioteca WIRE y asociando los canales correctamente. Finalmente, presentaremos el analizador en serie asincrónica. Debemos tener cuidado de configurar correctamente los parámetros de acuerdo con el ensamblaje.

Paso 12: Configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

En la pestaña "Protocolos decodificados", debemos comprobar qué analizadores de protocolo están habilitados. Allí aparecerán los datos. En la pestaña "Anotaciones", podemos agregar algunos de los resultados para una mejor visualización. Simplemente haga clic en el icono "agregar medida".

Paso 13: Captura: descripción general

Captura: descripción general
Captura: descripción general

En la pantalla de captura, el programa muestra el tren de pulsos de datos de SDA, SCL y TX0.

Paso 14: Captura: resultado del análisis del protocolo

Captura: resultado del análisis del protocolo
Captura: resultado del análisis del protocolo

Aquí vemos el resultado de la captura. En la pestaña "Protocolos decodificados", tenemos:

• La solicitud del servidor para el esclavo con id 8.

• La respuesta del esclavo, seis caracteres: "t", "e", "s", "t", "e" y un espacio.

• Cada uno va seguido de un bit ACK (reconocimiento) que indica la recepción de bytes correcta, excepto por el carácter de espacio NACK (no reconocimiento).

• A continuación, vemos el resultado de la decodificación del serial TX0, indicando los caracteres recibidos y enviados al terminal serial Arduino IDE.

Paso 15: Captura: Canal 0 y datos (SDA)

Captura: canal 0 y datos (SDA)
Captura: canal 0 y datos (SDA)

En esta imagen, tenemos el tren de pulsos de la línea SDA. Tenga en cuenta que se puede ver cada byte transmitido.

Paso 16: Captura: Canal 1 y Reloj (SCL)

Captura: Canal 1 y Reloj (SCL)
Captura: Canal 1 y Reloj (SCL)

Ahora, tenemos aquí el tren de pulsos de la línea SCL. Puedes comprobar más detalles simplemente colocando el ratón sobre la señal, como ves en la imagen. Podemos ver que la frecuencia del reloj era de 100 kHz.

Paso 17: Captura: Canal 2 y Serie (TX0)

Captura: Canal 2 y Serie (TX0)
Captura: Canal 2 y Serie (TX0)

En cuanto al tren de pulsos de la línea TX0, podemos ver el bit de inicio y los puntos de entramado de cada bit. Tenemos un byte que representa el carácter "e".

Paso 18: Configurar el entorno para nuestras pruebas

Configuración del entorno para nuestras pruebas
Configuración del entorno para nuestras pruebas

Aquí tenemos varias opciones para leer los datos.

Paso 19: Captura: osciloscopio y analizador

Captura: osciloscopio y analizador
Captura: osciloscopio y analizador

Mira aquí la pantalla que capturé con mi osciloscopio. La señal del analizador lógico representa solo las detecciones alta y baja, pero no representa la calidad de la señal. Esto se puede observar mejor en un osciloscopio.

Paso 20: Captura: Observación de una falla (ejemplo de falla en serie)

Captura: Observación de una falla (ejemplo de falla en serie)
Captura: Observación de una falla (ejemplo de falla en serie)

Ahora, mostraré un ejemplo de una falla en serie, que realmente me sucedió. Estaba con un módem GPRS, del tipo que se usa en un teléfono celular, la tarjeta SIM, tratando de conectarme al ESP32. Pero simplemente no se conectó. Luego verifiqué la fuente de alimentación, el cableado y cambié la placa. Hice de todo, pero nada lo solucionó. Decidí hacer un análisis lógico: descubrí que la señal ESP en UART 115200 comenzó a no coincidir. Es decir, el ESP32 estaba reproduciendo lo que debería ser 115, 200 a una velocidad diferente a esta.

Este error, que fue identificado por el analizador, se mostró con una X en rojo. Según tengo entendido, el programa dice que el punto que tiene ese bit está medio desplazado en el tiempo. A medida que aumenta este cambio, puede llegar un momento en que todo no coincida, de modo que la información no llegue al otro lado. Suele llegar, pero el SIM800 es sensible y si no es exacto, la información no llega al otro extremo.

No sé si esto es algo que pasa a menudo o no, pero a mí me pasó, y por eso decidí abordar este tema aquí. ¿Entonces qué hice? Disminuí la velocidad. Si pones 9, 600, 19, 200, hasta 38, 400, funciona, lo que no ocurre con los 115, 200.

Paso 21: Descarga los archivos

PDF

INO

Recomendado: