www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI Reichweite


Autor: Nook (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich will mir ne Schaltung bauen dafür habe ich einen ATMEGA8 und nen
MAX7221 diese verbinde ich über die SPI. Nun ist meine frage wie lang
darf maximal die Leitung zwischen den Bausteinen sein??? Ich würde mit
den 3x SPI und 2x Spannungs Adern haufen Kabel sparen statt dem 16
Adern die vom MAx7221 abgehen. Es wären sicher so 2 Meter und ich
glaube nichrt, dass das SPI dafür ausgelegt ist.

mfg Nook

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kommt im wesentlichen auf die Frequenz und die Terminierung der
Leitungen an.
Auf der Treiberseite ein kleiner R (10-50 Ohm)
auf der Empfängerseite ein RC-Snubber (50-470 Ohm + 0,1µF) auf Gnd
und jede zweite Ader auf GND, da sind sogar 5 - 20 Meter drin.

Aber mit einer 5-adrigen Leitung wird das nicht gehen, schon allein wg.
des Spannungsabfalls in den Versorgungsleitungen. 10 Adern
(Gnd Clk Gnd Data Gnd SS Gnd Vcc Vcc Vcc) sind das absolute Minimum,
außer Du hast auf der 7221-Seite eine eigene Versorgung.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen Sensor mit SPI-Interface über drei RS422-Transceiver an
mein Board angeschlossen. Da wird die Leitungslänge quasi nur durch die
Stromversorgung begrenzt...
Es kommt halt darauf an, wieviel Strom du vor Ort brauchst...

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Thema interessiert mich auch gerade,
>Auf der Treiberseite ein kleiner R (10-50 Ohm)
was ist der Treiber der normale Portpin ?
>RC-Snubber<- meinst du damit einen Tiefpass?

@Profi
Welche Leitungslänge bei welcher Frequenz hast du damit erreicht
@Rahul
Wie sorgst du dafür das die RS422 Tranceiver auf der Sensoren nicht
gegeneinander treiben? Schließt du dazu den SS Pin noch auf einen INT
Pin an und aktivierst den Transceiver?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS422 ist nur eine Punkt-Zu-Punkt-Verbindung, wobei die Endpunkte
zimelich weit auseinanderliegen können (Quasi Langstrecken RS232).
Ich übertrage nur Clock, Data_in und Data_out.
Eigentlich ist es gar kein kompletter SPI-Sensor, sondern nur einer,
den man wie ein Schieberegister anspricht und eher wie I2C arbeitet...
Die Start-Condition wird wie bei I2C mit Clock und Data_in realisiert.
Sonst müsste man noch einen Transmitter und entsprechende Leitungen für
/SlaveSelect mit vorsehen...

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand sowas schon mal mit mehreren SPI-Slaves gemacht?

Autor: Nook (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also Strom ist kein Problem. Der MAX7221 kann bis zu 2A ziehen. halt ob
 das mit dem SPI nochklappt ist halt die frage.

@Profi
kannst du es bitte nochmal für anfänger erklären.

mfg Nook

Autor: Marco Schwan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn ich mich hier mal einklinken darf, ist nämlich auch für mich
von Interesse, da ich beabsichtige, einige DA Wandler von einem MEGA8
aus zu steuern...

folgendes Szenario und eine Bitte um geht- geht nicht- Antwort...

µC als Master, wobei die SCK, MOSI und MISO in ihrer Richtung über
bidirektionale Bustreiber (74245) betrieben werden, da die Ports auch
noch anderweitig verwendet werden sollen. Ein weiterer Port dient der
Adressselektion (CE).
Die Ausgänge gehen dann direkt auf ein Bussystem (SPI, Adress..., und
Power) für Steckkarten, wobei die Slavedevices (4 pro Karte) am ende
empfängerseitig terminiert sind.

Verständnissfrage jetzt hierbei, Terminierung heisst für mich, dass am
empfangenden Gerät terminiert wird, um Reflexionen zu verhindern.

Oder soll der R(50) am Senderausgang gegen Masse und am
Empfängereingang die RC-Kombi?

Christian

Autor: Nook (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weiss keiner mehr weiter?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könntest du das vielleicht mal aufmalen?
Terminierung brauchst es IMHO bei SPI nicht. Oder hast du RS422-Wandler
dazwischen? Und selbst da braucht man erst ab bestimmten Leitungslängen
und Geschwindigkeiten Terminierungen.

Autor: Feadi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Nook:
Ich denke das Beste ist wenn Du es ausprobierst, und dann postest ob es
geht.
Generell muss man mit der Übertragungsgeschwindigkeit runtergehen, wenn
die Strecke größer wird.

Gruß, Feadi

Autor: Nook (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Feadi:
Ja werd ich wohl machen müssen. Naja wird sich aber noch in die länge
ziehen bis ich es tetsen kann. muss noch meine LEDs verlöten und dann
mich ins programmieren stürzen in Microprozessor programmieren bin ich
noch ein totaler anfänger ist mein erstes projekt.

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf einer ATMEGA Platine habe ich eine 20 poligen Wannenstecker, ueber
den ich z.B. die SPI Signale weiterreiche. Einen gleichen Stecker
bediene ich auch mit einem FTDI2232. Ueber Flachbandkabel schliesse ich
verschiede Hardware an. Z.B. den ADS8344. Gerade der ADS8344 ist sehr
empfindlich. Wenn das Kabel zu lang wird (vielleicht 50 cm) oder man
mehrere Lasten am Flachbandkabel haengen hat, dann "spotzt" der
ADS8344. Am Skope kann man klingeln z.B. an SCL erkennen, dass den
ADS8344 aus dem Tritt bringt.

Kurzum: Vermeidet es SPI Signale als solche (Single_Ended) von der
Platine runterzuleiten...

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Infos, aber wenn ich richtig in der Annahme gehe, könnte
ich sog. "Spotzen" auf den Leitungen und damit verbundene
Übertragungsfehler durch absetzen der Taktrate vermindern, bzw.
entgegenwirken.
würd ich ja auch einfach ausprobieren, nur möchte ich vermeiden, etwas
zu probieren, was von vorneherein ausgeschlossen ist.
Ist ja bald Wochenende, hoffe, da dann mal weiterzukommen. Über
hoffentlichen Erfolg, sei berichtet.

Christian

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Klingeln (ringing) kommt ja gerade daher, dass die Leitung nicht
oder falsch terminiert ist.

 Signal--50R---------------------------*---------------Input
                                       *--100R--100nF--Gnd

Die 50 Ohm erhöhen die Senderimpedanz, damit zusammen mit der
Leitungskapazität ein Tiefpass entsteht. Wo keine harten Flanken, da
auch weniger Übersprechen und Ringing.

der 100R--100nF ist als semi-aktiver Abschluss gedacht, d.h. nur der
Wechselstromanteil wird terminiert. Ohne den 100nF würde das Signal
DC-mäßig stark belastet.

Die Werte musst Du durch Probieren und Messen (Oszi) ermitteln.

Herabsetzen der Taktrate allein bringt noch garnichts, da das Ringen
zwar seltener wird, aber gleich stark bleibt.
Bei langsamer Übertragung kannst Du das Signal am C abnehmen, dann ist
das Ringing weggefiltert. Bei hoher Frequenz wird die Amplitude am C
recht gering sein, muss man probieren, evtl. Komparator zum Aufbessern
des Pegels.

Noch Fragen? Nur her damit!

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leuchtet ein, wenn ich jedoch eh ein Komparator benutze, kann ich mir
den DC-Blocker ja theroretisch schenken.
Erinnert mich alles an einen Versuchsaufbau in Signaltechnik auf der
Berufsschule... lang ist es her :-)

Ich gehe davon aus, mit den 100 Ohm berufst Du dich auf den
Wellenwiederstand von Flachbandkabel (SCSI-Endterminatoren sind ja 100
Ohm Wiederstandsnetzwerke.)
Nur meine Frage, wieso passt Du die Quellimpendanz nicht in dem Fall
mit der des Kabels bzw. Senders an? (Satteliten un Antennentechnik
75Ohm rein 75 Ohm raus)
Ansonsten ist das Gebilde ja recht verständlich.
Könnte ja  notfalls mit Repeatern aufbereitet werden, sollten Die Wege
zu lang werden!

Zurück zum Thema, gehört ja schon fast zu einem eigenen Thread.
Schönes Wochenende
Christian

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur 75 (NICHT 750) rein 75 raus, sorry!

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Profi:
Es ist ein weitverbreiteter Fehler zu denken, dass Kingeln dann kein
Problem mehr ist, wenn man mit langsamen Taken arbeitet. Wenn der
Baustein schnell genug ist, was bei der heutigen Technik meistens der
Fall ist, dann sieht der Baustein an den Taktflanken dass Klingeln,
egal ob die Taktflanken jetzt schnell kommen, oder nur selten.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian:
1. Deinen Hinweis auf den DC-Blocker und den Komparator verstehe ich
noch nicht ganz. Könntest Du nochmal näher erleutern, was Du damit
meinst?
Mir geht es darum, dass nicht unnötig DC-Power verheizt wird.

2. Ja, Du hast Recht, im Idealfall sollte Sender- und Empfängerimpedanz
gleich sein. Meiner Erfahrung nach reicht es jedoch, wenn sie annähernd
ähnlich sind. Wer weiß denn genau, wie hoch der Wellenwiderstand des
Kabels ist? Wichtig ist eher, dass die Impedanzen nicht um
Größenordnungen verschieden sind, was z.B. bei einer gar nicht
terminierten Leitung der Fall ist.

75Ohm hast Du doch richtig geschrieben, nur das Space fehlte.

@Uwe: jetzt verstehe ich nicht ganz, was Du damit sagen willst.
Stehe ich heute auf der Leitung (oder bin ich nicht passend
terminiert)? (-:

Autor: Teo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab' bez. SPI und Reichweite auch einige Tests durchgeführt und will 
euch meine Erfahrungen mitteilen.

Ich fahre den SPI mit 125kHz. Master und Slave sind auf verschiedenen 
Platinen und waren bisher nur ca. 20cm von einander entfernt. Meine 
Flachbandkabelverbindung verursachte da keinerlei Probleme.

Nun bin ich gezwungen, die beiden Platinen räumlich ca. 15m von einander 
zu trennen. Also habe ich Versuche mit einem Ethernet Kabel (Cat6) 
durchgeführt. Glücklicherweise brauche ich auf der Slave Seite nur sehr 
wenig Strom, weshalb ich auch die Spannungsversorgung über die Ethernet 
Verbindung liefern kann (5V und 12V). In meinem Fall kann ich also auf 
die 8 Adern MISO, MOSI, SCLK, 5V, 12V, ein Chipselect und 2 x GND legen.

Und nun der Clou, ich hatte für den ersten Test eine 20m 
Ethernetverbindung gelegt und nach meinen Messungen auf der Slave Seite 
sahen die Signale MOSI und SCLK einfach super aus, ein kleines 
Überschwingen aber das war's. Sogar bei 40m waren die Signale noch 
verwendbar wenn auch mit geringerer Flankensteilheit.

Wenn man beim Messen am Slave das GND von der Masterseite als 
Bezugspunkt heranzieht, dann sehen die Signale natürlich fürchterlich 
aus. Deshalb hatte ich auch Bedenken wie es mit dem Rücksignal vom Slave 
zum Master auf der Masterseite dann aussieht. Aber auch hier die 
Überraschung, alles wunderbar sauber.

Ich fahre allerdings nicht direkt vom Master Controller zum Slave 
Baustein sondern habe jeweils einen 74HCT04 als Puffer dazwischen.
An den Sendepins sind noch 100 Ohm Widerstände angebracht.
Beim Empfänger hat eine R-C Kombination außer einem danach auftretenden 
Gleichspannungsanteil nichts gebracht, bei keiner meiner getesteten 
Leitungslängen (20cm, 50cm, 20m und 40m). Also habe ich sie im Moment 
weggelassen.

Nach diesen Versuchen bin ich nun geneigt die SPI Übertragung zwischen 
den beiden Platinen beizubehalten und nicht auf ein anderes Verfahren 
auszuweichen, was meint ihr?

Autor: Duden GmbH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wusste gar nicht, daß man ein SPI FAHREN kann. Wie gut hängt das denn am 
Gas? Und die Kurvenstabilität?

Wie war denn die FAHRT vom Master Controller zum Slave Baustein?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Teo

> Ich fahre den SPI mit 125kHz. Master und Slave sind auf verschiedenen

Die FREQUENZ ist egal. Entscheidend ist die Anstiegszeit der 
Treiberausgänge.

Beitrag "8 MHz SPI über 75cm Flachbandkabel?"


> Baustein sondern habe jeweils einen 74HCT04 als Puffer dazwischen.

Brauchst du nicht, die Ausgänge vom AVR & Co sind nahe zu identisch.

> An den Sendepins sind noch 100 Ohm Widerstände angebracht.

DAS ist der entscheidende Punkt. Serienterminierung.

> auszuweichen, was meint ihr?

Passt so.

MfG
Falk


Autor: Teo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk - Danke

Ja, die Serienterminierung hält das Überschwingen doch gut in Grenzen, 
ohne hatte ich deutlich mehr.

Die Treiber werde ich doch lieber drinnen lassen, da ich nicht unbedingt 
mit Pins vom Controller direkt nach außen fahren will, hab' da immer 
irgendwelche Interfaces dazwischen. Und sollte wirklich mal irgendwoher 
eine Spannungsspitze kommen, ist mir lieber, mein gesockelter DIP HCT04 
gibt den Geist auf als der SMD gelötete Controller (übrigens kein AVR 
sondern 68HC908) ;-).

Nachdem ich mich zuvor in diesem Forum zu dem Thema ein wenig umgesehen 
hatte, bin ich nun doch ziemlich verwundert, daß es so problemlos (auch 
über 40m) funktioniert hat.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Teo

> Nachdem ich mich zuvor in diesem Forum zu dem Thema ein wenig umgesehen
> hatte, bin ich nun doch ziemlich verwundert, daß es so problemlos (auch
> über 40m) funktioniert hat.

Auch lange nach dem Zeitalter der Aufklärung gibt es mehr als genug 
Mythen, auch (oder gerade dort?) im HighTec Bereich. Die oft vorhandene 
Portion Halbwissen tut ihr übriges dazu.

MfG
Falk


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.