Forum: Mikrocontroller und Digitale Elektronik LPC11Cxx: C_CAN für "normales" CAN nutzbar?


von Rumbalotte (Gast)


Lesenswert?

Hallo, sind die LPC11Cxx als vollwertiger Ersatz für z.B. die 
Kombination ATMEGA, MCP2515 und MCP2551 nutzbar? Hätte ja einen enormen 
Charme, alles in einem Chip. Unter C_CAN-Beschreibungen konnte ich mir 
das nun leider nicht rauslesen. CANopen driver sind mit drin; das Ganze 
scheint ja eine eigene Protokolldefinition zu sein. Aber kann man das 
auch wie oben gefragt nutzen?

Der Hit wäre ja noch, wenn auch der Transceiverteil mit 3.3 V auskommen 
würde.

von SNR (Gast)


Lesenswert?

Rumbalotte schrieb:
> Hallo, sind die LPC11Cxx als vollwertiger Ersatz für z.B. die
> Kombination ATMEGA, MCP2515 und MCP2551 nutzbar?

Ja, manche haben komplett CAN-Controller UND CAN-Tranceiver (natürlich 
auch noch den Cortex M0) in einem Chip :-D
Schon geil die kleinen Scheißerchen...

von SNR (Gast)


Lesenswert?

Rumbalotte schrieb:
> CANopen driver sind mit drin

CANopen ist nur das Protokoll das auf dem "normalen" CAN aufsetzt...

von (prx) A. K. (prx)


Lesenswert?

Man sollte nur beachten, dass ein zerblitzter SO-8 oder gar DIP-8 Käfer 
leichter austauschbar ist als ein LQFP48.

von SNR (Gast)


Lesenswert?

A. K. schrieb:
> Man sollte nur beachten, dass ein zerblitzter 8-beiniger MCP2551
> leichter austauschbar ist als ein LQFP48.

Ja, dass stimmt natürlich.
Ist aber fast immer der Nachteil wenn man es kompakt haben möchte.
LQFP finde ich noch gut von Hand zu löten, ab QFN wirds eklig.

Ich denke mal die 2 Punkte, Platz und Preis, sind allerdings ein 
wichtiger Punkt. Ein Atmega alleine kostet ja schon so viel wie ein 
LPC11C.
Der MCP2515 und MCP2551 sind dann auch nochmal 1,50EUR.
Vom Platz ganz zu schweigen.
Hätte ich gerade was mit CAN vor, würde ich mir die echt mal näher 
anschauen.

von Jürgen (jliegner)


Lesenswert?

die Dinger haben einen CAN- und CANOpen-Treiber im Rom. Muss man aber 
nicht nutzen. Es geht auch über normales Register setzen.
Die Rom-Routinen werden in etwa so angesprochen:
1
  /* Send a simple one time CAN message */
2
  msg_obj.msgobj  = 0;
3
  msg_obj.mode_id = 0x345;
4
  msg_obj.mask    = 0x0;
5
  msg_obj.dlc     = 4;
6
  msg_obj.data[0] = 'T';  //0x54
7
  msg_obj.data[1] = 'E';  //0x45
8
  msg_obj.data[2] = 'S';  //0x53
9
  msg_obj.data[3] = 'T';  //0x54
10
 (*rom)->pCAND->can_transmit(&msg_obj);

Der Transciverteil möchte aber seine 5V haben.

Unter Beitrag "Re: Problem mit der Beschaltung eines CAN-Knoten" habe ich mal 
eine kleine Platine entwickelt die ich hier zum Basteln verwende. Falls 
jemand an den Eagle-Dateien interesse hat bitte pm.

von Lutz (Gast)


Lesenswert?

Die LPC11Cxx sind mir auch schon als äußerst interessant aufgefallen. 
Mit 32 kB Flash, 8 kB RAM, integriertem Transceiver, bis zu 50 MHz, 
relativ kleinem Gehäuse LQFP 48 und dem Preis (zumindest bei 
Futureelectronics, bei den Standarddistributoren eher nicht) echt gut. 
Mit Adapterplatine wären die auch noch ganz gut einsetzbar, sofern man 
keine eigenen Platinen ätzen oder Einzelstücke bauen will.

Was ich beim Überfliegen des User Manuals allerdings noch nicht 
verstanden hatte war das GPIO-Handling. Das scheint (zumindest auf den 
ersten Blick) ganz anders als sonst zu sein; irgendwas mit MASK-register 
in einem Addressraum ...?

von Jürgen (jliegner)


Lesenswert?

Das habe ich so auch noch nirgends wo anders gesehen.

Man kann das Portregister wie bei den AVRs auch ganz normal beschreiben
1
LPC_GPIO0->DATA|=(1<<bitPos);

