Forum: Mikrocontroller und Digitale Elektronik Signalproblem bei langem Kabel


von Torben K. (torben)


Lesenswert?

Hallo!

Ich habe hier folgendes Problem:

Auf einer kleinen Platine habe ich einen SD-Kartenslot. Die Platine 
schließe ich über ein Flachbandkabel an das ansteuernde Gerät an. Mit 
einem kurzen Kabel geht das auch ohne Probleme. Nehme ich ein längeres 
Kabel, so bricht die Übertragung von Dateien nach kurzer Zeit ab. Ich 
habe mir die Signale mit einem Oszi angesehen und kann keinen 
Unterschied bei verschiedenen Kabellängen erkennen. Trotzdem tritt das 
genannte Phänomen auf. Jetzt bin ich auf der Suche nach Möglichkeiten, 
um das Problem zu beheben. Was kann man da machen?

Vielen Dank!

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


Lesenswert?

Leider sind die Angaben recht dürftig, da hilft nur raten.

> kurzen Kabel...
> längeres Kabel...
mm, m, km?

> kann keinen Unterschied bei verschiedenen Kabellängen erkennen.
Wie und wo gemessen? Flankensteilheit?
Wie sehen die Signale in der zeitlichen Relation aus?

> Was kann man da machen?
Screenshot vom Oszi posten.

von Patrick (Gast)


Lesenswert?

Hast Du an der offenen Leitung gemessen? Hast Du schon mal davon gehört, 
dass in langen Leitungen Signal reflektiert werden? Da können 
Abschlusswiderstände Wunder bewirken.

von Torben K. (torben)


Angehängte Dateien:

Lesenswert?

Mit einem 7,6 cm langen Kabel geht es, mit einem 21 cm Kabel, das ist 
die Länge die gebraucht wird, geht es nicht mehr. Als Anhang Screenshots 
der Dat_0 Leitung der SD-Karte. Gelb wurde auf der SD-Platine gemessen, 
Blau auf dem Mainboard. Verwendet habe ich dafür das 21 cm Kabel. Auf 
dem unteren Screenshot habe ich mal die Anstiegszeit für das Blaue 
Signal markiert. Sie liegt bei ca. 42ns (10% - 90%).

von Falk B. (falk)


Lesenswert?

Pinbelegung des Kabels?

Mal den Artikel Wellenwiderstand lesen.

von Torben K. (torben)


Lesenswert?

OK aus dem Artikel entnehme ich, dass ich bei eine Anstiegszeit von 42ns 
erst ab einer Länge von über einem Meter eine Terminierung brauchen 
würde. Kann natürlich sein, dass ein anderes Signal schneller ansteigt, 
das werde ich nochmal prüfen, vor allem das Clock Signal.

Bei dem Flachbandkabel handelt es sich um ein 14-poliges. Belegung:

1 n/c
2 n/c
3 n/c
4 n/c
5 CD#
6 WP#
7 DAT1
8 DAT0
9 CLK
10 CMD
11 DAT3
12 DAT2
13 GND
14 3V3

von holger (Gast)


Lesenswert?

1 n/c
2 n/c
3 n/c
4 n/c

Verschenkte Leitungen, wie schrecklich.
Da hätte man wunderbar einen Schirm um CLK mit
bauen können.

von Matthias L. (Gast)


Lesenswert?

14 Leitungen, sinnvoller wäre das gewesen:

01 GND
02 CD#
03 GND
04 WP#
05 GND
06 DAT1
07 GND
08 DAT0
09 GND
10 CLK
11 GND
12 CMD
13 GND
14 DAT3
15 GND
16 DAT2
17 GND
18 3V3
19 GND
20
(eine Seite komplett ac-Masse)
Ob GND oder +UB ist egal, da beide wechselspannungsmäßig Masse sind..

von Torben K. (torben)


Lesenswert?

Naja die Leitung und die Belegung waren vorgegeben, von daher...

Zurück zum Problem: Was kann man machen um es zu lösen? Ich denke es 
liegt an der Kabellänge aber welche Möglichkeiten hat man jetzt?

von Olaf (Gast)


Lesenswert?

> Als Anhang Screenshots der Dat_0 Leitung der SD-Karte.

Was fuer eine Bandbreite hat dein Oszi? ICh glaub das beluegt
dich naemlich. :-D

> Ich denke es liegt an der Kabellänge aber welche Möglichkeiten
> hat man jetzt?

Vernuenftige Bustreiber auf beiden Seiten des Kabel und
eine Terminierung.

> Naja die Leitung und die Belegung waren vorgegeben, von daher...

Wenn mein Chef mit so einem Unsinn ankommt erklaere ich dem das
physikalische Gesetze fuer jeden gelten.

Ausserdem wuerde ich dir dringenst raten CRC einzuschalten. Alles
andere unqualifizierter Murks!

