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
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
:
Bearbeitet durch User
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
Ach ja und Falls es sich nicht um ein Baustein handelt der den Bus blockiert, hilft es auch die I2C Peripherie über das RCC Register zu resetten
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.