Moin zusammen, ich hätte da an die Experten mal eine Frage. Wir haben eine Pi4 über ein ca. 400mm langes Flachbandkabel an unsere Elektronik angeschlossen. Ab und zu treten auf dem I2C Bus Fehler auf die wir uns bis jetzt noch nicht erklären können. Die Flanken und Pegel sind anscheinend innerhalb der Specs. Ab und zu ist der Low Pegel vom SDA Signal außerhalb der Specs, hat jemand eine Idee welche Ursache das haben könnte. Danke
Allenfalls arbeiten zwei Ausgaenge gegeneinander ? Das laesst sich zeigen durch Einfuegen eines 1k Ohm Widerstandes. Auf der einen Seite ist die Spannung hoeher.
Michael Z. schrieb: > ca. 400mm langes Flachbandkabel .... ist eine schöne Antenne zum Aufgreifen von äusseren Störsignalen. Warum ist das so? Der I2C Bus ist sehr hoch- ohmig, damit sehr empfänglich für äussere Einstreuungen. Stell dir die Leiterplatte eines Fernsehers vor. Für solche Distanzen die auf so einer Platine auftreten ist I2C gedacht. Für nichts anderes! Zudem sind die einwirkenden Einstreuungen kontrolierbar bzw. vorhersehbar. I2C ist nichts fürs Verbinden und Kommunizieren von zwei "Geräten". Es sei denn man macht gehörige Anstrengungen zur Abschirmung.
Michael Z. schrieb: > Ab und zu > ist der Low Pegel vom SDA Signal außerhalb der Specs, hat jemand eine > Idee welche Ursache das haben könnte. Masseproblem? Testweise eine zusätzliche niederohmige Masseleitung zwischen den Baugruppen verlegen. Grüßle Volker
Michael Z. schrieb: > Die Flanken und Pegel sind anscheinend innerhalb der Specs. Die übliche Buskollision: 2 Teilnehmer sind aktiv auf dem Bus. Einer davon gibt (entgegen der I2C-Spec!!) statt 'hochohmig' eine aktive '1' aus. Volker B. schrieb: > Masseproblem? Dann wäre SCL aber auch betroffen...
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Volker B. schrieb: >> Masseproblem? > Dann wäre SCL aber auch betroffen... Gutes Argument :-) Aber nur, wenn Takt und Daten auf der gleichen Leiterplatte erzeugt werden. Das sagt mir meine Glaskugel leider nicht... Grüßle Volker
:
Bearbeitet durch User
AC + INV, willst Du uns veräppeln? Einer der Teilnehmer hat kein HW-I2C und das I2C in SW fehlerhaft implementiert. Damit kommt es zur Kollision.
Lothar M. schrieb: > Michael Z. schrieb: >> Die Flanken und Pegel sind anscheinend innerhalb der Specs. > Die übliche Buskollision: 2 Teilnehmer sind aktiv auf dem Bus. Einer > davon gibt (entgegen der I2C-Spec!!) statt 'hochohmig' eine aktive '1' > aus. sdd
:
Bearbeitet durch User
Falk B. schrieb: > Und 400mm Flachbandkabel sind für I2C kein Problem. In idealer störungsfreier Umgebung ja.
jo mei schrieb: > .... ist eine schöne Antenne zum Aufgreifen von äusseren > Störsignalen. Warum ist das so? Der I2C Bus ist sehr hoch- > ohmig, damit sehr empfänglich für äussere Einstreuungen. Er ist weder 'sehr hochohmig' noch sind 40 cm eine Länge, für die er nicht verwendet werden kann und Einstreuungen zeigt das Oszillogramm auch nicht. Es zeigt lediglich einen SDA-Impuls mit falscher Amplitude und das sind definitiv andere Ursachen! Es wurden welche genannt.
Dir ist aber schon klar, dass der Ausreißer das Acknowledge ist? Also von dem anderen Teilnehmer stammt und damit natürlich einen anderen Pegel hat? Also wie sieht der Schaltplan aus (Rs), wo misst Du? Wo geht das Signal "verloren"?
Peter D. schrieb: > AC + INV, willst Du uns veräppeln? Falls das für manche zu kurz formuliert war: Kanal 2 von Scope steht auf invertiertem AC-Eingang, statt nichtinvertiertem DC-Eingang.
Michael Z. schrieb: > ich hätte da an die Experten mal eine Frage. Wir haben eine Pi4 über ein > ca. 400mm langes Flachbandkabel an unsere Elektronik angeschlossen. Ab > und zu treten auf dem I2C Bus Fehler auf die wir uns bis jetzt noch > nicht erklären können. Welche Taktfrequenz? Welche Pullups? Welche Spannung? Ein PCF8574 ist für Vcc min 2,5 V bis 6,0 V spezifiziert. Wenn ich das Oszi - Bild richtig interpretiere hat Kanal 1 eine Spannung von 2,42 V und rauscht beträchtlich, so daß die Spannung gelegentlich noch tiefer liegen könnte. Aber vielleicht liegt das verrauschte Signal ja auch nur an einem ungeeigneten GND Messpunkt. Sind die I2C - Bausteine denn abgeblockt worden? Sind die Pullups zu hochohmig? Zumindest sind die Flanken steil. Es gibt noch eine Option die versteckt in den I2C Spezifikationen vorkommt. SDA und CLK sollten am Eingang eines Client ICs über 330 Ohm angeschlossen werden. Das erhöht die Robustheit eines I2C Busses. mfg Klaus
A. S. schrieb: > Dir ist aber schon klar, dass der Ausreißer das Acknowledge ist? Wenn ich mich da nicht verzählt habe, ist der aber ein Bit zu früh. Bit 9 sollte ACK des Slaves sein und nicht Bit 8. Generell finde ich das Timing dieses I²C Signals grenzwertig, denn die Flankenwechsel von SDA und SCL finden so gut wie gleichzeitig statt, was uncool ist und nicht von jedem Slave verstanden werden muss.
Matthias S. schrieb: > Wenn ich mich da nicht verzählt habe, ist der aber ein Bit zu früh. Bit > 9 sollte ACK des Slaves sein und nicht Bit 8. Generell finde ich das > Timing dieses I²C Signals grenzwertig, denn die Flankenwechsel von SDA > und SCL finden so gut wie gleichzeitig statt, denke dir das SCL Signal invertiert - damit kompensierst du die seltsame Einstellung des Oszis
(prx) A. K. schrieb: > Falls das für manche zu kurz formuliert war: Kanal 2 von Scope steht auf > invertiertem AC-Eingang, statt nichtinvertiertem DC-Eingang. Aber trotzdem wird leidenschaftlich weiter über eine Messung diskutiert, die auch einfach das Produkt einer falschen Einstellung sein kann. Spannend!
Nur mal so schrieb: > Aber trotzdem wird leidenschaftlich weiter über eine Messung diskutiert, > die auch einfach das Produkt einer falschen Einstellung sein kann. > Spannend! Die falsche Einstellung ist verwirrend und doof. Der unterschiedliche Signalpegel beim Ackn ist aber signifikant, keine Einstreuung/Störung und ganz sicher mit einem Schaltplan / Signallaufpfad erklärlich. Ob der höhere Signalpegel selbst problematisch ist, kann hier niemand sagen, dafür müsste der TO etwas zur Messung sagen. Ob die Signale OK sind, kann ich auf dem Oszi auch nicht sehen, will ich auch gar nicht, solange der TO uns so veräppelt.
Sorry bin jetzt erst dazu gekommen ein neues Bild von dem I2C Signal zu machen. Heute morgen hatte ich noch nicht die Brille auf um die Falschen Einstellung zu sehen. PullUp Widerstände 1k1 an beiden Signalen Taktfrequenz 80kHz Spannung siehe Bild
EIgentlich sollte es da nur eindeutig HIGH und LOW geben. Ich sehe in gelb jedoch zeitweise auch "fast LOW". Vermutlich zieht jemand die Leitung zu stark hoch. Hast du diese billigen 1-Transistor Pegelwandler verwendet? Dann vielleicht mal anders herum drehen (Master/Slave Seiten tauschen)
Der I²C geht nie unter 360mV. Findest Du das nicht merkwürdig? Sieht mir nach viel zu niederohmigen pull-ups aus und amokenden Slaves die Mist sehen und noch weniger in der Lage sind den Bus auf Low zu ziehen als der Master.
Warum solte bei falschen PullUp Widerständen das Signal fast auf Masse liegen und nur hin und wieder der Pegel höher sein?
Peter D. schrieb: > Der Low-pegel sieht mir viel zu hoch aus. Klingt für mich danach, dass der weiter oben erwähnte Rat (Slaves mit ein paar 100 Ohm an den Bus hängen) befolgt wurde. Dann bilden bei Low-Pegel der Pullup-Widerstand und der Widerstand zwischen Bus und Slave einen Spannungsteiler, was in Kombination mit den hier sehr niederohmigen Pullups den Low-Pegel recht weit anhebt.
Michael Z. schrieb: > Warum solte bei falschen PullUp Widerständen das Signal fast auf Masse > liegen und nur hin und wieder der Pegel höher sein? Matthias S. schrieb: > A. S. schrieb: >> Dir ist aber schon klar, dass der Ausreißer das Acknowledge ist? Achim S. schrieb: > Matthias S. schrieb: >> Wenn ich mich da nicht verzählt habe, ist der aber ein Bit zu früh. Bit >> 9 sollte ACK des Slaves sein und nicht Bit 8. Generell finde ich das >> Timing dieses I²C Signals grenzwertig, denn die Flankenwechsel von SDA >> und SCL finden so gut wie gleichzeitig statt, > > denke dir das SCL Signal invertiert - damit kompensierst du die seltsame > Einstellung des Oszis
jo mei schrieb: > .... ist eine schöne Antenne zum Aufgreifen von äusseren > Störsignalen. Warum ist das so? Der I2C Bus ist sehr hoch- > ohmig, damit sehr empfänglich für äussere Einstreuungen. Du bist im falschen Film. Solche falschen Pegel entstehen nicht durch Störungen, die über eine Antenne rein kommen.
Michael Z. schrieb: > Warum solte bei falschen PullUp Widerständen das Signal fast auf Masse > liegen und nur hin und wieder der Pegel höher sein? Weil grenzwertige Pegel Fehlfunktionen in den Busteilnehmern auslösen können.
Michael Z. schrieb: > Sorry bin jetzt erst dazu gekommen ein neues Bild von dem I2C Signal zu > machen. > Heute morgen hatte ich noch nicht die Brille auf um die Falschen > Einstellung zu sehen. > > PullUp Widerstände 1k1 an beiden Signalen > Taktfrequenz 80kHz Klingt OK, auch wenn 1K1 relativ niederohmig ist. Wie sieht dein I2C Bus aus? Hast du zufällig einen Busextender drin? Damit hatte ich gerade zu tun. Der macht ABSICHTLICH einen höheren LOW-Pegel von ca. 0,9V. Danach sieht es bei dir aus. Kleiner Tipp. Dreh den Offset der Kanäle besser auf eine horizontale Linie, das kann man besser ablesen.
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.