Störungen durch Übersprechen auf langem Kabel verringern I2C

OP #3174458
Lesenswert?

Hallo,
ich betreibe einen Sensor über ein längeres ungeschirmtes Kabel an einem 
ATmega. Der uC treibt die SCK-Leitung, die SDA-Leitung wird am uC mit 
einem 1k pull-up auf 5V gezogen. Sowohl der uC als auch der Sensor 
können die Leitung auf GND ziehen. Der Sensor funktioniert meistens, 
jedoch sind auf SDA massive Störungen von SCK eingekoppelt (und 
andersrum, nur seltener).

Ich habe eine LTSpice-Simulation erstellt, in der nur der uC SDA treibt, 
sie stimmt mit der Realität recht gut überein, siehe Anhänge.

Wie kann das kapazitive Übersprechen verringert werden?
Ein Widerstand in der SCK-Leitung bringt leider nicht den gewünschten 
Erfolg.

Gruß Martin
Angehängte Dateien:
#3174470
Lesenswert?

> Wie kann das kapazitive Übersprechen verringert werden?

Anderes Kabel nehmen ;)

Man könnte die Anstiegszeiten von SCLK etwas langsamer machen, also 
einen C ans Signal. Gefühlt aber irgendwie Pfusch :)

Oder mit einem langsamen Weak-Keeper das Signal virtuell niederohmiger 
halten...
Gast #3174510
Lesenswert?

Hier ein paar Sachen, die ich bei langen I²C-Leitungen gelernt hab:

- kleiner C zum glätten bringt einiges (max. 400pF pro Leitung sind es 
glaub ich laut der Spec)

- geringe Pull-Ups verwenden (hast du ja schon, wobei 1k schon arg wenig 
sind)

- bei Flachbandkabel zwischen den SCL und SDA andere Leitungen legen, z. 
B. +5V GND. Hier habe ich auch mal von einer optimalen Anordnung 
gelesen. Leider aber wieder vergessen...

- geringere Datenrate verwenden, wenn möglich
#3174546
Lesenswert?

@ Martin St. (martinst)

>Wie kann das kapazitive Übersprechen verringert werden?

Kapazität verringern. SCL und SDA jeweil mit einer eigenen Masseader 
verdrillen, sprich man nimmt gleich zwei verdrillte Paare. GGf. noch 
eine Schirmung aus Folie um jedes Paar.
Ausserdem sind I2C Ausgangstreiber bewußt langsam, die schalten nicht 
wie ein AVR-Pin in 5ns (!) sondern eher in 100-500ns. Also einen echten 
I2C Treiber dazwischen schalten.
#3175821
Lesenswert?

Wenn auf der Empfängerseite die Leitung quasi offen ist, wirkt sie wie 
eine Antenne und schnelle Flanken von anderen Leitungen werden 
einkoppelt. Leitungsreflexionen kommen noch dazu. Mehr zu 
Übertragungsleitungen: 
http://ichaus.biz/upload/pdf/ei09_21_green_027.pdf . Falls der 
SPI-Daten- und Taktausgang genügend Strom kann würde ich auf der 
Empfängerseite mit dem Leitungswiderstand (ca. 120 Ohm) abschließen, 
oder so nahe wie es der Treiber hergibt.
#3175900
Lesenswert?

@ Horst H. (horst_h44)

>eine Antenne und schnelle Flanken von anderen Leitungen werden
>einkoppelt. Leitungsreflexionen kommen noch dazu. Mehr zu
>Übertragungsleitungen:

Schon mal auf's Thema geschaut? Es geht um I2C, das ist eher 
langsam, das Thema Wellenwiderstand greift hier nicht.

>SPI-Daten- und Taktausgang genügend Strom kann

Können sie nicht, weil I2C.

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