Hallo, ich habe ein SPI-Signal, welches ich auf 1meter Distanz übertragen möchte. Das Signal hat eine Frequenz von 20MHz und kommt leider nicht so an, wie ich es möchte. Es ist völlig krumm und der Logikpegel ist nicht 3.3V, wie er sein sollte. Gibt es eine möglichkeit, das signal auf ein sauberes 20MHz zu verstärken/filtern? Danke für zahlreiche vorschläge
Versuche mal mit verdrillten Leitungen und einem "High-Speed Differential Line Driver". Also im Prinzip wie bei USB. Zum Beispiel https://www.ti.com/lit/ds/symlink/sn65lvds1.pdf?ts=1652449890949&ref_url=https%253A%252F%252Fwww.google.com%252F
Stefan ⛄ F. schrieb: > Zum Beispiel > https://www.ti.com/lit/ds/symlink/sn65lvds1.pdf?ts=1652449890949&ref_url=https%253A%252F%252Fwww.google.com%252F Ob du das Datenblatt von den High-Speed Differential Treibern und Empfängern (SN65LVDS1, SN65LVDS2, SN65LVDT2) über Google oder sonst wie gefunden hast, interessiert doch eigentlich niemanden. Der Link auf die PDF-Datei würde völlig reichen ;-) https://www.ti.com/lit/ds/symlink/sn65lvds1.pdf
Z-Leitung, Serienterminierung, ordentliches Kabel mit guter Masse. Man muss es nicht unbedingt verstärken, wenn man die richtigen Komponenten und die richtige Beschaltung gewählt hat, dann ist ein Meter noch nicht unüberwindbar, auch mit einer Single-Ended-Leitung. Wie wäre es, wenn du die beteiligten Komponenten, deinen Aufbau und die Schaltung mal näher erläutern würdest, einschließlich einem Foto?
Manuel N. schrieb: > Das Signal hat eine Frequenz von 20MHz Wird nicht klappen, warum so hoch? Das Problem ist weniger die Frequenz, sondern die Durchlaufzeit. Der Master liefert SCK und will vor der nächsten Flanke rechtzeitig das MISO geliefert bekommen.
Manuel N. schrieb: > Es ist völlig krumm und der > Logikpegel ist nicht 3.3V, wie er sein sollte. Das sieht sehr nach Messfehler aus. Ist die Oszilloskop Masse angeschlossen? Wo misst du genau? Was ist das für ein Tastkopf? Wenn dein Tastkopf umstellbar ist, dann auf 10:1 einstellen. 20 MHz sollten über 1 m noch gut funktionieren, wichtig ist aber auch die Masseanbindung. Also die Masse muss eben mit verbunden sein und zwar in der Nähe der Signalleitung. Ich habe 20 MHz CMOS schon über 1 m über Flachbandkabel gemacht, also wie ein IDE Kabel und da jede zweite Ader auf Masse gelegt. Hat prima funktioniert. Am Empfänger muss aber vielleicht passend terminiert werden, ich hatte AC terminiert. HildeK schrieb: > Wie wäre es, wenn du die beteiligten Komponenten, deinen Aufbau und die > Schaltung mal näher erläutern würdest, einschließlich einem Foto? Ja das wäre sinnvoll, denn dann sieht man vermutlich auch wieso das so komisch auf dem Oszilloskop aussieht.
Ab eine gewissen Länge und Frequenz setzen wir differential Signale ein. Das läuft dann stabiler. Aktuell schon bei 16Mhz und 50cm Flachbandverbindung. Auf der gleichen Platine machen wir das nicht, aber sobald irgendein Kabel dazwischen ist, bringt es Vorteile.
Mögliche Ansätze: - Differenzielle Übertragung (z. B. LVDS). - (Halbwegs) definierte Leitungsimpedanz. Wenn wir von normaler CMOS-Logik ausgehen wird man Flankensteilheiten von ~1ns haben. Und da reicht es bei 1m Leitungslänge oft nicht mehr einfach irgendwie eine elektrische Verbindung herzustellen. Als ersten Versuch könnte man am Ende der Leitung mal eine RC-Terminierung vorsehen. Vielleicht reicht das schon. Eine andere Möglichkeit wäre es die Flankensteilheit mit einem Serienwiderstand am Anfang der Leitung zu begrenzen. Wobei man da bei 20 MHz vielleicht nicht mehr allzu viel Spielraum hat. Aber vielleicht reicht es auch hier schon die Flanken von ~1ns auf ~5ns zu verlängern.
Bei der Leitungslänge sind Reflexionen dominieren, nicht die Flankensteilheit.
Naja, woher kommen wohl die Reflexionen? Weil für die gegebene Leitungslänge bzw. für die vorhandenen Unregelmäßigkeiten im Wellenwiderstand der Leitung die Frequenzen zu groß sind, um Leitungseffekte vernachlässigen zu können. Und die hohen Frequenzen stecken bei digitalen Signalen nun mal in den Flanken.
P. S. schrieb: > Unregelmäßigkeiten im Wellenwiderstand Die größte Unregelmäßigkeit ist oft das andere Ende der Leitung wenn die nicht passend terminiert ist. Aber ja, da könnten noch mehr Probleme drinnen sein. Bis jetzt wissen wir nicht viel, es ist sogar noch möglich, dass das SPI gut aussieht (nur falsch gemessen wurde), aber ein Softwareproblem vorhanden ist.
Gustl B. schrieb: > Die größte Unregelmäßigkeit ist oft das andere Ende der Leitung wenn die > nicht passend terminiert ist. Deswegen ja auch mein Vorschlag (u. a.) einfach mal einen RC-Abschluss am Leitungsende zu versuchen. Eine undefinierte Leitung wird man so zwar nicht perfekt abschließen können, aber vielleicht ist es gut genug.
ich tippe auch auf einen Messfehler (Tastkopf). Darauf deuten der DC Offset und Pegel hin. Da sind einfach (für 20MHz) zu große Kapazitäten im Spiel. Ist das gezeigte Signal der SPI Clock? Wie sieht das Signal direkt am Clock Ausgang aus? Wie ist die Masseführung? Bedenke dass die Ausgänge nur begrenzt kap. Lasten treiben können.
Moin, Also die einen sagen so: Gustl B. schrieb: > 20 MHz sollten über 1 m noch gut funktionieren, wichtig ist aber auch > die Masseanbindung. Die anderen so: Peter D. schrieb: > Das Problem ist weniger die Frequenz, sondern die Durchlaufzeit. > Der Master liefert SCK und will vor der nächsten Flanke rechtzeitig das > MISO geliefert bekommen. Bei 20MHz hab' ich also eine Periodendauer von 1/20MHz = 50nsec. Eine halbe Periode (also von fallender zu steigender Flanke ist also hoechstens die Haelfte davon, also 25nsec. Wenns keine exakten 50% dutycycle im Clk sind, dann noch weniger. Und so'n Stueck Kabel mit Plastikisolierung aussenrum hat so ca. 2e8 m/s Ausbreitungsgeschwindigkeit, also ungefaher 2/3 von Strippe im Vakuum. Auf/in 'ner Platine geht's eher noch gemaechlicher, eher nichtmal 1.5e8 m/s. 2e8 m/sec x 25e-9 sec = 5m Also max. 5m hin und zurueck - sprich Laenge der Verbindung darf abs.max. 2.5m sein. Und jede Nanosekunde, die irgendwo verschuett' geht, sei es durch Setup&Holdzeiten, Flankensteilheit oder gar Treiber/Receiverbausteine, etc. nagt heftig an diesen 2.5m. Also ich hab' da meine Zweifel, ob das Ausgangsszenario so ueberhaupt zuverlaessig funktionieren kann (mal ganz abgesehen von Masse, symm. Signalen, etc. bla.), ohne dass man irgendwo mit Ueberlichtgeschwindigkeit operieren muesste... Gruss WK
Ja, ist richtig. Wenn es bidirektional funktionieren muss, dann muss man die Latenz mit einplanen. Es gibt aber genug "SPI" Bausteine die nur unidirektional Daten liefern oder entgegennehmen wie ADCs und DACs. Wie so oft wissen wir hier noch zu wenig.
Manuel N. schrieb: > Hallo, ich habe ein SPI-Signal, welches ich auf 1meter Distanz > übertragen möchte. Anstatt der Luftverbindung würde ich ein Kabel nehmen. Oder muß es unbedingt drahtlos sein?
m.n. schrieb: > Anstatt der Luftverbindung würde ich ein Kabel nehmen. > Oder muß es unbedingt drahtlos sein? Sage mal, welchen Knall hast du nicht gehört?
Gustl B. schrieb: > Das sieht sehr nach Messfehler aus. Ist die Oszilloskop Masse > angeschlossen? Wo misst du genau? Was ist das für ein Tastkopf? Wenn > dein Tastkopf umstellbar ist, dann auf 10:1 einstellen. Einmal das und ausserdem: Wie groß ist eigentlich die Bandbreite des Oszilloskops?
Stefan ⛄ F. schrieb: > m.n. schrieb: > >> Anstatt der Luftverbindung würde ich ein Kabel nehmen. >> Oder muß es unbedingt drahtlos sein? > > Sage mal, welchen Knall hast du nicht gehört? Ich habe aber auch erst geglaubt, dass die Übertragung drahtlos sein muss, ich habe mich nur nicht getraut nachzufragen. Ansonsten einfach ein Standardkoaxialkabel einsetzen, fertig.
Michael M. schrieb: > Ansonsten einfach > ein Standardkoaxialkabel einsetzen, fertig. Tolle Idee. Das sind dann mindestens drei "Standardkoaxialkabel": MISO, MOSI, SCLK und ein viertes, wenn auch noch das Select-Signal gebraucht wird.
M.A. S. schrieb: > Tolle Idee. Ohne vernünftige Treiber und Terminierung bringen Koaxiale Kabel den TO kein Stück weiter.
Stefan ⛄ F. schrieb: > Ohne vernünftige Treiber und Terminierung bringen Koaxiale Kabel den TO > kein Stück weiter. Glaub ich nicht, das geht mit jedem normalen CMOS-Ausgang mit Serienterminierung; sowohl auf Koaxkabel als auch auf einem Bandkabel. Ich würde ein Bandkabel mit 6 Adern vorsehen, wobei jeder zweite GND ist + ggf. noch welche für die Spannungsversorgung.
Hallo, Da ich mein Problem sehr knapp erläutert habe, hier nochmals ein wenig ausführlicher. Ich habe einen Raspberry Pi 3b+, an welchem ein Touchscreen namens Hyperpixel 4.0 vom Hersteller "Pimoroni" angeschlossen ist. Das Touchscreen bekommt die Farbinformationen mittels RGB666, sprich 6 Kanäle rot, 6 grün und 6 blau. Damit diese Informationen bezüglich Farben und auch diejenigen der "Touch-Funktion" übertragen werden, habe ich noch einige andere Signale, welche wie schon gesagt auf bis zu 20MHz takten. Da mir aktuell kein Oszilloskop mehr zur Verfügung steht, kann ich die Leitungen erst in einigen Tagen gemäss euren Vorschlägen austesten. Die "schnellen" Datenleitungen, von welchen ich aktuell kenntnis habe, sind wie folgt: VSYNC auf GPIO2: Synchronisierung des Bildes auf Vertikaler Ebene (taktrate noch unbekannt) HSYNC auf GPIO3: Synchronisierung des Bildes auf Horizontaler Ebene (taktrate noch unbekannt) Pixelclock auf GPIO0: Taktrate für die Pixel (Anzahl Pixel * Bilder/Sekunde --> ca. 20MHz) I2C-SDA auf GPIO10: I2C Signal für die Verarbeitung vom Touch, wahrscheinlich 100kHz I2C-SCL auf GPIO23: I2C Signal für die Verarbeitung vom Touch, wahrscheinlich 100kHz GPIO19 Backlight Control: PWM Signal für die Displayhintergrundbeleuchtung GPIO18 LCD Chip select: Gemäss antworten aus anderen Foren ein SPI-Signal, welches als Datenbus zur anzeige des Bildes fungiert. Wie gesagt möchte ich das Touchscreen über 1 Meter über ein 40poliges GPIO Kabel übertragen, es ist ungeschirmt und bietet daher aus meiner Sicht nicht perfekte voraussetzungen für die verwendung, jedoch sehe ich aktuell keine aktuelle Möglichkeit, sofern ich das aktuelle Touchscreen weiterhin verwenden möchte. Beim testen über kürzere Distanzen von ca. 40cm hat noch alles bestens funktioniert. Die effekte bei längeren Leitungen waren wie folgt: Standbild, flackerndes Standbild, gar kein Bild, andere Farbtöne der einzelnen Pixel Die i2c signale haben auf allen getesteten Distanzen nahezu perfekte rechtecksignale geliefert, dort habe ich jedoch auch schon sehr stark mit Signalfilterung nachgeholfen. Ich habe einige Bilder der Bauteile und verschaltungen angefügt. Danke für die Tipps von euch, die kamen und noch kommen werden :)
Manuel N. schrieb: > Da ich mein Problem sehr knapp erläutert habe, hier nochmals ein wenig > ausführlicher. Du hast es nicht knapp erläutert, sondern völlig falsch. > Ich habe einen Raspberry Pi 3b+, an welchem ein Touchscreen namens > Hyperpixel 4.0 vom Hersteller "Pimoroni" angeschlossen ist. https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#parallel-display-interface-dpi Das ist die Dokumentation für den DPI-Mode beim Raspberry Pi. Da wird nicht EIN SPI-Signal benutzt, sondern ACHTUNDZWANZIG Port-Pins. Steht ja auch so in der Dokumentation des LCD-Panels.
:
Bearbeitet durch User
Für so etwas gibt es spezielle Lösungen. Lies das hier: https://www.ti.com/lit/an/slyt581/slyt581.pdf fchk
SPI ist eigentlich fuer kurze Verbindungen gedacht, auf einer Leiterplatte. Alles andere ist Murks. Duerfen wir den Sinn des Vorhabens erfahren ?
Ich hatte auch mal SPI mit 5MHz über 4-paariges Kabel und RS-485-Treibern gesehen. Der Trick war, zum Slave ging SCK+MOSI und vom Slave kam SCK+MISO zurück. Die Laufzeiten waren also immer in der gleichen Richtung und störten daher nicht. Der Master hatte zum Empfang ein extra Schieberegister und las es parallel ein, MISO geht ja nicht wegen dem verzögerten SCK.
Frank K. schrieb: > Für so etwas gibt es spezielle Lösungen. > > Lies das hier: > https://www.ti.com/lit/an/slyt581/slyt581.pdf > > fchk Danke für deinen Vorschlag, hatte auch schon an sowas gedacht ;) Kenne mich leider nicht so gut aus. Der Sinn dieses Bauteils ist ja, dass RGB888 mittels einer Datenleitung übermittelt wird. Ich habe jedoch noch andere Signale, wie z.B. Daten des Touchscreens, etc. könnte ich evt. die anschlüsse, welche für I2S gedacht sind, dafür verwenden? Auf was muss ich achten? "serialisiert" und "deseralisiert" dieses Bauteil denn einfach? egal was dranhängt?
Dieter R. schrieb: > Da wird nicht EIN SPI-Signal benutzt, sondern ACHTUNDZWANZIG Port-Pins. > Steht ja auch so in der Dokumentation des LCD-Panels. Ich vermute mal, daß der OP eben NICHT die normale, parallele TFT Ansteuerung des Raspberryx PI nutzt sondern wirklich ein TFT mit SPI Anschluß. Das KANN man über ein normales, 40-poliges Flachbandkabel über 1m führen, aber NICHT mit der normalen Pinbelegung am Raspberry PI! Dort sind die Signale beliebig angeorndet und Masse ist rar! Wenn, dann muss man einen Adapter bauen, welcher die Signale auf eine HF-taugliche Pinbelegung umsetzt. Siehe Wellenwiderstand. Im Idealfall ist jede 2. Leitung Masse. Wenn es aber nur um die vier SPI-Signale geht, kann man auch mit einem Ethernetkabel arbeiten. Dort sind 4 Doppeladern mit definertem Wellenwiderstadn drin. Serienterminierung, fertig. Die ~5ns Laufzeit für 1m fallen bei 50ns Periodendauer nur wenig ins Gewicht. OK, MISO könnte da Probleme kriegen, muss man mal messen. Aber richtig. https://www.mikrocontroller.net/articles/Oszilloskop#Tastk%C3%B6pfe_richtig_benutzen
Hallo, "normales" Flachbandkabel, also 1,27mm Raster in Grau für 2,54 Schneidklemmen hat ca. 120 Ohm Wellenwiderstand. Eine leicht unpassende Terminierung z.B. 110 Ohm erzeugt aber auch nur wenig Reflexionen, geschätzt vielleicht 10%. Das könnte schon gehen. Dann muss allerdings die Belegung und die Terminierung halbwegs passen.
Manuel N. schrieb: > Der Sinn dieses Bauteils ist ja, dass RGB888 mittels einer Datenleitung > übermittelt wird. Ich habe jedoch noch andere Signale, wie z.B. Daten > des Touchscreens, etc. könnte ich evt. die anschlüsse, welche für I2S > gedacht sind, dafür verwenden? Auf was muss ich achten? "serialisiert" > und "deseralisiert" dieses Bauteil denn einfach? egal was dranhängt? Beim Touchscreen nimmst Du am Besten einen Touchscreen-Controller mit I2C-Interface. Ich meine gesehen zu haben, dass das Display einen solchen eingebaut hat, aber wenn nicht, dann musst Du eben extra einen daneben setzen. Z.B. sowas für einen resistiven Touchscreen: https://www.ti.com/lit/ds/symlink/tsc2007.pdf Die Richtung der Signale (Input oder Output) ist festgelegt, und es sind alles natürlich nur digitale Signale. Die Chips werten diese Signale aber nicht aus, sondern übertragen einfach, was außen anliegt. Ansonsten lies und verstehe die Datenblätter. fchk
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.