¿Las mejores herramientas para depurar circuitos digitales simples?

10

Soy un desarrollador de software profesional que está acostumbrado a los lujos de los depuradores integrados. Desde hace un tiempo, he estado experimentando con la plataforma Arduino. Sin embargo, me parece que intentar interactuar con componentes como un sensor de temperatura digital DS1820 de Dallas es como andar a tientas en la oscuridad.

Suponiendo un presupuesto suelto de aproximadamente $ 200, ¿qué tipo de herramientas hay para ayudarme a visualizar lo que está pasando? He consultado el Link Instruments MSO-19, pero sinceramente no sé mucho sobre la diferencia entre un osciloscopio y un analizador lógico.

¿Cómo sé que el dispositivo que compro podrá medir los tipos de componentes (simples) que estoy usando?

    
pregunta Owen Thomas

8 respuestas

9

esencialmente, un osciloscopio le brinda una lectura gradual del voltaje en la línea, mientras que un analizador lógico solo le dirá si es 0 o "alto" (el valor de "alto" podría ser 5V, 3.3V o 1.8 V dependiendo de tu circuito). A menudo verá que los analizadores lógicos tienen muchos más canales (líneas que pueden leerse simultáneamente) que los osciloscopios debido a la menor resolución requerida.

En cuanto a un dispositivo específico, he oído grandes cosas sobre la Saleae Logic . Muestras a 24MHz; esto significa que comprueba si el voltaje en una sonda en particular es alto o bajo 24 millones de veces por segundo. El software también parece tener algún conocimiento de los protocolos integrados comunes para ayudar a la depuración. Me imagino que 24MHz sería suficiente para el trabajo arduino ya que la velocidad máxima del Atmegaxx8 es 20MHz.

    
respondido por el penjuin
9

esto es solo una adición a la respuesta de Penjuin, ya que no encajaba en un comentario y su respuesta es generalmente correcta. Solo quiero aclarar una implicación en su respuesta.

Tenga mucho cuidado al elegir un dispositivo de medición en función de su ancho de banda / frecuencia de muestreo. Un dispositivo con una frecuencia de muestreo de 25 mhz no puede muestrear con precisión una señal de reloj digital de 25 mhz, ni siquiera cerca.

Si toma una señal de reloj digital a 25mhz y la alimenta en un o-scope con un ancho de banda de 25mhz verá algo parecido a una onda sinusoidal. Un alcance con una frecuencia de muestreo probablemente mostraría un nivel de CC ya que, por cada Nyquist, la señal de frecuencia más alta que podría muestrear tal alcance sería 12.5 mhz.

Una onda cuadrada contiene su frecuencia fundamental, que es su velocidad de reloj, para este ejemplo 25 mhz. También contiene grandes armónicos impares que dan su forma cuadrada, para mirar una señal de reloj digital de 25 mhz con la precisión que necesita no solo para mirar a 25 mhz, sino también a 75, 125, 175, 225, etc. a la precisión deseada o hasta la velocidad de giro del transceptor.

Si bien esto es un poco menos importante para un analizador lógico, sigue siendo muy importante. El analizador lógico está buscando un 'alto' y un 'bajo' por encima o por debajo de algún umbral. Si lo que se ve es una onda sinusoidal, verá estados altos y bajos artificialmente cortos y espacios entre los bits artificialmente largos. Esto puede depender en cierta medida de la arquitectura del analizador.

Esto puede hacer que el diagnóstico de problemas relacionados con varios modos de transmisión sea imposible. Por ejemplo, SPI tiene 4 modos diferentes en función de que los datos son válidos en los flancos ascendentes o descendentes del reloj y también en la polaridad de los datos (¿es alto un 1 o un 0?). Otros protocolos de transmisión también tienen este problema (I2S y formatos de audio relacionados, por ejemplo). Si no puede identificar con precisión cuándo tienen lugar las transiciones de borde, es casi imposible determinar si el bus está actuando dentro de las especificaciones.

