Forum: Mikrocontroller und Digitale Elektronik LPC2378 CAN Controller Problem


von Wolfgang (Gast)


Lesenswert?

Guten Tag,

ich hab z.z. folgendes Problem:

Ich benutze das Eval Board von Olimex mitm LPC2378 und will dort vorerst 
mal CAN und USB laufen lassen. Nun häng ich bei den Settings der 
Baudrate ( jedenfalls denke ich, dass dort der Fehler ist ).

Das Board hat einen 12 Mhz Quarz, welchen ich ich zuerst auf 288 MHz 
multipliziere, um damit für später einen CPU Clk mit 57,6 Mhz 
herzustellen.

CAN Clock ist auf 48 MHz ( 288 / 6 )


Hier mein Code für die CAN Initialisierung:

void CanInit_fct (void)
{
  // Power enable ( CAN 2 )
  PCONP |= (1 << 14);

  // Clock Can2 enable
  PCLKSEL0 = 0x30000000;

  // Aktiviert CAN2
  PINSEL0 &= ~0x00000A00;
  PINSEL0 |= 0x00000A00;

  // CAN Reset
  CAN2MOD = 1;
  // Disable CAN Receive Interrupt
  CAN2IER = 0;
  // Reset Error Counter
  CAN2GSR = 0;
  // Bitrate
  CAN2BTR = BITRATE500K48MHZ;
  // Interrupt installieren
  install_irq(CAN_INT,(void *) CanIrqHandler_fct, 1);
  // Enable CAN Receive Interrupt
  CAN2IER = 1;
  // CAN Normal Mode
  CAN2MOD = 0;
}

ich komm einfach nicht weiter bzw. finde den Fehler nicht.

mfg Wolfgang

von Wolfgang (Gast)


Lesenswert?

Sorry für das Doppelposting.

Nachtrag:

Ich habe hier noch 2 weitere CAN-Bus Teilnehmer ( ein PC mit CAN Karte 
und ein anderen µC mit CAN ), dort funktioniert alles reibungslos. Wenn 
ich mir nun das Fehlerstatus Register vom LPC2378 anschaue, sagt er mir 
ein Stuff Error.

Hat jmd. vielleicht eine Idee?

von Robert Teufel (Gast)


Lesenswert?

Folgende Vorschlaege:
Bitte das neueste Users Manual runterladen und nochamsl das Kapitel 
ueber PLL studieren, da steht (jetzt) was ueber ungerade Teiler fuer die 
PLL, die nicht erlaubt sind. Das liegt daran, dass bei einem ungeraden 
Teiler der Takt intern nicht mehr symmetrisch ist. Jetzt bestimmt die 
kuerzere "Takthaelfte" die Geschwindigkeit, die der Baustein 
tatsaechlich sieht. Das ist bei 288 MHz und Teiler 5 equivalent zu 72 
MHz und da tut der Baustein im Rev "-" oder Rev "A" unzuverlaessig 
(manchmal auch gar nicht). Siehe Errata Sheet.

Mach den Teiler mal auf 6, lass den Bausten bei 48 MHz laufen und 
aendere die CAN Teiler entsprechend. Falls es dann immer noch nicht 
laeuft, liegt das Problem woanders.

Robert

von Wolfgang (Gast)


Lesenswert?

danke für die Antwort.

ja ich hab den Teiler schon auf 5 stehen ( sprich 6 ) und es hat sich 
nichts gebessert. Mir gehen langsam die Ideen aus, da wir ja mehrere CAN 
- Knoten haben und diese problemlos kommunizieren können, nur eben das 
Olimex Board nicht..

per Hand errechnete Baudrate-Settings haben auch nichts geholfen ( wir 
haben einen Sampling Point von 60-70% )

Initialisiert ist eigentlich der CAN-Clk, CPU-Clk und Power für CAN, hab 
ich da irgendwas vergessen?

von Peter (Gast)


Lesenswert?

Gib mal CAN1 und CAN2 frei.
Hatte auch das Problem, das nur ein CAN aktiviert nicht lief.
Ich benutze für beide CAN nur die halbe Systemfrequenz, dann läufts bei 
mir mit 72 und 60 MHz Systemtakt. 72 MHz macht aber schon mal Probleme 
(siehe Errata).

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
Noch kein Account? Hier anmelden.