MarkusW.
17.10.2012, 12:04
Hi,
ich würde meinen R8C23 gerne mit der CAN Schnittstelle ansteuern. Die
nötige Hardware (CAN Bustransceiver) ist schon aufgebaut jetzt hakt es
nur noch an der Software...
Habe leider vorher noch nicht mit CAN zu tun gehabt und mir deshalb erst
mal eine Einführung in CAN von Renesas durchgelesen:
http://documentation.renesas.com/doc/products/mpumcu/apn/rej05b0804_m16cap.pdf...
Dann habe ich noch ein AppNote bei Renesas gefunden, wo eine CAN API
erklährt wird - dort werden einige Funktionen beschrieben die man für
den Datenverkehr über die CAN Schnittstelle braucht:
http://documentation.renesas.com/doc/products/mpumcu/apn/reu05b0063_mcuap.pdf...
Leider ist dort kein Code enthalten nur der Hinweis: "The
demonstrations “Streaming A-D” and “Playcatch Net Test” for both
R8C/M16C/M32C/R32C and SH RCAN-ET/TL
MCUs are available and demonstrate usage of the API."
Allerdings finde ich diese Beispiele bei Renesas nicht.
Unabhängig davon scheint die Sache mit CAN ziemlich kompliziert zu sein
- jedenfalls wenn man noch keine Ahnung davon hat. Ich glaube auch das
mir eine simple Lösung genügen würde, denn mein CAN Bus bzw. das was ich
damit vorhabe ist ziemlich simpel:
Ein Datenaustausch zwischen zwei µC, wobei einer als Master fungiert und
eine Anfrage an den anderen sendet. Nur auf diese Anfrage antwortet der
zweite µC (er fängt also nicht von sich aus an zu reden).
Jeder µC wartet immer solange ab, bis er ein komplettes Telegramm vom
anderen bekommen hat. Wenn ein Übertragungsfehler auftritt, wird das
Telegramm einfach verworfen. Wenn also µC A eine Anfrage an µC B sendet
und es zu einem Übertragungsfehler kommt, dann antwortet µC B einfach
nicht. Durch ein TimeOut stellt µC A dann fest das ein Problem vorliegt.
Das ganze was ich gerade beschrieben habe läuft im Moment über RS485 -
der Code dazu steht schon ich will jetzt nur auf CAN umsteigen.
Ich habe also kein CAN Bus mit x Teilnehmern, brauche keine zig CAN
Slots und auch keine Automatische Antworttelegramme oder
Fehlerfunktionen usw....
Das ich mich an das CAN Telegrammformat mit ID, aribitrierung usw.
halten muss ist mir auch klar, trotzdem denke ich das ich ein haufen
davon was in den von mir genannten AppNotes steht garnicht brauche....
Also falls ihr schon mal was mit CAN gemacht habt würden mir einige
Beispiele sicher weiterhelfen.
Und bitte keine Fragen wie "warum brauchst du denn CAN dazu".
Vielen Dank ;)
ich würde meinen R8C23 gerne mit der CAN Schnittstelle ansteuern. Die
nötige Hardware (CAN Bustransceiver) ist schon aufgebaut jetzt hakt es
nur noch an der Software...
Habe leider vorher noch nicht mit CAN zu tun gehabt und mir deshalb erst
mal eine Einführung in CAN von Renesas durchgelesen:
http://documentation.renesas.com/doc/products/mpumcu/apn/rej05b0804_m16cap.pdf...
Dann habe ich noch ein AppNote bei Renesas gefunden, wo eine CAN API
erklährt wird - dort werden einige Funktionen beschrieben die man für
den Datenverkehr über die CAN Schnittstelle braucht:
http://documentation.renesas.com/doc/products/mpumcu/apn/reu05b0063_mcuap.pdf...
Leider ist dort kein Code enthalten nur der Hinweis: "The
demonstrations “Streaming A-D” and “Playcatch Net Test” for both
R8C/M16C/M32C/R32C and SH RCAN-ET/TL
MCUs are available and demonstrate usage of the API."
Allerdings finde ich diese Beispiele bei Renesas nicht.
Unabhängig davon scheint die Sache mit CAN ziemlich kompliziert zu sein
- jedenfalls wenn man noch keine Ahnung davon hat. Ich glaube auch das
mir eine simple Lösung genügen würde, denn mein CAN Bus bzw. das was ich
damit vorhabe ist ziemlich simpel:
Ein Datenaustausch zwischen zwei µC, wobei einer als Master fungiert und
eine Anfrage an den anderen sendet. Nur auf diese Anfrage antwortet der
zweite µC (er fängt also nicht von sich aus an zu reden).
Jeder µC wartet immer solange ab, bis er ein komplettes Telegramm vom
anderen bekommen hat. Wenn ein Übertragungsfehler auftritt, wird das
Telegramm einfach verworfen. Wenn also µC A eine Anfrage an µC B sendet
und es zu einem Übertragungsfehler kommt, dann antwortet µC B einfach
nicht. Durch ein TimeOut stellt µC A dann fest das ein Problem vorliegt.
Das ganze was ich gerade beschrieben habe läuft im Moment über RS485 -
der Code dazu steht schon ich will jetzt nur auf CAN umsteigen.
Ich habe also kein CAN Bus mit x Teilnehmern, brauche keine zig CAN
Slots und auch keine Automatische Antworttelegramme oder
Fehlerfunktionen usw....
Das ich mich an das CAN Telegrammformat mit ID, aribitrierung usw.
halten muss ist mir auch klar, trotzdem denke ich das ich ein haufen
davon was in den von mir genannten AppNotes steht garnicht brauche....
Also falls ihr schon mal was mit CAN gemacht habt würden mir einige
Beispiele sicher weiterhelfen.
Und bitte keine Fragen wie "warum brauchst du denn CAN dazu".
Vielen Dank ;)