Hallo zusammen Ich nutze derzeit ein SensorTile Cradle (µC: STM32L476JG) um über I2C einen PS09 von ams auszulesen. Dazwischen ist ein Pegelwandler PCA9306 geschaltet, da das SensorTile auf 1,8 V läuft und der PS09 auf 3,3 V. Mein Problem ist, dass Anfangs die I2C-Kommunikation wie erwartet funktioniert. Aber nach einiger Zeit bricht die Kommunikation vollständig zusammen und es werden keine Daten oder Adressen oder überhaupt etwas gesendet. Die Zeit bis zu dem Zusammenbruch ist auch nicht konstant und reicht von wenigen Minuten bis zu einer halben Stunde. Das Programm für das SensorTile ist mit CubeMX erstellt worden und anschließend mit Atollic TrueStudio bearbeitet. Für die Kommunikation hab ich HAL Befehle (HAL_I2C_Master_Transmit und HAL_I2C_Master_Receive)verwendet. Beim Debuggen komme ich in eine Timeout Funktion. Beim manuellen Steppen komme ich aus dieser nicht mehr heraus. Wenn ich allerdings einen Breakpoint auf die HAL-Befehle in der main setze, werden diese immer wieder durchlaufen nur dass keine Kommunikation stattfindet. Ich hoffe jemand hat eine Idee woran es liegen kann das einfach aus dem Nichts meine Kommunikation zusammenbricht. mfg Robert
Ein Oszilloskop kann bei einer schwierigen Fehlersuche weiterhelfen. Zeigt er an, dass die Kommunikation vollständig weg ist? Mit Single-Shot-Methode kann man glaub ich umgekehrt einstellen, dass er dann was anzeigt sobald keine Daten mehr durchlaufen.
Bei den f1ern gab es einen Bug im i2c wo sich die analogen Filter auf den Leitungen aufgehangen haben und das i2c blockiert. Ich würde an deiner Stelle mal in die Errata zu deinem stm gucken ob der vlt das gleiche Problem hat
Warum wertest Du nich einfach mal die "error" Variable aus? Wenn die HAL einen Fehler spuckt, kann man simpel einen Portpin setzen und den als Oszi Trigger benutzen. Es gäbe noch zahlreiche weitere Mögichkeiten den Code zwechs Debugging zu instrumentieren - strenge mal Dein Hirn etwas an.
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.