Ich lerne, wie man den SPI-Bustakt und die Daten mit einem digitalen Speicheroszilloskop der Einstiegsklasse analysiert. Ich verwende ein BK Precision 2542B , um die Ausgabe der Takt- und MOSI-Leitungen von einem Netduino zu messen , das einen ARM-Mikrocontroller verwendet.
In diesem Bild habe ich die Uhr auf Kanal 1 (gelb) und das MOSI auf Kanal 2 (blau). Der Trigger ist so eingestellt, dass er Kanal 1 verwendet, wobei ein Trigger mit steigender Flanke von 1,44 V verwendet wird. Die Rechteckwellenamplitude des Taktgebers beträgt etwa 3,3 V.
Die Auslöseanzeige befindet sich horizontal in der Mitte des Displays, aber ich habe einen Impuls auf der linken Seite. Ich hatte erwartet, dass der erste Impuls der Uhr am Triggerort beginnt. Ich weiß, dass Sie mit einem digitalen Speicheroszilloskop Pre- und Post-Trigger-Ereignisse sehen können, aber ich bin verwirrt, warum der erste Impuls nicht dort ist, wo ich es 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 Anpassen des Holdoffs hat nichts an der Tatsache geändert, dass dem Trigger ein Impuls vorausgeht.
Bearbeiten 2:
Nach weiterer Analyse des Signals, einschließlich der Verwendung des analogen Oszilloskops, habe ich, glaube ich, festgestellt, dass die Impulsdauer manchmal etwa 350 μs statt 300 μs beträgt. Dies kann ein Fehler im Code sein, der Frames generiert.
Ich entdeckte, dass eine Holdoff-Zeit von 352 μs das erwartete Ergebnis liefert, aber hin und wieder geht dem Trigger ein zusätzlicher Impuls voraus.
Ich habe einige Frames aufgenommen, um den Puls sowohl abwesend als auch vorhanden 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 liegen:
Obwohl ich denke, dass der führende Impuls das Ergebnis eines "Glitch" von der Quelle ist, bin ich mir immer noch nicht sicher, wie ein Trigger-Hold-off> 360 μs immer noch den unerwarteten führenden Impuls erzeugt.
Sie haben wahrscheinlich eine Art Trigger-Filterung oder Verzögerung aktiviert. Andernfalls hätte ein regulärer Trigger mit steigender Flanke den ersten Impuls abfangen und nicht bis zum zweiten warten müssen. Sehen Sie sich das Trigger-Menü genau an und schalten Sie alles aus, was als "Filter", "Verzögerung", "Holdoff" und dergleichen bezeichnet wird.
Dasselbe Signal triggert problemlos mit einem Tektronix TDS3014, mit Trigger-Holdoff-Werten im Bereich von 350 μs bis 1,5 ms oder mehr.
Ich denke, die Antwort ist daher, Signale mit mehr als einem Oszilloskop zu überprüfen, wenn etwas nicht richtig aussieht.
Ich konnte den BK 2542B nie dazu bringen, die Uhr richtig anzuzeigen, ohne entweder den ersten Impuls zu verpassen oder zufällige "Störungen" oder "Müll" zu zeigen, die die Taktimpulse unzählbar machen.
Nun, technisch gesehen hat Ihr Oszilloskop nichts falsch gemacht: Sie wollten bei steigender Taktflanke synchronisieren, und alle Ihre Screenshots sind. Niemand hat dir gesagt, dass es der erste Impuls sein wird . Wenn das Oszilloskop früh genug aufzeichnet, sollte der Auslöser den allerersten Impuls treffen, wenn nicht - Pech gehabt, Sie erhalten Bild Nr. 2.
Was ich nicht ganz verstehen kann, ist, warum Sie Ihren Trigger auf CLK und nicht auf SS-Signal haben möchten. Eine fallende Flanke an SS garantiert, dass Sie sich am Beginn der Transaktion befinden, eine steigende CLK-Flanke jedoch nicht.
EDIT: Wenn man bedenkt, dass Sie immer genau einen Impuls zu verpassen scheinen, sieht es doch wie ein Fehler im Bereich aus. Sehen Sie trotzdem, ob das Auslösen auf SS hilft.
Alter, der SPI-Bus wird beim Abfallen der Taktleitung synchronisiert, nicht beim Anstieg, deshalb sieht alles fehl am Platz aus!
Grüße Max
Andi aka
Andreja Ko
darron
JYelton