Ich lerne, wie man SPI-Bustakt und -daten mit einem digitalen Speicheroszilloskop der Einstiegsklasse analysiert. Ich verwende einen BK Precision 2542B , um die Ausgabe der Takt- und MOSI-Leitungen von einem Netduino zu messen, der einen ARM-Mikrocontroller verwendet.
In diesem Bild habe ich die Uhr auf Kanal 1 (gelb) und den MOSI auf Kanal 2 (blau). Der Trigger ist so eingestellt, dass er Kanal 1 mit einem Trigger mit steigender Flanke von 1,44 V verwendet. Die Taktwellenamplitude beträgt ca. 3,3V.
Die Triggeranzeige befindet sich horizontal in der Mitte des Displays, aber ich habe einen Impuls links davon. Ich hatte erwartet, dass der erste Impuls der Uhr an der Triggerstelle startet. Ich weiß, dass Sie mit einem digitalen Speicheroszilloskop Ereignisse vor und nach dem Auslösen sehen können, aber ich bin verwirrt, warum der erste Impuls nicht dort ist, wo ich ihn mir vorgestellt habe.
Ist mein Verständnis des Auslösens falsch oder verwende ich nur ein seltsames Zielfernrohr?
Bearbeiten: Die Impulsfolge ist 300 μs breit, wiederholt sich in Intervallen von 2 ms und ich habe einen Trigger-Hold-Off-Wert von 500 μs. Das Einstellen des Hold-Offs hat nichts an der Tatsache geändert, dass ein Impuls dem Trigger vorausgeht.
Bearbeiten 2:
Nach einer genaueren Analyse des Signals, einschließlich der Verwendung des analogen Oszilloskops, habe ich festgestellt, dass die Pulsdauer manchmal etwa 350 μs statt 300 μs beträgt. Dies kann ein Fehler in den Code-generierenden Frames sein.
Ich entdeckte, dass eine Haltezeit von 352 μs das erwartete Ergebnis liefert, aber hin und wieder geht dem Trigger ein zusätzlicher Impuls voraus.
Ich habe einige Bilder aufgenommen, um den fehlenden und vorhandenen Puls zu zeigen:
Wenn ich die horizontale Zeitbasis lang genug einstelle, um die Dauer der Impulse zu sehen, scheinen immer mindestens 1,7 ms zwischen ihnen zu sein:
Obwohl ich denke, dass der Leitimpuls das Ergebnis eines "Fehlers" von der Quelle ist, bin ich mir immer noch nicht sicher, wie ein Trigger Hold-Off> 360 μs immer noch den unerwarteten Leitimpuls erzeugt.
quelle
Antworten:
Sie haben wahrscheinlich eine Art Triggerfilterung oder Verzögerung aktiviert. Andernfalls sollte ein regulärer Trigger für steigende Flanken den ersten Impuls abgefangen und nicht bis zum zweiten gewartet haben. Schauen Sie sich das Trigger-Menü genau an und schalten Sie alles aus, was als "Filter", "Verzögerung", "Holdoff" und dergleichen bezeichnet wird.
quelle
Das gleiche Signal wird mit einem Tektronix TDS3014 einwandfrei ausgelöst, wobei die Trigger-Hold-Off-Werte zwischen 350 μs und 1,5 ms oder mehr liegen.
Ich denke, die Antwort besteht daher darin, Signale mit mehr als einem Bereich zu überprüfen, wenn etwas nicht richtig aussieht.
Ich war nie in der Lage, den BK 2542B dazu zu bringen, die Uhr richtig anzuzeigen, ohne entweder den ersten Impuls zu verpassen oder zufällige "Störungen" oder "Müll" zu zeigen, wodurch die Uhrimpulse unzählig wurden.
quelle
Alter, der SPI-Bus wird beim Fall der Taktleitung synchronisiert, nicht beim Anstieg, deshalb sieht alles falsch aus!
Grüße, max
quelle
Technisch gesehen hat Ihr Oszilloskop nichts falsch gemacht: Sie wollten bei steigender Taktflanke synchronisieren, und alle Ihre Screenshots sind es. Niemand hat dir gesagt, dass es der erste Puls sein wird . Wenn das Oszilloskop ausreichend früh mit der Aufnahme beginnt, sollte der Auslöser den ersten Impuls treffen. Wenn nicht - Pech, Sie erhalten Bild 2.
Was ich nicht ganz verstehen kann, ist, warum Sie Ihren Trigger auf CLK und nicht auf SS-Signal wollen. Eine fallende Flanke bei SS garantiert, dass Sie am Anfang der Transaktion stehen, eine steigende CLK-Flanke nicht.
BEARBEITEN: Wenn man bedenkt, dass man immer genau einen Impuls verpasst, sieht es doch wie ein Fehler im Bereich aus. Überprüfen Sie dennoch, ob das Auslösen auf SS hilft.
quelle