Forum: Mikrocontroller und Digitale Elektronik I²C störungsfrei routen


von pkgo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich sitze gerade an einem Layout und finde keine gute möglichkeit den 
I²C Bus zu routen. Problematisch dabei ist, dass sich durch die 
Anbindung an den Bus sehr oft die Lage wechseln muss. Im näheren Umfeld 
des I²C befinden sich Leitungen von einem LED Treiber der mit 300-600 
kHz schaltet und einen Ripple von ca. 27 mA (Spitze-Spitze) aufweist. 
Insgesamt 14 (gleiche) Teilnehmer müssen an den Bus angebunden werden. 
Habt ihr Tipps den Bus so zu routen, dass möglichst wenig Störungen 
eingefangen werden? Das Bild soll meine Problematik verdeutlichen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

pkgo schrieb:
> Das Bild soll meine Problematik verdeutlichen
In diesem Bild ist kein Problem zu sehen. Abgesehen vom fehlenden 
Blockkondensator, den ich so dicht wie möglich zwischen Vcc und GND 
legen würde. Und abgesehen davon, dass noch ein Vcc Pin unbeschaltet 
ist...

von Marc B. (Gast)


Lesenswert?

pkgo schrieb:
> Im näheren Umfeld des I²C befinden sich Leitungen von einem LED Treiber der > 
mit 300-600kHz schaltet und einen Ripple von ca. 27 mA (Spitze-Spitze) >aufweist.

Wie schnell ist denn Dein Bus?

Wenn Du relativ langsam, also so bei 2kHz, unterwegs bist solltest Du 
hier eigentlich keine Probleme bekommen.

von pkgo (Gast)


Lesenswert?

Lothar M. schrieb:
> pkgo schrieb:
>> Das Bild soll meine Problematik verdeutlichen
> In diesem Bild ist kein Problem zu sehen. Abgesehen vom fehlenden
> Blockkondensator, den ich so dicht wie möglich zwischen Vcc und GND
> legen würde. Und abgesehen davon, dass noch ein Vcc Pin unbeschaltet
> ist...

Der  Kondensator wird noch hinzugefügt. Die Leitung Net D79 ist die 
geschaltete Leitung vom LED-Treiber. Der Bus hat eine Ausdehnung von ca 
18cm. Es sind also keine Beeinträchtigungen des I²C zu erwarten?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Marc B. schrieb:
> Wenn Du relativ langsam, also so bei 2kHz, unterwegs bist solltest Du
> hier eigentlich keine Probleme bekommen.
Störungen scheren sich nicht um Taktfrequenzen von Signalen. Was 
sollte also eine niedrige Taktfrequenz hier bringen?

pkgo schrieb:
> Es sind also keine Beeinträchtigungen des I²C zu erwarten?
Solange die Leitung einfach nur kreuzt und nicht ewig lang parallel 
neben her fährt gibt es da keine Probleme...

: Bearbeitet durch Moderator
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

pkgo schrieb:
> Habt ihr Tipps den Bus so zu routen, dass möglichst wenig Störungen
> eingefangen werden? Das Bild soll meine Problematik verdeutlichen

 Ich sehe auch keine grossen Probleme.
 Vielleicht die Via für SDA unterhalb, GND zwischen SDA und SCK
 routen. Es ist viel wichtiger dass die beiden sich nicht
 gegenseitig beeinflussen, als was die Leitung D79 macht.

von pkgo (Gast)


Lesenswert?

Lothar M. schrieb:
> Marc B. schrieb:
>> Wenn Du relativ langsam, also so bei 2kHz, unterwegs bist solltest Du
>> hier eigentlich keine Probleme bekommen.
> Störungen scheren sich nicht um Taktfrequenzen von Signalen. Was
> sollte also eine niedrige Taktfrequenz hier bringen?

Der I²C wird mit 400 kbit/s betrieben, möglich wären aber auch 100 
kbit/s.


> pkgo schrieb:
>> Es sind also keine Beeinträchtigungen des I²C zu erwarten?
> Solange die Leitung einfach nur kreuzt und nicht ewig lang parallel
> neben her fährt gibt es da keine Probleme...

Der Bus wird so wie im Bild von links nach rechts über die Platine 
verlaufen. Die Anordnung wie sie auf dem Bild zu sehen ist wird es 7x 
oberhalb und 7x unterhalb des I²C geben. Die geschaltet Leitung würde 
also parralel dazu verlaufen

