Forum: Mikrocontroller und Digitale Elektronik SPI clock Terminierung


von Dirk F (Gast)


Lesenswert?

Hallo,
auf meiner Anwendung sitzt ein SPI Master, der folgende Slaves 
ansteuert:
6 x PIC18
2 x DAC 12 Bit
1 x ADC 24 Bit
1 x LCD

Der SPI wird mit 100KHz betrieben.

Der ADC  ADS1256 läuft aber sehr uns unsauber.
Die SPI Clock Leitung ist verzweigt an alle Slaves und gesamt ca. 50 cm 
lang.

Ich vermute als Ursache für die Störungen Reflektionen auf der Clock 
Leitung. Terminiert war nix.


Wie bekommt man ein solches System sauber ans laufen ?
SPI Clock Quelle über R/C Tiefpass die Flankensteilheit reduzieren ?
Gruß Dirk

von Frank K. (fchk)


Lesenswert?

Nimm beispielsweise einen 74HC541. SCK vom SPI Master geht an alle 
Inputs des HC541. Die Ausgänge des HC541 gehen an die einzelnen SPI 
Slaves. So wird aus einer langen SCK-Leitung mehrere kürzere. Ggf. 
machst Du es mit MOSI genauso.

Flankensteilheit verringern wäre eine zusätzliche Maßnahme.

fchk

von HildeK (Gast)


Lesenswert?

Dirk F schrieb:
> Ich vermute als Ursache für die Störungen Reflektionen auf der Clock
> Leitung. Terminiert war nix.

Das ist mit hoher Wahrscheinlichkeit die Ursache.

Frank K. schrieb:
> Nimm beispielsweise einen 74HC541.
Gut!
> Flankensteilheit verringern wäre eine zusätzliche Maßnahme.
Nein, das eher nicht.
Was aber notwendig ist, ist eine Serienterminierung (33Ω) an der Quelle. 
Dann ist es eine saubere Lösung, die ich auf jeden Fall bevorzugen 
würde.

@Dirk F
Wenn es extrem Platz und kostensparend sein muss:
Mein folgender Vorschlag hängt etwas von der Layouttopologie ab. Man 
kann versuchen, drei (ev. auch vier) sternförmige Taktleitungen legen, 
jede aber über einen 33Ω-Serienwiderstand an die Quelle angeschlossen. 
Lage natürlich so nahe wie möglich an der Quelle.
Nun hast du aber 10 Empfänger. Wenn die Empfänger in drei bis vier 
Gruppen angeordnet werden können, so dass das letzte Stück der 
Taktleitung nur einen sehr kurzen Stern darstellt, wäre es einen Versuch 
wert. Dann sollte aber der Taktausgang eine gute Treiberleistung haben.
Also etwa so:
                                  __ E1
Quelle -+R ----------------------|
        |                        |___E2
        +R ---------+--E3
                    |__E4

von Klaus (Gast)


Lesenswert?

Dirk F schrieb:
> Der SPI wird mit 100KHz betrieben.
> ...
> Die SPI Clock Leitung ist ... gesamt ca. 50 cm lang.
> ...
> Ich vermute als Ursache für die Störungen Reflektionen ...

HildeK schrieb:
> Das ist mit hoher Wahrscheinlichkeit die Ursache.

Bei "quasi" Gleichstrom wie 100kHz eher nicht.

MfG Klaus

von Falk B. (falk)


Lesenswert?

@  Klaus (Gast)

>> Der SPI wird mit 100KHz betrieben.
>> Die SPI Clock Leitung ist ... gesamt ca. 50 cm lang.
>> Ich vermute als Ursache für die Störungen Reflektionen ...

>HildeK schrieb:
>> Das ist mit hoher Wahrscheinlichkeit die Ursache.

>Bei "quasi" Gleichstrom wie 100kHz eher nicht.

Irrtum die 1963te. Die FREQUENZ ist nahezu egal, die FLANKENSTEILHEIT 
entscheidet. Siehe Wellenwiderstand.

MFG
Falk

von Dirk F (Gast)


Lesenswert?

Hallo,
danke für die zahlreichen Hinweise.
Insbesondere der Artikel "Wellenwiederstand" fand ich gut.
Da die Platine bereits fertig ist, kann ich erst in der nächsten 
Revision die meisten Vorschläge umsetzen.
Bei der jetzigen vorhandenen Platine werde ich wohl die SPI-Clock Out 
vom PIC18 die Flankensteilheit reduzieren, da ich ja nur 100 KHz 
brauche.
Ist meine Dimensioniereung des RC Filtes am Clock Out richtig ?
100 KHz = 10 uS Periodenzeit
5 us high, 5 us low.
Gewünschte Flankenzeit : 1 us.
Tau = 1 us.
Tau = R * C
Tau = 100 Ohm * 10 nF  = 1000 ns = 1 us
Oder wäre 10 Ohm/100nF  besser ?

Gruß Dirk

von HildeK (Gast)


Lesenswert?

Dirk F schrieb:
> Bei der jetzigen vorhandenen Platine werde ich wohl die SPI-Clock Out
> vom PIC18 die Flankensteilheit reduzieren, da ich ja nur 100 KHz
> brauche.

Ich gehe jetzt nicht auf deine Berechnung zur Reduzierung der 
Flankensteilheit ein. Das ist und bleibt imho Quatsch:
- die 100kHz spielen keine Rolle, entscheidend ist die Flankensteilheit 
der Signale.
- Prüfe mal, welche minimale Flankensteilheit die Eingänge haben müssen. 
Ganz normale CMOS-Bausteine wollen meist Anstiegszeiten <100..200ns, bei 
Takteingängen wäre ich da noch vorsichtiger. SPI-Bausteine können oft 
nahe bis 100MHz, sind also am Eingang entsprechend empfindlich und auf 
'schnell' designed und hätten dann auch gerne steile Flanken.
- lahme Flanken am Takteingang können damit zu mehrfachem Triggern 
führen, besonders wenn dann noch Störungen überlagert sind.
- wenn schon RC, dann aber am Ende der Leitung!

Ein kleines Beispiel aus der Praxis:
Ein Taktsignal (ca. 25kHz) wird über eine ca 30cm lange Leitung, ohne 
Verzweigung direkt zu einem FPGA gelegt. Nachdem der Hersteller des FPGA 
einen Die-Shrink gemacht hatte (= der Chip wurde dadurch schneller), gab 
es plötzlich Ausfälle. Ursache: der Entwickler hatte im ersten Drittel 
der Leitung ein RC-Glied zur Reduzierung der Flankensteilheit und damit 
vermeintlicher Erhöhung der Störsicherheit eindesigned. Das führt wohl 
zu Mehrfachreflexionen.
Nachdem der Kondensator entfernt wurde, war die Sache wieder stabil.

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


Lesenswert?

Wie wärs mit messen? Und wenn dann Überschwinger sichtbar sind: 
Serienterminierung wie im 
Beitrag "Re: Signalproblem bei langem Kabel"

von Anja (Gast)


Lesenswert?

Dirk F schrieb:
> Oder wäre 10 Ohm/100nF  besser ?

Das kann dein Treiber (Innenwiderstand ca 30 Ohm) gar nicht treiben.
Auch für Serienterminierung sehe ich den Treiberinnenwiderstand bei der 
Anzahl Empfänger kritisch.

In meinen Augen ist Dein System bisher noch gar nicht richtig 
analysiert. Daher die Abhilfemaßnahmen purer Aktionismus.

Als Ursache kommen folgende Themen in Frage:
- Übersprechen (von parallel liegender Datenleitung auf Clock)
  Abhilfe Schirmleitungen für Takt mit Gnd-Potential
  alle paar cm auf Masselage durchkontaktiert.

- Galvanische Kopplung (falls kein Multilayer sondern 2-Lagen layout)

- Reflektionen. Wobei hier 2 Fälle unterschieden werden sollten.
  Treibernahe Bausteine leiden unter der zu hohen Treiberimpedanz.
  (langsamer Anstieg des Taktsignals
   -> Schmitt-Trigger am Empfänger erforderlich)
  Bausteine am Leitungsende/weit entfernte Bausteine
  leiden ggf. unter Über/Unterschwinger.

  Ein Lageplan mit Leitungslängen wäre nützlich.

Gruß Anja

von Dirk F (Gast)


Lesenswert?

Hallo, nachmals Danke für die vielen Tipps.
Mir ist jetzt klar, dass es nicht so optimal war, die SPI Clock Leitung 
vom Autorouter verlegen zu lassen, mit einigen Vias drin.
Werde bei der nächsten Revision der Leiterplatte besser drauf achten.

Habe mit dem Scopemeter auch mal die Flanken des CLK nachgemessen.
Es waren keine Überschwinger oder Reflektionen erkennbar.

Die jetzige Version der 2-Lagen Leiterplatte habe ich folgendermaßen 
relativ stabil ans laufen bekommen:

Am SPI CLK Out einen 100 pF Kerko direkt vom Pin nach Masse angelötet. 
Also ohne R.
Der CLK In vom kritischste SPI Slave ADS1256 ist gem. Datenblatt von TI 
mit einem 100 Ohm Serienwiderstand angesteuert.

