Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller mit CAN


von Patrick (Gast)


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?

von Peter D. (peda)


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

von Patrick (Gast)


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.

von Matthias K. (poessler)


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

von Patrick (Gast)


Lesenswert?

Vielen Dank Matthias! Gibt es im Netz eine detaillierte Beschreibung zu 
FULL CAN?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.