von Fred R. (fredylich)


Lesenswert?

Hallo,

der I²C Bus ist doch an sich schon sicher gegen Störungen wenn die 
Leidungen nicht zu lang sind.
SDA u. SCL mit ca. 4,7 k Widerstände auf VCC machen diese doch relativ 
Niederohmig.
Für sehr lange Leitungen bis 200 Meter, gibt es Leitungstreiber IC’s.

Sind nur meine praktischen Erfahrungen als I²C Bus Fan.

Gruß

von pkgo (Gast)


Lesenswert?

Ist es besser die Leitungen wie VCC rechtwinklig an den Bus zuzuführen 
oder eher in einem spitzen Winkel wie SCL?

von pkgo (Gast)


Angehängte Dateien:

Lesenswert?

So in der Art würde ich die Teilnehmer an den Bus anbinden. 
Verbesserungen? Kritik?

von Fred R. (fredylich)


Lesenswert?

pkgo schrieb:
> Ist es besser die Leitungen wie VCC rechtwinklig an den Bus zuzuführen
> oder eher in einem spitzen Winkel wie SCL?

Wie beschrieben ist völlig Wurst. I²C gibt es z.b. in Fernsehgeräte.
Na da ist doch was los mit „Störquellen“ und oft ist dort das Bedienteil 
sogar verkabelt (Strippen kreuz und quer) Also mit passende 
Abschlusswiderstände und den kurzen Leitungen, wirst du wohl keine 
Probleme bekommen.
Noch was zum Takt. 100kHz ist Standart 400kHz ist schon im 
Grenzbereich(abhängig von Teilnehmer)

Groß

von pkgo (Gast)


Lesenswert?

Fred R. schrieb:
> pkgo schrieb:
>> Ist es besser die Leitungen wie VCC rechtwinklig an den Bus zuzuführen
>> oder eher in einem spitzen Winkel wie SCL?
>
> Wie beschrieben ist völlig Wurst. I²C gibt es z.b. in Fernsehgeräte.
> Na da ist doch was los mit „Störquellen“ und oft ist dort das Bedienteil
> sogar verkabelt (Strippen kreuz und quer) Also mit passende
> Abschlusswiderstände und den kurzen Leitungen, wirst du wohl keine
> Probleme bekommen.
> Noch was zum Takt. 100kHz ist Standart 400kHz ist schon im
> Grenzbereich(abhängig von Teilnehmer)
>
> Groß

Alles klar. Die Teilnehmer schaffen bis zu 400 kbit. Habe ich auch schon 
getestet.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

So ausm Bauch raus wuerd' ich sagen, dass das Layout, also die 
Geometrie, Anzahl der vias im Signalweg beim I2C eher unkritisch ist. 
Aber ich wuerde niemals 14 Teilnehmer an einen Bus haengen. Da haett' 
ich Muffe.
Dann bau' ich persoenlich auch gerne sehr niederohmige 
Serienwiderstaende vor jeden Slave, dann tut man sich leichter 
rauszufinden, wer den I2C Bus nicht mehr loslassen will, falls er mal 
haengt.

Gruss
WK

von pkgo (Gast)


Lesenswert?

Dergute W. schrieb:
> Moin,
>
> So ausm Bauch raus wuerd' ich sagen, dass das Layout, also die
> Geometrie, Anzahl der vias im Signalweg beim I2C eher unkritisch ist.
> Aber ich wuerde niemals 14 Teilnehmer an einen Bus haengen. Da haett'
> ich Muffe.
> Dann bau' ich persoenlich auch gerne sehr niederohmige
> Serienwiderstaende vor jeden Slave, dann tut man sich leichter
> rauszufinden, wer den I2C Bus nicht mehr loslassen will, falls er mal
> haengt.
>
> Gruss
> WK

Was kann bei 14 Teilnehmern an einem Bus problematisch werden?

von Operator S. (smkr)


Lesenswert?

Wenn du Vcc nicht parallel zu SDA und SCL verlegen könntest wäre das 
sicher von Vorteil, aber ich glaube nicht an eine Störung durch den 
LED-Treiber.

Mach die Vias direkt über der Leitung statt noch Stummel dran zu lassen. 
Zudem kann 45° Innenwinkel zu problemen bei der Fertigung führen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

