Hallo zusammen, ich sitze zur Zeit an einem Problem, das mich leicht verzweifeln lässt. Ich habe schon zig Beiträge durchgewälzt hier, aber nichts passt so recht zu meinem Problem. Ich habe ein STM32F4 Discovery-Board (I2C-Slave), welches per I2C mit einem Raspberry Pi (Master) kommunizieren soll. Vom Raspberry kommen immer 16-bit Daten, genauso holt sich der Raspberry immer 16-bit Daten vom STM32 ab. Prinzipiell funktioniert das auch, bloß hängt sich der STM32 sporadisch einfach auf während der Kommunikation. Mit dem Oszi kann man erkennen, dass dies immer dann passiert, nachdem der Master die Write-Adresse gesendet hat und der STM32 sein Acknowledge gibt. Dann passiert gar nichts mehr und der STM32 hängt fest. Das merkwürdige ist, dass dies nur sporadisch passiert. Manchmal nach 2 Sekunden, manchmal geht es aber auch länger gut. Debugge ich den STM32 dann tritt der Fehler witzigerweise nur sehr selten auf. Wenn ich im Debugger dann durchklicke, scheint es so, als ob der Interrupt sofort dann wieder gefeuert wird, wenn er verlassen wurde. Das Hauptprogramm wird also nicht mehr erreicht. Andere Interrupts laufen aber noch (habe dort 2 Motorregelungen laufen). Ich habe schon Dinge probiert, wie händisches zurücksetzen der Flags, aber das hilft alles nichts. Ich hoffe jemand hier hat vielleicht eine Idee, woran es klemmen könnte. Danke und Gruß Kai
sicher dass der PI seinen Ausgang nach dem Senden der Adresse hochohmig schaltet?
Auf die Idee bin ich noch nicht gekommen. Da ich auf dem Raspberry nur vorgefertigte Libs benutzt habe, habe ich hier keinen Fehler vermutet. Ich habe nun testweise das Clockstretching auf dem STM32 deaktiviert und die Busgeschwindigkeit mal auf 10kHz gesetzt. Nun läuft die Übertragung zwar noch immer nicht ganz fehlerfrei, aber der STM32 ist bis jetzt nicht mehr hängen geblieben :-). Ich hoffe, das war wirklich der Fehler. Danke für den Tipp, da wär ich nicht drauf gekommen.
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.
