Forum: Analoge Elektronik und Schaltungstechnik I2C Störung Flachband


von Emi 2. (emi21)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

habe hier aktuell eine Tastatur (Folie) die über I2C abgefragt werden 
soll.
Der Bus läuft auf 3.3V und aktuell mit 100kHz. Sobald die Folie über ein 
8cm Flachbandkabel angeschlossen wird, fängt der Bus an mit spinnen.
Habe mal den I2C Teil vom Schaltplan rauskopiert, den ich bekommen habe.
An SDA uns SCL hängt dann direkt das IC. Parallel am Bus hängt dann 
jeweils ein 5pF Kondensator gegen Masse. Weiterhin hängt noch ein 33 Ohm 
Widerstand parallel an SCL und SDA, der dann auf die ESD Schutzdiode 
geht.
Ist das in dem Fall nicht die falsche Beschaltung über den I2C Bus?
Für was ist da parallel jeweils ein 5pF Kondensator? Der addiert sich ja 
noch zusätzlich zu der Leitungskapazität vom Flachbandkabel, der ESD 
Schutzdiode und dem TCA IC.
Sollte die ESD Schutzdiode nicht direkt am Bus hängen anstatt über einen 
33 Ohm Widerstand?
Kenne das normal so, dass der 33Ohm Widerstand in Reihe hängt bei SDA 
und SCL, also zwischen Flachband und TCA IC und nicht parallel über eine 
Schutzdiode nach Masse oder?

Danke und Gruß Emi
von Nemopuk (nemopuk)


Lesenswert?

Ändere die 4,7k Pull-up Widerstände auf 2,2k Ohm.
von Wastl (hartundweichware)


Lesenswert?

Wer Mikrokontroller-Schaltungen ohne Abblock-Kondensatoren aufbaut,
nachmacht oder verfälscht, insbesondere bei existierenden
Schaltungen die Abblock-Kondensatoren weglässt oder falsch
verschaltet oder selbst solche Schaltungen entwirft, in Verkehr
bringt und/oder aufbaut ohne Abblock-Kondensatoren nach Hersteller-
Empfehlungen zu verwenden, wird mit Zugangs-Ausschluss vom
Mikrokontroller-Forum nicht unter zwei Jahren bestraft.
von Emi 2. (emi21)


Angehängte Dateien:

Lesenswert?

Wie gesagt das ich ja nur ein Ausschnitt von dem Plan. Am IC ist schon 
ein 100nF Kondensator dran.
Das hat denke ich aber mit der eigentlichen Frage nichts zu tun.
von Wastl (hartundweichware)


Lesenswert?

Emi 2. schrieb:
> Sobald die Folie über ein
> 8cm Flachbandkabel angeschlossen wird, fängt der Bus an mit spinnen.

Unter "spinnen" kann sich vielleicht eine Spinne was vorstellen,
ansonsten kein Schwein.

Emi 2. schrieb:
> Das hat denke ich aber mit der eigentlichen Frage nichts zu tun.

Zeige den ganzen Schaltplan, wir werden ihn schon nicht raubkopieren.
Der Fehler liegt im Bereich den du nicht zeigst. Kann auch am Aufbau
liegen.
von Gerald B. (gerald_b)


Lesenswert?

8 cm, oder hast du ne Null vergessen? :-)
Ich habe schon I2C über 2 m CAT5 Kabel geschickt und das funktionierte 
stabil. War aber nur ein Teilnehmer. Bei 3,3V kannst du sogar auf 1,5K 
runtergehen. Da fließt laut Herrn Ohm weniger Strom. Wie ist das 
Flachbandkabel belegt? Um Übersprechen zu verhindern, würde ich Masse 
zwischen die Datenleitungen legen. Aber bei 8 cm sollte das eigentlich 
egal sein.
von Emi 2. (emi21)


Lesenswert?

Ja es sind ca. 8cm. An die Schaltung der Folie komme ich nicht dran, da 
alles vergossen ist. SCL und SDA liegen direkt nebeneinander auf dem 
Flachband.
von Gerald B. (gerald_b)


Lesenswert?

Erzähle mal was zum Aufbau, oder mache Fotos.
Irgendwas, was Störungen in nächster Nachbarschaft raushaut? Ein FU, ein 
Schaltnetzteil, oder was in der Preislage? Ich hab mal auf 1 Meter Länge 
das Versorgungskabel einer 100W Power-LED neben einem Datenkabel für 
einen DS18B20 durch ein gemeinsames Rohr (Stehlampe geführt). Wenn ich 
die LED per PWM dimmte, strich der Sensor die Segel. Die Störungen waren 
so derb, das der Sensor verreckte.
Also irgendwas, was du uns verschweigst? ;-)
von Falk B. (falk)