pkgo schrieb:
> Was kann bei 14 Teilnehmern an einem Bus problematisch werden?

So ausm Bauch raus: Die Gesamtkapazitaet, die dann an den Leitungen 
zieht. Ist halt bei mir nur so'n Gefuehl - habs' nicht nachgerechnet.

Gruss
WK

von Peter D. (peda)


Lesenswert?

Spitze Winkel finde ich unschön.
Warum setzt Du die Vias nicht einfach direkt auf die Busse?
Ich bevorzuge Vorzugsrichtungen, d.h. die horizontalen Busse auf das 
braune Layer, dann brauchst Du weniger Vias.
Die I2C-Leitungen sind unkritisch, aber VCC würde ich deutlich dicker 
machen und GND am besten als Plane.

von Peter D. (peda)


Lesenswert?

Dergute W. schrieb:
> Aber ich wuerde niemals 14 Teilnehmer an einen Bus haengen.

Wenn der Master Clock-Stretching unterstützt, ist das völlig unkritisch. 
Dann werden eben die Low-Zeiten durch die Schaltungskapazitäten etwas 
länger, sonst passiert nichts weiter. Der I2C-Bus ist quasi 
selbstsynchronisierend.

von neuer PIC Freund (Gast)


Lesenswert?

Für die Gesetzestreuen

UM10204 - 7.5:

If the length of the bus lines on a PCB or ribbon cable exceeds 10 cm 
and includes the
VDD and VSS lines, the wiring pattern should be:
SDA _____________________
VDD ______________________
VSS ______________________
SCL _____________________

von Fred R. (fredylich)


Lesenswert?

Dergute W. schrieb:
> Moin,
>
> So ausm Bauch raus wuerd' ich sagen, dass das Layout, also die
> Geometrie, Anzahl der vias im Signalweg beim I2C eher unkritisch ist.
> Aber ich wuerde niemals 14 Teilnehmer an einen Bus haengen. Da haett'
> ich Muffe.
> Dann bau' ich persoenlich auch gerne sehr niederohmige
> Serienwiderstaende vor jeden Slave, dann tut man sich leichter
> rauszufinden, wer den I2C Bus nicht mehr loslassen will, falls er mal
> haengt.
>
> Gruss
> WK
Na ob 1 oder 255 Teilnehmer ist doch nur eine Sache für Laufzeit. Mehr 
nicht!!!!!!
Meldet sich ein Teilnehmer nicht, macht er auch nix. Ist ja der Sinn 
eines Bussystem.

Gruß

von pkgo (Gast)


Angehängte Dateien:

Lesenswert?

So würde ich es jetzt routen.

Sowie es im Datenblatt steht unterstützen die Slaves das 
Clock-Stretching.

Die 5V Leitung ist 0,25mm für maximal 500mA.

Also ich habe eine Massefläche zwischen SDA und SCL. Ist es besser die 
VCC in die Mitte der beiden zu platzieren?

von Operator S. (smkr)


Lesenswert?

Besser aber immernoch zu viele Schnörkel.

Zieh z.B. beim oberen Chip die SCL Leitung gerade nach unten, ohne 
Abzweigung. Beim SDA daneben kannst du die Vias in gleicher Vertikaler 
Ausrichtung platzieren, so dass auch diese Leitungen gerade werden. Und 
so dann bei allen anderen auch.

Es wird auch so problemlos funktionieren, aber sobald du komplexere 
Leiterplatten hast, bist du froh wenn du dir das schon vorher 
antrainiert hast.

von Uwe N. (ex-aetzer)


Lesenswert?

Ich habe auch noch etwas Senf zum dazugeben:

Miß doch mal den Abstand der LB, die sich im obigen Bild zwischen 
IC-Padreihe und dem Thermo-Pad durchschlängelt (wenn ich das richtig 
sehe Netz Vcc). Mindestens 150µm sollten es sein - eher mehr.

Das kann kritisch werden, wenn der LP-Fertiger seine Toleranzen beim 
Aufbringen des Lötstops ausreizt. Der Versatz kann immerhin bis zu 100µm 
(oder mehr, je nach Fertiger) betragen.

