Forum: Mikrocontroller und Digitale Elektronik SPI AC Terminierung


von Jay K. (deeplyembedded)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe einen SPI Bus am STM32F4 mit 21Mhz am laufen.
Der Slave ist über ein ca 40cm langes Flachbandkabel angebunden. Die 
ganzen SPI Signale habe ich jeweils zwischen zwei Massebahnen im 
Flachbandkabel gelegt.
Für die Terminierung habe ich eine AC-Terminierung vorgesehen.
Aktuell mit 100Ohm und 22pf.
Eine Messung an der Clock-Leitung findet sich im Anhang.

Nun die Frage: Bekommt man diese Überschwinger mit einem kleineren 
Widerstand weg, oder größerer C?
Tendenziell würde ich auf einen kleineren Widerstand gehen, da R's in 
feineren und präziseren Schritten als C's verfügbar sind?

Danke und Gruß

von Falk B. (falk)


Lesenswert?

@Jay Kay (deeplyembedded)

>Der Slave ist über ein ca 40cm langes Flachbandkabel angebunden. Die
>ganzen SPI Signale habe ich jeweils zwischen zwei Massebahnen im
>Flachbandkabel gelegt.

Sehr gut. Sind die Masse auch an beiden Steckern angeschlossen?

>Für die Terminierung habe ich eine AC-Terminierung vorgesehen.
>Aktuell mit 100Ohm und 22pf.
>Eine Messung an der Clock-Leitung findet sich im Anhang.

Hmm.

>Nun die Frage: Bekommt man diese Überschwinger mit einem kleineren
>Widerstand weg, oder größerer C?

Wie hast du GENAU gemessen? Hast du eine KURZE Masseverbidung am 
Tastkopf gehabt? Damit meine ich <20mm.

>Tendenziell würde ich auf einen kleineren Widerstand gehen, da R's in
>feineren und präziseren Schritten als C's verfügbar sind?

Das ist nicht das Problem.

Welche Bandbreite hat dein Oszi und dein Tastkopf? Mit der 10:1 Dämpfung 
gemessen?

Wenn es exakt nur EINEN SPI-Empfänger gibt, ist Serienterminierung meist 
besser.

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


Lesenswert?

Jay K. schrieb:
> Nun die Frage: Bekommt man diese Überschwinger
Zeig mal den Messaufbau, das sieht nach Artefakt aus...

Falk B. schrieb:
>> Nun die Frage: Bekommt man diese Überschwinger mit einem kleineren
>>>Widerstand weg, oder größerer C?
> Wie hast du GENAU gemessen?
Und Wo?

Falk B. schrieb:
> nur EINEN SPI-Empfänger gibt, ist Serienterminierung meist besser.
Und einfacher...
Siehe dazu auch den Beitrag "Re: Signalproblem bei langem Kabel"

von Jay K. (deeplyembedded)


Angehängte Dateien:

Lesenswert?

Hallo Falk und Lothar,

vielen Dank für das Feedback.
Den Messaufbau bzw. das Equipment hätte ich etwas genauer beschreiben 
sollen, sorry dafür.

Gemessen wurde mit einem Rigol DS1054Z, mit 100Mhz Hack.
Tastköpfe waren beim Oszi dabei, die Bezeichung lautet RP2200. Gemessen 
habe ich mit dem 10:1 Teiler, da haben sie 16 oder 17pF..das ist schon 
ziemlich viel kapazitive Last, die da bei einer Messung zusätzlich zum 
22pF Kondensator dazu kommt. Für die Masseanbindung wurde die 
Groundspring verwendet. Abgegriffen wurde an den roten Markierungen im 
Bild.

Für den Aufbau hab ich mal ein Bild vom Display und der Platine 
angehägt. Masse ist auf beiden Steckerseiten angeschlossen. Die 
Display-Platine ist bereits gelayoutet, das STM Board noch provisorisch 
aufgebaut.
Dort einen Serien-R im späteren Layout einzufügen sollte also kein 
Problem sein. Das Display wird der einzige Slave an diesem SPI- Port 
sein.

@ Lothar:
Das Bild in den Beitrag ist sehr interessant. Dort ist ein deutliches 
Schwingen zu erkennen. Das ist bei mir so nicht zu sehen? Ich tippe 
langsam auf das Oszi/den Tastkopf als Quelle des Übels...

von Falk B. (falk)


Lesenswert?

@Jay Kay (deeplyembedded)

>Gemessen wurde mit einem Rigol DS1054Z, mit 100Mhz Hack.

Ohje ;-)

>Tastköpfe waren beim Oszi dabei, die Bezeichung lautet RP2200. Gemessen
>habe ich mit dem 10:1 Teiler, da haben sie 16 oder 17pF..das ist schon
>ziemlich viel kapazitive Last, die da bei einer Messung zusätzlich zum
>22pF Kondensator dazu kommt.

Eben.

>Schwingen zu erkennen. Das ist bei mir so nicht zu sehen? Ich tippe
>langsam auf das Oszi/den Tastkopf als Quelle des Übels...

