Mikrocontroller mit CAN

Gast #569642
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?
#569687
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
Gast #569693
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.
#569703
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.