Hallo Leute, ich habe hier einen STM32F407VGT6. Dieser steuert eine ganze Reihe von 74HC595 und HC165 über SPI an. Der Abstand zwischen den Shitregistern beträgt ca 5-6cm. Die Clock-Leiterbahnen sind entsprechend lang. Ich hab es noch nicht nachgemessen, schätze aber auf locker 40-50cm. Nun hab ich zwei Fragen: 1.) Ist es nötig, die Signale ab einer bestimmten Länge zu buffern bzw in einen Line Driver zu packen? 2.) Ich habe den ganzen Tag zig Dokumente zum Thema Termination von Reflektionen gelesen. Allerdings gibt es hier scheinbar nur eine klare Lösung bei Punkt-zu-Punkt Verdrahtungen. Aber sobald mehrere Empfänger / Loads vorhanden, gibt es keine konkrete Aussage. Wie gehe ich vor wenn ich in meinem Fall Reflexionen mindern oder gar auslöschen möchte? Ist dieses Thema für mich hier überhaupt relevant? Freue mich über eure Antworten. Liebe Grüße, Christian
Christian schrieb: > 1.) Ist es nötig, die Signale ab einer bestimmten Länge zu buffern bzw > in einen Line Driver zu packen? Ja, und je schneller die Logik ist, desto früher. Man kann einen kräftigen Buffer nehmen, quellseitig serienterminieren und da zwei oder ev. drei separate Leitungen wegführen. Man kann auch vor jedem Empfänger einen einfachen Buffer legen, mit kurzer Leitung den eigentlichen Empfangsbaustein anfahren und über einen Serienwiderstand die nächste entfernter liegende Gruppe. > 2.) Ich habe den ganzen Tag zig Dokumente zum Thema Termination von > Reflektionen gelesen. Allerdings gibt es hier scheinbar nur eine klare > Lösung bei Punkt-zu-Punkt Verdrahtungen. Korrekt. > Aber sobald mehrere Empfänger / > Loads vorhanden, gibt es keine konkrete Aussage. Wie gehe ich vor wenn > ich in meinem Fall Reflexionen mindern oder gar auslöschen möchte? Ist > dieses Thema für mich hier überhaupt relevant? Das geht nur zuverlässig, wenn du beidseitige Anpassung machen kannst - üblicherweise bei normalen Logikbausteinen nicht, weil dadurch der Signalpegel halbiert wird.
@ Christian (Gast) >Die Clock-Leiterbahnen sind entsprechend lang. Ich hab es noch nicht >nachgemessen, schätze aber auf locker 40-50cm. Ganz schön lang. >1.) Ist es nötig, die Signale ab einer bestimmten Länge zu buffern bzw >in einen Line Driver zu packen? Ja. >2.) Ich habe den ganzen Tag zig Dokumente zum Thema Termination von >Reflektionen gelesen. Allerdings gibt es hier scheinbar nur eine klare >Lösung bei Punkt-zu-Punkt Verdrahtungen. Nein. > Aber sobald mehrere Empfänger / >Loads vorhanden, gibt es keine konkrete Aussage. Aber sicher. > Wie gehe ich vor wenn >ich in meinem Fall Reflexionen mindern oder gar auslöschen möchte? Z.B. so. Beitrag "Re: Skurriles Problem mit BS170 Mosfets" Siehe auch Wellenwiderstand > Ist dieses Thema für mich hier überhaupt relevant? Ja.
Christian schrieb: > Ist dieses Thema für mich hier überhaupt relevant? Jain. Wie schnell willst Du denn überhaupt takten? Je langsamer Du die Ausgänge des STM einstellst, desto geringer sind die zu erwartenden Störungen. Ich würde für die ausgangsseitigen Leitungen insbesondere Clock und Strobe einen kleinen Serienwiderstand vorsehen. Treiber sind nicht erforderlich.
m.n. schrieb: > Ich würde für die ausgangsseitigen Leitungen insbesondere Clock und > Strobe einen kleinen Serienwiderstand vorsehen. Treiber sind nicht > erforderlich. Wenn du eine quellseitige Serienterminierung machst, dann sind Abgriffe nur am Ende der Leitung sinnvoll. Dazwischen ist das Signal viel schlechter, nein: unbrauchbar!
@ m.n. (Gast) >> Ist dieses Thema für mich hier überhaupt relevant? >Jain. Falsch. Es IST relevant. >Wie schnell willst Du denn überhaupt takten? Wobei "schnell" hier die Flankensteilheit meint, NICHT die Frequenz! > Je langsamer Du die >Ausgänge des STM einstellst, desto geringer sind die zu erwartenden >Störungen. Ich würde vermuten, daß auch in der langsamsten Einstellung die Ausgänge immer noch zu schnell schalten.
@HildeK (Gast) >> Ich würde für die ausgangsseitigen Leitungen insbesondere Clock und >> Strobe einen kleinen Serienwiderstand vorsehen. Treiber sind nicht >> erforderlich. >Wenn du eine quellseitige Serienterminierung machst, dann sind Abgriffe >nur am Ende der Leitung sinnvoll. Dazwischen ist das Signal viel >schlechter, nein: unbrauchbar! Eben. Takte können nur bei reinen Punkt-zu-Punkt Verbindungen (Ein Sender und ein Empfänger) mit Serienterminierung betrieben werden. Beitrag "Re: Differnz-Signal für WS2812B"
Falk B. schrieb: > @ m.n. (Gast) > >>> Ist dieses Thema für mich hier überhaupt relevant? > >>Jain. > > Falsch. Es IST relevant. Falsch. Es ist nicht unbedingt relevant. >>Wie schnell willst Du denn überhaupt takten? > > Wobei "schnell" hier die Flankensteilheit meint, NICHT die Frequenz! Falsch. Wenn man mit 20 MHz takten will, dann kann man keine Anstiegszeiten von 1 V/µs verwenden. >> Je langsamer Du die >>Ausgänge des STM einstellst, desto geringer sind die zu erwartenden >>Störungen. > > Ich würde vermuten, daß auch in der langsamsten Einstellung die Ausgänge > immer noch zu schnell schalten. Welche Taktfrequenz verwendet werden soll, ist nicht bekannt. Vermutungen helfen hier nicht weiter. HildeK schrieb: > Wenn du eine quellseitige Serienterminierung machst, dann sind Abgriffe > nur am Ende der Leitung sinnvoll. Dazwischen ist das Signal viel > schlechter, nein: unbrauchbar! Es geht hier um 50 cm und nicht um 100 m. Deshalb geht es auch garnicht um eine perfekte Serienterminierung, sondern darum, in Verbindung mit den einzelnen Lastkapazitäten die Anstiegszeit von Clock/Strobe zu begrenzen. Aber gut, der hiesige Lieblingssport ist ja, Mücken auf Elefantengröße aufzupusten. Da fehlt jetzt nur noch der Vorschlag, die Daten per Glasfaser zu übertragen ;-)
@ m.n. (Gast) >>>> Ist dieses Thema für mich hier überhaupt relevant? > >>>Jain. > >> Falsch. Es IST relevant. >Falsch. Es ist nicht unbedingt relevant. Jaja. >> Wobei "schnell" hier die Flankensteilheit meint, NICHT die Frequenz! >Falsch. Wenn man mit 20 MHz takten will, dann kann man keine >Anstiegszeiten von 1 V/µs verwenden. Wer redet davon? Mal ganz abgesehen davon, daß es keinen uC gibt, dessen Ausgänge so langsam schalten können. >> Ich würde vermuten, daß auch in der langsamsten Einstellung die Ausgänge >> immer noch zu schnell schalten. >Welche Taktfrequenz verwendet werden soll, ist nicht bekannt. >Vermutungen helfen hier nicht weiter. Du willst es nicht kapieren. Das beweist du immer wieder. >> Wenn du eine quellseitige Serienterminierung machst, dann sind Abgriffe >> nur am Ende der Leitung sinnvoll. Dazwischen ist das Signal viel >> schlechter, nein: unbrauchbar! >Es geht hier um 50 cm und nicht um 100 m. Es ist trotzdem Murks! > Deshalb geht es auch garnicht >um eine perfekte Serienterminierung, sondern darum, in Verbindung mit >den einzelnen Lastkapazitäten die Anstiegszeit von Clock/Strobe zu >begrenzen. Nö.
m.n. schrieb: > Es geht hier um 50 cm und nicht um 100 m. So lang waren früher die 40-poligen ATA-Kabel und da gings auch mit Megahertzen zur Sache. MfG Klaus
Nun denn... es wurde mal wieder viel geredet und wenig gesagt.... Ich habe mir die Links angesehen, die hier von einigen Usern gepostet wurden. Serienterminierung fällt definitiv raus, aber das war vorher ja schon klar. Bisher scheint die Thevenin-Terminierung die Lösung zu sein. Falls ich falsch liege, bitte korrigiert mich... aber konstruktiv und nicht wie O.K. (Gast). Das bringt keinem was. Ich habe die Clock-Lines nun erstmal in einen 74HCT541 gepackt (gibt es Alternativen mit kleinerem Footprint?) und anschließend an die HC595 geschickt. Vor dem letzten 595 würde ich die Thevenin-Terminierung einsetzen oder müsste die vor jedem Empfänger eingesetzt werden? Google bringt mit den Stichworten "Thevenin termination multiple loads" leider keine Ergebnisse. Danke an alle, die mir konstruktiv helfen.
Wie hoch ist denn nun der Takt? Wenn deine Leitung kürzer ist als 1/16 Wellenlänge oder so ist es wahrscheinlich egal. Wie meist gilt auch hier: für eine Einzelinstallation daheim, einfach mal ausprobieren, wahrscheinlich geht es sowieso. Die ganzen strengen Regeln gelten vor allem dann, wenn du die Funktionalität für jedes von 10.000 gebauten Geräten für fünf Jahre gewährleisten musst ...
:
Bearbeitet durch User
@Christian (Gast) >Nun denn... es wurde mal wieder viel geredet und wenig gesagt.... Forentypisch >Bisher scheint die Thevenin-Terminierung die Lösung zu sein. Ja. >Ich habe die Clock-Lines nun erstmal in einen 74HCT541 gepackt (gibt es >Alternativen mit kleinerem Footprint?) 74HCT125 oder ähnlich. >geschickt. Vor dem letzten 595 würde ich die Thevenin-Terminierung >einsetzen Nein. Die Terminierung gehört EINMALIG nach dem letzten Empfänger ans physikalische Busende. > oder müsste die vor jedem Empfänger eingesetzt werden? NEIN! Die Empfänger müssen ohne Stichleitungen direkt an den Bus.
@Sven B. (scummos) >Wie hoch ist denn nun der Takt? Falsche Frage. Entscheidend ist die minimale Anstiegszeit, siehe Wellenwiderstand. >Wenn deine Leitung kürzer ist als 1/16 >Wellenlänge oder so ist es wahrscheinlich egal. Auch falsch. Siehe Artikel.
Falk B. schrieb: > @Sven B. (scummos) > >>Wie hoch ist denn nun der Takt? > > Falsche Frage. Entscheidend ist die minimale Anstiegszeit, siehe > Wellenwiderstand. > >>Wenn deine Leitung kürzer ist als 1/16 >>Wellenlänge oder so ist es wahrscheinlich egal. > > Auch falsch. Siehe Artikel. Falk, du hast mich doch schonmal hier gesehen, und mir ist klar, dass die Anstiegszeit auch relevant ist. Und weil irgendein Mensch aus irgendeiner Laune in den Artikel 1/6 geschrieben hat, heißt das nicht, dass mein 1/16 "falsch" ist. Ob du da 1/6 oder 1/16 sagst ist völlig wurscht, das ist eh eh nur eine grobe Faustregel. Der Takt ist natürlich entscheidend, denn wenn der Takt 10 Hz mit einer Flankensteilheit von 2 ns ist, die aber kein Bauteil braucht, für drei Meter Kabel, dann baust du halt einen RC-Tiefpass hin und alles ist gut.
Falk B. schrieb: > NEIN! Die Empfänger müssen ohne Stichleitungen direkt an den Bus. Wieso kann CAN dann bei 250 kbit/s mit Stichleitungen von 6m Länge funktionieren. Mit der Taktrate skaliert, entspräche das bei 20MHz etwa 75cm.
Wolfgang schrieb: > Falk B. schrieb: >> NEIN! Die Empfänger müssen ohne Stichleitungen direkt an den Bus. > > Wieso kann CAN dann bei 250 kbit/s mit Stichleitungen von 6m > Länge funktionieren. Mit der Taktrate skaliert, entspräche das > bei 20MHz etwa 75cm. Rechenfehler?! 250kHz / 20MHz = x / 6m x = 6m * 0.25MHz / 20MHz = 6m / 80 = 60cm / 8 = 7.5cm
Ich habe die Firmware nicht geschrieben, habe aber gerade in den Code geschaut. Wenn ich diesen richtig interpretiere, werden die SRIOs (Shiftregister In/Out) mit 2MHz geclockt.
Christian schrieb: > Danke an alle, die mir konstruktiv helfen. Deine fehlende Antwort auf die Frage nach der Geschwindikeit ist aber nicht konstruktiv. Christian schrieb: > Ich habe die Clock-Lines nun erstmal in einen 74HCT541 gepackt Auch das finde ich nicht konstruktiv.
@ Christian (Gast) >Wenn ich diesen richtig interpretiere, werden die SRIOs (Shiftregister >In/Out) mit 2MHz geclockt. AUA!!!!! "My english not the yellow from the egg but it goes." https://www.mypostcard.com/blog/top-10-denglisch-sprueche/
Falk B. schrieb: > "My english not the yellow from the egg but it goes." Der Klassiker: "You can say you to me."
Mein Gott! Hast du nichts Besseres zu tun? Ich wusste nicht, dass der Begriff noch eine andere Bedeutung hat. Ich nutze ihn für die oben genannte Abkürzung.
Sven B. schrieb: > dann baust du halt einen RC-Tiefpass hin und alles ist gut. Ok, wenn du die Zeitkonstante zu groß machst, dann verletzt du die Eingangsspezifikation deiner Bausteine. Machst du sie eher klein, dann wirkt der Kondensator des RC-Gliedes (ich nehme an, du willst es quellseitig setzten) für eine reflektierte Flanke - und die gibt es - wie ein Kurzschluss. Das hat zur Folge, dass dort wieder reflektiert wird. Wenn du Glück hast, dann gibt es zwischen den beiden Forderung noch einen passenden Schlitz, eine generelle Lösung ist das aber nicht. Alles schon erlebt (20kHz auf 30cm Leitung mit RC) und aus den Fehlern (in dem Fall von anderen) gelernt!
Christian schrieb: > Ich wusste nicht, dass der Begriff noch eine andere > Bedeutung hat. ??? Ich vermute, es ging Falk nur um das "geclockt". Man könnte nämlich ohne jedes Problem auch von "getaktet" sprechen...
@ Possetitjel (Gast) >Ich vermute, es ging Falk nur um das "geclockt". Man >könnte nämlich ohne jedes Problem auch von "getaktet" >sprechen... Eben. Das würde ich als überaus taktvoll betrachten ;-)
Ich würde das so lösen, wie im Anhang. Das ist sauber und vertretbar im Aufwand mit einem Buffer pro Teilnehmer. Die FFs sollen die einzelnen Busteilnehmer darstellen. Man kann auch das FF vor dem Buffer anschließen, wichtig ist dann nur, dass Buffer- und FF-Eingang ganz nahe beieinander sind. Der Bufferausgang geht dann über einen Serien-R weiter zum nächsten Block. (In LTSpice gezeichnet als Prinzipbild, da geht's am Schnellsten) Trotzdem kann man mit Thevenin einen Versuch wagen, das ist halt nur dann wirklich brauchbar, wenn die Bausteine trotzdem noch die notwenigen H/L-Pegel erhalten. Für die Standard-CMOS-Familien eher weniger, außer man hätte Leitungen mit hohem Z. Auch mit einer RC-Terminierung könnte man Erfolg haben - ich mag sie aber nicht sehr ... Beide Terminierungen nur ganz am Ende der Leitung. Voraussetzung: man speist nur am Anfang ein, nicht in der Mitte der Leitung!
Danke für deine Mühe und den Anhang. Das sieht super aus. Hast du eine Empfehlung für einen solchen Buffer?
@ HildeK (Gast) > Langer_Bus_mit_Abgriff.png >Ich würde das so lösen, wie im Anhang. Das ist sauber und vertretbar im >Aufwand mit einem Buffer pro Teilnehmer. Wozu? Wer sagt denn, daß Stichleitungen benötigt werden? >Trotzdem kann man mit Thevenin einen Versuch wagen, Nicht nur wagen, ERFOLGREICH nutzen! Mensch Leute, LEST ab und an mal die angebotenen Links. Das sind keine Schöneschreibeübungen! https://www.mikrocontroller.net/topic/goto_post/3220070 >H/L-Pegel erhalten. Für die Standard-CMOS-Familien eher weniger, außer >man hätte Leitungen mit hohem Z. FALSCH!
HildeK schrieb: > Ich würde das so lösen, wie im Anhang. Wäre mir entschieden zu aufwändig. > Trotzdem kann man mit Thevenin einen Versuch wagen, Naja, ich verstehe nicht so ganz, was dagegen spricht. Sicher, der Querstrom ist lästig, und bei offenem Eingang hat man undefinierten Pegel -- aber ansonsten? > das ist halt nur dann wirklich brauchbar, wenn die > Bausteine trotzdem noch die notwenigen H/L-Pegel erhalten. Naja, gerade das sollte ja bei 74HCxx kein so großes Drama sein. Nehmen wir mal 100 Ohm Wellenwiderstand für den Leiterzug an, dann werden die beiden Teilwiderstände im Abschluss jeweils 200 Ohm; macht bei 3.3V ungefähr 8mA Querstrom. Geht noch. Wenn man den Treiber auf ungefähr 50 Ohm Innenwiderstand bringt, sind die statischen Pegel bei 1/6 U_b und 5/6 U_b, das entspricht 0.55V bzw. 2.75V. Das fände ich auch vom Störabstand her in Ordnung. Der Treiber sieht eine Last von 150 Ohm gegen U_b/2, d.h. er muss ungefähr 12mA liefern. Geht auch noch. > Beide Terminierungen nur ganz am Ende der Leitung. > Voraussetzung: man speist nur am Anfang ein, nicht in der > Mitte der Leitung! Wenn man mittendrin einspeisen will, muss natürlich jedes Ende terminiert werden, und der Treiber muss doppelt soviel Strom liefern. Funktionieren muss auch das.
Falk B. schrieb: > Wozu? Wer sagt denn, daß Stichleitungen benötigt werden? Niemand, war nur der Vollständigkeit halber. Auch um nochmals klarzustellen, dass dort keine Stiche sein sollen. Possetitjel schrieb: > Naja, ich verstehe nicht so ganz, was dagegen spricht. > Sicher, der Querstrom ist lästig, und bei offenem Eingang > hat man undefinierten Pegel -- aber ansonsten? Dass die Last für den Treiber relativ groß ist, deshalb sagte ich ja: Leitungen mit hohem Z. Du bist ja auch mit 100R gestartet. Christian schrieb: > Hast du eine Empfehlung für einen solchen Buffer? Im Prinzip geht jedes CMOS-Gatter aus der Familie. Es sollt logischerweise nicht invertierend sein, also ein UND, ODER oder eben gleich ein 74xx125 - gibt es auch als Single Gate.
HildeK schrieb: > Sven B. schrieb: >> dann baust du halt einen RC-Tiefpass hin und alles ist gut. > > Ok, wenn du die Zeitkonstante zu groß machst, dann verletzt du die > Eingangsspezifikation deiner Bausteine. > Machst du sie eher klein, dann wirkt der Kondensator des RC-Gliedes (ich > nehme an, du willst es quellseitig setzten) für eine reflektierte Flanke > - und die gibt es - wie ein Kurzschluss. Das hat zur Folge, dass dort > wieder reflektiert wird. > > Wenn du Glück hast, dann gibt es zwischen den beiden Forderung noch > einen passenden Schlitz, eine generelle Lösung ist das aber nicht. Gefühlt gibt es da bei langsamen Takten so 2 Größenordnungen dazwischen, aber ok ... klar, eine generelle Lösung ist nichts.
@HildeK: Vielen Dank für deine Ausführungen! Das klingt doch sehr machbar und kann ich gut in das Design integrieren.
Und noch eine Frage: Die 74**165 tragen von der Gehäusegröße recht dick auf. Würde auch der SN74LVC1G34 gehen? Der ist schön klein.
Die 74HC595 können mit 30MHz getaktet werden, d.h sind sehr störempfindlich. Die 4000-er CMOS sind da schon viel unempfindlicher (max 1MHz bei 5V). Wenn möglich bei langen Leitungen (50cm) besser den MC14094 nehmen (nicht mit dem schnellen 74HC4094 verwechseln). Der Sendetakt spielt überhaupt keine Rolle, die Reflexionen sind bei 1kHz exakt gleich groß, wie bei 10Mhz.
Christian schrieb: > Der Serien-R sollte dann jedes Mal gleich dem Wellenwiderstand sein? Es gibt auch einen Ausgangswiderstand der CMOS-Bausteine. Die Differenz zum Wellenwiderstand ist dann der Wert des Widerstands. Hängt also ab von der CMOS-Familie und der Art der Leitung.
Peter D. schrieb: > Die 4000-er CMOS sind da schon viel unempfindlicher (max 1MHz bei 5V). > Wenn möglich bei langen Leitungen (50cm) besser den MC14094 nehmen > (nicht mit dem schnellen 74HC4094 verwechseln). Vielleicht hast Du mit Deinem Hinweis ja mehr Glück. Mir glaubt das ja keiner. Der Gegenpart zum 4094 wäre übrigens der CD4021. Hingegen ist es wohl richtig 'cool', durch ns-schnelle Treiber erst Störungen zu produzieren, die es zuvor nicht gegeben hat, und sich dann als Held feiern zu lassen, diese Störungen wieder zu beseitigen.
Christian schrieb: > Die 74**165 tragen von der Gehäusegröße recht dick auf. Würde auch der > SN74LVC1G34 gehen? Der ist schön klein. Ich meinte z.B. den **125, nicht **165. Das ist ein Schieberegister. Klar geht der xx34 auch - ich hatte den nur nicht im Kopf. Wenn ich es richtig in Erinnerung habe, ist dein Takt 2MHz. Dann sind die LVC eigentlich zu schnell und damit auch zu empfindlich auf Fehlreaktionen auf Störungen. Wenn du einen Single Gate Baustein aus der HC-Serie findest (einen HC1G125 gibt es jedenfalls bei Nexperia), dann ist das sinnvoller.
@HildeK (Gast) >Wenn ich es richtig in Erinnerung habe, ist dein Takt 2MHz. Dann sind >die LVC eigentlich zu schnell und damit auch zu empfindlich auf >Fehlreaktionen auf Störungen. Ach was? > Wenn du einen Single Gate Baustein aus der >HC-Serie findest (einen HC1G125 gibt es jedenfalls bei Nexperia), dann >ist das sinnvoller. Auch falsch. Der OP hat einen 3,V uC, mit dem er 5V Schieberegister treiben will. Also sollte es HCT sein, nicht HC. Gibt es auch als Einzelgatter. Aber all das ist schon fix und fertig angeboten und ignoriert worden.
Falk B. schrieb: > Der OP hat einen 3,V uC, mit dem er 5V Schieberegister Falsch. Der µC läuft auch mit 1,8 V und die Schieberegister auch mit 3 V. Soviel zu den konstruktiven Ausführungen des TO.
@ m.n. (Gast) >> Der OP hat einen 3,V uC, mit dem er 5V Schieberegister >Falsch. Der µC läuft auch mit 1,8 V und die Schieberegister auch mit 3 >V. Soso. Der läuft mit 1,8V IO-Spannung . . .
Falk B. schrieb: > Auch falsch. Der OP hat einen 3,V uC, mit dem er 5V Schieberegister > treiben will. Also sollte es HCT sein, nicht HC. Gibt es auch als > Einzelgatter. Wo schreibt er, dass er die HC595 und HC165 mit 5V betreibt? HC sind auch für 3.3V gut. Und selbst wenn: er braucht die Pegelwandlung nur einmal, am Ausgang seines µC.
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.