Lesenswert?

Emi 2. schrieb:

> Der Bus läuft auf 3.3V und aktuell mit 100kHz. Sobald die Folie über ein
> 8cm Flachbandkabel angeschlossen wird, fängt der Bus an mit spinnen.

Was heißt das GENAU?

> Habe mal den I2C Teil vom Schaltplan rauskopiert, den ich bekommen habe.
> An SDA uns SCL hängt dann direkt das IC. Parallel am Bus hängt dann
> jeweils ein 5pF Kondensator gegen Masse. Weiterhin hängt noch ein 33 Ohm
> Widerstand parallel an SCL und SDA, der dann auf die ESD Schutzdiode
> geht.

Komische Schaltung.

> Ist das in dem Fall nicht die falsche Beschaltung über den I2C Bus?
> Für was ist da parallel jeweils ein 5pF Kondensator? Der addiert sich ja
> noch zusätzlich zu der Leitungskapazität vom Flachbandkabel, der ESD
> Schutzdiode und dem TCA IC.
> Sollte die ESD Schutzdiode nicht direkt am Bus hängen anstatt über einen
> 33 Ohm Widerstand?

Eben.

> Kenne das normal so, dass der 33Ohm Widerstand in Reihe hängt bei SDA
> und SCL,

Den braucht im meisten eigentlich nicht.

>also zwischen Flachband und TCA IC und nicht parallel über eine
> Schutzdiode nach Masse oder?

Nach Masse sowieso nicht.

Dein Problem könnte ein Masseproblem sein. Ist die angeschlossen?

Emi 2. schrieb:
> Ja es sind ca. 8cm. An die Schaltung der Folie komme ich nicht dran, da
> alles vergossen ist. SCL und SDA liegen direkt nebeneinander auf dem
> Flachband.

Und die restlichen Adern?
von Emi 2. (emi21)


Lesenswert?

Es gibt eine Controllerplatine mit einem ESP32. Auf der Platine ist noch 
ein ADC und ein IO Expander der auch am gleichen Bus hängt. Auf der 
Platine ist dann ein FPC Connector, an dem das Flachband eingesteckt 
ist. Pullup Widerstände sind hier jeweils zwei 4k7 auf der Platine. In 
der Folie sind dann auch nochmal 4k7 verbaut. Also bei gesteckter Folie 
sind es dann ca. 1k5. Die Widerstände sind am jeweiligen IC, also am 
ADC, IO Expander und am IC der Folie.
Belegung vom Flachband 1mm Pitch ist: 
3V3|SCL|SDA|GND|INT(TCA8418)|RES(TCA8418)|GND|

Versorgt wird das Ganze über USB. Geräte, die stören könnten habe hier 
auch nichts in der Nähe auf meinem Schreibtisch
Wenn ich auf dem ESP einen I2C Scanner laufen lasse, werden die 
Teilnehmer auf der Platine einwandfrei erkannt. Sobald ich die Folie 
einstecke, wird der ADC und der IO Expander nur noch sporadisch erkannt 
und ich bekomme Adressen, die gar nicht existieren.
Habe jetzt mal noch zum Testen so ein Teil provisorisch direkt nach dem 
Stecker eingebaut.
https://botland.de/ausgangsexpander/20178-hot-swap-i2c-puffer-modul-mit-i2c-buspuffer-tca4307-adafruit-5159-5903351247344.html

Dann funktioniert alles und alle drei Teilnehmer, also Folie, ADC und 
Expander werden erkannt und funktionieren auch stabil.
von Gerald B. (gerald_b)


Lesenswert?

Emi 2. schrieb:
> bei gesteckter Folie
> sind es dann ca. 1k5. Die Widerstände sind am jeweiligen IC, also am
> ADC, IO Expander und am IC der Folie.

Eventuell zuviel des Guten, so das der Bus zu sehr runtergezogen wird. 
Der IO-Expander kann vielleicht mehr Leistung treiben und richtet es 
dann wieder. Löte mal eines der Paare runter.
von Wastl (hartundweichware)


Lesenswert?

Emi 2. schrieb:
> Es gibt eine Controllerplatine

Schaltpläne in Prosa sind einfach scheisse.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Emi 2. schrieb:
> fängt der Bus an mit spinnen.
Ich würde da jetzt einfach mal den Tastkopf eines Oszis dranhalten. Dann 
hat die Raterei blitzschnell ein Ende. Es ist mir unerklärlich, wie man 
einen seriellen Bus ohne Oszi in Betrieb nehmen kann.
von Wastl (hartundweichware)


