Esp32 fehlerhafte I2C Kommunikation in esphome

OP #7440495
Lesenswert?

Hallo,

evtl. würde mir bitte jemand weiterhelfen. Mit einem Olimex ESP32 Poe bekomme ich keine saubere i2C Kommunikation zustande. Die I2C Standardpins Gpio13,16 haben mit 2,2k das Pullup gegen 3,3v. bereits auf dem Board. Betreiben würde ich gerne u.a. mehere PCF8574, was mir nicht gelingt. Die Software stellt esphome zur Verfügung - Standardkonfiguration. Aufgebaut wurde alles sauber auf einem Steckbrett mit Kabelbrücken (keine Dupont!). Natürlich unterschiedliche Addresierung. 2 PCF8475 funktionieren wunderbar... aber dann. MCP23017 habe ich schon gar nicht zum laufen bekommen. Warum auch immer... Softwareseitig ist die Datenrate auf 50khz eingestellt. Jetzt habe ich mal was gelesen das bei dieser Frequenz der Pullup 10k betragen sollte... Was kann ich noch tun? Messgeräte die Profis nutzen, habe leider nicht zur Verfügung. Aber schon mal vielen Dank!

#7440520
Lesenswert?

Joachim M. schrieb:

Jetzt habe ich mal was gelesen das bei dieser Frequenz der Pullup 10k betragen sollte.

Stand da auch eine stichhaltige Begründung? 2.2kΩ als Pull-Up muss funktionieren.

Was kann ich noch tun?

Ein Oszilloskop würde dir sofort verraten, wie die Signale auf dem Bus aussehen. Ein Logikanalysator würde dir bei logischen Problemen mit den Daten helfen.

Messgeräte die Profis nutzen, habe leider nicht zur Verfügung.

Brauchst du auch nicht. Ein kleiner, für solche Messungen ausreichender Logikanalysator kostet 8€, ein mini Oszi (das je nach Messbedarf allerdings auch schnell an seine Grenzen stoßen kann) unter 50€.

Joachim M. schrieb:

MCP23017 habe ich schon gar nicht zum laufen bekommen.

Dann wäre es jetzt Zeit für einen I2C-Scanner und den Schaltplan.

#7441668
Lesenswert?

Rainer W. schrieb:

Dann wäre es jetzt Zeit für einen I2C-Scanner

Apropos: Wie funktioniert so ein I2C-Scanner auf dem Pi?

Ein selbstgebauter mit PicoMite auf dem Pico funktioniert nur teilweise: Lese ich von jeder I2C-Adresse, melden sich einige I2C-Module. Schreibe ich (0) auf jede I2C-Adresse, und lese dann, melden sich einige weitere Module, aber einige immer noch nicht.

Was muß ich anstellen, damit sich jedes I2C-Modul auf seiner Adresse meldet?

(Firma: matzetronics) #7441694
Lesenswert?

Werden Abblockkondensatoren jetzt als Verschwörung der Kondensatorindustrie abgetan oder wieso passiert es immer wieder, das die Leute sie nicht einbauen? Kinners, CMOS braucht diese Kondensatoren nicht nur gegen EMI, sondern auch als Reservoir. Und bitte an jeden Baustein, also an den MCP genauso wie an den Mikrocontroller.

Peter N. schrieb:

Was muß ich anstellen, damit sich jedes I2C-Modul auf seiner Adresse meldet?

Nur das ACK Bit nach der Startbedingung und Adressenanfrage abfragen. Stopbedingung senden und dann mit der nächsten Adresse weitermachen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren