Was sind einige Designprobleme für die Off-Board-SPI-Kommunikation?


8

Überblick:

Ich kommuniziere zwischen 3 benutzerdefinierten Leiterplatten mit dspic33 über SPI. Ich habe einen Master und 2 Slaves, aber ich sende beiden Slaves die gleichen Daten (und lasse sie auswählen, worauf sie achten sollen).

Hardware-Setup:

Die beiden Slaves haben BLDC-Motorsteuerungen eingebaut, und der Master steuert diese Motorsteuerungen über SPI. Die Drähte verlaufen ungefähr 3 Fuß vom Master zu jedem Slave und die Header sind typische SAMTECH-Header mit einem Abstand von 0,1 Zoll. Jeder Motorcontroller verfügt über einen eigenen 3,3-Volt-Regler, der die dsPIC / LV-Elektronik betreibt. Ich verwende einen Motorcontroller-Regler (Nennen wir ihn A), um auch den SPI-Master-DSPIC mit Strom zu versorgen. Zum anderen Motorcontroller (nennen wir ihn B), führe ich nur die SPI-Leitungen und die Masse vom Master aus. Der SPI-Clk läuft mit 100 kHz

Auf den Punkt kommen (endlich):

Wenn keine Motoren laufen, funktioniert dies einwandfrei. Alle Daten werden wie erwartet an beide Slaves weitergeleitet. Wenn ich jedoch die Motoren starte, erhält Bslave nicht mehr die richtigen Daten. Er nimmt entweder zusätzliche Uhren auf oder lässt sie fallen, ich nehme an, dass er das zusätzliche Geräusch verursacht. In jedem Fall schlagen seine Prüfsummen fehl. Aslave arbeitet wie ein Champion, egal was passiert.

1) Würden Sie erwarten, dass alle diese Geräte mit derselben 3,3-Volt-Quelle betrieben werden müssen? Wenn ja, können Sie mich überzeugen, indem Sie über die längere Induktivitätsschleife und solche schwarze Magie sprechen.

2) Haben Sie eine Faustregel, wie schnell ich erwarten kann, dass ich den SPI-CLK ausführen und mit einem Hardware-Setup wie dem oben genannten erfolgreich sein kann?


Eine Simulation ist erforderlich, um abzuschätzen, wie schnell die Uhr laufen kann. Angenommen, Sie haben doppel- oder einschichtige Platten, ist eine gute Faustregel, eine Erdungsspur oder eine Erdkupferebene (auf der gegenüberliegenden Schicht) unter oder neben den SPI-Linien zu verlegen, um das in die Spuren eingekoppelte Rauschen zu verringern.
Steinar

Antworten:


5

Ich habe SPI (2-MHz-Takt) ca. 5 m von einer Box zu einer anderen Box ausgeführt und habe nicht gezögert, den Takt und die Daten so zu gestalten, dass sie einen ausgeglichenen Ausgang haben. Das (benutzerdefinierte) Kabel zwischen den beiden verwendete auch Twisted Pair und Bildschirm sowohl für Daten als auch für die Uhr.

Ich habe die Remote-Box auch über Gleichstrom-Gleichstrom-Wandler isoliert mit Strom versorgt. Ich hatte nicht genug Zeit, um das falsch zu verstehen, also war meine Lösung möglicherweise ein Overkill, aber hey, es hat funktioniert. Meine Argumentation hinter dieser Entscheidung ist, dass ich nicht wollte, dass "Stromverbrauchsspitzen" über die Bildschirme des Twisted Pair laufen. Die Bildschirme waren am Sendeende des PCs nicht mit Masse verbunden. Behandeln Sie digitale Signale wie wertvolle analoge Signale, um die beste Leistung zu erzielen. Lassen Sie Ihren Bildschirm immer am Empfangsende und wenn Sie (aus irgendeinem Grund) auch am Sendeende widerwillig enden müssen.

Es diente zur Übertragung von 128 Kanälen mit analogen langsamen Signalen von einem PC zu einer Breakout-Box. Ich vermute, wenn ich müsste, könnte ich dies mit 20 MHz Takt betreiben.


Wenn Sie "Bildschirm" sagen, meinen Sie "Abschirmung", wenn Sie sich auf das benutzerdefinierte Kabel beziehen?
JYelton

1
@JYelton in Großbritannien heißt es Bildschirm. In welchem ​​Land bist du?
Andy aka

Ich bin in den USA. Einer meiner besten Freunde ist Brite, daher haben wir oft ungewöhnliche Diskussionen über die Wortwahl. :) Ein "Bildschirm" ist für mich entweder ein Display oder ein Monitor oder das Maschentuch, das Fliegen aus dem Haus hält, wenn das Fenster geöffnet ist.
JYelton

@ JJelton. Aha ein vermaschtes Tuch, das Sachen fernhält. Klingt für mich wie ein Bildschirm LOL
Andy aka

Als Antwort gewählt, da dies die einzige Antwort ist, bei der sowohl 1) als auch 2) angesprochen wurden. Obwohl, wie viele vorgeschlagen haben, ich bei einer Neugestaltung der Karte wahrscheinlich nur die Protokolle ändern würde, anstatt differenziell zu signalisieren. Ich glaube jedoch, dass dies funktionieren würde. In diesem Fall verwende ich nur SPI, da es auf meinem Prototyp sofort verfügbar war.
Matt

5

SPI unterscheidet sich nicht von anderen elektrischen Schnittstellen. Beachten Sie die üblichen Probleme mit der Signalintegrität (Abschirmung, Schleifenbereich, Impedanz, Signalabschluss usw.), und Sie können eine angemessene Entfernung zurücklegen. Was ein angemessener Abstand ist, hängt davon ab, was Sie damit machen und wie gut Sie die verschiedenen Faktoren steuern können.

Kannst du es 3 Fuß laufen lassen? Bestimmt. Solltest du? Nun, es gibt bessere Dinge zu verwenden. Wie andere bereits betont haben, gibt es RS-4xx, das gut funktionieren könnte. Sie können auch SPI ausführen, aber die Differenzsignalisierung wie RS-4xx über das Kabel verwenden. Dadurch werden mehr Drähte verbraucht, aber das sind die Unterbrechungen. Sie können auch normalen RS-485 mit einem UART und dergleichen ausführen.

Ich persönlich habe SPI über 1-Fuß-Kabel in einem Chassis mit Raten bis zu 32 MHz ohne Probleme verlegt. Ich habe I2C auch über 4 Fuß bei 100 KHz in einer Umgebung mit hoher EMI betrieben und SPI ist viel besser als I2C - also kann es gemacht werden. Wenn Sie jedoch nicht auf die Details achten, können Sie leicht auf Probleme stoßen. Aber ehrlich gesagt müssen Sie auf die Details achten, unabhängig davon, was Sie verwenden.


Viele Schnittstellen wie RS232 sind relativ unempfindlich gegen Klingeln und Überschwingen, vorausgesetzt, solche Effekte, die sich aus einem Leitungsübergang ergeben, werden innerhalb einer halben Bitzeit behoben. Selbst wenn eine Leitung keine hohen Baudraten unterstützen kann, hilft eine Verlangsamung der Baudrate. Im Gegensatz dazu kann es nicht hilfreich sein, das Klingeln zu verlangsamen, wenn Dinge wie das Klingeln bei jeder Geschwindigkeit Probleme mit dem SPI verursachen, es sei denn, man kann die Steigung der Linienübergänge verringern.
Supercat

Dies ist eine gute Antwort, insbesondere die Anzahl der von Ihnen implementierten Systeme. Ich denke, ich werde Serienwiderstände auf der Fahrerseite ausprobieren, um zu sehen, ob das hilft. Ich befürchte jedoch, dass das Geräusch zusätzliche Uhren verursacht ... in diesem Fall kann es also nicht helfen.
Matt

5

Überlegen Sie sorgfältig Ihr Erdungsschema. Schirmen Sie die Datenleitungen ab, wenn dies hilfreich ist, und erden Sie die Abschirmung ordnungsgemäß. Führen Sie Daten und Uhr nicht auf demselben Twisted Pair aus. Verwenden Sie bei Bedarf eine galvanische Trennung. Abgesehen davon gibt es keine Faustregeln, die mir bekannt sind.

SPI wurde für (1) Nahbereichskommunikation entwickelt, normalerweise innerhalb einer Leiterplatte und (2) in einer Umgebung mit wenig EMI. Möglicherweise sind die einzigen Busse, die bei Vorhandensein von EMI eine schlechtere Leistung als SPI erbringen, I 2 C und 1-Draht. Es gibt Busse, die für die Fernkommunikation bei Vorhandensein von EMI (RS-485, CAN, Ethernet) ausgelegt sind.

Es ist möglich, das SPI zu erweitern und zu robust zu machen. Hier ist ein Anwendungshinweis , der einen SPI-Bus mit Differenzleitungen zeigt.


Ich werde versuchen, die Linien abzuschirmen. In Bezug auf die galvanische Trennung registriert das Slave-Gerät niemals eine der vom Master gesendeten Uhren, wenn ich die Erdung nicht anschließe.
Matt

1

Es gibt verschiedene Möglichkeiten, um die Auswirkungen von Rauschen auf Ihre Signalleitungen zu minimieren. Am einfachsten ist es, eine Kupferebene oder eine Kupferspur neben Ihren Signalspuren zu routen. Dies minimiert die Induktivität der Spuren und des Schleifenbereichs.

Bei hoher Frequenz laufen die Rückströme gerne einen Pfad mit der geringsten Impedanz neben den Signalleitungen selbst. Ich gehe davon aus, dass Sie eine gemeinsame Masse zwischen Ihren Stromkreisen haben, aber dies kann Probleme bei der Hochfrequenzsignalisierung verursachen, wenn Ihre gemeinsame Masse einfach eine "Strom" -Masseverbindung zwischen den Stromkreisen ist. Dies führt zu einer sehr großen Schleifenfläche für die Signalströme, die aufgrund der magnetischen Streukopplung eine starke Rauschinjektion ermöglichen kann.

Wenn Sie können, schließen Sie eine zusätzliche Erdungsverbindung zwischen den Erdungen an, die an die SPI-Signalleitungen angrenzen, und halten Sie eine Kupfererdungsebene oder -spur neben den Leitungen innerhalb der Platinen. Es kann einen großen Unterschied machen, wie anfällig Ihre Schaltung für Motoren ist.


Ich verstehe den Ausdruck "zwischen den an die SPI-Signalleitungen angrenzenden Gründen" nicht. Insbesondere ist mir das nebenstehende Wort nicht klar.
Matt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.