SPI-Busverbindungen - Schleifen oder nicht Schleifen?

Ich habe eine Frage bezüglich der physikalischen Verbindung eines SPI-Busses.

Ich habe einen SPI-Master (ein PIC32-Gerät) und eine Reihe von Slaves (in diesem Fall PIC16-Geräte). Ich schreibe nur an die Slaves, und das Protokoll kümmert sich darum, wer was wann macht, also gibt es keine MISO- oder SS-Signale, um die man sich Sorgen machen muss, und ich verbinde nur die Daten- und Taktleitungen mit allen Slaves parallel. Die Gesamtlänge des Busses beträgt nicht mehr als ein paar Fuß (sagen wir 60 cm) und ich betreibe den SCK mit 8 MHz.

Nun ist die physische Platzierung der Slave-Geräte (die eigentlich Schnittstellenknoten auf anderen Platinen sind) so, dass der SPI-Bus direkt zurück zum Master führt, sodass es möglich wäre, beide Enden jeder Schleife mit MOSI bzw. SCK zu verbinden.

Das folgende Diagramm zeigt, was ich meine – ich spreche von den rot gepunkteten Verbindungen – und die Frage ist: Ist es gut, dies zu tun oder nicht?

SPI-Bus

Ich habe Strom und Masse, die eine ähnliche Reise machen, und das ist offensichtlich - und nachweislich - nützlich, weil es den durch die Slaves verursachten Spannungsabfall minimiert. Ich habe jedoch keine Ahnung, ob es gut oder schlecht ist, dasselbe mit diesen Signalleitungen zu tun. Sollte ich stattdessen eine Art Abschluss zulassen - Widerstände gegen Masse (?) - oder vielleicht Widerstände in Reihe, um Reflexionen zu unterdrücken, oder was?

Ich habe es sozusagen sowohl mit als auch ohne Verbindung der Punkte versucht, und es gibt keinen funktionalen Unterschied und keine Änderungen, die ich am Scope sehen kann, aber vielleicht wäre es etwas länger als 60 cm oder etwas schneller als 8 MHz. Ich hätte ein Problem? Also suche ich nach Ratschlägen, was zu tun ist, um Ärger zu vermeiden, falls sich etwas ändert.

Obwohl mich diese Frage bei einem 60-cm-SPI-Bus bei 8 MHz besonders beunruhigt, gibt es allgemeine Prinzipien für andere Situationen? Vielleicht sollten Klimmzüge auf einem I2c-Bus anders platziert werden?

Links zu geeignetem Lesematerial wären ebenfalls willkommen - ich habe nichts gefunden, das diese spezielle Frage abdeckt.

Ich bin mir nicht ganz sicher, welches Problem Sie mit dieser Verbindung lösen möchten
@PlasmaHH Nun, das ist wirklich meine Frage - ich habe kein Problem zu lösen, aber ich habe diese Option. Ich weiß, dass es bei Stromleitungen hilft, ich weiß nicht, ob es bei Signalleitungen hilft. Ist es eine dumme Frage? Vielleicht denke ich zu viel nach.
Ich würde hinzufügen, dass idealerweise eine 4-Lagen-Leiterplatte und dedizierte Vdd- und Vss-Ebenen hier aus mehreren Gründen eine gute Idee wären, zusammen mit dedizierten Bypass-Kappen sehr nahe an jedem Gerät.
IMO würde ich die von Ihnen vorgeschlagene Verbindung in Rot ausführen und die Verbindung von Slave 3 zu Slave 4 entfernen.

Antworten (3)

Schleife zurück? NEIN. Wenn die Leitung lang genug ist, um einen Abschluss zu benötigen (länger als Anstiegszeit*c/10 oder so), dann fahren Sie sie stark genug, um sie ordnungsgemäß zu beenden, und passen Sie die Leitung und den Abschluss einigermaßen gut an. Wenn die Leitung kurz genug ist, um keinen Abschluss zu benötigen, benötigt sie nicht die „zusätzliche“ Leitfähigkeit, nach der Sie bei der zurückgeschleiften Verbindung zu suchen scheinen.

Ein Vorwiderstand? NEIN. Diese Art der Quellenendterminierung funktioniert nur für einen Einzelpunktempfänger am Ende der Leitung. An früheren Punkten auf der Leitung erhalten Sie die schlechtestmögliche Wellenform für Ihre Empfänger, nämlich einen Schritt zur halben Spannung, gefolgt von einer Verweilzeit, gefolgt von einem weiteren Schritt zur vollen Spannung.

