Liste der Anhänge anzeigen (Anzahl: 1)
IMU über SPI antwortet nicht
Hallo zusammen,
ich habe ein Problem mit dem Ansprechen eines 6-Achs-IMUs mit einem FPGA über SPI. Ich möchte Euch um Rat fragen, warum der Sensor nicht antworten könnte.
Die Fragen wären also:
1) Ist irgendwas an meinen auferlegten SPI-Signalen falsch?
2) Könnte der Sensor kaputt sein und wie ließe sich das überprüfen (ohne eine Vergleichsprogrammierung mit einem µC o.ä. aufzuziehen)?
3) Habe ich irgendwas beim Ansprechen/Konfigurieren des Sensors übersehen?
Der Aufbau:
Der IMU ist ein LSM6DS3 (Datenblatt: https://cdn.sparkfun.com/assets/lear...DM00133076.pdf) auf einem Breakout-Board von Sparkfun (Hookup-Guide: https://learn.sparkfun.com/tutorials...t-hookup-guide).
Ich möchte den Sensor mit einem FPGA (SPI-Master) ansprechen. Das IMU-Board habe ich wie folgt verdrahtet:
Sensor
|
"verbunden mit"
|
GND |
GND |
3,3V |
3,3V |
SDA/SDI |
MOSI (FPGA: out) |
SCL |
SCLK (FPGA: out) |
SDO/SA0 |
MISO (FPGA: in) |
CS |
SS (FPGA: out) |
Damit müsste die Verdrahtung wie in dem Hookup-Guide vorgeschlagen sein.
Am Breakout-Board habe ich die drei Pins des ADDR und die drei des PU_EN geöffnet (Vorschlag Hookup-Guide, Kapitel Jumper).
Meine Idee ist nun, Spannung auf FPGA und IMU zu geben. Auf Knopfdruck wird über MOSI das Byte "WHO_AM_I" (B"00001111") übertragen. Wenn ich das Datenblatt (z.B. auf S.41) richtig verstehe, kommt als Antwort B"01101001". An den Ausgängen des FPGA liegt (hoffentlich) das an, was in Kapitel 6.2.1 im Datenblatt des LSM6DS3 (S.35) beschrieben wird.
Das passiert:
- Spannung wird auf alle Komponenten draufgegeben
- FPGA wird geflasht
- ich drücke den Taster
- Es sind die im Bild gezeigten Signale zu beobachten
Anhang 33004
(Die Signalqualität ist besser, als es hier wirkt; z.B. Flanken binnen 50ns.)
Wie man sieht, kommt auf MISO keine Antwort des Sensors.
Da man dem FPGA das komplette SPI beibringen muss, könnte auch meine Signalvorgabe falsch sein. Ich sehe allerdings nicht wo. Ich habe auch schon versucht MOSI zu invertieren (0=high). Es kommt auch dann keine Antwort.
Woran könnte das liegen? Wo könnte ich noch suchen und was könnte ich noch ausprobieren?
Vielen Dank für eure Hilfe!
Grüß,
NRicola
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Hannes,
ertappt... Nach reichlich Debugging-Versuchen vergisst man irgendwann das zählen. Ich habe damit tatsächlich noch einen (gar nicht mal so alten) Bug beseitigt. Jetzt stimmt das Signal (wieder). Aber das Ergebnis bleibt leider das gleiche. :(
Anhang 33010
Grüß,
NRicola
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
ich habe mich nun einen Schritt in Richtung Materialschlacht bewegt und einen anderen anderen (neuen) LSM6DS3 startklar für SPI gemacht - gleiches Breakout-Board. Das Ergebnis ist das gleiche. Beim Hookup Guide wird nochmal im Besonderen betont, dass der ADDR-Jumper für SPI geöffnet sein muss, da sonst kein MISO-Signal kommt. Ich habe das jetzt auch per Foto überprüft. Sieht eigentlich gut aus.
Anhang 33020
Von daher bleibt meine Ratlosigkeit leider bestehen.
Hat noch jemand Ideen/Vorschläge?
Grüß,
NRicola
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Hannes,
ich konnte das Problem lösen. Hinweis gab mir die Problemlösung hier:
https://electronics.stackexchange.co...oard-using-spi
Fazit: zwar steht im Datenblatt auf S. 41 klar, dass man 00001111 übertragen muss. Auf S. 35 (Kap. 6.2.1) steht hingegen: wenn man etwas vom Sensor lesen möchte, muss das erste Bit 1 sein.
Wenn man also 10001111 überträgt, klappt es. Tricky...:rolleyes:
Hier der erfolgreiche Signalverlauf:
Anhang 33022
Hab reichlichen Dank für deine Hilfe. Das hat gut über mein Motivationstief hinweg geholfen! :)
Grüß,
NRicola