Forum: Mikrocontroller und Digitale Elektronik XC886 CAN-FIFO


von Daniel Schwalm (Gast)


Lesenswert?

Hallo!

Ich hab bei meinem Infineon XC886 aus 16 Message Objects einen 
FIFO-Puffer gebildet, um CAN-Pakete zu Empfangen und zu einem späteren 
Zeitpunkt zu bearbeiten (wenn CPU-Zeit vorhanden ist). Mein Programm 
habe ich dazu mit Dave konfiguriert. Ich nutze CAN-Node 0. Die Message 
Object Liste von CAN Node 0 sieht folgendermassen aus:

Message Object 0 => Wird zum Senden genutzt
Message Object 1-16 => FIFO-Puffer Objekte
Message Object 17 => FIFO Base Object

Ich nutze die von Dave generierte Funktion CAN_ubReadFIFO() um aktuelle 
Nachrichten aus dem FIFO-Puffer zu laden und dann zu bearbeiten. In 
meinem Testaufbau wird alle 5 Sekunden ein CAN-Paket an den XC886 
gesendet (wird mit Oszi+CAN-Analyse auch noch überprüft).

Leider gibt die Funktion CAN_ubReadFIFO() nur das erste CAN Paket (über 
den als Paramter übergebenen Zeiger) das ankommt zurück (Rückgabewert 
der Funktion ist 1, was dafür steht, dass ein neues CAN-Pakete über den 
Zeiger zurückgegeben wurde). Bei jedem weiteren gibt die Funktion den 
Wert 0 zurück, was laut Funktionsbeschreibung aussagt, dass keine neuen 
Pakete vorliegen.

Nun weiss ich leider nicht ob das Problem an der Funktion liegt oder das 
angekommene Paket gar nicht erst in den FIFO-Puffer eingetragen wurde 
und deshalb die Funktion nichts zurück liefert.

Muss ich noch etwas beachten, evtl. irgend einen Wert/Bit setzen, 
nachdem ein CAN-Paket aus dem FIFO-Puffer gelesen wurde, damit das 
nächste CAN-Paket wieder korrekt bearbeitet wird?

Auch Beispiel-Code wäre bestimmt sehr hilfreich für mich.

Schon mal danke für die zahlreichen Antworten :)

Daniel

von Carsten S. (carsten)


Lesenswert?

Kannst du vielleicht deinen Code/Projekt (inkl. DAvE-FIle) hochladen? 
Dann kann ich es mal selbst debuggen/ausprobieren.

von Daniel Schwalm (Gast)


Lesenswert?

Ich schick dir mal was per EMail.

von Patrick (Gast)


Lesenswert?

Hallo Daniel,

funktioniert die CAN Kommunikation mit dem Mikrocontroller von Infineon 
jetzt korrekt? Ab nächster Woche werde ich auch eine CAN Kommunikation 
mit dem Mikrocontroller realisieren. Ist das Tool DAVE sehr hilfreich?
Kannst du mal einen Beispielcode in C hier hochladen. Für mich wäre es 
wahrscheinlich auch sehr hilfreich. Hast du noch zusätzlich einen CAN 
Tranceiver am Mikrocontroller angeschlossen, oder ist der schon in dem 
Mikrocontroller enthalten?

von Carsten S. (carsten)


Lesenswert?


von Patrick (Gast)


Lesenswert?

Herzlichen Dank für die Hilfe! Ich komme mit dem MultiCAN nicht zurecht.
Ich habe bisher nur einen externen CAN Controller (SJA1000) verwendet.
Aber die CAN Kommunikation mit dem XC886/888 ist schon etwas 
komplizierter.
Ich verstehe folgendes nicht: Warum 32 Objekte?
Mit dem SJA1000 konnte ich die ID, die Datenlänge, und den Dateninhalt 
einstellen.

von Patrick (Gast)


Lesenswert?

Weiss jemand ob es überhaupt eine deutsche Beschreibung zu dem MultiCAN 
gibt?

von Carsten (Gast)


Lesenswert?

Eine deutsche Beschreibung gibt es nach meinem Kenntnisstand nicht.
Warum 32 Objekte?
So kannst du mehrere Messages mit unterschiedlicher ID senden u. 
empfangen ohne jedesmal die Register zu verändern. Man wird deutlich 
flexibler.
Aber arbeite einfach mal die Infineon-Beispiele durch, nur mit Hilfe des 
Datenblattes/UsersManuals ist es sehr schwierig.

von Patrick (Gast)


Lesenswert?

Es gibt doch nur ein Infineon-Beispiel mit CAN! Oder hast du noch 
andere?

von Carsten S. (carsten)


Lesenswert?

Bei dem Starterkit XC800 USCALE gibt es noch ein weiteres Beispiel.
http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-71961&programId=65715&programPage=%2Fep%2Fprogram%2Finformation.jsp&pageTypeId=17099

Wenn nicht, frag mal bei deinem Distributor nach. Der sollte dir sowas 
zur Verfügung stellen können.

von Kornelius (Gast)


Lesenswert?

Hallo zusammen,

Ich versuche gerade mit einem USCALE Starterkit eine CAN - Verbindung zu 
realisieren - der Empfang funktioniert auch einwandfrei, ich bekomme 
aber leider nichts auf den CAN-Bus gesendet. Carsten St. meinte weiter 
oben, dass in den Starterkits keine Transceiver integriert sind - ich 
habe mir gerade das Datenblatt angeschaut... auf dem USCALE - Starterkit 
ist ein TLE6250GV33 verbaut. Laut Datenblatt vom TLE6250 GV 33 hat der 
aber keine Option, nur als Receiver betrieben zu werden (im Gegensatz 
zur 5V Version), somit müsste es doch möglich sein, mit dem Starterkit 
zu senden, oder?

Wäre euch dankbar für Unterstüzung!

Gruß

Kornelius

von Kornelius (Gast)


Lesenswert?

ok, hat sich erledigt - ich weis zwar nicht wirklich warum, aber es geht 
jetzt ;-) Das USCALE - Starterkit sendet einwandfrei auf den CANBus, nur 
in der U2Can - Software ist es wohl irgendwie nicht möglich mit dem 
Node0 zu senden... prinzipiell geht das aber schon. Vllt. lags auch 
daran, dass ich nur einen Knoten hardwaremäßig verdrahtet hatte... jetzt 
wo ich beide angeschlossen habe gehts auf jedenfall.

Gruß

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.