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
Kannst du vielleicht deinen Code/Projekt (inkl. DAvE-FIle) hochladen? Dann kann ich es mal selbst debuggen/ausprobieren.
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?
Hallo Patrick, die Transceiver sind nicht integriert. Infineon verwendet auf den Starterkits die TLE6250. (http://www.infineon.com/cgi-bin/ifx/portal/ep/channelView.do?channelId=-64668&channelPage=%2Fep%2Fchannel%2FproductOverview.jsp&pageTypeId=17099) Beispiele, App.Notes gibts bei Infineon direkt: http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-81334&programId=48184&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099 oder http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-71961&programId=65715&programPage=%2Fep%2Fprogram%2Finformation.jsp&pageTypeId=17099 bzw. http://de.sitestat.com/infineon/infineon/s?infineon.ZIP.Guest.Home.Products.Product_Categories.Microcontrollers.Development_Tools__Software_and_Training.C500_C800_XC800_Development_Tools_and_Software.Starter_Kits__Evaluation_Boards_and_Application_Kits.XC800_USCALE_start_kit.USCALE_CAN_HOT.ZIP&ns_type=pdf&ns_url=[http://www.infineon.com/upload/Document/USCALE_CAN_HOT.ZIP]
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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.