Durch folgenden Aufruf kann man den Pin am Port unabhängig vom Zustanbd 
der anderen Pins setzen und rücksetzen in einem Rutsch. Dafür haben die 
LPC17xx bzw. STM32 SET und CLR Register.
1
// Set 
2
LPC_GPIO0->MASKED_ACCESS[(1<<bitPosi)] = (1<<bitPosi);
3
4
// Clr 
5
LPC_GPIO0->MASKED_ACCESS[(1<<bitPosi)] = (0<<bitPosi);

von Lord Helmchen (Gast)


Lesenswert?

Schade nur, daß die LPC11Cxx keine sleep-modes haben. Das haben nur die 
L-Varianten. Deshalb leider nichts für mich, da der Stromverbrauch dann 
viel zu hoch ist.

von SNR (Gast)


Lesenswert?

Lord Helmchen schrieb:
> Schade nur, daß die LPC11Cxx keine sleep-modes haben.

Hm, wenn ich aber in die Manuals reinschaue, heißt es da:
1
 Power control:
2
* Integrated PMU (Power Management Unit) to minimize power consumption
3
during Sleep, Deep-sleep, and Deep power-down modes.
4
* Three reduced power modes: Sleep, Deep-sleep, and Deep power-down.
5
* Processor wake-up from Deep-sleep mode via a dedicated start logic using
6
13 of the GPIO pins

http://www.nxp.com/documents/leaflet/75017050.pdf
http://www.nxp.com/documents/data_sheet/LPC11CX2_CX4.pdf


Stromverbrauch wird auch für die verschiedenen Modi angegeben:
1
system clock = 12 MHz
2
VDD = 3.3 V
3
- 3 mA
4
system clock = 50 MHz
5
VDD = 3.3 V
6
- 9 mA
7
Sleep mode; 
8
system clock = 12 MHz
9
VDD = 3.3 V
10
- 2 mA
11
Deep-sleep mode; 
12
VDD = 3.3 V
13
- 6 uA
14
Deep power-down mode; 
15
VDD = 3.3 V
16
- 220 nA

Grüße

von Lord Helmchen (Gast)


Lesenswert?

SNR schrieb:
> http://www.nxp.com/documents/data_sheet/LPC11CX2_CX4.pdf

In dem Datasheet steht es in der Tat unter 7.16.5. Interessant.
Ich hatte das im User Manual 
http://www.nxp.com/documents/user_manual/UM10398.pdf unter 5.1 gesehen. 
Dort steht
"The power profiles are available for parts LPC11(D)1x/102/202/302 only 
(LPC1100L series)."
Nun bin ich verwirrt.

von SNR (Gast)


Lesenswert?

In der Parametric Search:
http://www.nxp.com/ps/#71499
Bin ich einfach mal auf ein Datenblatt des LPC11C22 bzw. 24 gegangen.
Nur die haben ja den Tranciever schon drin.

Und da steht das mit den Sleepmodes:
http://www.nxp.com/documents/data_sheet/LPC11CX2_CX4.pdf
1
 Power control
2
The LPC11Cx2/Cx4 support a variety of power control features. There are three special 
3
modes of processor power reduction: Sleep mode, Deep-sleep mode, and Deep 
4
power-down mode. The CPU clock rate may also be controlled as needed by changing 
5
clock sources, reconfiguring PLL values, and/or altering the CPU clock divider value. This 
6
allows a trade-off of power versus processing speed based on application requirements. 
7
In addition, a register is provided for shutting down the clocks to individual on-chip 
8
peripherals, allowing fine tuning of power consumption by eliminating all dynamic power 
9
use in any peripherals that are not required for the application. Selected peripherals have 
10
their own clock divider which provides even better power control.

Grüße

von Lord Helmchen (Gast)


Lesenswert?

Ich hab vor lauter Schreck auch mal schnell den Keil mit dem 
LPC11C14-Example angeworfen; und dort git es auch deep-sleep etc.
Also scheint es die sleep-modes dort zu geben. Wäre ja eigentlich auch 
ein Hammer, wenn nicht.
Dann müssen diese Power Profiles was anderes sein als ich dachte. Puh!

von Jürgen (jliegner)


Lesenswert?

Da habt ihr sicher was falsch verstanden. Da wo die C-Typen den 
CAN-Treiber im Rom haben, wird der Platz bei den Normalen Typen für 
Rom-Routinen in der Art:
1
    (*rom)->pPWRD->set_power(command,result);   //set system power
2
    (*rom)->pPWRD->set_pll(command,result);     //set the PLL

benutzt. Eine nette Zugabe aber nichts was nicht auch mit den Registern 
geht.

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.