Hallo, folgendes Problem. Ich möchte an einem AVR32 AP7 an einem SPI Bus bis zu 8 Teilnehmer anhängen. Der Controller braucht für den Übergang von 0V auf 3.3V an einem SPI Pin. ca. 1ns. Nach allem was ich bis jetzt über Wellenwiderstände und Leistungsanpassung gelesen habe komme ich schon bei unter 5 cm Leitungslänge in den kritischen Bereich. Da ich nicht glaube, dass ich die 8 Endpunkt auf diese Länge anschließen kann sind wohl Abschlusswiderstände angesagt. Was ich auch schon herausgefunden habe ist, dass eine Serienanpassung (also einfach einen Serienwiderstand nach dem Treiber) wohl eher für Punkt-zu-Punkt geeignet ist. Ich habe ja aber eine eins-zu-viele Kommunikation. Also wäre vielleicht ein Abschluss mit Thevenin-Terminierung sinnvoll? Und genau hier kommt mein Problem. Ich lese immer nur, dass die Parallelschaltung der beiden Widerstände dem Leitungswiderstand entsprechen muss. Z = R1 || R2 (R1 -> Pull-Up, R2 -> Pull-Down) Aber wie lege ich die beiden Widerstände aus. Muss es R1 = R2 = 2*Z sein? Oder kann ich das Verhältnis wählen wie ich lustig bin hauptsache die oben genannte Bedingung ist erfüllt? Hierbei kommen wir zur nächsten Problematik. Mein Controller kann max 8mA über einen Port liefern, was ja bedeutet, dass ich ihn nicht mit einem Widerstand kleiner 450 Ohm belasten sollte. Das würde ja bedeutet, dass mein R2 auf diesen Wert schon festgelegt ist. Das zugehörige R1 wären ca. 90 Ohm (bei Z = 75 Ohm). Liege ich mit meinen Berechnungen richtig oder habe ich etwas übersehen? Mein letztes Problem ist die MISO Leitung. Wie schließe ich eine viele-zu-eins Kommunikation ab? Und wo sollte dieser Abschluss auf dem Layout platziert werden. Schon im Vorraus vielen Dank.
Aus Wellenwiderstand: >Wenn eine elektrische Leitung als lang betrachtet werden muß, >dann treten Reflexionen auf. >: >Eine Leitung ist dann als elektrisch lang zu betrachten, >wenn die einfache >Laufzeit der Leitung grösser als >ca. 1/6 der minimalen Anstiegszeit der Signale ist. Sorg doch einfach dafür, dass du keine "elektrisch lange" Leitung hast, indem du die Anstiegszeit mit einem Serienwiderstand an den schnellen Ausgangspins reduzierst. Geht natürlich nicht, wenn du deinen SPI mit 500MHz fahren willst :-)
Ich gleichen Text steht aber auch drin, dass man diese Serienterminierung nur bei 1:1 Verbindungen benutzen soll.
Tobi G. wrote: > Mein letztes Problem ist die MISO Leitung. Wie schließe ich eine > viele-zu-eins Kommunikation ab? Sind die SPI-Slaves genauso fix auf der Flanke wie der Controller? Wenn nicht, stellt sich das Problem nicht.
Stimmt die Slaves sind sehr viel langsamer. D.h. es ist wirklich kein Problem. Und ich glaube ich habe mittlerweile auch die Einwende von Mr. Miller verstanden: Ich bin nicht darauf angewiesen, dass ich Flanken von 1ns hinbekomme. Wenn ich das richtig verstanden habe kann ich sogar einen sehr viel zu großen Widerstand benützen (z.B. 100 Ohm) und alles was passiert ist, dass meine Flanke langsamer wird. Oder handle ich mir da andere Probleme ein? Vielen Danke für die Hilfe.
MOSI ist auch unwichtig, weil da nur der Zustand zählt. Bei CS hängt es vom Slave ab, manche finden die Flanke interessant, andere nicht. Beim Takt ist wichtig, dass die Flanke durch Reflexionen nicht soweit beschädigt wird, dass aus einem Takt auch mal zwei werden. Wird dessen Flanke durch R/C entsprechend gebremst, dann passiert das nicht. Da kann also auch ein kleiner C helfen.
>Ich gleichen Text steht aber auch drin, dass man diese >Serienterminierung nur bei 1:1 Verbindungen benutzen soll. Schon, aber das gilt ja wieder nur, wenn ich eine "elektrisch lange" Leitung habe. Mit dem von mir vorgeschlagenen Serienwiderstand mache ich keine Serienterminierung, sondern erhöhe nur den Ausgangswiderstand des betreffenden Treibers. Ich reduziere damit die Flankensteilheit des Signals und erzeuge mir so eine "elektrisch lange" Leitung gemäß der Definition. >...dass aus einem Takt auch mal zwei werden.... Reflexionen erkennt man i.A. nicht an doppelten Takten, sondern an verzerrten Signalen (Überschwinger, Klingeln...), und zwar abhängig von der Position des Messpunktes.
lkmiller wrote: >>...dass aus einem Takt auch mal zwei werden.... > Reflexionen erkennt man i.A. nicht an doppelten Takten, > sondern an verzerrten Signalen (Überschwinger, Klingeln...), > und zwar abhängig von der Position des Messpunktes. Dass daraus keine 2 sauber getrennten Taktimpulse werden ist klar. Und solange diese Effekte die Erkennung der Taktflanke nicht beeinträchtigen sind die ja erst einmal kein Problem. Wenn aber die Verzerrung so übel wird, dass die Flankenerkennung beim Empfänger auf eine Flanke zweimal anspricht (beispielsweise weil das Signal auf halben Anstieg kurz Pause macht), oder ähnlichen Mist baut, dann schon.
@Tobi G. (Gast) >Thevenin-Terminierung sinnvoll? Und genau hier kommt mein Problem. Ich Ja. >Z = R1 || R2 >Aber wie lege ich die beiden Widerstände aus. Muss es R1 = R2 = 2*Z >sein? Ja. > Oder kann ich das Verhältnis wählen wie ich lustig bin hauptsache >die oben genannte Bedingung ist erfüllt? Nicht wirklich. >Hierbei kommen wir zur nächsten Problematik. Mein Controller kann max >8mA über einen Port liefern, was ja bedeutet, dass ich ihn nicht mit >einem Widerstand kleiner 450 Ohm belasten sollte. Das würde ja bedeutet, >dass mein R2 auf diesen Wert schon festgelegt ist. Das zugehörige R1 >wären ca. 90 Ohm (bei Z = 75 Ohm). Dann nimm AC-Terminierung. Ist hier besser. >Liege ich mit meinen Berechnungen richtig Ja. > oder habe ich etwas übersehen? Nein. >Mein letztes Problem ist die MISO Leitung. Wie schließe ich eine >viele-zu-eins Kommunikation ab? Und wo sollte dieser Abschluss auf dem >Layout platziert werden. Kritsch ist eigentlich nur die SCK und ggf. die CS Leitungen. MISO und MOSI werden abgetastet, da kann man mit ein paar Reflexionen für ein paar Nanosekunden leben. @ Lothar Miller (lkmiller) >Sorg doch einfach dafür, dass du keine "elektrisch lange" Leitung hast, Leichter gesagt als getan. >indem du die Anstiegszeit mit einem Serienwiderstand an den schnellen >Ausgangspins reduzierst. Das verlängert NICHT die Anstiegszeit, es macht eine Fehlanpassung. Sieht auf dem Scope ähnlich aus, ist aber was anderes. @ Andreas Kaiser (a-k) >Sind die SPI-Slaves genauso fix auf der Flanke wie der Controller? Wenn >nicht, stellt sich das Problem nicht. Irrtum! Die Ics sind meist EINIGES schneller als die Datenblattspezifikation. D.H. ein SPI-Slave, der nur 10 MHz offiziell verkraftet reagiert durchaus auch auf einen 20ns breiten Taktpuls. >hinbekomme. Wenn ich das richtig verstanden habe kann ich sogar einen >sehr viel zu großen Widerstand benützen (z.B. 100 Ohm) und alles was >passiert ist, dass meine Flanke langsamer wird. Jain. > Oder handle ich mir da andere Probleme ein? Jain. ;-) @ Andreas Kaiser (a-k) >Flanke durch R/C entsprechend gebremst, dann passiert das nicht. Da kann >also auch ein kleiner C helfen. AUA! Cs an Taktleitungen, wir wollen das junge Talent doch nicht gleich mit solchen bösen Murkslösungen verderben. Ein saubere Lösung wäre, einen LANGSAMEN Treiber direkt hinter den SCK Ausgang zu setzen, z.B. einen 74HC04. Das invertieren kann amn dur Wahl des entsprechenden SPI-Modus kompensieren. @ lkmiller (Gast) >betreffenden Treibers. Ich reduziere damit die Flankensteilheit >des Signals Jain. > und erzeuge mir so eine "elektrisch lange" Leitung >gemäß der Definition. Nein, es ist ein Fehlanpassung, hier Überterminierung (R_A>Z). MFG Falk
@ Falk >>indem du die Anstiegszeit mit einem Serienwiderstand an den schnellen >>Ausgangspins reduzierst. >Das verlängert NICHT die Anstiegszeit, es macht eine Fehlanpassung. >Sieht auf dem Scope ähnlich aus, ist aber was anderes. Aber wie würde es denn aussehen, wenn der Widerstand jetzt nicht von mir eingelötet, sondern vom Chip-Hersteller als Kanalwiderstand in den Ausgangs-FETs mit eingebaut wäre? Im Datenblatt des ICs sehe ich bei größeren Kanalwiderständen, bezogen auf irgendeine vom Hersteller definierte und dokumentierte Referenzlast, eine größere Anstiegs+Abfallzeit. Wenn ich mit dieser reduzierten Flankensteilheit jetzt eine "elektrisch lange" Leitung anfahre, wäre ich ja wieder fein raus, oder habe ich dann automatisch eine Fehlanpassung? Interpretiere ich die Kernaussage zum Thema Terminierung und Anpassung richtig: Jede Leitung muss terminiert werden Aber wenn es im speziellen Fall keine Probleme macht, kann die Terminierung weggelassen werden ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.