NRicola
01.11.2017, 13:44
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/learn_tutorials/4/1/6/DM00133076.pdf) auf einem Breakout-Board von Sparkfun (Hookup-Guide: https://learn.sparkfun.com/tutorials/lsm6ds3-breakout-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
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
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/learn_tutorials/4/1/6/DM00133076.pdf) auf einem Breakout-Board von Sparkfun (Hookup-Guide: https://learn.sparkfun.com/tutorials/lsm6ds3-breakout-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
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