MPU6050 - Stm32 - I2C hängt sich auf

Gast #4253508
Lesenswert?

Hallo,

evtl kann mir hier einer helfen.

Ich betreibe einen MPU6050 via I2C an einem STM32f4 Discovery Board.
Nur lässt sich der MPU nur auslesen wenn ich die Spannnungsversorgung am 
MPU kurz unterbreche und dann initalisiere. Wenn ich die Versorgung dann 
dran lasse und den Mikrocontroller neu bespiele läuft gar nichts mehr 
auf dem Bus...

Woran könnte es liegen, dass sich der MPU nicht wieder reinitalisieren 
lässt?

Danke für alle Antworten.

G Ert
#4253695
Lesenswert?

Wenn du während einer aktiven i2c Kommunikation den uC resettest kann es 
durchaus sein dass die I2C state machine vom Sensor irgendwo mitten drin 
ist und somit beim nächsten Anlauf des uC sich nicht so verhält wie du 
bzw. deine i2c Routinen es erwarten. Beim SPI wird durch den Chipselect 
die State machine resettet, das gibt's bei I2c nicht (bei smbus schon).
Vermutlich wartest du in irgendeiner Routine auf eine Antwort bekommst 
sie aber nicht. In dem Fall musst du deinen Slave wieder in einen 
definierten Zustand bringen, wie das geht steht z.B. hier: 
http://www.analog.com/media/en/technical-documentation/application-notes/54305147357414AN686_0.pdf
Gast #4254397
Lesenswert?

Timmo H. schrieb:
> http://www.analog.com/media/en/technical-documenta...

Wie so oft wird hier das "Freiräumen" des Busses mit einer Stopp 
Bedingung abgeschlossen. Um einen I2C Baustein zu reseten ist das aber 
eigentlich keine gute Idee. Wird vor dem Reset eine EEPROM Page nur mit 
3/4 der gewünschten Daten befüllt, werden diese nach eine Stopp 
Bedienung tatsächlich geschrieben. Aus meiner Sicht ist es deshalb 
sinnvoller als Abschluss des „Freiräumen“  eine Start Bedingung auf den 
Bus zu legen

mfg

DerDan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren