Hi Ich habe eine Weile den Fehler in meinem Programm gesucht, bis mir wieder eingefallen ist das ich für den Bus nur die internen PullUp Widerstände des STM32(Master) benutzt habe und die waren zu schwach(lt. Datanblatt ca 40k). Problem gelöst Im Fehlerfall hat der Slave(MPU6050) SDA auf low gehalten. Jetzt frag ich mich wie man auf sowas reagiert wenn es doch mal vorkommen sollte. 1) Ein paar Pulse auf SCL? 2) Slave reset(Strom weg^^)? 3) ??? zu 1) kann man beim STM32F4 irgendwie SCL umschalten, ohne vorher auf GPIO zu wechseln und danach wieder zurück? Kann im reference manual nichts finden Vielen Dank Lukas
Mit 4k7 Pull Up funktioniert der Bus perfekt. Heute hab ich beim Debuggen reset gedrückt und dann war wieder SDA low. Wahrscheinlich hat er gerade vom Sensor gelesen. Wie würdet ihr das lösen? Es kann ja mal ein Watchdog oder Brownout reset auftreten und dann ist der Sensor nicht mehr ansprechbar --> schlecht
Lukas H. schrieb: > zu 1) kann man beim STM32F4 irgendwie SCL umschalten, ohne vorher auf > GPIO zu wechseln und danach wieder zurück? Kann im reference manual > nichts finden Gab es da nicht eine Funktion um i2c zu resetten? Ich meine sowas mal in der standart lib. gesehen zu haben.
>Gab es da nicht eine Funktion um i2c zu resetten? Ich meine sowas mal in >der standart lib. gesehen zu haben. SWRST Hab ich schon getestet. Hilft sehr wenig, weil SDA low ist. Dadurch wird das BUSY flag sofort wieder gesetzt >Das "Wichtig" ein Stück tiefer beachtet? Ahhh mit DeInit funktionierts auch Danke! Ich hab bemerkt das es nur funktioniert wenn ich zuerst die beiden Pins auf AF schalte, und dann erst initialisiere.
Philips hatte in seinem Grundlagen Blatt zu I2C auch mal eine Reset Prozedur beschrieben. Wenn ich mich recht erinnere, wackelt man mindestens 9-mal an SCL und horcht an SDA, wann der Bus wieder high ist.
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.