Guten Morgen, ich möchte mit dem Infineon-Mikrocontroller XC886/888 eine CAN BUS Verbindung realisieren. Hat jemand schon einige Erfahrungen mit dem Mikrocontroller gemacht? Ist es ein sehr schwierig die CAN Schnittstelle zu konfigurieren?
Hallo Leonhardt, das ist alles relativ einfach. Sehr vieles wird vom Konfigurationstool DAvE abgenommen.
Ist das Konfigurationstool kostenlos erhältlich? Ist das nicht der neue Keil Compiler? Kann man das Tool downloaden?
DAvE ist kostenlos. http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-65525&programId=35134&programPage=%2Fep%2Fprogram%2Finformation.jsp&pageTypeId=17099 Du brauchst dann noch das DIP-File für den XC886. Als Compiler wird im Moment nur Keil und SDCC unterstützt. Ich würde dir Keil empfehlen (die freie 2k Version müsste zu Beginn reichen) Es gibt auch noch ein Beispiel von Infineon unter: http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-81334&programId=48184&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099
Achso das heisst ich verwende dafür nur das DAvE Konfigurationstool. Und damit kann ich ja den Compiler auswählen. In diesem Fall den Keil Compiler. Programmieren tut ich dann mit einem Editor von DAvE. Ist das richtig so?
Nein, DAvE hat keinen Editor. Du musst aber zu Anfang auswählen für welchen Compiler er ein Projekt aufsetzt. Das ganze läuft in etwa so ab: 1. Mit DAvE ein Projekt erzeugen 2. Initilaisierung des µC (Ports auswählen, UART einrichten, ADC einrichten etc.) in DAvE und Projekt erzeugen 3. Den von DAvE erzeugten Code im Compiler aufmachen und weiter bearbeiten (Der µC ist bis dahin nur initialisiert, macht aber nichts - main() ist leer) ACHTUNG beim editieren: Schreibe deinen Code nur zwischen die Kommentarzeilen //User Code Beginns und //User Code Ends. Wenn du dies beherzigst kannst du dein Programm auch noch nachträglich in DAvE uminitialisieren (z.B. Baudraten ändern) ohne dass dein eigener Code verloren geht. 4. Programm im Compiler übersetzen und Debuggen
Danke für die schnelle Hilfe! Ok so wie es aussieht, ist das wohl nicht so sehr kompliziert. Das Konfigurationstool nimmt ja einiges an Arbeit ab. Wenn ich zum Beispiel den CAN Teil benutzen will, dann muss man mit dem Konfigurationstool die Einstellungen dort für den CAN vornehmen. Dannach wird ein CODE Rumpf erzeugt. Dort kann man dann seinen gewünschten Code platzieren.
Genau, in jedem Modul-Teil in DAvE gibt es einen Reiter functions mit der Initfunktion (z.B. IO_vInit, ADC_vIinit, MultiCAN_vInit, etc.) Mit Aktivierung diese Punktes wird für das Modul eine C-Datei (z.B. IO.c, ADC.c) mit der entsprechenden Initialisierung und ausgewählten Funktionen erzeugt
Hallo Carsten Steiner, ja hast du schon mal was mit dem Mikrocontroller gemacht? Wie sieht denn zum Beispiel zu eine C-Code für den CAN BUS aus?
Habe sehr viel mit den XC800 von Infineon zu tun. Auf der Infineon-Homepage befindet sich ein Beispiel für den LoopBack-Mode. http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-81334&programId=48184&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099 runterscrollen bis Application Example. Komm erst einmal mit DAvE, Keil und dem Beispiel klar, dann kann man noch weitere Demos angehen.
Hallo! Ich schlage mich zur Zeit auch mit XC886 und CAN rum. Ich habe mir mit DAVE die Konfiguration und die CAN-Funktionen erzeugen lassen und folgendes in meine main-Funktion eingefügt: un_32bit canTestObject; canTestObject.ubDB[0] = 0x77; canTestObject.ubDB[1] = 0x76; canTestObject.ubDB[2] = 0x75; canTestObject.ubDB[3] = 0x74; CAN_vLoadData(0x00, &canTestObject.ulVal); CAN_vSetMSGVAL(0x00); CAN_vTransmit(0x00); Leider funktioniert der Code dann nur im Software-Simulator von Keil microVision (im Peripherals -> MultiCAN -> CAN Communication 0 Fenster erscheint die gesendete CAN Message) und nicht auf meiner Hardware (Wenn ich an den eingestellten Output-Pins CAN_RXD und CAN_TXD mit einem Oszi messe, passiert nichts). Hat jemand eine Idee, wo ran das liegen könnte oder ähnliche Probleme gehabt? Oder hat jemand ein Beispiel-Programm, dass über die Pins P1_6 und P1_7 eine CAN-Message versendet? Wenn ja bitte mal an daniel@richardt-elektrotechnik.com schicken. Danke! Das MultiCAn Getting Started von Infineon hab ich mir auch schon angeschaut, aber das hat mich auch nicht weiter gebracht. Daniel
Alle meine Beispiel sind für P1.0 und P1.1. Hilf dir das weiter? Müsstest ja nur im Dave kurz die Pinbelegung umändern
Ja, das würde mir sicher weiterhelfen. Wäre super wenn Du mir Deine Beispiele mal schicken könntest (daniel@richardt-elektrotechnik.com). Schon mal vielen Dank :) Daniel
Hi Daniel Schwalm, hast du deinen CAN Bus zu laufen bekommen? Wenn ja ich brächte dringend Unterstützung. Könntest du deinen Beispiel Code hierein posten?
Ich verwende die Ausgänge P1.3 und P1.4 (SUBD9 Stecker) Ich schaffe es nicht nur mal eine Nachricht an den CAN Dongle zusenden? Auf beiden Seiten habe ich jeweils 500kBit/s eingestellt. Kann mir hier noch jemand einige Tipps geben?
Ich habe mein Projekt an den Dateianhang angehängt. Vielleicht sieht da jemand noch einen Fehler.
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.