www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XC886 CAN-FIFO


Autor: Daniel Schwalm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten St. (carsten)
Datum:

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

Autor: Daniel Schwalm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schick dir mal was per EMail.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,
die Transceiver sind nicht integriert. Infineon verwendet auf den 
Starterkits die TLE6250. 
(http://www.infineon.com/cgi-bin/ifx/portal/ep/chan...)

Beispiele, App.Notes gibts bei Infineon direkt:
http://www.infineon.com/cgi-bin/ifx/portal/ep/prog...
oder
http://www.infineon.com/cgi-bin/ifx/portal/ep/prog...
bzw.
http://de.sitestat.com/infineon/infineon/s?infineo...]

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiss jemand ob es überhaupt eine deutsche Beschreibung zu dem MultiCAN 
gibt?

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick (Gast)
Datum:

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

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei dem Starterkit XC800 USCALE gibt es noch ein weiteres Beispiel.
http://www.infineon.com/cgi-bin/ifx/portal/ep/prog...

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

Autor: Kornelius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kornelius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

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.