J'apprends à analyser l'horloge et les données du bus SPI à l'aide d'un oscilloscope de stockage numérique d'entrée de gamme. J'utilise un BK Precision 2542B pour mesurer la sortie de l'horloge et des lignes MOSI d'un Netduino qui utilise un microcontrôleur ARM.
Dans cette image, j'ai l'horloge sur le canal 1 (jaune) et le MOSI sur le canal 2 (bleu). Le déclencheur est réglé pour utiliser le canal 1, en utilisant un déclencheur à front montant de 1,44 V. L'amplitude de l'onde carrée de l'horloge est d'environ 3,3 V.
L'indicateur de déclenchement est au centre de l'écran horizontalement, mais j'ai une impulsion à sa gauche. Je m'attendais à ce que la première impulsion de l'horloge commence à l'emplacement de déclenchement. Je sais qu'un oscilloscope à stockage numérique vous permet de voir les événements avant et après déclenchement, mais je ne comprends pas pourquoi la première impulsion n'est pas là où je pensais qu'elle serait.
Ma compréhension du déclenchement est-elle incorrecte, ou est-ce que j'utilise simplement une lunette étrange?
Edit: Le train d'impulsions a une largeur de 300 μs, se répète à des intervalles de 2 ms et j'ai une valeur de maintien de déclenchement de 500 μs. Le réglage du maintien n'a pas changé le fait qu'une impulsion précède le déclenchement.
Modifier 2:
Après plus d'analyse du signal, y compris à l'aide de l'oscilloscope analogique, je pense avoir déterminé que parfois la durée d'impulsion est d'environ 350 μs au lieu de 300 μs. Cela peut être un problème dans les trames génératrices de code.
J'ai découvert qu'un temps d'attente de 352 μs produirait le résultat attendu, mais de temps en temps une impulsion supplémentaire précède le déclenchement.
J'ai enregistré quelques images pour montrer l'impulsion à la fois absente et présente:
Si je règle la base de temps horizontale assez longtemps pour voir la durée des impulsions, il semble toujours y avoir au moins 1,7 ms entre elles:
Donc, même si je pense que l'impulsion de tête est le résultat d'un "pépin" de la source, je ne sais toujours pas comment une impulsion de déclenchement> 360 μs produit toujours l'impulsion de tête inattendue.
la source
Réponses:
Vous avez probablement une sorte de filtrage de déclenchement ou de retard activé. Sinon, un déclencheur à front montant régulier aurait dû prendre la première impulsion, sans attendre la seconde. Regardez attentivement dans le menu de déclenchement et désactivez tout ce qui est appelé "filtre", "retard", "holdoff", etc.
la source
Ce même signal se déclenche très bien en utilisant un Tektronix TDS3014, avec des valeurs de maintien de déclenchement allant de 350 μs à 1,5 ms ou plus.
Je pense donc que la réponse est de recouper les signaux avec plus d'une portée lorsque quelque chose ne va pas bien.
Je n'ai jamais réussi à faire en sorte que le BK 2542B affiche correctement l'horloge sans manquer la première impulsion, ni montrer des "pépins" ou des "ordures" aléatoires rendant les impulsions d'horloge indénombrables.
la source
Mec, le bus SPI est synchronisé sur la chute de la ligne d'horloge, pas sur la montée, c'est pourquoi tout semble déplacé!
Cordialement, Max
la source
Eh bien, techniquement, votre portée n'a rien de mal: vous vouliez synchroniser sur le front d'horloge montant, et toutes vos captures d'écran le sont. Personne ne vous a dit que ce serait la première impulsion . Si la portée commence à enregistrer suffisamment tôt, le déclencheur devrait frapper la toute première impulsion, sinon - chance, vous obtenez l'image n ° 2.
Ce que je ne comprends pas, c'est pourquoi vous voulez que votre déclencheur soit sur CLK, et non sur le signal SS. Le front descendant sur SS garantit que vous êtes au début de la transaction, pas le front CLK ascendant.
EDIT: étant donné que vous semblez toujours manquer exactement une impulsion, cela ressemble à un bug dans la portée après tout. Pourtant, voyez si le déclenchement sur SS aide.
la source