Lesenswert?

Lothar M. schrieb:
> Ich würde da jetzt einfach mal den Tastkopf eines Oszis dranhalten. Dann
> hat die Raterei blitzschnell ein Ende.

Neeee, dann geht die Raterei erst richtig los. Oft können die Leute
nicht mit dem Oszilloskop umgehen oder nicht beurteilen was sie da
sehen.

Und für die meisten der hier beteiligten scheint alles klar zu
sein wenn der Bus "spinnt", was immer das auch bedeuten mag.

Emi 2. schrieb:
> fängt der Bus an mit spinnen.
von Vanye R. (vanye_rijan)


Lesenswert?

Als I2C erfunden wurde hiess es noch IIC fuer InterIC-Bus. Es ist also 
nicht fuer solche Anwendungen mit langen Kabeln irgendwo in der Gegend 
rum gedacht.
Die 5pF sollen vermutlich den naechsten Mittelwellensender oder andere 
Stoerungen kurzschliessen weil jemand bereits gemerkt hat das es eine 
schlechte Idee ist diesen Bus fuer diese Anwendung zu verwenden.

Abhilfe koennte in der Tat die Verkleinerung der Pullups auf die 
kleinsten Werte bringen welche das Datenblatt der ICs erlaubt. Es gibt 
aber mittlerweile wohl auch extra Treiber fuer I2C auf laengeren 
Leitungen.

Das ESD Diodenarray laesst vermuten das man kommerziellen Einsatz plant, 
also ist weiterer Aerger zu erwarten wenn sich der Bus mal weghaengt, 
was er tun wird wenn da mal ein extra Clock einstreut. .-)

I2C Stuck Bus: Prevention and Workarounds
https://www.ti.com/lit/an/scpa069/scpa069.pdf

Vanye
von Harald K. (kirnbichler)


Lesenswert?

Vanye R. schrieb:
> Es ist also nicht fuer solche Anwendungen mit langen Kabeln
> irgendwo in der Gegend rum gedacht.

Es geht hier um gerade mal acht Zentimeter.

Da ist auch das Fernseherchassis, das damals Philips/Valvo mit diesem 
Bus beglückte, größer.
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Scope an SCL und SDA dranhalten und signal integrity bewerten.
Beachten, das der Chip nur 100kHz I2C kann (manche stellen da gern 
400kHz beim Master ein).

PullUp 10K scheint mir auch etwas hoch, könnte aber bei 100 kHz auch 
passen,
hoffentlich ist der µC (I2C-master) zu den 3V3 kompatible.
: Bearbeitet durch User
von Christoph Z. (rayelec)


Lesenswert?

Wir haben i2C als erstaunlich robust erlebt, wenn auch nicht problemlos. 
Bei Störungen hatten wir mit verschiedenen Pull-Up Werten und 
kapazitiver Belastung experimentiert. Beides kann in weiten Grenzen 
variiert werden, ohne das die Kommunikation versagt. Selbst 10nF oder 
mehr haben den 100kHz-Bus nicht abgewürgt (Master war ein IMX.6 SBC).
Wenn 8cm Leitung ein Problem darstellen, dann ist irgend etwas grob im 
Argen! Datenblätter genau studieren und Oszi benutzen!
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Vanye R. schrieb:
> Als I2C erfunden wurde hiess es noch IIC fuer InterIC-Bus. Es ist also
> nicht fuer solche Anwendungen mit langen Kabeln irgendwo in der Gegend
> rum gedacht.

Es ist zwar ausdrücklich nicht empfohlen, I2C über längere Strippen zu 
führen, aber insbesondere wurde I2C auch in seiner frühen Zeit genau so 
verwendet, z.B. auf der Verbindungsleitung zwischen Grundig Fernsehgerät 
und Video-2000-Rekordern mit einer Länge von ca. 1,5 m bis 2 m.

Quelle:
http://laurent.deschamps.free.fr/v2000/grundig/grunding.htm
von Rainer W. (rawi)


Lesenswert?

Emi 2. schrieb:
> I2C.PNG

Was soll die kunstvolle Verschaltung der 3.3V mit R23, R24 und den 
ESD-Schutzdioden?

> Sobald die Folie über ein 8cm Flachbandkabel angeschlossen wird, fängt
> der Bus an mit spinnen.

Oszi-Bild, LA-Dekodierung?
: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Vanye R. schrieb:
> Als I2C erfunden wurde hiess es noch IIC fuer InterIC-Bus.

Du reimst dir irgendetwas zusammen. Wo dichtest du dir z.B. das "Bus" 
her.

