Signalproblem bei langem Kabel

OP #980560
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!
Moderator (Firma: Titel) Persönliche Seite
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.
Gast
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.
OP
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%).
Angehängte Dateien:
OP
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
Gast
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..
Gast
> 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
OP
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 ;)
@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
@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
OP
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?
@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
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!
@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
@ 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
Gast
>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.
Gast
> 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
OP
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.
OP
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.
Angehängte Dateien:
OP
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.