Ich habe an einem Projekt gearbeitet, bei dem ein OMAP-Linux-SPI-Master mit 6 SPI-Slave-Peripheriegeräten (5x A/D-Wandler und einzelnes Magnetometer) interagiert.
Ich kann die SPI-Taktfrequenz einstellen und habe mit 50 kHz, 100 kHz und 1 MHz experimentiert.
Ich habe ein Verdrahtungs- / Platinendiagramm beigefügt, das die Länge vom SPI-Master und allen Peripheriegeräten zeigt. Die SPI-Buslänge (alle Drahtlängen) vom Master entfernt beträgt für meinen Experimentierkoffer ungefähr 970 mm.
Das Problem, das ich gefunden habe, ist, dass die Kommunikation mit 1 Peripheriegerät fehlschlägt, wenn ich mehr von den anderen Peripheriegeräten auf dem Bus hinzufüge. Selbst wenn die Kommunikation zum Magnetometer auf der anderen Seite des Busses durchkommt, schlägt die Kommunikation mit den A/D-Wandlern auf der anderen Seite fehl, bis der Magnetometer-Kabelbaumstummel entfernt wird und dann der A/D-Abschnitt zurückkehrt.
Ich habe hier etwas gelesen: Überlegungen zur SPI-Busterminierung und hier: Short Distance Board-to-Board-Kommunikation
wo es empfohlen wird, einen RC LPF so nah wie möglich an jedem Treiberknoten zu platzieren, also SCLK und MOSI auf der Masterseite und jedes meiner 6x MISO/SOMI-Signale. Ich habe einen ähnlichen Ansatz für USB mit 47pF / 27R RC-Netzwerk gesehen. Meine Absicht ist es, dies auf meiner Schaltung zu versuchen, um den schnellen Kantenübergang von ~ 100 ns an scharfen Kanten zu reduzieren.
Ist dies das richtige Verfahren, dem ich hier mit dem Hinzufügen eines RC LPF folge? Das scheint wirklich wackelig zu sein, gibt es eine bessere Vorgehensweise? Ich habe eine App-Notiz von TI gesehen, in der über die Erweiterung von SPI für längere Busentfernungen gesprochen wird. Ist dies hier eine geeignete Lösung oder ist mein Problem einfach eines der hochfrequenten Oberwellen des Hochgeschwindigkeits-Flankenübergangs? http://www.ti.com/lit/an/slyt441/slyt441.pdf
Danke Nick
Es ist schwierig, dies ohne alle Details zu beantworten, aber hier ist ein allgemeiner Blick auf das Problem, von dem ich glaube, dass es auch die nützlichere Art der Antwort für diese Site sein könnte.
Multi-Node-Netze sollten immer simuliert werden. Sie sind so schwer vorherzusagen. Und es dauerte ungefähr 3 Minuten, um zu sehen, dass Ihr Design vielleicht nicht optimal war.
Hier ist der Simulationsaufbau für die Uhr vom Master bis zu allen Slave-Geräten (die Werte sind nur grobe Schätzungen, wie es der Fall wäre, wenn Sie dies vor dem Bau getan hätten):
Und das resultierende Simulationsdiagramm (wir ignorieren, was was ist, Einheiten usw., da es offensichtlich nicht wert ist, gebaut zu werden):
Die erste Idee, die mir in den Sinn kommt, ist eine Daisy-Chain aller Eingänge und eine einfache parallele Terminierung. Ein Fly-by-Schema, wenn Sie wollen. Das sieht im Simulationsaufbau so aus:
Und der Ergebnisplot sieht viel schöner aus:
Wenn Sie mit dem erhöhten Stromverbrauch der Thevenin-Terminierung und dem reduzierten Spannungshub an den Takteingängen der verschiedenen Geräte leben können und ... (nur Sie kennen die tatsächlichen Einschränkungen) ... dann kann sich eine Variation davon tatsächlich lohnen Gebäude.
Es gibt andere Lösungen, die funktionieren würden, aber der Schlüssel ist zu verstehen, dass Netze mit mehreren Knoten nicht leicht vorherzusagen sind. Die 5 Minuten Simulation hier, bevor Sie etwas bauen, können später viel Zeit sparen. Leider sind diese Art von Simulatoren nicht billig.
Ich verwende hier Cadence SigXplorer. Es gilt der übliche Haftungsausschluss: Ich unterrichte Kurse in Signalintegrität und habe oft Cadence- oder Mentor-Sponsor-Softwarelizenzen für diese Kurse.
efox29
erschüttert
efox29
alex.forencich
alex.forencich
erschüttert