Olaf

von Torben K. (torben)


Lesenswert?

200 MHz, sollte also nicht gelogen haben...

Dafür bräuchte man bidirektionale Treiber und ich habe bisher noch keine 
entsprechenden gefunden. Falls jemand einen kennt immer her damit ;)

Das mit dem CRC verstehe ich nicht so ganz, CRC-Codes werden bei einem 
Filetransfer automatisch vom Betriebssystem geprüft afaik, da kann ich 
nichts ein- und ausschalten ;)

von Falk B. (falk)


Lesenswert?

@Torben K. (torben)

>das werde ich nochmal prüfen, vor allem das Clock Signal.

Gute Idee.

>Bei dem Flachbandkabel handelt es sich um ein 14-poliges. Belegung:

Und nur EINE Masse?

Mach es wie im Artikel Empfohlen. Leg die restlichen 4 Adern auf Masse, 
aber VERTEILT über das Kabel. Eine Masse direkt neben CLK. Und an BEIDEN 
Enden die Massen mit der Schaltungsmasse verbinden.

MFG
Falk

von Falk B. (falk)


Lesenswert?

@Torben K. (torben)

>200 MHz, sollte also nicht gelogen haben...

Hoffentlich nciht die 20MHz Bandbegrenzung drin gehabt.
Wie gemessen? Mit welchem Tastkopf?

Ein AVR hat ca. 5ns Anstigeszeit.

>Dafür bräuchte man bidirektionale Treiber

Braucht man bei 20cm noch nicht.

MFG
Falk

von Torben K. (torben)


Lesenswert?

Nein Begrenzung war nicht drin. Gemessen mit einem kapazitiven Tastkopf.

Ich denke für die Datenleitungen, die in beide Richtungen arbeiten, 
braucht man auch bidirektionale Treiber oder mache ich da jetzt einen 
Denkfehler?

von Falk B. (falk)


Lesenswert?

@Torben K. (torben)

>Nein Begrenzung war nicht drin. Gemessen mit einem kapazitiven Tastkopf.

???
Was soll das sein? Meisnt du einen passiven 10:1 Tastkopf?

>Ich denke für die Datenleitungen, die in beide Richtungen arbeiten,
>braucht man auch bidirektionale Treiber

Sicher, die sind aber wahrscheinlich nicht das Problem. ICh tippe auf 
den Takt und die Steuersignale.

MFG
Falk

von Torben K. (torben)


Lesenswert?

Ja ein passiver Tastkopf, 1:1 in diesem Fall.

Wenn du da richtig liegst wären keine bidirektionalen Treiber nötig, 
stimmt.

Die Anstiegszeit des Taktsignals sieht ähnlich wie die des Signals aus.

von oszi40 (Gast)


Lesenswert?

Die simpelste Lösung ist eine Schere. Wenn noch genug Kabel zum Üben da 
ist, dann schneidet wenige cm ab und probiert nochmals.
Begründung: anderer Wellenwiderstand hat mir schon mehrfach geholfen!

von Falk B. (falk)


Lesenswert?

@Torben K. (torben)

>Ja ein passiver Tastkopf, 1:1 in diesem Fall.

;-)
Wusste ich's doch.
Den kannst du getrost für schnelle Messungen vergessen!
Der hat so um die 150pF EIngangskapazität und 15 MHz Bandbreite, je nach 
Typ.
Du MUSST mit einem GUTEN 10:1 Tastkopf messen, mind. 250MHz Bandbreite, 
KURZE Masseverbindung per Ground Sping

http://www.mikrocontroller.net/attachment/27280/groundspring.png

>Die Anstiegszeit des Taktsignals sieht ähnlich wie die des Signals aus.

Du misst die Anstiegszeit des Tastkopfes ;-)

MFG
Falk

von Falk B. (falk)


Lesenswert?

@ oszi40 (Gast)

>Die simpelste Lösung ist eine Schere. Wenn noch genug Kabel zum Üben da
>ist, dann schneidet wenige cm ab und probiert nochmals.
>Begründung: anderer Wellenwiderstand hat mir schon mehrfach geholfen!

Dumm nur, dass der längenunabhängig ist ;-)

MfG
Falk

von holger (Gast)


Lesenswert?

>Ja ein passiver Tastkopf, 1:1 in diesem Fall.

Prima, also schön die hohe Kapazität vom Tastkopfkabel mit
drangehängt ;) Nimm mal 10:1 das ist besser.

von Olaf (Gast)


Lesenswert?

> 200 MHz, sollte also nicht gelogen haben...

Wenn das 200Mhz sind dann sollte dein Signal aber gut sein.
Andererseits glaube ich nicht das es bei 20cm Kabel ohne
Terminierung noch gut sein kann.

