¿Qué está pasando con estas transmisiones SPI?

3

Acabo de recibir un analizador lógico Saleae y lo estoy utilizando para piratear un conjunto de batería Guitar Hero . La placa principal dentro del conjunto de batería se comunica con otra placa auxiliar mediante SPI. Cuando entro en la conversación, veo esto:

ElnegroesMOSI,elmarrónesMISO,elrojoesRELOJyelnaranjaesACTIVADO/seleccióndeesclavo.

Medoycuentadedoscosasextrañasqueestánsucediendoaquí:

  1. Elrelojnosiempre"corre". Sin duda, tiene un patrón: se ejecuta cuando ENABLE es bajo (cada 100 Hz).
  2. Incluso cuando ENABLE es alto (lo que supongo que significa que el esclavo no está seleccionado), se produce una conversación entre el maestro y el esclavo.

¿Alguien tiene una idea de lo que está pasando aquí? ¿Los diseñadores de la junta se volvieron perezosos o hice algo mal al capturar los datos?

Detalles:

  • Capturado a 4 MHz
  • El reloj funciona a 2 MHz, cuando se está ejecutando

Aquí hay otra vista, ampliada:

Obviamente,ningunadeestasimágenesproporcionamuchainformaciónsobreloquerealmenteseestá"diciendo", ya que no me acercé lo suficiente. Pero creo que son suficientes para transmitir mi punto de vista. Si quieres una imagen diferente, solo pregunta.

EDIT

Kris sugirió que la línea de habilitación se use para encuestar a la placa esclava en el muestreo. Esto tiene sentido. Echa un vistazo a esta captura de pantalla:

Las pequeñas burbujas negras con contornos rojos son instancias donde el software pudo descodificar una transmisión SPI. Esto solo ocurre cuando la línea de habilitación es baja, lo que sigue lo que Kris sugirió.

    
pregunta Chris Laplante

3 respuestas

8

Creo que el autobús que estás mirando simplemente tiene varios esclavos. Comparten MISO, MOSI y CLK, pero tienen líneas de selección de esclavos dedicadas para cada uno de ellos. La señal ENABLE en sus formas de onda es una de esas selecciones de esclavos. Puede buscar otras selecciones de esclavos en los pines del chip maestro si desea probar esta hipótesis.

Observe cómo las señales parecen cambiar la polaridad de un esclavo a otro (lo más notable en el reloj). Tal vez diferentes esclavos utilizan diferentes modos SPI .

Las formas de onda parecen repetirse con un cierto período, lo que indicaría que el maestro consulta los esclavos uno tras otro en un bucle.

    
respondido por el Thorn
5

Thorn tiene toda la razón. Lo que estás viendo es bastante normal.

En primer lugar, se pueden conectar varios periféricos a un bus SPI. Todos ellos comparten las líneas MOSI, MISO y CLK. Pero cada uno tiene su propia línea de CS. (Solo por simplicidad, aquí no he mostrado la línea MISO)

SilaMCUdeseaenviarunbyteaADC1,primeroreduceCS1.Luegoenvía8pulsosderelojenlalíneaCLKmientrasescribelosbitsdedatosenlalíneaMOSI.Mientrasestosucede,CS2yCS3permanecenaltos.

ParaenviarunbyteacadaADC,unopodríaverunaformadeondacomolasiguiente:

    
respondido por el Rocketmagnet
4

Tú mismo lo dijiste:

  

Detalles:

     

Capturado a 4 MHz El reloj funciona a 2 MHz, cuando se está ejecutando realmente

También hay algo llamado Nyquist Frequency , o el límite de Nyquist. Básicamente dice que la frecuencia más alta que puede ver es menos de la mitad de la frecuencia de muestreo. Entonces, si su frecuencia de muestreo es de 4 MHz, entonces solo puede ver frecuencias de menos de 2 MHz. Hay algo importante aquí que la mayoría de la gente se equivoca. Puede ver frecuencias hasta, pero sin incluir , la mitad de la frecuencia de muestreo. Por lo tanto, a 4 MHz, no puede ver correctamente las frecuencias de 2 MHz.

El efecto secundario de esto también se llama "aliasing". Lo que esto significa en términos prácticos es que si está viendo una señal que está cerca, pero no exactamente a 2 MHz, aparecerá como si la señal viniera y se fuera. Por un tiempo ese reloj estará allí, entonces desaparecerá. Esto es lo que creo que está sucediendo en sus imágenes, donde a veces el reloj no está cuando creo que debería estar. Algo similar puede suceder con sus datos también.

Para obtener datos confiables para la depuración, debe tener al menos 4x y, a veces, 16x de su frecuencia máxima. Por lo tanto, para un reloj de 2 MHz, debe capturar datos de 8 a 32 MHz.

    
respondido por el user3624

Lea otras preguntas en las etiquetas