Serienwiderstand für SPI-Bus (33 Ohm, 50 Ohm....)

Ich habe eine Frage zur SPI-Kommunikation. Ich habe gelernt, dass wir für die Anpassung einen 33- oder 50-Ohm-Serienwiderstand in MOSI/MISO-Leitungen platzieren und überschwingen sollten. Meine Frage ist, wie wir diese Werte finden könnten (33 oder 50 Ohm)?

Ich will es berechnen. Ich habe ein wenig Wissen über Übertragungsleitungen, aber ich sehe nie den Beweis.

Können Sie sagen, wie Sie es finden?

Ich denke, das hängt stark von der Geschwindigkeit ab, mit der du läufst. Ich vermute auch, dass Sie es auch auf SCLK brauchen würden, wenn Sie es auf MOSI und MISO machen müssten. Ich kann nicht sagen, dass ich das jemals tun musste, aber ich habe noch nie einen SPI-Bus mit 50 MHz betrieben.
Ja, du hast Recht. Auch bei SCLK. Ich habe vergessen
Nebenbei bemerkt, ich habe nicht gesehen, dass andere es erwähnt haben. Sie müssen den Vorwiderstand so nah wie möglich an der Signalquelle platzieren . Nicht in der Mitte des Leiters und nicht in der Nähe des Empfängers!

Antworten (2)

Vorschläge

Vorschläge wie, 100 nF auf die VCC legen oder 33 Ohm auf die Kommunikationsleitung legen, basieren meistens nicht auf einem grundlegenden Verständnis dessen, was wirklich passiert. Das ist hauptsächlich der Grund, warum dir die "Lektion" geholfen hat und du im Grunde nichts gelernt hast.

Reflexion, Impedanztrimmung

Das Schalten eines Widerstands in Reihe oder parallel wirkt sich auf die Impedanz der Endpunkte (Ihr SPI-Master und SPI-Slave) aus, siehe . Dieser Widerstand hängt stark von der Umgebung ab, wie dem Wellenwiderstand auf der Leiterplatte und der Ausgangs-/Eingangsimpedanz. Wenn die Impedanz falsch angepasst ist, zeigen sich einige unangenehme Effekte auf Ihrer Verbindung (Reflexion, Überschwingen).

Aber normalerweise ist eine SPI-Verbindung fast DC, da die Busgeschwindigkeit bei den niedrigeren MHz liegt.

Da der SPI-Bus Impulse für Daten und Takt enthält, haben diese scharfe Flanken, die Frequenzen verursachen, die sogar über Ihrer Taktrate liegen.

(Siehe: https://en.wikipedia.org/wiki/Square_wave#Fourier_analysis )

Scharfe Flanken führen zu kurzen Anstiegszeiten, was zu hohen Frequenzen führt, die die oben erwähnten Probleme verursachen.

Als Faustregel:

Diese (übergeordneten) Probleme sind Ihnen egal, wenn die Länge des SPI-Busses kleiner als die kritische Länge ist:

l C R ich T 3 C M T R ich S e

[Anstiegszeit in Nanosekunden]

Um auf deine Frage zurückzukommen

Wenn Sie einen Widerstand an eine typische SPI-Verbindung anschließen, müssen Sie sich nicht um die Wellenimpedanz kümmern, aber Sie müssen die Transienten beseitigen, die von den scharfen Kanten kommen, und der Widerstand hilft, sie zu glätten.

Der SPI-Master muss die Eingangskapazität an den Empfängern aufladen und bei einer höheren Impedanz auf den Busleitungen erhalten Sie eine Lastkurve. Es ist wie ein RC-Tiefpassfilter, der den Widerstand liefert.

Nun, welches R soll ich wählen?

Um den richtigen Widerstand auszuwählen, schauen Sie sich die Kapazität Ihres Busses an. Wenn Sie es nicht aus Datenblättern bekommen können, müssen Sie Ihren SPI-Bus messen. Was Sie wollen, ist zumindest ein stabiler Signalpegel auf der Datenleitung bei der steigenden Flanke (oder fallenden Flanke [abhängig von Ihrem SPI-Modus]) der Uhr. Fast jeder IC mit SPI-Schnittstelle gibt die maximale Anstiegszeit für den Takt an. Sie können Ihr Setup also auf dieses Niveau "trimmen".

Dafür ist es ein guter Ausgangspunkt, mit 33 Ohm zu beginnen.

Meine Absicht war es, Ihnen zu sagen, was auf der Leitung passiert, wenn Sie einen Widerstand darauf setzen.

Betreff: " Sie kümmern sich [...], wenn die Länge des SPI-Busses kleiner als die kritische Länge ist " Sollte das nicht so sein, dass es Ihnen beim kurzen SPI-Bus egal ist, da er normalerweise nicht behandelt werden muss als Übertragungsleitung in diesem Fall?
Das interessiert mich, weil ich normalerweise 100 nF auf VCC setze ... Und ich versuche zu wissen, warum das so ist. Woher hast du die kritische Länge genommen? Wenn ich 100 ns als maximale Anstiegszeit habe, wie kann ich meinen Widerstand wählen?
100nF waren die ersten geeigneten Keramikkondensatoren auf dem Markt. Da kommt es her. In unseren Anwendungen verwenden wir meistens 1µF-Keramik, weil sie billig ist, einen niedrigen ESR hat und Spitzenstrom für Logikkomponenten liefern kann. Tau ist R*C auf einem einfachen RC-Tiefpass. Die Anstiegszeit beträgt etwa das 2,2-fache von Tau. Ich hoffe, das hilft
Ich habe nach dem 2,2 * tau gefragt. Kommt es von V(t)=V0(1-exp(-t/tau)). Von 10 % bis 90 % Anstiegszeit haben wir ln(0,9) – ln(0,1) = 2,197 ? tr = 2,2 * RC mit R, dem gesuchten Wert, der Ausgangskapazität und tr der maximalen Anstiegszeituhr?
C die Gesamtkapazität
Wann soll ich diese Gesamtkapazität sehen? Wenn es eine Kommunikation zwischen einem Master und einem Slave gibt, füge ich die Master-Ausgangskapazität + Slave-Eingangskapazität hinzu?

Die allgemeine Idee ist, dass der Bus eine bestimmte charakteristische Impedanz hat, typischerweise im Bereich von 50–70 Ω, aber die Ausgangsimpedanz des Treibers ist normalerweise viel niedriger, eher 15–30 Ω.

Der Reihenwiderstand wird so gewählt, dass er die gesamte Quellenimpedanz an die des Busses anpasst, um Reflexionen an diesem Ende zu eliminieren.

Da Sie beide Impedanzen häufig nicht sehr genau kennen, ist möglicherweise ein gewisser Versuch und Irrtum erforderlich, um den besten Abschlusswert zu finden.

Also wenn ich mich nicht irre: Z_line = 50-70Ω Z_Output = 15-30Ω. Z_R_addiert = 50-70 Ω - 15-30 Ω. Z_R_added =55-20Ω Richtig?