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 | }
|