- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: IMU über SPI antwortet nicht

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.04.2005
    Ort
    Freiberg
    Alter
    41
    Beiträge
    311

    IMU über SPI antwortet nicht

    Anzeige

    E-Bike
    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:
    1. Spannung wird auf alle Komponenten draufgegeben
    2. FPGA wird geflasht
    3. ich drücke den Taster
    4. Es sind die im Bild gezeigten Signale zu beobachten

    Klicke auf die Grafik für eine größere Ansicht

Name:	Kombi.png
Hits:	16
Größe:	23,8 KB
ID:	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
    Gurken schmecken mir nicht, wenn sie Pelz haben!

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.071
    Wenn ich das richtig sehe sendest du 5 high bits, nicht 4 (Daten werden bei rising edge übernommen).

    MfG Hannes

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.04.2005
    Ort
    Freiberg
    Alter
    41
    Beiträge
    311
    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.
    Klicke auf die Grafik für eine größere Ansicht

Name:	006-004_Kombi.png
Hits:	10
Größe:	19,2 KB
ID:	33010
    Grüß,
    NRicola
    Gurken schmecken mir nicht, wenn sie Pelz haben!

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.071
    Eigentlich sollte alles passen. Du kannst es mit einem uC testen, aber auch mit Tasten, allerdings benötigst du dann eine Entprellung. Du kannst auch einen uC nehmen und den Imu simulieren (z.b. wenn das Byte erkannt wurde eine Led anschalten und bei weiteren 8Taktzyklen ein Byte zurücksenden).

    MfG Hannes

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.04.2005
    Ort
    Freiberg
    Alter
    41
    Beiträge
    311
    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.
    Klicke auf die Grafik für eine größere Ansicht

Name:	007_LSM6DS3_ADDR-open_kl.jpg
Hits:	5
Größe:	54,2 KB
ID:	33020
    Von daher bleibt meine Ratlosigkeit leider bestehen.
    Hat noch jemand Ideen/Vorschläge?

    Grüß,
    NRicola
    Gurken schmecken mir nicht, wenn sie Pelz haben!

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.071
    Laut DB ist der SA0 Pin nur für die I2C Adresse relevant. Der Spi Mode sollte automatisch mit dem CS Pin aktiviert werden.

    MfG Hannes

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.04.2005
    Ort
    Freiberg
    Alter
    41
    Beiträge
    311
    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...

    Hier der erfolgreiche Signalverlauf:
    Klicke auf die Grafik für eine größere Ansicht

Name:	009-007_Kombi.png
Hits:	5
Größe:	25,7 KB
ID:	33022
    Hab reichlichen Dank für deine Hilfe. Das hat gut über mein Motivationstief hinweg geholfen!

    Grüß,
    NRicola
    Gurken schmecken mir nicht, wenn sie Pelz haben!

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.071
    Hauptsache es funktioniert.

    MfG Hannes

Ähnliche Themen

  1. I2C - Baustein antwortet nicht
    Von anwantzer im Forum Elektronik
    Antworten: 18
    Letzter Beitrag: 12.03.2015, 09:50
  2. SD-Karte antwortet nicht
    Von DavidN im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 31.08.2007, 14:59
  3. ControlUnit antwortet nicht
    Von jens299 im Forum Robby CCRP5
    Antworten: 12
    Letzter Beitrag: 13.03.2007, 19:21
  4. RN-Speak antwortet nicht auf I2C-Bus
    Von Claus73 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 6
    Letzter Beitrag: 24.01.2005, 10:03
  5. BasisUnit antwortet nicht !!
    Von Marcoman im Forum Robby CCRP5
    Antworten: 2
    Letzter Beitrag: 23.12.2004, 21:23

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress