BUS über mehrere Platinen

Gast #1145941
Lesenswert?

Hallo..

Ich suche ein BUS-System zur adressierten Übertragung von Daten.

Ich habe verschiedene Platinen, jede mit einem AVR darauf. Diese 
Platinen repräsentieren Module. Nun sollen diese über einen BUS 
miteinander verbunden werden, sodass das Master-Modul an verschiedene 
Module (jedes hat eine Adresse) Daten senden und von ihnen wieder 
empfangen kann.

Da das ganze Adressiert sein muss, fällt SPI aus. I2C, habe ich gehört, 
ist schlecht für Übertragung mit Kabeln, die Module können einige 
Zentimeter von einander entfernt liegen (10-20cm).
Bei drei oder vier Modulen ist dann der Abstand zwischen Master und dem 
letzten Modul des BUS vielleicht zu groß.

Gibt es andere BUS-Systeme die auf einem AVR problemlos implementierbar 
sind?

Mit freundlichen Grüßen,

Sebastian
Gast #1145966
Lesenswert?

Ok, das hört sich doch gut an.
Wie sieht das denn aus mit EMV? Welche Verbindungen immt man da am 
besten? Das ganze sollte sehr unempfindlich gegenüber Störungen sein.

Danke für die schnelle Antwort.

Ach und nochwas
Gibt es soetwas wie eine Broadast-Adresse im I2C Protokoll?
#1145979
Lesenswert?

Kommt auf die Störungen an. Wenn da wirklich ernsthaft was unterwegs 
ist, dann ist I2C unpassend und RS485 besser. Aber wenn die Störungen so 
schlimm sind, dass sich I2C auf 20cm leicht was einfängt, dann wirst du 
beim Platinenlayout wohl mehr als 2 Layer investieren müssen, denn die 
fangen sich sonst auch was ein. Ansonsten: Schirm drum und CRC rein.
Gast #1146006
Lesenswert?

Hmm diese Protokolle sehen sehr kompliziert aus. Im endeffekt muss der 
Master wenn er den Befehl bekommt schnellstmöglich ein Byte an einen 
Slave senden. Die Datenmenge ist also extrem gering, wichtig ist nur die 
Geschwindigkeit.

Eine Broadcast Funktion wäre halt interessant, dass der Master 
selbsständig die Adressen von allen Slaves sammeln und listen kann.

Wenn das nicht möglich ist, muss das manuell geschehen, ist auch nicht 
weiter schlimm. Wäre ein schickes Feature.

Danke für die reichlich informativen Antworten,

Gruß, Sebastian
Gast #1146020
Lesenswert?

Hallo Sebastian,
versuch es mal mit dem CAN-Bus: der ist dafür optimiert, in sehr 
störbehafteten Umgebungen sicher zu arbeiten (u.a. Automobil-Bereich).
Die Hardware (Busverkabelung) ist einfach und unkritisch und Du kannst 
Deine gewünschten Entferunungn locker überbrücken.
Vielleicht gibt es ja AVRs mit CON-Baugruppe ON-Chip, ansonsten gibt es 
ein Menge einfacher und preiswerter externer CAN-Bausteine.
Mit CAN bist Du in vielen Fällen auf der sicheren Seite.

Gruß
Rufus
Gast #1146065
Lesenswert?

Weshalb faellt SPI raus ? Man kann das seriell, oder auch parallel 
realisieren. Beim Parallelen Ansatz wird der SCK, MSIO & MOSI auf alle 
Module parallel gefuehrt. die Selektrion geschieht mit dem CS, der nur 
das Aktive bekommt. Beim seriellen ansatz hat man alle schieberegister 
hintereinander, das MOSI des Einen geht auf den MISO des anderen, der CS 
ist fuer alle parallel. Dann werden die Daten durch alle 
hindurchgeschoben. und alle latchen aufs Mal.
Gast #1146197
Lesenswert?

RS232 (bzw. UART) kann man auch als Kette / Ring betreiben
Die Adressierung muss dann allerdings über separate pins oder über die 
Datenpakete erfolgen

Node 1 (TX) -> (RX) Node 2 (TX) -> Node 3 -> (RX) ...
... -> (RX) Node 1
Gast #1146214
Lesenswert?

ja richtig. ist aber neben dem I²C bus eine nette möglichkeit, mit 2 
Drähten seriell viele Teilnehmer anzusprechen.
Vielleicht wären aber rs422/rs485 besser geeignet in dem Fall (wenns 
schnell gehn soll), denn sonst müssen die daten in jedem controller 
durch den interrupt und ausgewertet werden, bevor es weiter geht
#1146228
Lesenswert?

"Robust genug" hängt immer von den konkreten Störungen ab. Wenn direkt 
daneben ein Lichtbogensender oder ein Schrottplatzmagnet sitzt, dann 
kannst du alles ausser LWL vergessen (aber sowas haut dir dann auch in 
die Leiterbahnen der Platine und ggf. sogar die Bonddrähte vom Chip 
rein).

In leidlich normaler Umgebung kannst du auf der Distanz einen I2C Frame 
mit CRC absichern und damit jedenfalls einigermassen sicherstellen, dass 
kein Schrott unerkannt rüberkommt.

Auf PC Mainboards, die ja nicht grad eine störarme Umgebung sind, zieht 
sich jedenfalls quer drüber ein SMBus, was nix anderes als eine 
I2C-Abart darstellt.
Gast #1146232
Lesenswert?

Alles klar, wenn das im PC ohne Probleme läuft, dürfte das auch für mein 
Einsatzgebiet reichen.

Ich denke, I2C hat gerade im Bereich AVR den super Vorteil, dass weder 
Treiber noch andere externe Hardware benötigt werden.
Aus diesem Grund würde ich aus der techn. Perspektive Betrachtet diese 
Spezifikation bevorzugen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren