Meine MCU betreibt einen SPI-Bus mit ca. 4 Geräten. Ich möchte diesen Bus so erweitern, dass er auch außerhalb des Boards ist, dh einige PCBs werden mit dem "Hauptboard" verbunden und erweitern die Funktionalität. Der Abstand "Pad zu Pad" wäre:
Leiterbahnlänge der Hauptplatine + Kabellänge + Leiterbahnlänge auf der Erweiterungsplatine
3 "+ 6" + 3 "= ungefähr 12"
Nach meiner Erfahrung wurde sogar ein 1-MHz-Signal mit Anstiegszeiten von etwa 7 ns über diese Distanz über ein Flachbandkabel um mehr als 1 V übersteuert (es trat jedoch kein übermäßiges Klingeln auf). Die Platinen werden von derselben Stromversorgung gespeist.
Hinweis: Sie können die Anstiegszeiten hier nicht sehen, aber Sie können das übermäßige Überschwingen sehen - dies ist ein 3,3-V-Signal. Und ja, dies wurde mit einem sehr kurzen Kabel von der Sonde zur Erde richtig gemessen. Ähnlich wie es auf dieser Seite oft empfohlen wird. Ich denke nicht, dass es ein Messfehler ist.
Ich möchte, dass das System mit 4 MHz arbeitet, aber 2 MHz sind auch akzeptabel. Die max. Die Anzahl der Karten, die ich anschließen möchte, beträgt ungefähr 4, wodurch der SPI-Bus auf ungefähr 12 Geräte erweitert wird. Ich denke nicht, dass es zu schwierig wäre, dies per Code zu handhaben, da ich bereits so etwas habe. Es ist auch kein Problem, die zusätzlichen Slave-Auswahlleitungen zu haben.
Mein Anliegen ist jedoch, wie die SPI-Daten von einer Karte zu einer anderen gesendet werden. Sollte ich nur gerade SPI senden oder es an einem Ende in LVDS konvertieren und es dann am anderen Ende wieder in SPI konvertieren?
quelle
Antworten:
Als Faustregel gilt, dass Sie Übertragungsleitungseffekte berechnen müssen, wenn Ihre Verbindungslänge länger als 1/10 der Wellenlänge des Signals ist.
Übertragungsleitungen verursachen Reflexionen, wenn sich die Impedanz plötzlich ändert. Das reflektierte Signal fügt sich dem Original hinzu, kann auf der Senderseite wieder reflektiert werden und auf diese Weise hin und her gehen. Das Ergebnis ist in der Grafik dargestellt: das Überschwingen, von dem Sie sprechen, und ein gewisses Klingeln.
edit (
bezüglich des Frage-Updates) Die Anstiegszeit scheint 7ns zu betragen. Das ist schnell, wie Kortuk sagt, es bedeutet, dass Sie ein Spektrum von mindestens 400 MHz haben, und diese Harmonischen leiden in der Tat unter Übertragungsleitungseffekten, selbst wenn Ihr Takt nur 1 MHz beträgt. Versuchen Sie, sie herauszufiltern. Eine Bandbreite von 20 MHz (80 MHz für den 4-MHz-Takt) bietet Ihnen mehr als genug Anstiegszeit. Dies ist eine 1-MHz-Rechteckwelle, die mit einer LPF- Ziegelwand bei 20 MHz gefiltert wurde :
Durch Platzieren eines Vorwiderstands wird ein LPF erster Ordnung mit der Kapazität der Leitung gebildet. Wenn wir das auf 50pF schätzen, dann
quelle
Für einen so kurzen Bus würde ich versuchen, einen kleinen Widerstand in Reihe mit irgendetwas zu schalten, das eine Leitung antreibt. Dies ist nicht die theoretisch ideale Methode, um die Übertragungsleitungstheorie zu berücksichtigen, sondern ein pragmatischer Ansatz, von dem ich denke, dass er für Ihren Fall gut genug funktioniert. Probieren Sie zunächst 47 Ω aus und sehen Sie, was das bewirkt. Wenn das aber nicht genug hilft, kannst du höher gehen, aber ich würde 120 Ω nicht überschreiten. Möglicherweise finden Sie irgendwo in diesem Bereich einen Wert, der gut genug funktioniert.
quelle
AFAIK das Überschwingen kann durch ordnungsgemäße Beendigung beseitigt werden, wenn Ihr Fahrer die Last fahren kann. Andernfalls reicht sicherlich ein dediziertes Treiber / Empfänger-Paar wie LVDS oder vielleicht sogar RS485 aus.
quelle
Ich hatte in der Vergangenheit ernsthafte Probleme, SPI über Flachbandkabel zu betreiben, obwohl diese viel länger sind als von Ihnen beschrieben. Die Störfestigkeit wurde zu einem echten Problem, und beschädigte Befehle landeten an meinen Peripheriegeräten. Es genügte, um die CE-Störfestigkeitsprüfung nicht zu bestehen. Wenn diesbezüglich später Probleme auftreten, empfehle ich, auf jeder Karte eine separate MCU zu installieren und diese über CANbus anzuschließen.
quelle