Estoy aprendiendo cómo analizar el reloj y los datos del bus SPI utilizando un osciloscopio de almacenamiento digital de nivel de entrada. Estoy usando un BK Precision 2542B para medir la salida del reloj y las líneas MOSI de un Netduino que utiliza un microcontrolador ARM.
En esta imagen, tengo el reloj en el canal 1 (amarillo) y el MOSI en el canal 2 (azul). El disparador está configurado para usar el canal 1, usando un disparador de flanco ascendente de 1.44V. La amplitud de la onda cuadrada del reloj es de aproximadamente 3.3V.
El indicador de disparo está en el centro de la pantalla horizontalmente, pero tengo un pulso a su izquierda. Esperaba que el primer pulso del reloj comenzara en la ubicación del disparador. Sé que un osciloscopio de almacenamiento digital le permite ver eventos previos y posteriores al disparo, pero estoy confundido por qué el primer pulso no está donde pensé que estaría.
¿Mi comprensión de la activación es incorrecta o solo estoy usando un alcance extraño?
Editar: El tren de pulsos tiene 300 μs de ancho, se repite a intervalos de 2 ms y tengo un valor de retención de disparo de 500 μs. Ajustar la suspensión no ha cambiado el hecho de que un pulso precede al disparador.
Edición 2:
Después de un mayor análisis de la señal, incluido el uso del osciloscopio analógico, creo que he determinado que a veces la duración del pulso es de aproximadamente 350 μs en lugar de 300 μs. Esto puede ser una falla en los marcos generadores de código.
Descubrí que un tiempo de espera de 352 μs producirá el resultado esperado, pero de vez en cuando un impulso adicional precede al disparador.
Grabé algunos cuadros para mostrar el pulso tanto ausente como presente:
Si configuro la base de tiempo horizontal el tiempo suficiente para ver la duración de los pulsos, siempre parece haber al menos 1,7 ms entre ellos:
Entonces, aunque creo que el pulso principal es el resultado de un "fallo" de la fuente, todavía no estoy seguro de cómo un retraso de disparo> 360 μs todavía produce el pulso principal inesperado.
fuente
Respuestas:
Probablemente tenga algún tipo de filtro de activación o retraso activado. De lo contrario, un disparador regular de borde ascendente debería haber captado el primer pulso, no esperar hasta el segundo. Mire cuidadosamente a través del menú del disparador y apague cualquier cosa que se llame "filtro", "retraso", "espera" y similares.
fuente
Esta misma señal se dispara muy bien usando un Tektronix TDS3014, con valores de retención de disparador que varían de 350 μs a 1.5 ms o más.
Creo que la respuesta, por lo tanto, es verificar las señales con más de un alcance cuando algo no se ve bien.
Nunca pude hacer que el BK 2542B mostrara correctamente el reloj sin perder el primer pulso o mostrar "interferencias" o "basura" aleatorias que hacen que los pulsos del reloj sean incontables.
fuente
Amigo, el bus SPI se sincroniza en la caída de la línea del reloj, no en el ascenso, ¡es por eso que todo parece fuera de lugar!
Un saludo, Max
fuente
Bueno, técnicamente su alcance no hizo nada malo: quería sincronizar en el borde del reloj ascendente, y todas sus capturas de pantalla son. Nadie te dijo que será el primer pulso . Si el osciloscopio comienza a grabar lo suficientemente temprano, el gatillo debe golpear el primer pulso, si no, mala suerte, obtienes la imagen # 2.
Lo que no puedo entender es por qué quieres tu disparador en CLK, y no en la señal SS. Falling edge en SS garantiza que usted está al comienzo de la transacción, mientras que CLK edge no lo hace.
EDITAR: teniendo en cuenta que parece que siempre pierde exactamente un pulso, después de todo, parece un error en el alcance. Aún así, vea si la activación de SS ayuda.
fuente