Forum: Mikrocontroller und Digitale Elektronik STM32 SensorTile Probleme mir I2C Verbindung


von Robert (Gast)


Angehängte Dateien:

Lesenswert?

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

von Teenfreak AKA Ardufreak (Gast)


Lesenswert?

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.

von Max D. (max_d)


Lesenswert?

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

von Jim M. (turboj)


Lesenswert?

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
Noch kein Account? Hier anmelden.