I2C Störung Flachband

#8043526
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

Angehängte Dateien:
#8043533
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.

#8043544
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.

#8043546
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.

#8043551
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? ;-)

#8043552
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?

#8043565
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.

#8043638
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.

#8043660
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

(Firma: Starfleet) #8043683
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
#8044179
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!

(Firma: Schweigstill IT) Persönliche Seite #8044204
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

#8044228
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
#8044254
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
#8044293
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.

#8044300
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

Angehängte Dateien:
#8044383
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
#8044405
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

#8044595
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
#8044685
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
#8044698
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.

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