9.UART of LPC2148
9.UART of LPC2148
UART
• Two Identical UARTs ➔ UART0 & UART1
• We are using UART0 for our example.
PLL
VPBDIV= 0x01;
Pins Involved
U0LCR= 0x00000083;
UART0 Line Status Register - U0LSR
LSB
L
U0DLM U0DLL
Baud Rate Calculations
A ➔ P1.25 – ON
B ➔ P1.25 – OFF
C ➔ P1.26 – ON
D ➔ P1.26 – OFF
#include<lpc214x.h>
Problem-1 (Transmit Serial)
#include "GPIO.h" C6
#include "timer.h" C1 1
1uF
3 U2
#include "UART.h"
1
U1 C1+ C1-
33pF
X1 62
XTAL1 P0.0/TxD0/PW M1
19 11
T1IN T1OUT
14
RXD
// UART Transmit
61 21 12 13 VT52, VT100, ANSI
C2 XTAL2 P0.1/RxD0/PWM3/EINT0 R1OUT R1IN
22 10 7
P0.2/SCL0/CAP0.0 T2IN T2OUT TXD
2
3 26 9 8
RTXC1 P0.3/SDA0/MAT0..0/EINT1 R2OUT R2IN
5 27
RTXC2 P0.4/SCK0/CAP0.1/AD0.6 RTS
= "Welcome to ELC" ;
34 C8
1
P0.9/RxD1/PWM6/EINT3 1uF
22pF 35
P0.10/RTS1/CAP1.0/AD1.2 1uF
X2 37 4 C7 5 MAX232
P0.11/CTS1/CAP1.1/SCL1
38
C4 P0.12/DSR1/MAT1.0/AD1.3
int i;
39
P0.13/DTR1/MAT1.1/AD1.4
2
41 1uF
P0.14/DCD1/EINT1/SDA1
45
P0.15/RI1/EINT2/AD1.5
22pF
int main(void)
46
+3.3V P0.16/EINT0/MAT0.2/CAP0.2
47
P0.17/CAP1.2/SCK1/MAT1.2
53
P0.18/CAP1.3/MISO1/MAT1.3
54
P0.19/MAT1.2/MOSI1/CAP1.2
{
55
P0.20/MAT1.3/SSEL1/EINT3
1
LOAD-1
P0.21/PWM5/AD1.6/CAP1.3
R1 P0.22/AD1.7/CAP0.0/MAT0.0
2
58
1K P0.23
initserial();
P0.28/AD0.1/CAP0.2/MAT0.2
C5 14
P0.29/AD0.2/CAP0.3/MAT0.3
15
100pF P0.30/AD0.3/EINT3/CAP0.0
17
+3.3V P0.31
LOAD-2
16
P1.16/TRACEPKT0
12
P1.17/TRACEPKT1
49 8
while(1)
VBAT P1.18/TRACEPKT2
4 LED-YELLOW
P1.19/TRACEPKT3
63 48
VREF P1.20/TRACESYNC
44
7 P1.21/PIPESTAT0
40
51 P1.22/PIPESTAT1
{
V3A V3 36
43 P1.23/PIPESTAT2
V3 32
23 P1.24/TRACECLK
V3 28
P1.25/EXTIN0
59 24
for(i=0;i<14;i++)
VSSA P1.26/RTCK
50 64
VSS P1.27/TDO
42 60
VSS P1.28/TDI
25 56
VSS P1.29/TCK
18 52
P1.30/TMS
sendserial(UARTdata[i]);
VSS 20
6 P1.31/TRST
VSS
LPC2138
delayms(1000);
}
}
#include<lpc214x.h>
#include "GPIO.h"
Problem-2 (Receive Serial)
#include "timer.h"
#include "UART.h" C6
3 U2
int ON = 0;
1
U1 C1+ C1-
33pF
int OFF = 1 ;
X1 62
XTAL1 P0.0/TxD0/PW M1
19 11
T1IN T1OUT
14
RXD
61 21 12 13 VT52, VT100, ANSI
XTAL2 P0.1/RxD0/PWM3/EINT0 R1OUT R1IN
C2 22 10 7
P0.2/SCL0/CAP0.0 T2IN T2OUT TXD
2
3 26 9 8
1
P0.9/RxD1/PWM6/EINT3 1uF
22pF 35
P0.10/RTS1/CAP1.0/AD1.2 1uF
X2 37 4 C7 5 MAX232
P0.11/CTS1/CAP1.1/SCL1
38
C4 P0.12/DSR1/MAT1.0/AD1.3
39
P0.13/DTR1/MAT1.1/AD1.4
2
41 1uF
P0.14/DCD1/EINT1/SDA1
45
P0.15/RI1/EINT2/AD1.5
22pF
46
int main(void)
+3.3V P0.16/EINT0/MAT0.2/CAP0.2
47
P0.17/CAP1.2/SCK1/MAT1.2
53
P0.18/CAP1.3/MISO1/MAT1.3
54
P0.19/MAT1.2/MOSI1/CAP1.2
{
55
P0.20/MAT1.3/SSEL1/EINT3
1 LOAD-1
P0.21/PWM5/AD1.6/CAP1.3
R1 2
P0.22/AD1.7/CAP0.0/MAT0.0
58
initserial();
11
P0.27/AD0.0/CAP0.1/MAT0.1
13
P0.28/AD0.1/CAP0.2/MAT0.2
14
C5 P0.29/AD0.2/CAP0.3/MAT0.3
15
P0.30/AD0.3/EINT3/CAP0.0
while(1)
100pF
17
+3.3V P0.31
LOAD-2
16
P1.16/TRACEPKT0
{
12
P1.17/TRACEPKT1
49 8
VBAT P1.18/TRACEPKT2 LED-YELLOW
4
P1.19/TRACEPKT3
63 48
P1.20/TRACESYNC
UARTdata = receiveserial();
VREF 44
7 P1.21/PIPESTAT0
51 40
V3A V3 P1.22/PIPESTAT1
36
43 P1.23/PIPESTAT2
V3
if (UARTdata == 'A')
23 32
V3 P1.24/TRACECLK
28
P1.25/EXTIN0
59 24
VSSA P1.26/RTCK
50 64
VSS P1.27/TDO
pinWrite(Load1,ON);
42 60
VSS P1.28/TDI
25 56
VSS P1.29/TCK
18 52
VSS P1.30/TMS
20
pinWrite (Load1,OFF);
else if (UARTdata == 'C')
pinWrite (Load2,ON);
else if (UARTdata == 'D')
pinWrite (Load2,OFF);
else
{
writepin(Load1,OFF);
writepin(Load2,OFF);
}
}
}