Forum: Mikrocontroller und Digitale Elektronik UART Programmierung bei ARM LPC2138


von SaschaW (Gast)


Lesenswert?

Hallo!

Ich versuche den UART0 bei einem LPC2138 ein zu richten. Leider bekomme 
ich entweder keine, oder keine Sinnvolle Ausgabe auf das Terminal.

Ich verwende das Embedded Artist QuickStart Board.

Hier mein Code:
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 nicht erlaubt)
10
  PLLCON = 0x01; // PLL aktivieren
11
 
12
  PLLFEED = 0xAA;  //PLL Feed-Sequenz
13
  PLLFEED = 0x55;
14
  while ( !( PLLSTAT & (1<<10) ) ); // Auf PLOCK warten 
15
  
16
  MAMTIM = 3; 
17
  
18
  VPBDIV = 1;
19
 
20
  PLLCON = 0x03; // PLL aktivieren und mit dem internen Taktgeber verbinden
21
  PLLFEED = 0xAA;  //PLL Feed Sequence
22
  PLLFEED = 0x55;
23
  
24
  // UART0 Initalisieren
25
  U0LCR  = 0x80;                // enable access to Divisor Latches
26
27
  U0DLL = 0x20;                // PCLK = CCLK @ 58,9225 MHz
28
  U0DLM = 0x00;                // divider is 32; desired baud rate = 115200, real baud rate 115083
29
  
30
  U0LCR = 0x00;                // disable access to Divisor Latches
31
  U0LCR = 0x03;                // 8 bit, 1 Stop bit, keine parity
32
  
33
  U0FCR = 0x00;                //reset FIFO
34
  U0IER = 0x00;                //clear interrupt bits
35
36
  U0FCR = 0x07;                //enable UART0 FIFO
37
  U1FCR = 0x07;                //enable UART1 FIFO
38
39
  // 'a' auf UART0 ausgeben
40
  while( 1 ){                // Endlos-Schleife
41
      while (!(U0LSR & (1<<5))) continue; // Warten, bis der Sendepuffer geleert ist
42
 
43
    // Neuen Wert in das "Transmitter Holding Register" schreiben
44
    U0THR = (char)'a';
45
  }
46
  return 0;
47
}

Ich bin für jeden Vorschlag offen.

von Robert Teufel (Gast)


Lesenswert?

Beispielprogramm UART:
http://www.standardics.nxp.com/support/documents/microcontrollers/pdf/an10369.pdf
Ist zwar fuer den LPC2106 geschrieben aber sollte genauso auf dem 
LPC2138 laufen. NXP hat ein sogenanntes Familienkonzept, Code kann sehr 
haeufig von kleineren Bausteinen uebernommen werden in der LPC2000 
Familie.

Weitere Beipielprogramme:
http://www.standardics.nxp.com/support/documents/microcontrollers/zip/code.bundle.lpc213x.lpc214x.uvision.zip

Eine Liste mit Hilfreichen Dokumenten  Programmen  Application Notes 
ist hier: 
http://www.standardics.nxp.com/support/documents/microcontrollers/all/?scope=LPC2138

Robert

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.