SPI läuft aktuell mit 200 kHz. Bis 1MHz getestet, läuft.
Nach unten gibt es unterhalb 50 kHz Probleme.

Gruß Dirk

von Falk B. (falk)


Lesenswert?

@  Dirk F (Gast)

>vom Autorouter verlegen zu lassen, mit einigen Vias drin.

Die Vias tun keinem weh, was fehlt ist die Masse dazu.

>Habe mit dem Scopemeter auch mal die Flanken des CLK nachgemessen.
>Es waren keine Überschwinger oder Reflektionen erkennbar.

Du hast sie nicht erkannt, da sind sie aber mit hoher Wahrscheilichkeit. 
Das RICHIG zu messen ist nicht ganz einfach. Dazu braucht man ein 
schnelles Oszi 300MHz++ und passenden Tastkopf. Denn muss man auch 
HF-tauglich an die Messtelle anbringen, mit KURZER Masseleitung, 
Stichwort ground spring.

>Die jetzige Version der 2-Lagen Leiterplatte habe ich folgendermaßen
>relativ stabil ans laufen bekommen:

Wirklich?

>Am SPI CLK Out einen 100 pF Kerko direkt vom Pin nach Masse angelötet.
>Also ohne R.

Edelpfusch.

>Der CLK In vom kritischste SPI Slave ADS1256 ist gem. Datenblatt von TI
>mit einem 100 Ohm Serienwiderstand angesteuert.

Edelpfusch die 2.

>SPI läuft aktuell mit 200 kHz. Bis 1MHz getestet, läuft.
>Nach unten gibt es unterhalb 50 kHz Probleme.

Klarer Beweis, dass das Problem NICHT beseitigt wurde, und minimal 
verschoben. Stimmen deinen SPI-Einstellungen, vor allem der SPI-Modus?

von SPI-Treiber (Gast)


Lesenswert?

Dirk F schrieb:
> Mir ist jetzt klar, dass es nicht so optimal war, die SPI Clock Leitung
> vom Autorouter verlegen zu lassen, mit einigen Vias drin.
> Werde bei der nächsten Revision der Leiterplatte besser drauf achten.

So kompliziert ist SPI doch nicht:
- Stimmt jeweils der SPI-Modus?
- Sind die Select-Signale vorhanden?
- Sind die erreichten Pegel sicher ausreichend?
- Sind die Clock-Flanken sauber (genug)?
- Sind die Daten während der Datenübernahme stabil?

von Peter D. (peda)


Lesenswert?

Dirk F schrieb:
> Die jetzige Version der 2-Lagen Leiterplatte habe ich folgendermaßen
> relativ stabil ans laufen bekommen:

Dann wird wohl eher die Masseführung das Problem sein. GND sollte immer 
großflächig sein, am besten eine Plane.

Bei SPI nehme ich immer auch 100R in reihe, direkt an der Quelle, um die 
Flanken zu bedämpfen. Das Problem sind nicht die Flanken selber, sondern 
das kapazitive Übersprechen auf andere Signale.

Autorouter nehme ich garnicht, da kommt nur Schrott raus. Ich hatte mal 
extern ne Platine machen lassen, da hat der Autorouter regelrecht 
Misthaufen gespielt. Mit dem Oszi konnte ich an den Signalen teilweise 
mehrere V minus messen und das auf ner 4-lagen Platine.


Peter

von Dirk F (Gast)


Lesenswert?

So kompliziert ist SPI doch nicht:
- Stimmt jeweils der SPI-Modus?

Wenn der Modus falsch wäre, dann würde es ja gar nicht laufen.

- Sind die Select-Signale vorhanden?
Ja.

>Der CLK In vom kritischste SPI Slave ADS1256 ist gem. Datenblatt von TI
>mit einem 100 Ohm Serienwiderstand angesteuert.
Edelpfusch die 2.

Ich denke, die Leute von TI sollten es eigentlich wissen.

LG  Dirk

von Falk B. (falk)


Lesenswert?

@  Dirk F (Gast)

>Wenn der Modus falsch wäre, dann würde es ja gar nicht laufen.

FALSCH! Durch diverse Dreckeffekt kann es ganz knapp auf der Kante 
laufen!

>>Der CLK In vom kritischste SPI Slave ADS1256 ist gem. Datenblatt von TI
>>mit einem 100 Ohm Serienwiderstand angesteuert.
>Edelpfusch die 2.

>Ich denke, die Leute von TI sollten es eigentlich wissen.

Sehr substantielles Argument? Bist du katholisch und papsttreu?

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.