Hallo, habe seit kurzem ein LPCxpresso Board mit dem LPC1769. Bin dabei das ich mich ein wenig einarbeite. Die Entwicklungsumgebung mit dem mitgelieferten LPCxpresso finde ich sehr gut und die "Basics" behersche ich schon ein wenig. Woran ich momentan ein wenig kämpfe ist der CPU Clock. Auf dem LPCxpresso Board ist ein Quarz mit 32,768kHz bestückt. Mit dem internen PLL0 kann man den Takt erhöhen. Bei einem leerem Project habe ich die internen Register ausgelesen und mir CCLK errechnet: M=100 N=6 CCLKDIV=4 FIN=32768Hz PLLCLK= ((FIN*2)*M)/N = 1,092266MHz CCLK=PLLCLK/CCLKDIV = 273,0665kHz Nun möchte ich aber die CPU Frequenz ändern. Habe dies schon versucht, aber habe anscheinend was falsch gemacht, da danach das Board nicht mehr ansprechbar war. Hatte aber im ISP Mode (P2.10 auf GND) die Möglichkeit das Ganze wieder zu bereinigen und es funktioniert wieder alles. Da ich mir nicht wieder mein Board zerstären will möchte ich mal fragen ob wer schon mal Erfahrungen mit der Umstellung der Frequenz gehabt hat.
die PLL0 wird nicht mit 32kHz sondern mit 12MHz versorgt, damit tickert die CPU dann mit 100MHz. Der 1769 kann bis 120 MHz getaktet werden, ich habe mir dazu mal folgende Initialisierung zusammengekratzt (für die M/N Werte gibt es Beispiele im UserManual oder es gibt Excel Sheets als Hilfe).
1 | static void setupHardware(void) |
2 | {
|
3 | /* Disable peripherals power. */
|
4 | LPC_SC->PCONP = 0; |
5 | |
6 | /* Enable GPIO power. */
|
7 | LPC_SC->PCONP = PCONP_PCGPIO; |
8 | |
9 | /* Disable TPIU. */
|
10 | LPC_PINCON->PINSEL10 = 0; |
11 | |
12 | if ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) |
13 | {
|
14 | /* Enable PLL, disconnected. */
|
15 | LPC_SC->PLL0CON = 1; |
16 | LPC_SC->PLL0FEED = PLLFEED_FEED1; |
17 | LPC_SC->PLL0FEED = PLLFEED_FEED2; |
18 | }
|
19 | |
20 | /* Disable PLL, disconnected. */
|
21 | LPC_SC->PLL0CON = 0; |
22 | LPC_SC->PLL0FEED = PLLFEED_FEED1; |
23 | LPC_SC->PLL0FEED = PLLFEED_FEED2; |
24 | |
25 | /* Enable main OSC. */
|
26 | LPC_SC->SCS |= 0x20; |
27 | while( !( LPC_SC->SCS & 0x40 ) ); |
28 | |
29 | /* select main OSC, 12MHz, as the PLL clock source. */
|
30 | LPC_SC->CLKSRCSEL = 0x1; |
31 | |
32 | //LPC_SC->PLL0CFG = 0x20031;
|
33 | LPC_SC->PLL0CFG = ((6-1)<<16) | (((120-1)<<0)); // PLL config: N=6, M=120 -> 12 MHz * 2 * 120 / 6 -> 480 MHz |
34 | LPC_SC->PLL0FEED = PLLFEED_FEED1; |
35 | LPC_SC->PLL0FEED = PLLFEED_FEED2; |
36 | |
37 | /* Enable PLL, disconnected. */
|
38 | LPC_SC->PLL0CON = 1; |
39 | LPC_SC->PLL0FEED = PLLFEED_FEED1; |
40 | LPC_SC->PLL0FEED = PLLFEED_FEED2; |
41 | |
42 | /* Set clock divider. */
|
43 | LPC_SC->CCLKCFG = 4-1; // 120 MHz |
44 | // LPC_SC->CCLKCFG = 40-1; // 12 MHz
|
45 | |
46 | /* Configure flash accelerator. */
|
47 | LPC_SC->FLASHCFG = 0x403a; |
48 | |
49 | /* Check lock bit status. */
|
50 | while( ( ( LPC_SC->PLL0STAT & ( 1 << 26 ) ) == 0 ) ); |
51 | |
52 | /* Enable and connect. */
|
53 | LPC_SC->PLL0CON = 3; |
54 | LPC_SC->PLL0FEED = PLLFEED_FEED1; |
55 | LPC_SC->PLL0FEED = PLLFEED_FEED2; |
56 | while( ( ( LPC_SC->PLL0STAT & ( 1 << 25 ) ) == 0 ) ); |
57 | |
58 | |
59 | /* Disable PLL, disconnected. */
|
60 | LPC_SC->PLL1CON = 0; |
61 | LPC_SC->PLL1FEED = PLLFEED_FEED1; |
62 | LPC_SC->PLL1FEED = PLLFEED_FEED2; |
63 | |
64 | LPC_SC->PLL1CFG = 0x23; |
65 | LPC_SC->PLL1FEED = PLLFEED_FEED1; |
66 | LPC_SC->PLL1FEED = PLLFEED_FEED2; |
67 | |
68 | /* Enable PLL, disconnected. */
|
69 | LPC_SC->PLL1CON = 1; |
70 | LPC_SC->PLL1FEED = PLLFEED_FEED1; |
71 | LPC_SC->PLL1FEED = PLLFEED_FEED2; |
72 | while( ( ( LPC_SC->PLL1STAT & ( 1 << 10 ) ) == 0 ) ); |
73 | |
74 | /* Enable and connect. */
|
75 | LPC_SC->PLL1CON = 3; |
76 | LPC_SC->PLL1FEED = PLLFEED_FEED1; |
77 | LPC_SC->PLL1FEED = PLLFEED_FEED2; |
78 | while( ( ( LPC_SC->PLL1STAT & ( 1 << 9 ) ) == 0 ) ); |
79 | |
80 | /* Setup the peripheral bus to be the same as the PLL output (64 MHz). */
|
81 | LPC_SC->PCLKSEL0 = 0x05555555; |
82 | |
83 | }
|
Hallo JojoS, vielen Dank für deine Hilfe! Da habe ich wohl vom LPCxpresso Schaltplan XTAL mit RTC vertauscht!
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.