mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI als Bussystem fuer Distanz ~ 3m geeignet?


Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da ich bisher nirgendwo eine Doku zu dem SPI Interface und dessen
Beschränkungen gefunden habe.
Ich würde SPI gerne für eine Schaltung mit 3 ATmega8535 einsetzen, da
ich an drei relativ weit entfernten Stellen analoge Daten loggen und
auswerten muß, ich aber leider nicht so viele Kabel verlegen kann.

Die Prozessoren liegen jeweils 3m auseinander.

|Proz 1| ---(3m)---- |Proz Master| ---(3m)--- |Porz 2|

Hat jemand von Euch das schonmal gemacht und wie gut ist die Datenrate
über eine solche Distanz per SPI?

Danke für Eure Hilfe

Marcus

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so weit ich weiss, ist SPI nicht für lange Strecken gedacht, eher für
die Kommunikation auf einer Schaltung.


Viele Grüße

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutze doch den UART, eventuell mit Treiber.

Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jürgen:
Hab ich auch schon dran gedacht, nur ich würde irgendwie gerne die 3
Prozessoren recht einfach "flashen" können und wollte mir dafür die
UART lassen. Wäre es eventuell möglich das Problem, mit einem RS232 auf
RS485 Wandler zu umgehen?

Kennt jemand von Euch einen solchen Wandler?
Ein MAX323 und ein MAX485 gekoppelt reicht?

Danke für die Antworten

Marcus

PS: Mich würde schon mal interessieren, wo es zu dem SPI Interface
genauere Daten gibt.

Autor: Manfred Glahe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marcus Maul

Die Angaben mußt Du Dir aus dem Datenblatt des verwendeten Bauteiles
holen. Zwar ist der SPI nur für interne Verbindungen gedacht, aber es
kommt darauf an wie du ihn einsetzen willst. Als einfachen Single
Master Bus (da gibt es keine bidirektionalen Leitungen) kannst Du den
Bus über externe Treiber (7404) entkoppeln und damit auch 3 Meter
überwinden (die meisten älteren Busse sind sowiso nur mit wenigen MHz
zu betreiben).Letztlich handelt es sich bei diesem Bus (im SM Betrieb)
nur um einen "Schieberegister Anschluß".

MfG  Manfred Glahe

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs mal für ein Muster mit SPI-Ausgabe und und 32 x 74HCT4094 (256
LEDs) gemacht, die Gesamtlänge betrug 4m, lief mit ca. 100kHz Takt und
funktionierte völlig problemlos. Da Einzelstück, habe ich keine
weiteren Messungen gemacht.

Autor: Marcel S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es als Alternative I²C zu benutzen. Da bräuchtest du nur 2
Leitungen und könntest locker die 3m überbrücken. Ich hab hier eine
Strecke von 100 m mit I²C übebrückt bei einer Taktrate von ca. 30 KHz.

Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, für Eure Tips.

Da die ganze Sache nicht soo wild ist, werd ich das per RS485 machen.
Den I²C Bus habe ich leider schon anderweitig verplant.

Ich suche jetzt nur noch eine Möglichkeit, die Daten der RS232 des
PC's irgendwie in RS485 konforme Umgebung zu bringen. MAX232 an einen
MX485 anschließen und das ganze dann an die serielle Schnittstelle
klemmen??? Wäre da smöglich?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beides brauchst du auf keinen Fall - der MAX485 ist sowas wie der
MAX232, ein Konverter für die entsprechende Norm. Also an jeden MC
einen MAX485, fertig. Am einfachsten ist Halb-Duplex-Betrieb.

Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@crazy horse

Danke, für den Hinweis.

Mir war diese Anschlußmöglichkeit des MAX485 aber schon aus anderen
Beiträgen in diesem Forum zu Ohren gekommen.

Meine Frage bezog sich auch auf die RS232 eines PErsonal Computers
(Notebook, PC)  bzw. PDA. Kann ich an deren RS232 einfach nen MAX485
hängen??

Gruß Marcus

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So einfach geht das nicht. Als erstes müssen RXD und TXD vor dem Max485
negiert werden. Dafür reicht ein einfacher Transistor. Dann brauchst Du
noch ein Signal zur Richtungsumschaltung. Da wird meist RTS verwendet.
Die Spannung für den MAX485 kann man übrigens problemlos aus einem
anderem Statussignal Z.B. CTS gewinnen. Aber Achtung der Pegel bei der
RS232 ist von +3V..+12V als High definiert und bei -3V..-12V als Low.
PDAs und Pocket PCs arbeiten meist mit +/-5V und ein normaler PC mit
MAX232 kompatiblen Treiberbausteinen mit +/-10V. Also je nach
Einsatzfall brauche ich evtl. noch zusätzlich einen
Spannungsstabilisator.

Wenn Interesse besteht, ich habe mal so ein Teil als Minni-Dongel
aufgebaut. Die Schaltung (ist eh nichts herrausragendes) kann ich gern
mal hier reinstellen.

Steffen

Autor: Marcus Maul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen,

Danke für die Info.
Was mich immer wieder ärgert, ist das die Funktionsweise der RS232 RS
422 RS485 überall beschrieben ist, wie aber die einzelnen Leitungen
angesteuert werden, das darfst Du meist selber immer wieder raus
finden.

Wär Dir aber Dankbar, wenn Du mir die SChaltung zukommen lassen
würdest, da ich somit relativ viel Zeit gespaart  hätte. THX

Gruß Marcus

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei die Schaltung, damit alle etwas davon haben.
Ist nicht 100%-ig aber funktioniert.

JP1,Pin2 --> RXD vom PC
JP1,Pin3 --> TXD vom PC
JP1,Pin4 --> DTR vom PC (Spannungsversorgung)
JP1,Pin5 --> Masse
JP2,Pin1 --> RTS (keine Ahnung, warum ich damals noch einen Verbinder
in die Schaltung eingebaut hab. Ich glaube aber, das war wegen
einseitiger LP direkt zum verlöten mit einem 9-pol. Sub-D Stecker und
DTR dann über ein Stück Draht.)

Die Schaltung funktioniert soweit an mehreren PC´s. RTS wird unter
anderem zur "Vorgaugelung" eines Pegels von -10V missbraucht. Beim
Empfang von Daten liegen dort aber +10V, und damit an JP1,Pin2 0V an.
Das wird von den meisten PCs (ich hatte noch kein Gegenteil) trotzdem
als Low interpretiert. Ein Elko von 10µ parallel zu R18 sollte das aber
beheben.

Verwendet habe ich ich nicht den MAX485 sondern einen MAX483.

Steffen

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.