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