mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN Bus!


Autor: Munzur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mit dem Verständnis der folgenden Erklärungen in der CAN
Technologie Probleme. Ist es möglich, dass jemand mir dazu eine
ausführlichere Erklärungen wenn möglich mit Bildern liefern kann.

Eine weitere Frage, wer liefert auf dem Markt CAN Controller,die
Microcontroller ausser die von Motorola unterstützen??
Wie könnten optimal auf einer CAN Busleitung optimal CAN Controller und
Microcontroller kommunizieren??

Danke für eure Meinungen und Anregungen.

Gruss,
Munzur

--------------------------------------------------------------
Bitcodierung
CAN nutzt eine Non-return-to-zero-Codierung (NRZ). Dabei wird einem Bit
genau ein
Zustand des Logikpegels zugeordnet, low = 0 und high = 1. Mehrere
gleiche Bits hintereinander
erscheinen auf dem Bus also als ein entsprechend langerer
gleichbleibender Pegel.
Dieses ermoglicht gegenuber einem RZ-Code, der in jedem Bit auf Null
zuruckgeht, bei
gleicher Baudrate die doppelte Datenrate. Da bei CAN kein Takt
ubertragen wird, muss
auf eine andere Art gewahrleistet werden, dass die Busteilnehmer die
Bits korrekt synchronisieren,
deshalb wird grundsatzlich nach funf gleichen Bits ein sogenanntes
Stopfbit
(Stubit) eingefugt. Ein Stopfbit beginnt mit einem Pegelwechsel und
halt diesen neuen
Pegel fur die Dauer eines Bits. Der CAN-Controller ubernimmt das
Einfugen des Stopfbit
beim Senden und entfernt es bei einer empfangenen Nachricht automatisch
wieder aus
dem Datentelegramm.
Der Low-Pegel ist auf den CAN-Bus dominant. Wenn auf den Bus
gleichzeitig rezessive
High-Pegel und dominante Low-Pegel gesendet werden, erscheint auf dem
Bus der Low-
Pegel.
 Arbitrierung
.. erwahnt geschieht die Arbitrierung verlustfrei anhand des
Identiers auf der Grundlage der Dominanz des Low-Pegels. Die
Teilnehmer senden den
Identier ihrer Nachricht, bis diese sich in einem Bit unterscheiden.
Der Teilnehmer,
der in diesem Augenblick einen rezessiven High-Pegel sendet, bemerkt,
dass das von ihm
gesendete Signal nicht dem entspricht, was nun auf dem Bus anliegt. Er
beendet den
Sendevorgang, bis der andere Teilnehmer das Ubertragen seiner
Nachricht abgeschlossen
hat.
Der Identier ist bei Standard-CAN 11 Bits lang, ermoglicht also 2048
verschiedene Nachrichten.
Jeder Identier darf nur einfach verwendet, das heit von nur einem
Teilnehmer
gesendet, werden. Wenn ein Sender, der sich in der Arbitrierungsphase
durchgesetzt hat,
am Bus einen Pegel feststellt, den er nicht gesendet hat, erkennt er
darin einen Fehler.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Eine weitere Frage, wer liefert auf dem Markt CAN Controller,die
Microcontroller ausser die von Motorola unterstützen??"


Die 8051-er gibt es schon sehr sehr lange mit internem CAN (Infineon
C505, Philips P89C592, Atmel T89C51CC01 usw.).

Aber inzwischen sind auch fast alle anderen MC-Familien mit CAN
verfügbar.


Als externe CAN Controller werden gerne der SJA1000 (MMIO) und der
MCP2515 (SPI) genommen.


Peter

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht zu vergessen das DSP-Segment, die gibts z.T. auch schon mit CAN.

Zum Thema Doku: Lad dir die komplette Spezifikation (von Bosch) runter,
da hast du über hundert Seiten und es bleiben keine Fragen offen.

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuche ein Beispiel:

Sender 1    Adresse   0000
Sender 2    Adresse   0001
....
Sender 14   Adresse   1101
Sender 10   Adresse   1001


Ruhezustand der Leitung: ein Widerstand legt eine 1 an den Bus

Wenn ein Sender sich aufschaltet dann zieht er seine Nullen "durch"
Sobald eine Null gesendet wird schaltet ein Transistor gegen Masse
durch und die "1" verschwindet.

Wenn nun zwei Sender zugleich  "1" sen  senden wird das gar nicht
bemerkt (es ändert sich ja nichts).

Wenn nun zwei Sender gleichzeitig senden geht dass solange gut bis
Sender 14   Adresse   1101
Sender 10   Adresse   1001
                       !
Sender 10 eine "Dominante"  Null sendet
Diese Null zieht den Buss auf 0
Nun kann Sender 14 erkennen dass seine "Eins"  nicht am Bus anliegt
und beendet die Aktivität.

Sender 10 kann ungestört weitermachen.

Das heisst, Sender mit niedriger Adresse (Kennung) setzen sich durch,
sie haben Vorrang.

Kurt

Autor: Munzur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann mich nur für die Superbeschreibung von euch bedanken!!

Schönen Abend noch!!

Gruss,
Munzur

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @Munzur,

das Beispiel ist zum Verständniss mit "einer" Leitung beschrieben.
In der Pracis wird ev. der RS485-Bus verwendet.
Das Prinzip bleibt gleich, nur die tatsächlichen "Spannungen" sind
halt auf die entsprechende "Bus-Norm" angepasst .
Beim RS485 sind es Differenzsignale auf einem Adernpaar

Kurt

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.