Miss doch einfach mal mit deinem Oszi an einem normalen Prozessorpin 
ohne Leitung. Dort muss ein sauberer Puls mit sauberen Flanken 
rauskommen. Wenn nicht, hast du ein Meßproblem.

von Jay K. (deeplyembedded)



Lesenswert?

Hi Falk,

hab eben mal drei Messungen gemacht:

1. Direkt am µC Pin mit angeschlossenem Display (mc_direct_with_disp)

2. Direkt am µC Pin ohne Display aber mit angeschlossenem Flachbandkabel 
(mc_direct_wo_disp)

3. Direkt am µC Pin ohne Display und ohne Kabel (mc_direct_wo_cable)


Nummer 3 sieht so schlecht gar nicht aus, oder?

Bevor ich jetzt wild das C und R tauschen anfange, wäre vielleicht ein 
kapazitätsärmerer Tastkopf angebracht?

Danke und Gruß

von Falk B. (falk)


Lesenswert?

@Jay Kay (deeplyembedded)

>Nummer 3 sieht so schlecht gar nicht aus, oder?

Für so eine Billiggurke mit 100MHz Hack ist es OK.

>Bevor ich jetzt wild das C und R tauschen anfange, wäre vielleicht ein
>kapazitätsärmerer Tastkopf angebracht?

Kann man machen. Ein Z0 Tastkopf mit 1K Eingangswiderstand ist schnell 
gebaut. Man nehme 1m RG174 mit BNC-Stecker und löte 1k Vorwiderstand an. 
Am Oszi braucht man eine 50 Ohm Terminierung, es reicht ein T-Stück + 50 
Ohm Terminator.

http://signalintegrity.com/Pubs/straight/probes.htm

Der Klassiker.

von Jay K. (deeplyembedded)


Lesenswert?

Falk B. schrieb:
> Für so eine Billiggurke mit 100MHz Hack ist es OK.

^^

Okay dann werd ich so einen z0 Kopf mal bauen. Vielen Dank für den 
Hinweis, kannte ich bisher noch nicht.

Variiert man dann tendenziell eher den C oder den R bei einer 
AC-Terminierung?

Danke und Gruß

von Falk B. (falk)


Lesenswert?

@Jay Kay (deeplyembedded)

>Variiert man dann tendenziell eher den C oder den R bei einer
>AC-Terminierung?

Beides. Der Widerstand muss gut zum Wellenwiderstand passen. Der C 
muss je nach Signaltyp eher klein sein.

https://www.mikrocontroller.net/articles/Wellenwiderstand#AC-Terminierung

von Helmut S. (helmuts)


Lesenswert?

Viel besser wäre es direkt am Sender (oder wenigstens) an der 
Übergangsstelle zum Kabel) einen Serienwiderstand von z.B. 33Ohm 
vorzusehen. Damit kommt man zusammen mit dem Innewiderstand des Senders 
auf den Wellenwiderstand der Leitung im Kabel. Damit verschwinden die 
Überschwinger am Leitungsende komplett.

: Bearbeitet durch User
von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Jay K. schrieb:
> Variiert man dann tendenziell eher den C oder den R bei einer
> AC-Terminierung?

Na in deinem Fall wird der C schon von der Flanke "zu stark aufgeladen" 
und nicht erst vom "DC-Anteil des Signals". Aber mit einer Verschiebung 
des Bezugspotentials während der Bitzeit musst du bei AC-Terminierung 
immer rechnen (außer bei Sonderfällen wie gleichanteilsfrei codierten 
Signalen, bei denen du dir riesige Terminierungskondensatoren erlauben 
kannst, die sich auf die mittlere Signalspannung einstellen).

Deshalb wirst du das "schönere Rechteck" in dieser Anwendung mit der 
Serienterminierung erhalten, die schon mehrfach empfohlen wurde.

Jay K. schrieb:
> Okay dann werd ich so einen z0 Kopf mal bauen.

Ist zwar ok, aber mit dem 100MHz-Oszi wirst du "echte" Reflektionen bei 
der Leitungslänge trotzdem nicht vernünftig messen können (die 
Anstiegszeit des Oszis ist >3ns, die Laufzeit auf dem Kabel liegt 
darunter). Als Ergänzung, die mit diesen Beschränkungen nicht zu kämpfen 
hat, bietet sich eine Simu an (siehe Anhang).

von Jay K. (deeplyembedded)


Lesenswert?

Okay dann nehm ich die Serienterminierung mal als Option für das Layout 
der Hauptplatine mit. Ich dachte eigentlich dass eine AC Terminierung 
"sauberer" wäre, da sie nicht bewusst mit Reflexionen arbeitet, so wie 
die Serienterminierung.

Das mit der Simulation ist auch ein guter Hinweis, Danke dafür!
Ich werde mal einen z0 Kopf aufbauen (schon allein um das Ergebnis nicht 
durch parasitäre Kapazität zu verfälschen) und ein bisschen mit den C's 
und R's rumspielen...wenn mir das nicht taugt, kommt eben eine 
Serienterminierung.

Danke an alle Beteiligten :)

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.