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
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.
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.
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.
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.
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.
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? ;-)
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?
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.
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.
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.
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.
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
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.
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
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!
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
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
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
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
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.
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
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.
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
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
> 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
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
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.
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
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.
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.
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.