Ok, danke - können Sie erklären, was Sie mit "stark genug fahren" meinen ? Du meinst nicht direkt vom PIC, sondern über MOSFET oder so? Um es "richtig abzuschließen" , meinen Sie auch Widerstände gegen Masse ? Ich verstehe eher die Wiederanstiegszeit als die Taktfrequenz, die die Notwendigkeit einer Terminierung bestimmt. Können Sie die vollständige Faustregelberechnung zeigen? Anstiegszeit in welchen Einheiten? Was ist c/10?
@RogerRowland 'stark genug', damit es eine gute Logikebene in die Last der Terminierung entwickelt. Ein uC-Ausgang kann stark genug sein, möglicherweise nicht, hängt von der Terminierung und ihrer Treiberstärke ab. Verwenden Sie einen Puffer oder zwei parallel, wenn nicht genügend Antriebsstrom vorhanden ist. "Richtig" bedeutet Shunt-Widerstand. Ob das an Masse oder an Mittelschiene oder AC-gekoppelt ist, hängt vom System ab. Wenn Sie den Treiber jemals mit 3 Zuständen versehen, muss er geerdet sein, um gültige Logikpegel aufrechtzuerhalten. Sonst belastet die Terminierung zur Mittelschiene den Fahrer weniger.
@ RogerRowland Anstiegszeit in Sekunden, c Lichtgeschwindigkeit in m / Sekunde, also Anstiegszeit * c in Metern, / 10 ist ein bisschen handgewellt für „einen unbedeutenden Bruchteil der Anstiegszeit, der gleichzeitig auf der Signalleitung vorhanden ist“.
Nochmals vielen Dank Neil, das ist wirklich nützlich! Ich denke, ich würde davon profitieren, wenn ich einige Experimente durchführe, um sicherzustellen, dass das, was Sie gesagt haben, einsinkt - vielleicht ist ein regnerisches Wochenende gut angelegt.

Das Problem, das ich bei der Schleifentopologie sehe, ist, dass es schwierig ist, die Abschlusswiderstände richtig zu platzieren, um Reflexionen zu unterdrücken. Bei 8 MHz spielt dies keine große Rolle, könnte aber bei höheren Frequenzen oder längeren Leitungen zu einem Problem werden.

Der einzige Fall, den ich sehe, wo die gepunkteten Linien helfen könnten, ist, wenn die Ausbreitungsverzögerung vom Master zum SLAVE 6nicht akzeptabel war. In diesem Fall würden Sie die gepunkteten Linien verbinden, aber die Schleife irgendwo in der Mitte unterbrechen (z. B. zwischen SLAVE 3und SLAVE 4) und jeden Zweig unabhängig voneinander beenden.

Bei schnellen Signalen oder langen Leitungen wird die Signalreflexion zum Problem. In diesen Fällen müssen Sie die Leitung ordnungsgemäß terminieren, indem Sie einen Widerstand zwischen das Ende der Leitung und Masse legen (nicht den Anfang der Leitung). Die Terminierung lässt die Leitung "elektrisch unendlich aussehen", sodass das Signal nicht zurückkommt. Der Abschluss benötigt manchmal auch LC-Elemente, um der Blindimpedanz entgegenzuwirken.

In Ihrem Fall ist jedoch keine Terminierung erforderlich (kurze Leitung für Ihre Signalgeschwindigkeit, vorausgesetzt, Sie arbeiten nicht in einer elektrisch lauten Umgebung). Deshalb siehst du keinen Unterschied. Es ist auch eine schlechte Designpraxis, Ihr Signal zu schleifen. Dadurch wird die Signalschleife erzeugt, wodurch Rauschen in Ihren Schaltkreis eingeführt wird (und es in beide Richtungen schleift). Es erleichtert auch die Erfassung von HF-Rauschen in Ihren Leitungen.

Außerdem ist es normalerweise auch schlecht, Erd- und Stromleitungen zu schleifen. Digitales Schaltrauschen und Masseschleifen sind ebenfalls vorhanden und können dramatische Auswirkungen auf analoge Schaltungen haben. Bei Bedarf können Sie Y-Gabeln (keine Verbindung am anderen Ende) verwenden, um den Spannungsabfall zu reduzieren. Wenn das nicht ausreicht, verwenden Sie breitere Leiterbahnen (breitere Leiterbahn -> weniger Widerstand -> weniger Spannungsabfall).