SPI-Signal verstärken, wie?

OP #7063509
Lesenswert?

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
Angehängte Dateien:
Gast #7063537
Lesenswert?

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
Gast #7063538
Lesenswert?

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?
#7064275
Lesenswert?

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.
Gast #7064307
Lesenswert?

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.
#7064318
Lesenswert?

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.
#7064441
Lesenswert?

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.
#7064446
Lesenswert?

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.
#7064496
Lesenswert?

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.
#7064518
Lesenswert?

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
(Firma: Autotronic) #7064817
Lesenswert?

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.
Gast #7064890
Lesenswert?

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.
OP #7065508
Lesenswert?

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 :)
Angehängte Dateien:
#7065555
Lesenswert?

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.
#7066147
Lesenswert?

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.
OP #7066958
Lesenswert?

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?
#7067163
Lesenswert?

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
Gast #7067184
Lesenswert?

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.
#7067288
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren