Dear All,
I found lots of threads regarding UART2 and UART3 for LPC2378 With keil simulator not working and , how to work around tom get resolve This issue using PCONP and all that.
Still I have the same problem.
I am using Keil u-vision 3.11(evaluation version) and MCB -2300 boards (for both 2368/78).
I have the same problem with both UART(2/3), I am not getting data on simulator nor On board (for board I have traced out UART2 lines to the MAX 232 IC as like UART1 on board), It might the separate issue,
but I think first I should able to get data of UART2 On simulator itself later on board.
I have setted up the PCONP register described on this site (as per LPC UM)
(I am able to see data of UART1 and UART2 on simulator on serial windows (UART#0, UART#1) respectively, also I am getting data on board on serial port, but not getting data of UARt2 and UART3)..
My code is as below …
/***** START CODE ***********************/
extern void initSerialAllUart (int BaudRate); extern SendcharUart0(char); extern SendcharUart1(char); extern SendcharUart2(char); extern SendcharUart3(char);
Main.c /************************/
Void Main(void) { int i;
PCONP |= 1 <<24 ; // Enable UART2 PCONP |= 1<<25; // Enable UART3
initSerialAllUart(9600); //init all uart for 9600 baudrate
for(i=0;i<50;i++) // send 50 character to all ports
{
SendcharUart0(65);
SendcharUart1(66);
SendcharUart2(67);
SendcharUart3(68);
}
/*End Main*/
serial.c /********************************/ void initSerialAllUart (int BD) //Initialize Serial Interface {
unsigned long Tp; //for baudrate calculation
PINSEL0 |= 0x00000050; //Select UART0-Tx,Rx PINSEL0 |= 0x40000000; //Select UART1-Tx PINSEL1 |= 0x00000001; //Select UART1-Rx PINSEL0 |= 0x00500000; //Select UART2-Tx,Rx PINSEL0|=0xA; //Select UART3-Tx,Rx
/*-----Init UART0 settings--------------*/
U0FDR = 0; /* Fractional divider not used */
U0LCR = 0x80;/* 8 bits, no Parity, 1 Stop bit*/
U0LCR = 0x03;/* DLAB = 0 */
Tp = ((14400000UL / 16UL) + (BD -1)) / BD;
U0LCR |= 0x80; /* Set DLAB */
U0DLL = Tp;
U0DLM = (Tp >> 8);
U0LCR &= ~0x80; /* Clear DLAB */
/*-------Init UART1settings-----------*/
U1FDR = 0; /* Fractional divider not used */
U1LCR = 0x80;/* 8 bits, no Parity, 1 Stop bit*/
U1LCR = 0x03; /* DLAB = 0 */
Tp = ((14400000UL / 16UL) + (BD-1)) / BD;
U1LCR |= 0x80; /* Set DLAB */
U1DLL = Tp;
U1DLM = (Tp >> 8);
U1LCR &= ~0x80; /* Clear DLAB */
/*-----Init UART2settings------------*/
U2FDR = 0;/* Fractional divider not used */
U2LCR = 0x80; /* 8 bits, no Parity, 1 Stop bit*/
U2LCR = 0x03; /* DLAB = 0*/
U2LCR |= 0x80; /* Set DLAB */
U2DLL = Tp;
U2DLM = (Tp >> 8);
U2LCR &= ~0x80; /* Clear DLAB */
/*--Init UART3settings-----------------*/
U3FDR = 0; /* Fractional divider not used */
U3LCR = 0x80; /* 8 bits, no Parity, 1 Stop it*/
U3LCR = 0x03; /* DLAB = 0*/
U3LCR |= 0x80; /* Set DLAB */
U3DLL = Tp;
U3DLM = (Tp >> 8);
U3LCR &= ~0x80; /* Clear DLAB */
/*===============================================*/ int SendcharUart0 (int ch) {
/* Write character to Uart0 */
while (!(U0LSR & 0x20));
return (U0THR = ch); }
/*===============================================*/
int SendcharUart1 (int ch) { /* Write character to Uart1 */
while (!(U1LSR & 0x20));
return (U1THR = ch); }
/*===============================================*/ int SendcharUart2 (int ch) { /* Write character to Uart2 */ while (!(U2LSR & 0x20));
return (U2THR = ch); }
/*===============================================*/ int SendcharUart3 (int ch) { /* Write character to Uart3 */
while (!(U3LSR & 0x20));
return (U3THR = ch); }
/******END CODEs **************************/
Can anybody guide me, how to get data of UART2 and UART3 over simulator ?!
I solved it, I got data on Hardware..
but still not get in simulator.. is there any setting to see UART2-3 data on any of the serial window, or it is comming over serialwindow -3 by default? pls guide if anybody know that..
Have Anybudy any idea??
I think the lack of interest in your problem could have something to do with the lack of preserving your code's formatting (assuming it had any to begin with).
Applying this might (re)invigorate interest in your post:
www.danlhenry.com/.../keil_code.png
Thanks man,
thing is that i have resolved that
For the benefit of others, would you care to share how you resolved it?
I was wrong with PINSEL block ! in my board I have used same UART with diff. pin nos (as in LPC you can find same device at various pins (multiplexed), i got data after correcting the proper PINSEL !