Ich habe einen digitalen Beschleunigungsmesser VTI CMA3000-D01 und steuere ihn über SPI von einem CC2540-Chip von Texas Instruments mit der eingebetteten 8051-MCU.
Im Datenblatt für den CMA3000 wird erwähnt, dass im 2g-Modus die Ausgangsabtastrate 400 Hz oder 100 Hz beträgt (je nachdem, wie der Beschleunigungsmesser konfiguriert ist). Es gibt auch einen "Bewegungserkennungsmodus", der mit einer Abtastrate von 10 Hz arbeitet.
Ich möchte die Konfiguration des Beschleunigungsmessers entweder auf den 400-Hz-Modus oder den 100-Hz-Modus ändern und die Frequenz auf einem Oszilloskop messen, um zu überprüfen, ob ich tatsächlich eine solche Änderung vorgenommen habe. Dies dient hauptsächlich dazu, besser zu verstehen, wie man nützliche Messungen mit einem Oszilloskop durchführt, und um SPI besser zu verstehen.
Ich habe kürzlich ein Rigol DS1052E-Oszilloskop gekauft, daher würde ich gerne wissen, wie ich es an meinen Beschleunigungsmesser anschließen kann, um die Ausgangsfrequenz zu messen, und welche Einstellungen ich am Oszilloskop verwenden muss, um eine solche Messung durchzuführen, und ob dies der Fall ist überhaupt möglich.
Ich habe versucht, die Sonde (mit 10-facher Dämpfung) am Oszilloskop an die SCK-Leitung des Beschleunigungsmessers und die Masseleitung von der Sonde an die Masse der Leiterplatte anzuschließen und dann die Taste "Auto" am Oszilloskop zu drücken, aber es gibt mir eine Wellenform mit einer Frequenz und Spannung, die herumspringt:
Ich hatte erwartet, eine Rechteckwelle mit einer Frequenz von 100 Hz zu sehen (auf die der Beschleunigungsmesser derzeit in meiner Software eingestellt ist), aber ich habe eine Sinuswelle bekommen. Nun, die obigen Bilder mögen tatsächlich korrekt sein, aber ich weiß nicht genug, um festzustellen, ob sie es sind, weshalb ich gehofft hatte, jemand, der sich mit SPI und Oszilloskopen auskennt, könnte mir eine Richtung geben oder mir sagen, was Ich muss lesen, um dieses Zeug besser zu verstehen.
Es wäre auch toll zu wissen, wie man die Ausgabe vom MISO-Port auf dem Beschleunigungsmesser liest, um zu sehen, welche Daten an die MCU zurückgesendet werden. Ich bin mir nicht sicher, ob dies nur mit einem Bereich möglich ist oder ob ich einen Logikanalysator benötigen würde, um diese Daten anzuzeigen. Vielen Dank im Voraus.
Das Problem ist, dass Sie einen digitalen MEMS-Beschleunigungsmesser verwenden und was Sie lesen, ist der SCK-Pin (Serial Clock) der seriellen Schnittstelle. Um zu funktionieren, muss dieser Sensor mit einem Mikrocontroller verbunden werden, der ihn auf die Abtastfrequenz, den Bereich usw. einstellt.
Man muss also nicht mit einer Rechteckwelle mit 100Hz Frequenz rechnen, sondern mit einem schnellen (je nach Bus-Bitrate) Spike, entsprechend einer Übertragung. Wenn Sie die Spitze erweitern, sollten Sie, wenn das Oszilloskop schnell genug ist, die Rechteckwelle der Uhr innerhalb der Spitze sehen.
Wenn Sie die SPI-Schnittstelle nicht richtig einstellen, generiert der uC außerdem keine Uhr (der Sensor arbeitet im Slave-Modus) und Sie werden keinen Wert lesen.
Wenn Sie ein 100-Hz-Signal sehen möchten, können Sie den Int-Pin prüfen, der jedes Mal, wenn eine Messung verfügbar ist, einen Interrupt an den Mikrocontroller sendet. Wenn Sie dann den Interrupt vom Mikrocontroller richtig handhaben, sehen Sie alle 10 ms (100 Hz) den Impuls, der der Übertragung entspricht.
Stellen Sie jedoch sicher, dass Sie keine Bewegungserkennung verwenden. in diesem Fall wird der Interrupt nur dann erzeugt, wenn eine Beschleunigung gemessen wird.
Um die Daten am SPI-Port auszulesen, ist es am einfachsten, die Kommunikation mit dem Sensor zu konfigurieren; Andernfalls werden überhaupt keine Daten gesendet. Überprüfen Sie dann, ob der Mikrocontroller die Interrupts erhält und ob er die Daten liest, die der Sensor gibt; Sie können einen Timer verwenden, um Werten einen Zeitstempel hinzuzufügen und die Häufigkeit zu überprüfen, mit der sie auftreten.
(noch WIP)
Danke für die Antwort, Clabacchio, ich habe einige Ihrer Vorschläge ausprobiert und es geschafft, heute einige aussagekräftigere Messungen zu erhalten. Es stellt sich heraus, dass die Beispielanwendung, die ich zum Testen des SCK-Pins verwendet habe, nur dann ein Signal ausgibt, wenn sie mit einem anderen Gerät "verbunden" ist (dies ist eine Bluetooth Low Energy-Anwendung). Nachdem ich mich mit einem anderen Gerät gekoppelt hatte, begann der SCK-Pin am Beschleunigungsmesser, mir die erwarteten Messungen zu liefern.
Wie Sie erklärt haben, waren es nicht 100 Hz, sondern die Baudrate, auf die die SPI-Schnittstelle des Mikrocontrollers eingestellt war. Um dies zu überprüfen, habe ich die Baudrate auf 230.400 bps geändert und dann eine Messung mit meinem Oszilloskop durchgeführt. Hier ist ein Screenshot des Ergebnisses:
Wie Sie sehen können, beträgt die Frequenz 230,4 kHz, genau das, was ich erwartet hatte.
Ich habe auch versucht, den INT-Pin zu prüfen, und habe die folgende Welle erhalten:
Diese Welle sprang immer wieder herum, blieb aber meistens zwischen 19 und 20 Hz. Ich bin mir nicht sicher, was ich davon halten soll, da der Beschleunigungsmesser von meinem Code aus so konfiguriert wurde, dass er im 100-Hz-Modus arbeitet, also weiß ich nicht, warum ich 20 Hz bekomme.
Hier sind auch 2 Aufnahmen vom MISO-Port, die eine Frequenz von 20 Hz bei 100 ms und 480,8 kHz bei 1,0 us zeigten:
Ich bin neugierig, warum die Frequenz nur durch Ändern der Zeitskala von 20 Hz auf 480,8 kHz gesprungen ist. Ich dachte, die Frequenz könnte etwas genauer werden, wenn ich die Granularität der Zeitskala erhöhe, aber ich habe keine drastische Änderung von 20 Hz auf 480 kHz erwartet. Ich denke, eine dieser Messungen muss falsch sein, aber ich bin mir nicht sicher, warum. Es ist wahrscheinlich der 20-Hz-Wert, da die 480 kHz der bps-Rate ähneln, die ich für diese bestimmte Messung verwendet habe (sie war im Mikrocontroller auf 480.500 bps eingestellt).
Wie auch immer, wie gesagt, ich habe es geschafft, eine sehr genaue Messung durchzuführen, also bin ich mit den Ergebnissen zufrieden, aber ich wäre sehr daran interessiert, irgendwelche Ratschläge zu hören, die Sie bezüglich meiner INT- oder MISO-Messwerte haben könnten.
Nochmals vielen Dank für Ihre Hilfe, es wird sehr geschätzt!
W5VO
Kellenjb