mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BUS über mehrere Platinen


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dieser Dimension ist I2C durchaus einsetzbar. Wird bei 100Kbps erst 
ab einigen Metern kritisch.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, da ist die Frage, wie sicher das ganze sein muss.
Es würde halt in einem Schaltschrank laufen, ich weiß nicht wie hoch 
dort das Risiko ist.

Hat jemand mit sowetwas Erfahrungen?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal das SMB Protokolll an, ist vielleicht besser, automatische
Adressvergabe, automatischer Timeout usw. Ev könnte auch das LIN 
Protokoll
interessant sein, setzt sich immer mehr durch.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CAN?

Autor: Rufus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan P. (form)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit RS-232 (TTL)?

Master TX -> Slaves RX
Master RX <- UND-Gatter <- Slaves TX


- einfach
- geringer Schaltungsaufwand
- schnell dank Interrupts


MfG
form

Autor: ccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein. RS232 ist nur Punkt-Punkt. Aber RS422 ist Master-Slave

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem in SPI besteht darin, dass für jeden weiteren Teilnehmer 
eine Select-Leitung erforderlich ist. Das durchschleifen erachte ich als 
zu langsam.

Autor: ccc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum SPI : "Das Durchschleifen erachte ich als zu langsam"

Ist aber sicher so schnell wie ein RS232.

Autor: Sumynona (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sumynona (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Das durchschleifen erachte ich als zu langsam."
da war ich wohl zu langsam^^

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Sumynona:
Das heißt das auch hier jeder Teilnehmer das Paket weiterreichen muss? 
Das wäre ja dann in diesem Sinne keine BUS sondern eher eine 
Ringtopologie. Oder sehe ich das falsch?

Autor: Sumynona (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, denke ich auch.

Wie sähe das denn mit der Störsicherheit aus, bei direkten, aufgelötetn 
Steckverbindern zwischen den Platinen? Wäre I2C dafür robust genug?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.