Personalmente estoy algo alejado del hobbi de la electrónica, aún así, siempre me ha apasionado y trato de mantenerme informado sobre su evolución lo más que puedo. Esto me ha motivado a escribir algo sobre el tema en GUTL.
Si bien me gustan las tecnologías en general, la electrónica fue el primer contacto. En el pasado solía tener las siguientes herramientas:
- Mini tester analógico (Taiyo)
- Soldador Vesubio modelo A
- 2 pinzas: punta y alicate (Bahco)
- Algunos destornilladores
- Fuente de 220V a 6V.
- Fuente de 220V a 12V.
Mis proyectos eran relativamente sencillos —muy simples verdaderamente—. Soldar algún cable por aquí, testear conductividad por allá, voltajes, valores de resistencias, y no mucho más. Cosas muy básicas que se aprendían de revistas de electrónica, o un libro de secundaria.
Las herramientas mencionadas las vendí casi todas para poder comprar mi primera computadora (segunda mano): la TEXAS INSTRUMENTS TI99/4A color beige. Aquí comenzaría un peregrinaje con mi otra pasión, las computadoras.
Solo me quedaron las fuentes de 6V y 12V además de un multímetro económico adquirido más adelante, —no puedo estar sin un tester—.
De comenzar nuevamente con la electrónica me gustaría hacerlo utilizando al menos componentes que pueden ser relacionados a: robótica, automatización, CNC, sistemas embebidos, circuitos programables, etc. Tecnologías que me apasionan, están muy presentes en la actualidad, y son computacionales:
- ARDUINO y similares
- Raspberry PI y similares
- FPGA’s
- YOCTO
- Bus Pirate
- Adafruit
- Algún programador eeprom
Cabe destacar que algunas de las herramientas mencionadas al comienzo del artículo no me servirían de mucho en la actualidad, —componentes muy pequeños—. Tendría que pensar en un soldador tipo lápiz, pinzas más pequeñas, algún multímetro más avanzado… También me gustaría contar con un osciloscopio, ¿por qué no?
La electrónica digital y el osciloscopio
Dependiendo del área de la electrónica en que uno se desarrolle, hay herramientas que son indispensables y, otras no tanto. En el caso de un osciloscopio es probable que forme parte de este último grupo, no obstante, la mayoría de los técnicos profesionales lo tienen.
El tema se suscita cuando uno no es un profesional, o simplemente no resuelve su economía en base a esta profesión. En muchos casos utilizamos la electrónica como un método de aprendizaje, o un hermoso pasatiempo.
En ese contexto, comprar un osciloscopio de banco puede resultar realmente caro, sobre todo si no lo vamos a amortizar. Aunque puede haber osciloscopios usados a precios accesibles, sigue siendo una compra que tal vez no se justifica. Esto sin tener en cuenta del riesgo que corremos sobre el estado del producto, otro aliciente a tener en cuenta.
Otra herramienta que podría definirse como imprescindible en la actualidad es el computador, u ordenador. Para un técnico electrónico o aficionado: buscar información, leer datasheets, hacer cálculos matemáticos, simular circuitos y mucho más, se ha convertido en una tarea tan trivial como necesaria.
¿Y por qué no sacarle provecho al ordenador entonces?
Generalmente suelo buscar herramientas libres que puedan cubrir mis expectativas con respecto al software privativo, y en el caso de la electrónica deseaba escribir sobre este interesante software que puede satisfacer las exigencias de muchos usuarios amantes de esta profesión.
Por supuesto que aquí también se requiere de un gasto, pero es mucho menor si se lo compara con el de un osciloscopio de banco. Se trata de un conversor analógico digital, un dispositivo que puede ser de mucha utilidad para nuestros proyectos y cuyo precio, dependiendo del modelo y marca, ronda los 10-20 dólares aproximadamente.
El osciloscopio
De acuerdo a Wikipedia:
Un osciloscopio es un instrumento de visualización electrónico para la representación gráfica de señales eléctricas que pueden variar en el tiempo. Es muy usado en electrónica de señales, frecuentemente junto a un analizador de espectro.
Presenta los valores de las señales eléctricas en forma de coordenadas en una pantalla, en la que normalmente el eje x (horizontal) representa tiempos y el eje y (vertical) representa tensiones. La imagen así obtenida se denomina oscilograma. Suelen incluir otra entrada, llamada «eje THRASHER» o «Cilindro de Wehnelt» que controla la luminosidad del haz, permitiendo resaltar o apagar algunos segmentos de la traza.
En términos simples: un osciloscopio se usa para observar y medir señales.
Analizador lógico
Un analizador lógico es un instrumento de medida que obtiene o captura datos de un circuito digital y los muestra en pantalla, como si se tratase de un osciloscopio. Una ventaja del analizador lógico es que, a diferencia de un osciloscopio, este puede visualizar señales de múltiples canales.
Además de permitir visualizar los datos para así verificar el correcto funcionamiento del sistema digital, puede medir tiempos entre cambios de nivel, número de estados lógicos, etc. La forma de capturar datos desde un analizador lógico es conectando una punta lógica apropiada en el bus de datos a medir.
—Wikipedia
En el momento en el que un circuito digital que se está testeando realiza una operación lógica, es ahí dónde el analizador comienza a copiar datos digitales de los puntos que estamos analizando. Luego podrán ser analizados con el software indicado.
Para realizar esta operación, además del software, necesitaremos el analizador lógico USB. Un pequeño dispositivo que cabe en la palma de una mano y puede analizar hasta 8 canales y 24 MHz. Si bien hay dispositivos con más canales (16, 32..), el de 8 es más que suficiente.
La marca más conocida es Saleae, el cual viene con su propio software (disponible para Linux). También existen dispositivos clonados de Saleae, que al igual que este, son perfectamente compatibles con sigrok y, tienen un valor inferior.
Usos del Analizador lógico a través de sigrok
Generalmente se usan para depurar distintos tipos de memoria y microcontroladores como podrían ser: chips programables tipo eeprom o FPGA’s, por citar algunos casos. Cuando se trabaja con esta clase de componentes intervienen determinados protocolos de comunicación: I2C, SPI, UART, JTAG, etc. Una buena manera de comprobar el correcto funcionamiento de estas comunicaciones es a través de un analizador lógico.
Instalación de sigrok
sigrok es software open source y está disponible en las distribuciones Linux más populares. La instalación la hice sobre un sistema Debian 10.
sudo apt install sigrok
También hay que asegurarse de que el paquete sigrok-firmware-fx2lafw esté instalado. En Debian figura como dependencia de sigrok. fx2lafw es un firmware de código abierto (GPLv2 +) que permite usar casi cualquier dispositivo o placa de evaluación que tenga un chip Cypress FX2 (LP) como analizador lógico a través de la librería libsigrok.
Características
Usos generales de sigrok:
- registrar los datos de su multímetro.
- tener una interfaz gráfica de usuario remoto para el osciloscopio.
- realizar mediciones en señales.
- escribir decodificadores de protocolo personalizados en python.
- controlar a distancia cualquier dispositivo de laboratorio que desea admitir.
- más…
Además de dispositivos analógicos, como el mencionado en el artículo, sigrok soporta una gran cantidad de hardware. La lista es muy larga para describirla aquí. En el siguiente pdf puedes ver todos los dispositivos soportados, en curso y, planeados para el futuro.
Descargar Supported hardware - sigrok.pdf
Tal y como se presenta sigrok es utilizable, sin embargo, carece de interfaz gráfica. sigrok está pensado para trabajar con la terminal a través de la herramienta sigrok-cli. Para cualquier profesional no le resultará difícil interpretar los datos capturados, aún así, sigrok cuenta con otro software que provee de una GUI muy completa: PulseView
Instalación de PulseView
El paquete pulseview es una dependencia de sigrok, por lo que debería estar instalado. No obstante, si nuestra distribución no lo instala automáticamente procedemos a hacerlo:
sudo apt install pulseview
Ahora podremos visualizar los datos capturados mediante esta flamante herramienta como si se tratase de un osciloscopio de banco, pero en nuestro ordenador.
Su interfaz gráfica es bastante intuitiva, en lineas generales PulseView cuenta con varias secciones fáciles de visualizar. En la parte superior de la ventana se encuentran 3 pestañas para iniciar:
- crear nueva sesión
- configurar la interfaz de PulseView
- iniciar la captura de datos (run)
Un nivel más abajo tenemos las herramientas para configurar varios apartados como: selección de driver, zoom, selección de decodificador, medidor de tiempo, datos a capturar, frecuencia, configuración de canales, etc. La parte central es la más importante, y es donde se volcarán los datos capturados para ser analizados.
En el manual PulseView User Manual.pdf (inglés) se encuentra en detalle cada aspecto para aquellos que desean conocer en profundidad a esta gran herramienta.
Descargar PulseView User Manual.pdf
Ya que no poseo un analizador lógico intentaré demostrar algunas de las funciones más importantes de PulseView mediante un ejemplo hipotético. Los pasos corresponden a una supuesta depuración de una memoria CMOS flash MACRONIX MX25L1605D que utiliza el protocolo SPI (Interfaz Periférica Serial). El volcado de los datos fue obtenido de la página oficial de sigrok.
Antes de continuar con PulseView voy a representar un esquema de una conexión Bus SPI (master/slave), —para redondear la idea—.
El principal (maestro) podría ser un computador (puertos LPT, COM), Raspberry o Arduino (GPIO general-purpose input/output) u otro componente a tal fin. El dispositivo secundario (esclavo) generalmente es un circuito integrado (microchip o microcontrolador) al que se le quiere leer/escribir datos.
Saber la terminología del protocolo que vamos a utilizar, si bien no es de vital importancia, a la hora de configurar las etiquetas de señales nos ahorrará pasos en la configuración. Además estaremos trabajando de la forma adecuada. Más adelante se entenderá este concepto.
Los protocolos de comunicación más utilizados en integrados son: I2C, SPI, UART. Cada uno de ellos identifica las salidas del bus con diferentes términos, aunque realicen la misma operación. Por ejemplo:
SPI
- SCLK (Clock): Pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía un bit.
- MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al Esclavo.
- MISO (Master Input Slave Output): Salida de datos del Esclavo y entrada al Master.
- SS/Select: Para seleccionar un Esclavo, o para que el Master le diga al Esclavo que se active.
También se pueden ver en datasheets con otros términos:
- SI, SDI, DI (Serial Input, Serial Data Input, Data Input)
- SO, SDO, DO (Serial Output, Serial Data Output, Data Output)
- CE, CS (Chip Enable, Chip Select)
- SCK, CLK (Serial Clock, Clock)
I2C
- SDA (Serial Data Line)
- SCL (Serial Clock Line)
UART
- Tx (Transmission Date)
- Rx (Reception Date)
Esquema de la conexión
Para trabajar mejor, en la parte superior/derecha hago una conversión a los términos utilizados por convención en el protocolo SPI. El siguiente esquema incluye un Analizador Lógico USB de 8 canales.
En esta imagen de ejemplo estoy simulando una conexión de 4 canales del analizador lógico a las señales del esclavo (SCLK, MOSI, MISO, CS#) del chip SPI MX25L1605D. La barra invertida (/) en /SS o el símbolo numeral CS# significa que será activado en estado bajo. Estas señales serán configuradas en PulseView más adelante.
La calidad de los clips de pruebas también son muy importantes, ya que la fiabilidad de los datos capturados dependen, en gran medida, de que tan seguras sean dichas conexiones a los pines que se quieren analizar.
Descargar Probe comparison - sigrok.pdf
Comenzando con PulseView
Al iniciar pulseview empezaremos con una nueva sesión. Nuestro dispositivo analógico deberá estar conectado a nuestra computadora y, suponiendo que es de una marca reconocida, seguramente nuestra herramienta lo ha detectado.
En caso de no hacerlo seguiremos los siguientes pasos: en el botón Demo device nos desplegará la ventana para seleccionar el driver para nuestro dispositivo, si no está presente, seleccionamos el driver genérico firmware-fx2lafw y presionamos scan for devices…. La imagen de la derecha es un ejemplo del driver demo.
Una vez que tengamos nuestro dispositivo reconocido solo queda empezar a trabajar. En el esquema presentado más arriba tengo conectado los clips de prueba a 4 salidas en el micro secundario. El resto de las etiquetas que no necesito, tanto analógicas como lógicas, las deshabilito. Podemos seleccionar/quitar una a una, o usar las opciones globales que se presentan más abajo.
El siguiente paso será configurar cada etiqueta con su respectiva señal: click derecho del ratón sobre la etiqueta no abrirá un pequeña ventana para configurar: Nombre, Color, Estados…
Las etiquetas D0 D1 D2 D3 corresponden a los canales CH0 CH1 CH2 CH3 del analizador, pero no es necesariamente en ese orden, ya que se puede enlazar las etiquetas a cualquier canal disponible del analizador. También se puede definir un nombre arbitrario para cada etiqueta, aunque lo lógico, es escoger el término referido al protocolo que se está utilizando. En mi caso utilizo los términos por convención (MOSI, MISO, etc.) basados en el protocolo SPI.
Una vez configuradas la etiquetas lo único que resta es comenzar la captura de datos. Pulsando sobre el botón Run y estará a la espera de cualquier transferencia de datos lógicos en esos canales.
Depuración
La imagen anterior ya muestra pulsos de señales capturadas, —siempre hablando de un caso hipotético—, recordemos que no estoy trabajando sobre un hardware real, aunque los datos si son reales. A priori, interpretar dichos datos es una tarea compleja, debemos contar necesariamente con el datasheet correspondiente a nuestro circuito integrado para poder analizar lo que realmente está sucediendo.
Para sortear esta tarea, sigrok tiene diversos protocolos de decodificación que facilitan sustancialmente el trabajo. Por tanto, el siguiente paso sería escoger el protocolo adecuado para decodificar, en este caso, el protocolo SPI. Esta sección se encuentra en el menú de decodificación.
Ahora ya disponemos de información más útil para depurar nuestro microcontrolador.
Aquí se puede observar que el maestro (linea MOSI) envía una instrucción 0x9F (comando SPI Flash para leer el ID del componente). El esclavo envía como respuesta 0xc2, 0x20, 0x15 a traves de la linea MISO. Para traducir dicha comunicación sigrok permite usar un decodificador de segundo nivel llamado Stack decoder, el cual traducirá las salida del decodificador anterior.
En este caso en particular escojo SPI Flash y posteriormente selecciono el chip MX25L1605D, o alguno compatible de la lista. Esta opción se encuentra en la etiqueta spi (click derecho del mouse).
En la imagen siguiente se puede ver información detallada de las comunicaciones entre ambos componentes en sus respectivos formatos: hexadecimal y binario. También cuenta con una salida en formato ascii.
Error en la decodificación
Es probable que al elegir un decodificador determinado este no muestra la información:
El decodificador arroja el mensaje: «No se han especificado uno o más canales obligatorios». En la siguiente imagen se puede observar que en la etiqueta SPI el canal CLK (Clock) no ha sido enlazado al canal correspondiente.
Una de las características de PulseView es enlazar automáticamente dichas etiquetas cuando realizamos la decodificación, sin embargo, si utilizamos un término que no corresponde al protocolo en cuestión, este deja el campo vacío.
Si se tratase de otro canal hubiera funcionado igual, aunque no contaríamos con la información de ese canal. Sin embargo, al tratarse del canal de reloj, este es requerido sin excepción.
La solución es muy simple, solamente escoger el canal al que hace referencia (SCK) o, renombrar la etiqueta con el término que acepta el protocolo SPI (CLK, SCLK).
El nombre de la etiqueta SCK que utilicé no es inventada. Corresponde a un datasheet de una memoria flash eeprom F25L004A —mal flasheada— que estoy intentando reescribir utilizando un programador eeprom casero.
A pesar de que se trata de una memoria flash SPI el decodificador no reconoce el término SCK descripto en el esquema del datasheet. Esto no es ningún impedimento, pulseview es muy versátil permitiendo definir las etiquetas con otros términos, luego en la decodificación se enlazan manualmente. El resto de las etiquetas (SO, SI, CE#) son reconocidas y enlazadas automáticamente. Otro posible error puede deberse a la elección de un protocolo que no es el indicado para la decodificación del mismo.
Tienes un componente similar pero no dispones de un analizador
No importa. Muchos usuarios contribuyen volcando los datos depurados de diversos protocolos al proyecto sigrok y, si son interesantes, este los va incluyendo en sus repositorios. Tal vez tengas un circuito integrado determinado que está en la lista, solo es cuestión de descargar el archivo.sr correspondiente y correrlo con pulseview.
En sigrok-dumps.git se pueden encontrar volcados de: sensores del mouse, sdcard, usb, led, ps2, microwire entre muchos, además de los protocolos más conocidos como: i2c, uart, jtag, spi, etc. La lista crece continuamente a medida que los usuarios vuelcan los datos de diversos componentes.
Conclusiones
Ambos proyectos vienen creciendo mucho, tanto en características técnicas como en facilidad de uso. PulseView ha mejorado sustancialmente en la parte intuitiva. Para alguien que no está acostumbrado a la utilización de esta clase de aplicaciones me resultó fácil su implementación. El análisis de los resultados ya es un tema complejo para mi.
¿Habías utilizado PulseView en el pasado? Si tienes la oportunidad de contar con un analizador lógico, u otro hardware de los tantos soportados, tal vez sea una buena oportunidad para probarlo y compartir tus experiencias.
Fuente:
https://sigrok.org/
https://es.wikipedia.org/wiki/Serial_Peripheral_Interface
Aunque conozco más del espacio que de electrónica, pero igual se agradece el magistral artículo que ha publicado. Gracias
Me pase todo el articulo con ojos de incredulo hahhaha (Man, ni por la cabeza me pasaba que se podia hacer todo eso , y menos con Linux). Esta es una de esas veces, que me hablan de linux, y lo unico que domino es apt install sigrok 🙂
En fin, nunca me ha interesado tannnto asi la electronica como para meterme , pero como dice @fr0st-w4rr10r, mas que magistral el articulo, deberias publicarlo en otro sitios tambien.
@fr0st-w4rr10r, @AnonymousWebHacker:
Muchas gracias por sus comentarios!
Saludos.
WOW
fantástico!!! pero entendí muy poco quiero aprender electrónica. Robótica!!