I2C ist einzig ein Zugeständnis an die Schreibfaulheit mancher 
Zeitgenossen.

Der Bus hieß schon immer, d.h. seit 1982, I²C-bus und das ist eine 
Handelsmarke von NXP B.V. (damals noch Philips Semiconductors). Das I²C 
steht für Inter-Integrated Circuit.
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
: Bearbeitet durch User
von Jonas W. (bitschubser101)


Lesenswert?

Emi 2. schrieb:
> Sobald die Folie über ein
> 8cm Flachbandkabel angeschlossen wird, fängt der Bus an mit spinnen.

Kannst Du den Datenverkehr am Bus mal mit einem Oszi anschauen? Dann 
sieht man gut, ob saubere High- und Low-Pegel vorliegen und ob die 
Signalflanken steil genug sind. Ist dies nicht der Fall würde ich im 
ersten Schritt ebenfalls niedrigere Werte für die Pullupwiderstände oder 
eine niedrigere Taktrate testen. Die Leitungslänge sollte meiner 
Erfahrung nach kein Problem darstellen, vielleicht liegt ja ein anderer 
Fehler vor, der an sich unabhängig vom I2C Bus ist?
: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Jonas W. schrieb:
> Kannst Du den Datenverkehr am Bus mal mit einem Oszi anschauen?

Du bist praktisch fast beinahe der erste, der das vorschlägt.
von Ferdinand H. (Firma: Rentier) (bastler1958)


Lesenswert?

Hallo,
I2C ist stärker, als definiert. Wir haben bei Bedienteilen von Philips 
Funkgeräten, die über I2C angeschlossen waren, über mehr als 50m 
Telefonleitung einwandfreie Daten übertragen können. Ein Oszi könnte 
evtl. helfen. VG
von Manfred P. (pruckelfred)


Lesenswert?

Andreas S. schrieb:
> Es ist zwar ausdrücklich nicht empfohlen, I2C über längere Strippen zu
> führen, aber insbesondere wurde I2C auch in seiner frühen Zeit genau so
> verwendet, z.B. auf der Verbindungsleitung zwischen Grundig Fernsehgerät
> und Video-2000-Rekordern mit einer Länge von ca. 1,5 m bis 2 m.

Ja und? I2C definiert Datenverkehr auf einem Bus mit zwei 
Signalleitungen, nicht mehr. Wenn die Treiber viel Strom können und die 
Geschwindigkeit moderat ist, dürften beliebig viele Meter möglich sein.

Ferdinand H. schrieb:
> I2C ist stärker, als definiert. Wir haben bei Bedienteilen von Philips
> Funkgeräten, die über I2C angeschlossen waren, über mehr als 50m
> Telefonleitung einwandfreie Daten übertragen können.

Zeige die zugehörigen Treiberstufen, die lange Leitung wird wohl kaum 
direkt an einem ATMega hängen.
von Emi 2. (emi21)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

sorry für die späte Rückmeldung und danke für die vielen Antworten. 
Anbei zwei Bilder von den Signalen. Pullups sind aktuell insgesamt 2350 
Ohm.
Es scheint wirklich in erster Linie ein Masseproblem gewesen zu sein. 
Das Flachbandkabel war an der Lötstelle gebrochen und hatte somit einen 
"Wackelkontakt". Nachdem alles nachgelötet wurde bekomme ich nun alle 
Adressen korrekt angezeigt und kann auch alle Teilnehmer am Bus 
zuverlässig ansprechen.
Die ganzen Dokumente von TI werde ich mir aber dennoch genauer 
durchlesen. Dann kann ich was Crosstalk und Undershoot noch etwas 
nachbessern und experimentieren.

Gruß
emi
von Nemopuk (nemopuk)


Lesenswert?

Emi 2. schrieb:
> Anbei zwei Bilder von den Signalen

Sieht unauffällig normal aus

> Dann kann ich was Crosstalk und Undershoot noch etwas
> nachbessern und experimentieren.

Im Bild 20260501_213615.jpg ist der Effekt erkennbar. Immer wenn SCL auf 
Low geht, zuckt SDA ein bisschen mit nach unten. In der aktuellen Größe 
halte ich das für völlig in Ordnung.
: Bearbeitet durch User
von Vanye R. (vanye_rijan)


Lesenswert?

> Signalleitungen, nicht mehr. Wenn die Treiber viel Strom können und die
> Geschwindigkeit moderat ist, dürften beliebig viele Meter möglich sein.

Klar, wenn jeder Treiber unendlich viel Strom kann, dann kann die 
Leitung unendlich lang sein. :-D

