Zeitweise I2C Fehler

OP (Firma: Tintometer GmbH) #6573177
Lesenswert?

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
Angehängte Dateien:
Gast #6573192
Lesenswert?

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.
Gast #6573265
Lesenswert?

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.
Gast #6573413
Lesenswert?

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"?
#6573508
Lesenswert?

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
(Firma: matzetronics) #6573510
Lesenswert?

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.
Gast #6573517
Lesenswert?

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
Gast #6573528
Lesenswert?

(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!
Gast #6573635
Lesenswert?

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.
Gast #6573765
Lesenswert?

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)
Gast #6573766
Lesenswert?

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.
Gast #6573802
Lesenswert?

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.
Gast #6573932
Lesenswert?

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
Gast #6573947
Lesenswert?

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.
#6573999
Lesenswert?

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.

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