Mediciones de radioaficionados: análisis de señal de bus I2C



Como mencioné repetidamente en mis publicaciones, los proyectos de aficionados se financian con el presupuesto familiar, y un radioaficionado generalmente no puede permitirse comprar equipos de medición costosos. Tenemos que estar contentos con lo que tenemos. O el hecho de que es posible aprovechar "por un tiempo". Y a veces, debido a la desesperanza, el radioaficionado tiene que "perforar con una sierra y sierra con un gimlet".

Recientemente, sentí la necesidad de averiguar qué se transmite realmente en el dispositivo que estoy desarrollando en el bus I2C. Fue ese momento feliz en el que podías permitirte "ver con una sierra".

Puede averiguar cómo se intercambian los datos entre dispositivos utilizando el protocolo I2C aquí . Para analizar las señales en el bus I2C, puede usar un osciloscopio digital de dos canales con memoria y un analizador lógico.

Osciloscopio digital de doble canal con memoria


Cuando se trabaja con equipos electrónicos, el osciloscopio es la herramienta más versátil. Los osciloscopios digitales modernos tienen una serie de propiedades útiles que permiten, entre otras cosas, analizar las señales del bus I2C.

En este caso, obtuve un osciloscopio digital de dos canales "por un tiempo" con memoria Rigol DS1102 (el precio en el sitio web del fabricante es de $ 461). Este dispositivo tiene dos canales de medición con un ancho de banda de hasta 100 MHz y una frecuencia de muestreo de señal de 1 GSa / s.

CH1 estaba conectado a la señal SCL. CH2 estaba conectado a la señal SDA. Para ambos canales, se estableció una escala de 1.00 V / div. Escala de barrido - 10 us / div. Para mayor claridad, el haz del primer canal se desplaza a la mitad superior de la pantalla y el haz del segundo canal a la parte inferior.

En el menú Disparador, el osciloscopio se configuró para una sola medición con el disparador al alcanzar el borde ascendente en el canal CH1 del nivel 1.00 V:



Después de encender el equipo bajo prueba, se presionó el botón rojo grande Run / Stop. El osciloscopio entró en modo de espera y luego comenzó. Después de unos segundos, la grabación se detuvo manualmente.

La forma de onda obtenida se registró en un medio externo pantalla por pantalla:



Analicemos las señales grabadas. En la primera pantalla vemos una visualización de la configuración del dispositivo y un oscilograma de las señales SCL (parte superior) y SDA (parte inferior de la pantalla), en las que leemos de izquierda a derecha:

  • Señal de INICIO : el maestro establece el nivel bajo primero en el bus SDA y luego en el bus SCL;
  • Dirección de 7 bits : lea 0x60 (1100000) en el bus SDA a lo largo de los bordes frontales del SCL;
  • señal del modo de grabación : leemos en el bus SDA un nivel bajo en el siguiente borde de ataque del SCL;
  • Señal ACK : después de transferir el byte, el dispositivo maestro cambia para recibir a través del bus SDA, el SDA se establece en alto, el dispositivo esclavo establece el nivel bajo en el borde descendente del SCL (en realidad, la señal ACK), que el maestro lee en el borde ascendente del SCL;
  • Señal de PARADA : el maestro establece alto en el bus SCL y luego en el bus SDA

De manera similar, lenta pero segura, puede descifrar manualmente el resto del registro.

Analizador de lógica de señal digital


El protocolo se puede descifrar usando un método más simple usando un analizador lógico y el software apropiado.

Para usarlo como analizador lógico, mis colegas de Saleae Logic 8 me proporcionaron amablemente (el precio en el sitio web del fabricante es de $ 399). El software utilizado fue la demostración Saleae Logic 1.2.18 tomada del sitio web oficial . Al instalar este software, acepté un acuerdo de licencia con la condición, que incluía no utilizar este software con equipos de terceros.

El programa incluía un analizador de protocolo I2C. CH0 fue asignado para SCL, y CH1 para SDA. Frecuencia de muestreo de señal 24 MSa / s.



El lanzamiento se configuró en el frente "principal" de CH0. Se seleccionó el formato hexadecimal para mostrar los datos.



Después de encender el equipo bajo prueba, se presionó un gran botón verde de Inicio, y después de unos segundos apareció un cuadro en la pantalla:



Veo el máximo beneficio al usar un analizador lógico en que el programa en sí mismo descifra los datos recibidos. Los resultados de descifrado se ingresan línea por línea en la ventana Protocolos decodificados. Cuando selecciona una línea de datos en la ventana, el programa muestra la ubicación de estos datos en el gráfico.

Osciloscopio digital vs analizador lógico


Para comparar las opciones, "pegué" cuatro capturas de pantalla de la pantalla del osciloscopio y un fragmento del diagrama del analizador lógico en el editor gráfico:



Inicio se indica con un círculo verde, Stop se indica con un círculo rojo. El diagrama primero verifica la presencia de un dispositivo con la dirección 0x60 en el bus y luego escribe 0x80 en el registro 0xB7 de este dispositivo.

Si nos acercamos a la comparación de opciones "con sesgo", podemos ver que en el diagrama del analizador lógico (frecuencia de muestreo 24 MSa / s) hay una "fluctuación" de la señal SCL, que no está presente, como tal, en el oscilograma con una frecuencia de muestreo de 1 GSa / s. El resto de la imagen es la misma, y ​​el analizador lógico también descifra correctamente los datos en modo automático.

Al elegir "uno u otro" en el "residuo seco" tenemos, en el caso de un osciloscopio, un dispositivo universal costoso que no es tan conveniente para analizar un bus como un analizador lógico, sino por un dinero comparable a él. En estas condiciones, yo personalmente, como ingeniero de la "vieja escuela", habría adquirido un osciloscopio digital.

Sin embargo, si hubiera software con un acuerdo de licencia que permitiera el uso de clones económicos de analizadores lógicos populares, como Saleae Logic 8 o DSLogic Plus ...

Y tal software existe


Los clones económicos de analizadores lógicos populares, y no solo ellos, son compatibles con el software de código abierto del proyecto sigrok .

El lugar de trabajo fue recogido:



Luego comenzó el "baile con una pandereta". En Windows 10, solo se lanzó la versión de 32 bits de PulseView. No determinó la presencia de un clon chino barato Saleae Logic en el sistema (el precio en el sitio web del vendedor es de $ 7).

Después de eso, los controladores WinUSB se instalaron en Zadig para el dispositivo Logic , y después de volver a escanearlo se definió en Zadig como el dispositivo fx2latw :



Después de eso, los controladores WinUSB se instalaron nuevamente para el dispositivo fx2latw en Zadig, y solo después de eso PulseView vio el dispositivo Saleae Logic en la lista. El dispositivo ha sido conectado.

Después de conectar el dispositivo, se realizaron las siguientes configuraciones del programa (de izquierda a derecha en la barra de herramientas, comenzando con la inscripción "Saleae Logic"):

  • La relación de captura previa al disparo = 2% se establece presionando un botón con una tecla y un destornillador;
  • las entradas adicionales se desactivan presionando un botón con una sonda roja;
  • establecer el volumen de grabación de 100 K muestras;
  • establecer la frecuencia de muestreo a 24 MHz;
  • El analizador de protocolo I2C se enciende presionando un botón con un icono amarillo-verde.

Además en el panel a la izquierda de los canales:

  • a los canales se les asignan etiquetas de texto correspondientes a las señales;
  • condición de activación asignada al borde ascendente de la señal SDA;
  • A las señales I2C se les asignan los canales correspondientes.

Después de encender el equipo bajo prueba, se presionó el botón Ejecutar. El resultado ya es familiar:



Parece que "bailar con una pandereta" valió la pena!

UPD : Después de instalar manualmente el controlador libusb-win32 en el Administrador de dispositivos para el dispositivo USB Logic , el programa PulseView comenzó a determinar de manera estable la presencia del sistema Saleae Logic sin manipular Zadig.

Breves conclusiones:


El artículo describe la metodología para analizar señales de bus I2C utilizando un osciloscopio digital con analizadores de memoria y lógica con paquetes de software de aplicación.

Un método universal de análisis de señal, pero no barato y lento, es el uso de un osciloscopio digital con memoria.

Un método rápido y presupuestario de análisis de señal, pero con una tarea no trivial de conectar equipos, es el uso de un clon económico de un analizador lógico junto con PulseView.

Me alegraría si mi publicación ayudara a ahorrar tiempo y dinero a los lectores.

En la próxima publicación, te contaré cómo medí la frecuencia con la que comenzó el resonador de cuarzo en el sintetizador de frecuencia, sin un medidor de frecuencia. Pero esa es otra historia ...

Source: https://habr.com/ru/post/438732/


All Articles