www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Signalproblem bei langem Kabel


Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torben K. (torben)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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%).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pinbelegung des Kabels?

Mal den Artikel Wellenwiderstand lesen.

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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/gr...

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

Du misst die Anstiegszeit des Tastkopfes ;-)

MFG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Torben K. (torben)
Datum:

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

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das ganze schon anders aus.

Poste mal noch ein Foto als Vergleich

Autor: Torben K. (torben)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ekschperde (Gast)
Datum:

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

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ....

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gemalt ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.