MPU-9250 I2C Master und Interrupt Konfiguration

OP #4999205
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte eine MPU-9250 (Breakout Board von Sparkfun) mit einem 
Mikrocontroller Interrupt-gesteuert per I2C auslesen und dabei am 
liebsten die I2C Master Funktionalität der MPU benutzen, um auch die 
Kompassmesswerte in einem Rutsch zu bekommen (vgl. 
https://github.com/kriswiner/MPU-9250/issues/86).

Als Controller hab ich erstmal einen STM32 mit CubeMX HAL verwendet. Der 
I2C Bus ist mit 400 kHz Taktfrequenz konfiguriert. Mein Programm macht 
nun folgendes:
1. Warten, bis die MPU bereit ist
2. Reset und 200 ms warten
3. WHO_I_AM Register prüfen
4. Samplingrate vom Gyro auf 1 kHz stellen (0x01 ins CONFIG Register 
schreiben)
5. In einer Endlosschleife die Messwertregister auslesen

Das funktioniert. Wenn ich nun zwischen 4. und 5. noch den Interrupt Pin 
einschalte, d.h. 0x01 ins INT_ENABLE Register schreibe, kann ich etwa 
10-30 Samples lesen und dann bleibt der I2C Bus hängen (HAL meldet 
busy). Zuerst dachte ich an einen Fehler in der STM HAL und hab das 
ganze noch auf einem Arduino implementiert, wo sich der Fehler aber 
reproduzieren lässt.

Wenn ich nun den I2C Bypass aktiviere, also 0x02 ins INT_PIN_CFG 
Register schreibe, funktioniert der Code wieder. Der Bypass selbst läuft 
auch, d.h. ich kann dann das Kompassmodul ansprechen.

Schalte ich nun jedoch das I2C Mastermodul der MPU ein (Bit 5 im 
USER_CTRL Register), tritt das Problem wieder auf. Slaves habe ich dabei 
noch nicht konfiguriert.

Ich habe die Registerdoku jetzt noch zwei Mal durchgelesen, aber nach 
meinem Verständnis sollte das so funktionieren. Weiß jemand, ob ich da 
vielleicht doch noch etwas übersehen habe? Muss noch etwas anderes 
konfiguriert werden?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.