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


von Marcus Maul (Gast)


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

von Thomas Burkhardt (Gast)


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

von Jürgen (Gast)


Lesenswert?

Benutze doch den UART, eventuell mit Treiber.

von Marcus Maul (Gast)


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.

von Manfred Glahe (Gast)


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

von crazy horse (Gast)


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.

von Marcel S. (Gast)


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.

von Marcus Maul (Gast)


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?

von crazy horse (Gast)


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.

von Marcus Maul (Gast)


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

von Steffen (Gast)


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

von Marcus Maul (Gast)


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

von Steffen (Gast)


Angehängte Dateien:

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.