Hi!
I have got an problem using the uart of the LPC2138. I`m using the
EmbeddedArtists LPC2138 QuickStart Board. I get either no output on the
terminal or useless output.
1 | #include <LPC213x.h>
|
2 |
|
3 | int main( void )
|
4 | {
|
5 |
|
6 | // Pins auf UART Funktion schalten
|
7 | PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x00000005;
|
8 | // PLL einstellen
|
9 | PLLCFG = (4-1)|((2-1)<<5); // M=4 und P=2 (Multiplikatoren von 0 sind
|
10 | nicht erlaubt)
|
11 | PLLCON = 0x01; // PLL aktivieren
|
12 |
|
13 | PLLFEED = 0xAA; //PLL Feed-Sequenz
|
14 | PLLFEED = 0x55;
|
15 | while ( !( PLLSTAT & (1<<10) ) ); // Auf PLOCK warten
|
16 |
|
17 | MAMTIM = 3;
|
18 |
|
19 | VPBDIV = 1;
|
20 |
|
21 | PLLCON = 0x03; // PLL aktivieren und mit dem internen Taktgeber
|
22 | verbinden
|
23 | PLLFEED = 0xAA; //PLL Feed Sequence
|
24 | PLLFEED = 0x55;
|
25 |
|
26 | // UART0 Initalisieren
|
27 | U0LCR = 0x80; // enable access to Divisor Latches
|
28 |
|
29 | U0DLL = 0x20; // PCLK = CCLK @ 58,9225 MHz
|
30 | U0DLM = 0x00; // divider is 32; desired baud rate =
|
31 | 115200, real baud rate 115083
|
32 |
|
33 | U0LCR = 0x00; // disable access to Divisor Latches
|
34 | U0LCR = 0x03; // 8 bit, 1 Stop bit, keine parity
|
35 |
|
36 | U0FCR = 0x00; //reset FIFO
|
37 | U0IER = 0x00; //clear interrupt bits
|
38 |
|
39 | U0FCR = 0x07; //enable UART0 FIFO
|
40 | U1FCR = 0x07; //enable UART1 FIFO
|
41 |
|
42 | // 'a' auf UART0 ausgeben
|
43 | while( 1 ){ // Endlos-Schleife
|
44 | while (!(U0LSR & (1<<5))) continue; // Warten, bis der Sendepuffer
|
45 | geleert ist
|
46 |
|
47 | // Neuen Wert in das "Transmitter Holding Register" schreiben
|
48 | U0THR = (char)'a';
|
49 | }
|
50 | return 0;
|
51 | }
|
Thanks