Signalproblem bei langem Kabel

#980560
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!
#980637
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%).
Angehängte Dateien:
#980818
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
Gast #980878
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..
Gast #980891
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
#980898
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 ;)
#980913
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
#980916
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
#981003
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
Gast #981015
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!
#981024
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
#981025
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
Gast #981032
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
#981047
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.
#981127
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.
Angehängte Dateien:
#981673
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

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