En general, necesita velocidades de ancho de banda / muestreo mucho más altas que la velocidad de datos de destino prevista. Si desea muestrear un bus I2C de 40 kHz, un analizador lógico con una frecuencia de muestreo de 100 mhz es más que suficiente. Si necesita muestrear un bus SPI de 25 mhz, necesita tener un alcance / analizador con un ancho de banda mucho mayor, algo cerca de 500 mhz si necesita precisión real, así como una frecuencia de muestreo que permita la medición en ese rango de frecuencias.

Por lo tanto, el dispositivo recomendado por Penjuin con una frecuencia de muestreo de 24 mhz solo puede proporcionar mediciones precisas de señales digitales que sean inferiores a ~ 2 mhz con una velocidad de giro apreciable para esa velocidad de datos.

    
respondido por el Mark
8

Si planea trabajar principalmente en circuitos digitales, el analizador lógico es lo que desea. Los osciloscopios se distinguen por mostrar relativamente pocas señales analógicas (p. Ej., 2-4) con gran detalle, mientras que los analizadores lógicos, ya que se preocupan principalmente de alto contra bajo, generalmente tienen muchas más entradas.

Ciertamente, puedes usar un O-scope como un analizador lógico, pero la ventaja de este último es que es más fácil obtener "el panorama completo" al poder ver docenas de señales simultáneamente.

    
respondido por el JustJeff
2

Hay algunas buenas respuestas a esta pregunta similar: ¿Analizador lógico para principiantes?

    
respondido por el Toby Jaffey
2

En cuanto a los analizadores lógicos, escribí una comparación básica de los (relativamente) baratos:

Comparación de analizadores lógicos basados en PC

Una cosa a tener en cuenta sobre la velocidad de muestreo, una regla general es que generalmente necesita al menos 4 veces su velocidad de datos para obtener una lectura precisa, y hasta 10 veces es mejor. Entonces, si desea monitorear una señal de 8MHz (que puede generar fácilmente desde un AVR económico en SPI, por ejemplo), querría un analizador de frecuencia de muestreo de 32-80MHz. Esto solo se aplica cuando se captura en modo 'asíncrono'. Si está capturando en modo 'síncrono' (por ejemplo, con una señal de reloj), entonces su frecuencia de muestreo solo necesita coincidir con la velocidad de la señal de reloj. Entonces, por ejemplo, en ese caso, el muestreo síncrono de 8MHz sería suficiente para capturar una señal SPI de 8MHz (ya que tiene una señal de reloj dedicada).

    
respondido por el davr
1

Tengo un MSO-19 y me gusta mucho. Me gustaría que tuviera más de un canal analógico, pero funciona como un osciloscopio y un analizador lógico. Por el precio, creo que es un buen equipo (y funciona bien en VMWare en OS X). El oScope me ayudó a ver lo que realmente está sucediendo en una parte del circuito, y no muestra solo el estado alto / bajo de una línea digital, como lo hace un analizador lógico. Es un voltímetro mucho más preciso (y de respuesta más rápida) que su multímetro estándar. Sin embargo, sería muy bueno si pudiera decodificar datos en serie, en lugar de solo I2C y SPI ...

    
respondido por el blalor
1

Es probable que esta respuesta no sea de mucha utilidad para usted usando ardunio, pero es una respuesta a la pregunta general.

Uso mucho las funciones del analizador lógico de mi pickit2. Claramente, está pensado para la programación de PIC, pero también tiene un modo de analizador lógico de 3 canales que utilizo todo el tiempo para observar señales digitales. Todavía lo uso para eso, aunque estoy usando Cortex-M3 para mis proyectos actuales. Claramente, es una herramienta extremadamente primitiva por el estándar de equipo adecuado, pero aun así me resulta increíblemente útil

Lo he usado para depurar circuitos I2C y señales de salida de TV, por ejemplo, vea mi publicación here

    
respondido por el John Burton
1

Esto es bastante bueno y realmente barato: enlace

Tiene una tasa de muestreo decente, y puede apoyar un proyecto de HW abierto fresco. Parece que todavía está en una especie de etapa beta, por lo que podría no ser lo mejor si solo quieres conectar algo y que funcione.

    
respondido por el AdamShiemke

Lea otras preguntas en las etiquetas