Wenn nun der Abstand gering genug ist, alle Toleranzen in die falsche 
Richtung gehen, dann liegt hier das GND-Pad neben einem teilweise 
offengelegten Vcc-Leiterzug. Das ganze liegt natürlich nicht sichtbar 
unter dem IC-Gehäuse und du hast nach dem Bestücken u.U. einen Schluss 
zwischen Vcc und GND.

von pkgo (Gast)


Lesenswert?

Uwe N. schrieb:
> Ich habe auch noch etwas Senf zum dazugeben:
>
> Miß doch mal den Abstand der LB, die sich im obigen Bild zwischen
> IC-Padreihe und dem Thermo-Pad durchschlängelt (wenn ich das richtig
> sehe Netz Vcc). Mindestens 150µm sollten es sein - eher mehr.
>
> Das kann kritisch werden, wenn der LP-Fertiger seine Toleranzen beim
> Aufbringen des Lötstops ausreizt. Der Versatz kann immerhin bis zu 100µm
> (oder mehr, je nach Fertiger) betragen.
>
> Wenn nun der Abstand gering genug ist, alle Toleranzen in die falsche
> Richtung gehen, dann liegt hier das GND-Pad neben einem teilweise
> offengelegten Vcc-Leiterzug. Das ganze liegt natürlich nicht sichtbar
> unter dem IC-Gehäuse und du hast nach dem Bestücken u.U. einen Schluss
> zwischen Vcc und GND.

Vielen Dank für den Tipp. Der Abstand beträgt aktuell 0,2mm, wobei ich 
die Leiterbahn auch noch dünner machen könnte. Der Pin, den ich 
ebenfalls an VCC anschließen möchte ist eine Art Undervoltage-Protection 
und soll eigentlich über einen Spannungsteiler und einem JFET an die 48V 
VErsorgunsspannung angeschlossen werden. Dies wollte ich mir allerdings 
(auch aus Platzgründen) sparen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Fred R. schrieb:
> Na ob 1 oder 255 Teilnehmer ist doch nur eine Sache für Laufzeit. Mehr
> nicht!!!!!!
> Meldet sich ein Teilnehmer nicht, macht er auch nix. Ist ja der Sinn
> eines Bussystem.

Ja, nun. Ich bin kein so grosser Experte, sondern beschreibe nur mein 
Bauchgefuehl...das muss man keineswegs teilen. Wir leben in einem Land, 
in dem unsere Vorfahren fuer die Freiheit gekaempft haben, soviele 
Slaves ueber so lange Leitungen wie sie wollen an einen I2C Bus haengen 
zu duerfen :-)

Gruss
WK

von Uwe N. (ex-aetzer)


Lesenswert?

Ich persönlich vermeide Leiterzüge in diesen Bereichen.

Einen Tip habe ich noch: es ist nicht verboten, das Thermo-Pad etwas 
kleiner als im DB angegeben zu machen. Die Betonung liegt auf "etwas"... 
:)

von pkgo (Gast)


Lesenswert?

Uwe N. schrieb:
> Ich persönlich vermeide Leiterzüge in diesen Bereichen.
>
> Einen Tip habe ich noch: es ist nicht verboten, das Thermo-Pad etwas
> kleiner als im DB angegeben zu machen. Die Betonung liegt auf "etwas"...
> :)

Ja darüber habe ich auch schon nachgedacht. ;)

von Schlumpf (Gast)


Angehängte Dateien:

Lesenswert?

Warum ziehst du nicht durchgehend SDA und SCK auf der Rückseite lang und 
stichst jeweils mit einem Via nach oben und führst dann einen Stich zum 
Teilnehmer?
Ich habe es mal skizziert.. Gerade machen kannst es selber ;-)

Wo läuft eigentlich GND lang?

von pkgo (Gast)


Lesenswert?

Schlumpf schrieb:
> Warum ziehst du nicht durchgehend SDA und SCK auf der Rückseite
> lang und
> stichst jeweils mit einem Via nach oben und führst dann einen Stich zum
> Teilnehmer?
> Ich habe es mal skizziert.. Gerade machen kannst es selber ;-)
>
> Wo läuft eigentlich GND lang?

Die Idee ist gut. Da ich davon ausgegangen bin, dass es unter umständen 
zu Störungen kommen kann, habe ich den Bus auf die Unterseite gelegt. 
Vom Bauchgefühl her hätte ich da gesagt, dass dies besser ist, da die 
Leitungen dann weiter von den schaltenden Leitungen entfernt sind.

