Forum: Mikrocontroller und Digitale Elektronik Layout für I²C ,SPI ,UART und CAN


von pauli (Gast)


Lesenswert?

Hallo Ihr,
steinigt mich falls es soetwas schon gibt, aber über die SuFu hab ich 
nichts rechtes finden können.
Es geht darum einen digitalen Bus in Eagle richtig zu layoutzen.
Nehmen wir an es dreht sich um einen I²C Bus. Dann ist es ja sicher 
sinnvoll beide Leitungen dicht nebeneinander zu Platzieren oder?
Aber gegenüber CAN wie sieht die Lage da wieder aus? Kleine Massefläche 
dazwischen oder dicht beieinander?
Bei UART ist es sicherlich egal, da ja die Leitungen jeweils für senden 
und empfangen getrennt sind.

Kann hier jemand für Aufklärung sorgen?
Danke schonmal!

von Frankman (Gast)


Lesenswert?

Also grundsätzlich ist es falsch, die "beiden" Leitungen dicht 
nebeneinander zu routen, wegen dem Übersprechen.

Aber: Wenns ein Standard-I²C-Bus ist, ists warscheinlich wurscht, weil 
der eh nur 100KHz schnell ist.

Bei SPI müßt man schon etwas mehr aufpassen, weil da ggv. mehrere MHZ 
drübergehen können.

Im übrigen gibts da mal wieder kein Patentrezept. Da schaut man halt 
dann in den entsprechenden Datenblättern nach.

von Marian (phiarc) Benutzerseite


Lesenswert?

Für alle Busse gilt generell, dass die beteiligten Leitungen möglichst 
gleich lang sein sollten.

Für differentielle Signale gilt generell, dass die beteiligten Leitungen 
möglichst gleich lang sein müssen.

I2C: Wenn möglich, kräftigen Pullup verwenden (1K8…2K2), das verbessert 
die Signalqualität erheblich (rise time!)

I2C parallel zu routen tut dem eigentlich nix…


Bei UART ist das Layout praktisch egal, die Dinger sind noch viel 
langsamer als I2C (oft nimmt man nur lächerliche 9600 Baud, also 9.6 
kHz!) und da die beiden Leitungen asynchron-unabhängig voneinander sind, 
ist auch unterschiedliche Leitungslänge wurscht.

von Falk B. (falk)


Lesenswert?

@ Marian B. (phiarc)

>Für alle Busse gilt generell, dass die beteiligten Leitungen möglichst
>gleich lang sein sollten.

Nö. Das ist be solchen Zeitlupenbussen wie I2C oder UART vollkommen 
schnuppe. Bei SPI wird es ETWAS ernster, aber solnge man da nicht mit 50 
MHz Takt arbeitet, ist da VIEL Luft.

>I2C: Wenn möglich, kräftigen Pullup verwenden (1K8…2K2), das verbessert
>die Signalqualität erheblich (rise time!)

Quark. Viel hilft nicht immer viel, ausserdem gibt es einen Standard, an 
den man sich möglichst halten sollte. Mehr als 3mA Pull-Up Strom sind 
nicht erlaubt und werden auch nur selten benötigt.

von B. S. (bestucki)


Lesenswert?

Hab bis jetzt immer beide Leitungen nebeneinander geroutet, hatte aber 
auch noch nie Busfrequenzen über 1MHz. Die muss man auch nicht unnötig 
hoch wählen. Ich orientiere mich immer an der Faustregel: So langsam wie 
möglich, so schnell wie nötig.

Falk Brunner schrieb:
> Quark. Viel hilft nicht immer viel, ausserdem gibt es einen Standard, an
> den man sich möglichst halten sollte. Mehr als 3mA Pull-Up Strom sind
> nicht erlaubt und werden auch nur selten benötigt.

5V / 1.8kR = 2.78mA -> Alles i.O. Aber du hast recht. Ich versuchs bei 
I2C immer zuerst mit 10kR, wenns nicht zuverlässig läuft, kann ich den 
Widerstand immer noch verkleinern. Wichtiger ist es, die Kapazität unter 
den 400pF und/oder die Busfrequenz tief zu halten, dann ist auch kein 
kleiner Widerstand nötig.

von Marian (phiarc) Benutzerseite


Lesenswert?

bestucki schrieb ja bereits das 1K8 innerhalb der Spec sind. Wenn ich 
mit meiner Analog-Möhre mit mal die I2C-Leitungen anschaue, macht es da 
schon einen ziemlichen Unterschied, ob der Pullup 1K8 oder 10K ist. 
Letzteres würde ich nicht wirklich Rechteck nennen. In dem konkreten 
Fall war der Bus aber auch inter-PCB über Flachkabel.

Bei SPI erreicht man ja selbst mit nem AVR schon 10 MHz. Wenn da mehrere 
Devices dranhängen, würde ich da schon auf die Leitungslängen achten. 
Aber natürlich hast du recht, dass das erst bei höheren Frequenzen 
wirklich relevant wird.

von B. S. (bestucki)


Lesenswert?

Marian B. schrieb:
> schon einen ziemlichen Unterschied, ob der Pullup 1K8 oder 10K ist.
> Letzteres würde ich nicht wirklich Rechteck nennen.
Habs gerade durchgerechnet. Mit 1.8kR und 400pF kann man ca. 140kHz 
erreichen, unter der Annahme, dass 5 Tau pro Bit nötig sind (ich hoffe, 
ich hab mich nicht verrechnet). Wenn man aber die Leitungslängen kurz 
hält und nur 100kHz oder weniger benötigt, reichen auch 10kR.

Marian B. schrieb:
> Bei SPI erreicht man ja selbst mit nem AVR schon 10 MHz.
Würde den Bus nur mit 10MHz laufen lassen, wenns wirklich nötig ist. 
Stichleitungen müsste man wahrscheinlich auch schon vermeiden.

von pauli (Gast)


Lesenswert?

Ihr habt mir richtig geholfen danke!
Jetzt nur noch kurz - Könnt ihr ein gtes Buch über Layouts empfehlen. So 
ein nachschlagwerk oder einfach Grundlagen für Professionelle Layouts? 
Hab schon bisschen was mit Schaltreglern gemacht, die auch funktioniert 
haben aber beispielsweise die Sache mit Dukos, Masseflächen und oder 
verschiedenen Massen ist mir immer noch sehr unvertraut.

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.