Estou aprendendo a analisar o relógio e os dados do barramento SPI usando um osciloscópio de armazenamento digital básico. Estou usando um BK Precision 2542B para medir a saída do relógio e as linhas MOSI de um Netduino que utiliza um microcontrolador ARM.
Nesta imagem, tenho o relógio no canal 1 (amarelo) e o MOSI no canal 2 (azul). O gatilho está configurado para usar o canal 1, usando um gatilho de borda ascendente de 1,44V. A amplitude da onda quadrada do relógio é de cerca de 3,3V.
O indicador de disparo está no centro da tela horizontalmente, mas tenho um pulso à esquerda. Eu esperava que o primeiro pulso do relógio iniciasse no local do gatilho. Sei que um osciloscópio de armazenamento digital permite que você veja eventos antes e depois do disparo, mas estou confuso por que o primeiro pulso não está onde eu pensava que seria.
O meu entendimento de acionamento está incorreto ou estou apenas usando um escopo estranho?
Edit: O trem de pulso tem 300μs de largura, repete-se a intervalos de 2ms, e eu tenho um valor de retenção de gatilho de 500μs. O ajuste da retenção não mudou o fato de que um pulso precede o gatilho.
Edição 2:
Após mais análises do sinal, incluindo o uso do osciloscópio analógico, acho que determinei que algumas vezes a duração do pulso é de cerca de 350μs em vez de 300μs. Isso pode ser uma falha no código que gera quadros.
Descobri que um tempo de espera de 352μs produzirá o resultado esperado, mas de vez em quando um pulso extra precede o gatilho.
Gravei alguns quadros para mostrar o pulso ausente e presente:
Se eu definir a base de tempo horizontal por tempo suficiente para ver a duração dos pulsos, sempre parecerá haver pelo menos 1,7ms entre eles:
Portanto, embora eu pense que o pulso inicial seja o resultado de uma "falha" da fonte, ainda não tenho certeza de como uma retenção de disparo> 360μs ainda produz o pulso inicial inesperado.
fonte
Respostas:
Você provavelmente tem algum tipo de filtragem de gatilho ou atraso ativado. Caso contrário, um gatilho de borda ascendente regular deveria ter captado o primeiro pulso, e não esperado até o segundo. Olhe atentamente pelo menu do acionador e desligue qualquer coisa chamada "filtro", "atraso", "retenção" e similares.
fonte
Esse mesmo sinal é acionado muito bem usando uma Tektronix TDS3014, com valores de retenção de acionador que variam de 350μs a 1,5ms ou mais.
Penso que a resposta, portanto, é checar sinais com mais de um escopo quando algo não parece certo.
Eu nunca consegui fazer com que o BK 2542B mostrasse o relógio corretamente, sem perder o primeiro pulso ou mostrar "falhas" ou "lixo" aleatórios, tornando o pulso incontável.
fonte
Cara, o barramento SPI é sincronizado na queda da linha do relógio, não no aumento, é por isso que tudo parece mal colocado!
Atenciosamente, Max
fonte
Bem, tecnicamente, seu escopo não fez nada de errado: você queria sincronizar com o aumento do limite do relógio e todas as suas capturas de tela. Ninguém lhe disse que será o primeiro pulso . Se o osciloscópio começar a gravar suficientemente cedo, o gatilho deverá atingir o primeiro pulso, se não for - azar, você obtém a imagem # 2.
O que não consigo entender é por que você quer o seu gatilho no CLK, e não no sinal SS. A vantagem no SS garante que você está no início da transação, mas a vantagem no CLK não aumenta.
EDIT: considerando que você parece sempre perder exatamente um pulso, parece um bug no escopo, afinal. Ainda assim, veja se o acionamento no SS ajuda.
fonte