Hallo Leute, ich habe einen C167CR µC und wollte das CAN Modul darauf initialisieren. Hat das schon mal einer gemacht? Welche Register muss ich da wie beschreiben? Die "Application Notes" haben mir auch nich wirklich weiter geholfen. Meine Zielvorstellungen ist es erstmal ledigleicht das CAN Modul zu animieren ganz einfach ein gepulstes Signal auf den Bus zu legen. So als "Lebenszeichen" damit man erstmal weiß, aha es geht. Leider krieg ich nicht die Initilaisierung nicht hin :-( Vielleicht hat einer das ja schonmal gemacht und kann mir da weiter helfen. Achso - diese generierten Sources haben auch nicht geklappt. Dankschön! Micha
Hallo, lade Dir von Infineon einfach mal "Dave" mit einem c167-Modul herunter. Hier wird Dir dann ein einfacher aber funktionierender CAN-Treiber generiert. Bye
Thorsten wrote: > Hallo, > > lade Dir von Infineon einfach mal "Dave" mit einem c167-Modul herunter. > Hier wird Dir dann ein einfacher aber funktionierender CAN-Treiber > generiert. > > Bye das geht ja leider nicht.
Hi, das der CAN-Bus aber etwas anderes ist wie normale Portpins ist dir schon klar, oder? Hier kannst du nicht einfach den Bus "toggeln" und mit dem Oszi nachschauen. Wenn der 167er richtig konf. ist erwartet der C167 mind. ein Gegenüber, da auf eine gesendete Nachricht ein ACK kommen muss, sonst erhälst du eine Fehlermeldung. Grüße, Michael
Michael wrote: > Hi, > > das der CAN-Bus aber etwas anderes ist wie normale Portpins ist dir > schon klar, oder? Definitiv, ja. P4.5 & P4.6 sind das bei den C167 Derivaten... > Hier kannst du nicht einfach den Bus "toggeln" und mit dem Oszi > nachschauen. Dazu gibt es ja eine Art Controllmessage. Ich hab zum Beispiel mit dem SYS TEC USB Canmodul so eine MSG auf den Bus geworfen, sodass du zu einer TxMSG immer die RxMSG bekommen hast. Und mit nem I/O Modul kannste dann bspw. auch mit einem Oszi gucken, was so passiert. > Wenn der 167er richtig konf. ist erwartet der C167 mind. ein Gegenüber, > da auf eine gesendete Nachricht ein ACK kommen muss, sonst erhälst du > eine Fehlermeldung. Tja, ja schon klar, darum frage ich ja ob schon mal einer solch Konfiguration ohne "Dave" oä. zu Fuß gemacht hat. Ich steck da nämlich in ner Sackgasse. MfG Micha
Ich habe jetzt mal was zusammengezimmert, fällt einem was auf was noch fehlen könnte?
1 | /* Define CAN module control registers */
|
2 | |
3 | #define CSR *(unsigned char*) 0xef00 // Control Status Register
|
4 | #define IR *(unsigned char*) 0xef02 // Interrupt Register
|
5 | #define BTR *(unsigned int *) 0xef04 // Bit Timing Register
|
6 | #define GMS *(unsigned int *) 0xef06 // Global Mask Short
|
7 | #define SYSCON *(unsigned int *) 0xFF12 //System Configuration Register
|
8 | |
9 | /* Define CAN module control register values */
|
10 | |
11 | //CSR
|
12 | CSR = 0x0021; |
13 | /*
|
14 | INIT 1 - Initialization
|
15 | IE 0 - Interupt Enable
|
16 | SIE 0 - Status Change Interrupt
|
17 | EIE 0 - Error Interrupt Enable
|
18 | CPS 0 - Clock Prescaler Control Bit
|
19 | CCE 1 - Configuration Change Enable
|
20 | TM 0 - Test Mode (must be 0!)
|
21 | LEC 0 - Last Error Code
|
22 | TXOK 0 - Transmitted Message Successfully
|
23 | RXOK 0 - Received Message Successfully
|
24 | EWRN 0 - Error Warning Status
|
25 | BOFF 0 - Bus off Status
|
26 | */
|
27 | |
28 | //IR
|
29 | IR = 0x0000; |
30 | /*
|
31 | INITD 0 - Interrupt Identifier
|
32 | */
|
33 | |
34 | //BTR
|
35 | BTR = (BRP) | (SJW << 6) | (TSEG1 << 8) | (TSEG2 << 12); |
36 | |
37 | //GMS
|
38 | //11Bit MSGs
|
39 | GMS = 0xE0FF; |
40 | |
41 | //SYSCON
|
42 | /*
|
43 | XPER-SHARE x - XBUS Peripheral Share Mode Control
|
44 | VISIBLE x - Visible Mode Control
|
45 | XPEN 1 - XBUS Peripheral Enable Bit - !!!CAN!!!
|
46 | BDRSTEN x - Bidirectional Reset Enable Bit
|
47 | OWDDIS x - Oscillator Watchdog Disable Bit
|
48 | CSCFG x - Chip Select Configuration Control
|
49 | WRCFG x - Write Configuration Control
|
50 | CLKEN x - System Clock Output Enable
|
51 | BYTDIS x - Disable/Enable Control for Pin BHE (BHE = Byte High Enable)
|
52 | ROMEN x - Internal ROM Enable
|
53 | SGTDIS x - Segmentation Disable/Enable Control
|
54 | ROMS1 x - Internal ROM Mapping
|
55 | STKSZ x - System Stack Size
|
56 | */
|
57 | SYSCON = 0xE024; |
58 | |
59 | //Direction Port DP4
|
60 | //RxD
|
61 | _putbit(1,DP4,5); |
62 | //TxD
|
63 | _putbit(0,DP4,6); |
Micha
Hallo, weiß jemand, wie man nach erfolgreicher Initialisierung des CANs, diesen wieder deaktivieren kann, sodass man den CAN_TXD-Pin als regulären Gerneral Purpose I/O verwenden kann? Konkret möchte ich für einen einfach Systemtest des externen CAN-Transceivers den TXD-Pin toggeln... Leider hat dies nicht mit einfachem setzen des DP4.6 auf output und toggeln des P4.6 nicht funktioniert ;o( Bitte um Hilfe !! MAGGi
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.