In der Praxis haengt die Zuverlaessigkeit von verschiedenen Dingen ab:

1. Consumerzeug das nur ab und mal eingeschaltet wird, oder
   Industriekram der 10Jahre 24/7 laufen soll?

2. Generell die Art der verwendeten Slaves. Kann keiner von denen SCK 
auf
   Low ziehen ist das sicher hilfreich. Wenn sie sich nach einer 
gewissen
   selber reseten (SMB) noch mehr.

3. Hat der Programmierer daran gedacht eine auf Masse liegende 
Datenleitung
   zu erkennen und clockt die dann frei?

Es kann also Zuverlaessig sein, ist aber sehr oft nicht.

Vanye
von Rainer W. (rawi)


Lesenswert?

Emi 2. schrieb:
> Belegung vom Flachband 1mm Pitch ist:
> 3V3|SCL|SDA|GND|INT(TCA8418)|RES(TCA8418)|GND|

Damit schaffst du beste Bedingungen für direktes Überkoppeln zwischen 
SDA und SCL. Aber so wie deine Signale aussehen, wird das wohl von den 
Kapazitäten der Leitungen gut geschluckt.

Vanye R. schrieb:
> In der Praxis haengt die Zuverlaessigkeit von verschiedenen Dingen ab:
>
> 1. Consumerzeug das nur ab und mal eingeschaltet wird, oder
>    Industriekram der 10Jahre 24/7 laufen soll?

Solange die Signale sauber sind, ist es egal, ob das Zeugs ab und zu 
läuft oder 10 Jahre 24/7.
: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Rainer W. schrieb:
> Solange die Signale sauber sind, ist es egal, ob das Zeugs ab und zu
> läuft oder 10 Jahre 24/7.

Dem Consumer sagt man aber gerne "Haben sie das Gerät mal neu 
gestartet?"

Woanders wäre diese Frage eine Frechheit. Denn niemand kauft eine 
Anlage, um sie sporadisch neu starten zu müssen.
von Rainer W. (rawi)


Lesenswert?

Manfred P. schrieb:
> Wenn die Treiber viel Strom können und die
> Geschwindigkeit moderat ist, dürften beliebig viele Meter möglich sein.

Unsinn. Durch die Signallaufzeit zwischen Master und Slave kommen Daten 
vom Slave unweigerlich mit einer Verzögerung beim Master an (bezogen auf 
SCL). Mit "beliebig viele Meter" wird das also nichts, selbst wenn gar 
keine Signalverschleifungen auf Grund von Leitungskapazität und 
begrenztem Treiberstrom auftreten.
: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Nemopuk schrieb:
> Woanders wäre diese Frage eine Frechheit. Denn niemand kauft eine
> Anlage, um sie sporadisch neu starten zu müssen.

Noch, aber sie sind eifrig dabei, die 
"unser-täglich-Update-gib'-uns-heute"-Religion zu verbreiten, und die 
sieht Uptime als Erzfeind an.

Daß etwas wochen-, monate- oder sogar jahrelang einfach so läuft, das 
ist in den CI/CD-geschädigten Update!-Köpfen nicht vorstellbar; und wenn 
man denen erzählt, daß es in der Industrie Geräte gibt, die mit mehrere 
Jahrzehnte alter Firmware betrieben werden, dann bekommen die mindestens 
Pickel, wenn nicht sogar Herzklabaster.
von Nemopuk (nemopuk)


Lesenswert?

Harald K. schrieb:
> daß es in der Industrie Geräte gibt, die mit mehrere
> Jahrzehnte alter Firmware betrieben werden

Man muss ja nicht alles ins Internet hängen. Oder besser gesagt: Man 
soll das nicht tun.
von Jens K. (jensky)


Lesenswert?

Wastl schrieb:
> Unter "spinnen" kann sich vielleicht eine Spinne was vorstellen,
> ansonsten kein Schwein.

Dann würde man "Spinnen" mit großem S schreiben!

Aber ich sehe schon, du bist cool und wir würden gern mit dir abhängen!
von Rainer W. (rawi)


Lesenswert?

Nemopuk schrieb:
> Man muss ja nicht alles ins Internet hängen. Oder besser gesagt: Man
> soll das nicht tun.

... und das sagt jemand in Zeiten, wo es von manchen schon als exotische 
Forderung angesehen wird, dass ein Gerät ohne Cloud-Server noch autonom 
voll funktionieren soll.
von Harald K. (kirnbichler)


Lesenswert?

Nemopuk schrieb:
> Man muss ja nicht alles ins Internet hängen.

Aber woher sollen dann die wichtigen Updates kommen?
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.