www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller mit CAN


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte demnächst mit dem Mikrocontroller XC886/888 von 
Infineon anfangen, eine CAN Kommunikation aufzubauen. Ich habe mir mal 
einige Datenblätter sowie Applikationen von Infineon heruntergeladen. 
Ich komme nicht gaz klar mit dem MultiCAN. Die sprecien immer von 
sogenannten Message Objekten. Es gibt da insgesamt 32 Objekte. Zuvor 
habe ich mit einem Stand Alone Controller SJA1000 eine CAN verbind 
realisiert. Da musste ich den Controller zuvor initialiseren. Baudrate, 
Datenlänge, Dateninhalte, Identifier. Da gibt es keine Message Objekte. 
Was kann man damit tun?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne den XC886 nicht, vermute aber, das ist ähnlich wie beim 
AT89C51CC03 (14 Message Objekte).

Die Message Objekte sind viel leistungsfähiger als der FIFO des SJA1000, 
Du kannst jedes zum Senden oder Empfangen nehmen und dabei verschiedene 
Identifier definieren.

D.h. wichtigere Nachrichten können zuerst ausgewertet werden und müssen 
nicht erst durch die FIFO wie beim SJA1000.

Du kannst aber auch Message Objekte zu einer FIFO zusammenfassen, indem 
sie alle die gleichen Identifierbits kriegen.

Allerdings ist das erstmal keine echte FIFO, da immer das erste freie 
Objekt mit Daten gefüllt wird. Wenn man dann immer von unten prüft, ob 
ein Objekt voll ist, kann es zu einer Vertauschung kommen.

Ist aber kein Problem, da jedes Objekt einen Timestamp kriegt, also 
einfach den ältesten Timestamp suchen (Wrap-around beachten).


Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dank Peter für die schnelle Information! Der MultiCAN besitzt nicht nur 
einen FIFO sondern noch zusätzlich einen Speicher für die Message 
Objekte. Diese kann man je nach Bedarf zum Senden bzw. Empfangen 
verwenden.

Autor: Matthias Kölling (poessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Der Unterschied ist Basic-CAN (SJA1000) und Full-CAN(XC886/888).
Der SJA hat ein Register zum Senden und ein FIFO für Emfang. Wenn Du 
Messages mit verschieden IDs senden willst, musst Du immer vor dem 
Senden die Einstellungen ändern. Für den Empfang kannst Du ein Filter 
einstellen, so dass die Anzahl der empfangen Objekte reduziert wird. 
Alles was da durchgeht landet im FIFO und es muss dann geprüft werden, 
welche IDs die Objekte haben.
Beim Full-CAN kannst Du jedem CAN-Register ein Message-Objekt zuweisen, 
sowie einstellen, ob es ein Empfangs- oder Sendeobjekt ist.
Bei einer überschaubaren Anzahl von Message-Objekten machst Du nur 
einmal Deine Initilisierung und kannst dann munter senden und empfangen.
Viele Controller haben noch die Möglichkeit für 1 oder 2 Message-Objekte 
die Basic-CAN-Option einzuschalten. Das macht man dann, wenn mehr 
Objekte zu handeln sind als der Controller zur Verfügung stellt.
Ich hoffe, das bringt ein wenig Licht ins Dunkel.

Gruß Matthias

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Matthias! Gibt es im Netz eine detaillierte Beschreibung zu 
FULL CAN?

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.