von pkgo (Gast)


Lesenswert?

pkgo schrieb:
> Schlumpf schrieb:
>> Warum ziehst du nicht durchgehend SDA und SCK auf der Rückseite
>> lang und
>> stichst jeweils mit einem Via nach oben und führst dann einen Stich zum
>> Teilnehmer?
>> Ich habe es mal skizziert.. Gerade machen kannst es selber ;-)
>>
>> Wo läuft eigentlich GND lang?
>
> Die Idee ist gut. Da ich davon ausgegangen bin, dass es unter umständen
> zu Störungen kommen kann, habe ich den Bus auf die Unterseite gelegt.
> Vom Bauchgefühl her hätte ich da gesagt, dass dies besser ist, da die
> Leitungen dann weiter von den schaltenden Leitungen entfernt sind.

GND ist als Fläche (gerade ausgeblendet) verlegt

von Schlumpf (Gast)


Lesenswert?

pkgo schrieb:
> GND ist als Fläche (gerade ausgeblendet) verlegt

Dann hast du also 4 Lagen?

von pkgo (Gast)


Lesenswert?

Schlumpf schrieb:
> pkgo schrieb:
>> GND ist als Fläche (gerade ausgeblendet) verlegt
>
> Dann hast du also 4 Lagen?

Nein wieso? 2

von Schlumpf (Gast)


Lesenswert?

Weil du gesagt hast, dass GND ne Fläche ist..
Aber dann meintest du, dass du die freien Flächen mit GND "flutest"

von pkgo (Gast)


Lesenswert?

Schlumpf schrieb:
> Weil du gesagt hast, dass GND ne Fläche ist..
> Aber dann meintest du, dass du die freien Flächen mit GND "flutest"

Ja die große Fläche, u.a. zwischen SDA und SCL werden Ground. Eine extra 
Lage gibt es dafür nicht

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

pkgo schrieb:
> Also ich habe eine Massefläche zwischen SDA und SCL. Ist es besser die
> VCC in die Mitte der beiden zu platzieren?

 Nein, schlechter.

von Fred R. (fredylich)


Lesenswert?

Nun sollte es Gut sein.

Als alter I²C Busfahrer habe ich sehr viele üble Strecken ohne Unfall 
überstanden.
Ob ein „fliegender“ Aufbau in einer Trafostation oder in einem 
Schweißautomaten.
Entscheitend für Zuverlässigkeit, ist in der Digitaltechnik, nach wie 
vor ein stabiles VCC und ein sauberes GND........
Ob GND sternförmig oder ringförmig aufgebaut wird, ist immer Objekt 
abhängig.....
Wichtig ist nur GND zu GND sollte Nullkomma Null Ohm haben.
Na klar ist auch der Takt auf den Leitungen zu beachten. Leitungen 
bilden wenn parallel eine Art Kondensator(F Kurzschluss) Nun würde ich 
behaupten, in diesem Fall erst ab einer Frequenz oberhalb einiger GHz.
I²C Leidungen liegen auf H im „Ruhezustand“. Mehr H geht nicht. Es sei 
denn der Blitz schlägt ein.

Schlussfolgerung:
Ist GND – Master = GND- Sklave, hat man einen sauberen Bezugspunkt.
Fällt aber über die GND- Leitung Spannung ab, wird es übel. GND- Leitung 
sollten wenn Möglich eine optimale „Breite“ haben(Widerstand).

Was oft nicht beachtet wird ist halt GND, viele bauen in VCC aufwendige 
Filter ein, in der Annahme, „Störimpulse“ zu beseitigen.

Gruß

von pkgo (Gast)


Lesenswert?

Was sagt ihr zu der jetzigen Umsetzung?

Die Leitung D79 ist mit 600 kHz getaktet von einem LED-Treiber. Da 
fließen 270 mA mit einem Ripple von run 10%. Eine schmale Massefläche 
befindet sich zwischen SDA und SCL. Habe etwas bedenken vor Übersprechen 
der LED-Leitung auf den Datenbus.

von pkgo (Gast)


Angehängte Dateien:

Lesenswert?

Das ist die Umsetzung

von pkgo (Gast)


Lesenswert?

Die LED-Leitungen befinden sich wie dort gezigt entlang des I²C

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.