Ich habe gerade einen Logikanalysator von Saleae bekommen und verwende ihn, um ein Drumset von Guitar Hero zu hacken . Die Hauptplatine im Schlagzeug kommuniziert über SPI mit einer anderen Unterplatine. Wenn ich mich in die Konversation einwähle, sehe ich Folgendes:
Schwarz ist MOSI, Braun ist MISO, Rot ist CLOCK und Orange ist ENABLE/Slave-Auswahl.
Mir fallen hier zwei seltsame Dinge auf:
Hat jemand eine Vermutung, was hier los ist? Sind die Board-Designer zu faul geworden oder habe ich beim Erfassen der Daten etwas falsch gemacht?
Einzelheiten:
Hier noch eine Ansicht, vergrößert:
Offensichtlich gibt keines dieser Bilder viel Auskunft darüber, was tatsächlich "gesagt" wird, da ich nicht weit genug hineingezoomt habe. Aber ich denke, dass sie ausreichen, um meinen Standpunkt klar zu machen. Wenn Sie ein anderes Bild wünschen, fragen Sie einfach.
BEARBEITEN
Kris schlug vor, dass die Aktivierungsleitung verwendet wird, um die Slave-Platine zum Abtasten abzufragen. Das macht Sinn. Sehen Sie sich diesen Screenshot an:
Die kleinen schwarzen Blasen mit roten Umrandungen sind Fälle, in denen die Software eine SPI-Übertragung dekodieren konnte. Diese treten nur auf, wenn die Aktivierungsleitung niedrig ist, was dem entspricht, was Kris vorgeschlagen hat.
Ich glaube, der Bus, den Sie sehen, hat einfach mehrere Sklaven. Sie teilen sich MISO, MOSI und CLK, haben aber für jeden von ihnen dedizierte Slave-Select-Leitungen. Das ENABLE-Signal in Ihren Wellenformen ist eine dieser Slave-Auswahlen. Sie können nach anderen Slave-Selects auf den Master-Chip-Pins suchen, wenn Sie diese Hypothese testen möchten.
Beachten Sie, wie die Signale die Polarität von einem Slave zum anderen zu ändern scheinen (am deutlichsten in der Uhr). Möglicherweise verwenden verschiedene Slaves unterschiedliche SPI-Modi .
Die Wellenformen scheinen sich mit einer bestimmten Periode zu wiederholen, was darauf hindeuten würde, dass der Master die Slaves nacheinander in einer Schleife abfragt.
Dorn hat vollkommen recht. Was Sie sehen, ist ganz normal.
Erstens können mehrere Peripheriegeräte an einen SPI-Bus angeschlossen werden. Sie alle teilen sich die MOSI-, MISO- und CLK-Linien. Aber jeder bekommt seine eigene CS-Linie. (Nur der Einfachheit halber habe ich hier die MISO-Linie nicht gezeigt)
Wenn die MCU ein Byte an ADC1 senden möchte, senkt sie zuerst CS1. Dann sendet er 8 Taktimpulse auf der CLK-Leitung, während er die Datenbits auf die MOSI-Leitung schreibt. Während dies geschieht, bleiben CS2 und CS3 hoch.
Um ein Byte an jeden ADC zu senden, sieht man möglicherweise eine Wellenform wie die folgende:
Du hast es selbst gesagt:
Einzelheiten:
Erfasst mit 4 MHz Die Uhr läuft mit 2 MHz, wenn sie tatsächlich läuft
Es gibt auch eine sogenannte Nyquist-Frequenz oder Nyquist-Grenze. Im Grunde besagt es, dass die höchste Frequenz, die Sie sehen können, weniger als die Hälfte der Abtastrate beträgt. Wenn Ihre Abtastrate also 4 MHz beträgt, können Sie nur Frequenzen von weniger als 2 MHz sehen. Hier gibt es etwas Wichtiges, das die meisten Menschen falsch machen. Sie können Frequenzen bis zur Hälfte der Abtastrate sehen, aber nicht einschließlich . Bei 4 MHz können Sie also 2-MHz-Frequenzen nicht richtig sehen.
Der Nebeneffekt wird auch als „Aliasing“ bezeichnet. Praktisch bedeutet dies, wenn Sie ein Signal betrachten, das nahe bei, aber nicht genau 2 MHz liegt, dann scheint es, als ob das Signal kommt und geht. Eine Zeit lang wird diese Uhr da sein, dann wird sie verschwinden. Das passiert meiner Meinung nach in Ihren Bildern, wo die Uhr manchmal nicht da ist, wenn ich denke, dass sie es sein sollte. Ähnliches kann auch mit Ihren Daten passieren.
Um zuverlässige Daten zum Debuggen zu erhalten, müssen Sie mindestens das 4-fache und manchmal das 16-fache Ihrer maximalen Frequenz erreichen. Bei einem Takt von 2 MHz sollten Sie also Daten bei 8 bis 32 MHz erfassen.
Kris Bahnsen
Chris Laplante
Chris Laplante
Dorn
Jon L
Dorn