Entweder dein Tastkopf ist murks, zum Beispiel zu langes Massekabel,
oder dein Ossi beluegt dich weil die Fehler nur manchmal auftreten und
du nur einen Singleshot siehst.
Programmier dir eine Testroutine die immer 0xaa auf die Datenleitung 
ausgibt, trigger auf CF und schau dir Daten und Clk gleichzeitig an.

Und kneif das Massekabel am Tastkopf ab bis es nur noch 1cm lang ist. 
:-)

> Ich denke für die Datenleitungen, die in beide Richtungen arbeiten,

SD hat keine biderektionalen Datenleitungen. Es gibt aber 
unidirektionale
in beiden Richtungen.

> Das mit dem CRC verstehe ich nicht so ganz, CRC-Codes werden bei einem

SD werden ja an Microcontroller normalerweise im SPI-Mode angesprochen
und da ist per default CRC ausgeschaltet. Das solltest du einschalten
weil es bei so langen Kabeln immer mal vorkommen kann das mal ein 
Datenblock beschaedigt wird, selbst wenn das nur einmal im Monat ist.

> ICh tippe auf den Takt und die Steuersignale.

Am schlimmsten ist der Takt, da ja die Signale mit seinen Flanken 
uebernommen werden. Wuerde ich also mindestens terminieren. Und dazu 
muss auf beiden seiten des Taktes eine Leitung mit GND/Vcc sein weil 
sonst die Annahme das die Leitung 100Ohm haben koennte nicht stimmt.
Aber vorher sollte man erstmal die Messtechnik optimieren damit man 
sehen kann wie schlecht das Taktsignal ist, dann hat man auch ein 
AHA-Erlebnis wenn es danach gut aussieht.

Olaf

von Torben K. (torben)


Lesenswert?

OK danke für die Tips, mal schauen ob ich was tun kann.

von Torben K. (torben)


Lesenswert?

So mit 10:1 sieht das ganze schon anders aus. Mir war nicht bewußt dass 
die Bandbreite mit dem Tastverhältnis geändert wird, wieder was gelernt 
;)

Da sehe ich eine Anstiegszeit von 3,2 ns und ich denke die wird immer 
noch höher sein als die tatsächliche, da ich ja nur ein 200 MHz Oszi zur 
Verfügung habe.

Ich werde es mal mit einer Terminierung versuchen.

von Matthias L. (Gast)


Lesenswert?

>das ganze schon anders aus.

Poste mal noch ein Foto als Vergleich

von Torben K. (torben)


Angehängte Dateien:

Lesenswert?

Hat funktioniert, mit Terminierung gehen die Übertragungen. Ich weiß 
zwar nicht ob die Terminierung optimal ist, da ich den Innenwiderstand 
der GPIOs nicht kenne, aber ich bin mal von 50 Ohm ausgegangen und habe 
noch 100 Ohm in die Leitung gemacht, für engenommene 150 Ohm des 
Flachbandkabels - und siehe da - es geht.

Als Anhang noch die neue Aufnahme der Anstiegsgeschwindigkeit für alle 
interessierten.

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


Lesenswert?

Der Überschwinger ist entweder eine falsch angeschlossene Masseleitung 
oder ein Hinweis auf eine falsche Terminierung.

Ist der Screenshot jetzt mit oder ohne Terminierung?
Wo gemessen?


Aber insgesamt: man hat schon schlimmere Signale gesehen.

von Ekschperde (Gast)


Lesenswert?

Leg mal je 50 Ohm in die Signalleitungen.
Und zwar zwischen Treiberbaustein und Leitung.
Das hilft immer ganz gut.

von Torben K. (torben)


Lesenswert?

Lothar Miller wrote:
> Der Überschwinger ist entweder eine falsch angeschlossene Masseleitung
> oder ein Hinweis auf eine falsche Terminierung.

Ich habe leider keinen Tastkopf mit einer extrem kurzen Masseleitung, 
von daher kann ich nichts ausschließen.

> Ist der Screenshot jetzt mit oder ohne Terminierung?
> Wo gemessen?

Der ist noch ohne Terminierung am Ende des 21cm Kabels

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


Angehängte Dateien:

Lesenswert?

> Der ist noch ohne Terminierung am Ende des 21cm Kabels.

Ja, dann könnte eine Terminierung helfen.
Als kleines Beispiel aus der Praxis im Anhang ein Bild einer Busleitung 
(AD0) zu einem SJA1000, Länge ca 20cm, ohne Serienwiderstand


Und ....

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


Angehängte Dateien:

Lesenswert?

... das Ganze mit einem 100 Ohm Serienwiderstand. Schön, nicht?

EDIT:
Der SJA1000 hat in beiden Fällen funktioniert.
Ist eben ein zäher Sack ;-)

von Falk B. (falk)


Lesenswert?

Wie gemalt ;-)

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.