This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

configuring UART3 for lpc 2378

sorry for the previous post here i am reposting my issue
I am trying to configure the UART 3 of MCP2378 for the baud rate 115200.i successfully configured UART0 for the same baud rate .but when i tried it with UART 3 i get some junk values probably due to some baud rate miss match.Clock for both UARTs are same (cclk/4).Did any body configured the port p4.28 and p4.29 for uart 3 if yes please help me .
following is the code used for initialization.


int main (void)
{
u8 ch1;

UARTInit(3,112500);
while(1)

{

ch1=UARTByteRead(3);
UARTByteSend(3,ch1);

}

while(1);
}



u8 UARTByteRead(u8 ucPortNo)
{
u8 ch;
switch(ucPortNo)
{
case 0: while(!(U0LSR & LSR_RDR));
        ch=U0RBR;
                break;
case 1: while(!(U1LSR & LSR_RDR));
        ch=U1RBR;
                break;
case 2: while(!(U2LSR & LSR_RDR));
        ch=U2RBR;
                break;
case 3: while(!(U3LSR & LSR_RDR));
        ch=U3RBR;
                break;
}
return(ch);
}



u8 UARTByteSend(u8 ucPortNo,u8 ucByte)
{
switch(ucPortNo)
{
case 0: U0THR =ucByte;
                while(!(U0LSR & LSR_TEMT ));
                break;

case 1:U1THR =ucByte;
                while (!(U1LSR & LSR_TEMT ));

                break;

case 2: U2THR = ucByte;
                while (!(U2LSR & LSR_TEMT));
                break;

case 3:
       U3THR = ucByte;
                while (!(U3LSR & LSR_TEMT));

                break;
}
}




void UARTInit(u8 ucPortNo,u16 ucBaudrate)
{
UART_BaudRateConfig(ucPortNo,ucBaudrate);

switch(ucPortNo)
{

case 0:
           PINSEL0 =0x00000050;
           U0FCR =0x07;  /* Enable and reset TX and RX FIFO.*/
           break;

case 1:
           PINSEL0 |=0x40000000; //original PIN configuration
           PINSEL1 |=0x00000001;
           U1FCR =0x07; /* Enable and reset TX and RX FIFO.*/
           break;

case 2:
           PCONP |=0x01000000;
           PINSEL0 |=0x00500000;//selecting thefunction for the pins


           U2FCR =0x07;   /* Enable and reset TX and RX FIFO.*/
           break;

case 3:
           PCONP |=0x02000000;  // enabling the clock for uart3
           PINSEL9 |=0x0f000000;//selecting the function for the pins p4.28 & p4.29

           U3FCR =0x07;  /* Enable and reset TX and RX FIFO.*/

       break;
}
}






UART_BaudRateConfig(u8 PortNo,u16 Baudrate)
{
u16 DIV;
switch(PortNo)
{
case 0:

           U0DLM =0x0;
           U0DLL =8;
           U0FDR=0x92;
           U0LCR=0x03;
           break;

case 1:U1LCR =0x83;

           U1DLM =DIV / 256;
           U1DLL =DIV % 256;
           U1LCR=0x03;
           break;

case 2:U2LCR =0x83;
           U2TER =0x80;

           U2DLM =0x0;
           U2DLL =8;
           U2FDR=0x92;
           U2LCR =0x03;
           break;

case 3:U3LCR =0x83;


           U3DLM =0x0;
           U3DLL =8;
           U3FDR=0x92;
           U3LCR=0x03;
           U3TER =0x80
           break;

}
}

Parents
  • Which is the reason why the chapter describing the Power Control for Peripherials register writes (in bold):

    Important: valid read from a peripheral register and valid write to a peripheral register is possible only if that peripheral is enabled in the PCONP register!

    One of the advantages of using the Keil debugger is that you can select the peripherials menu and open a device dialog for any of the supported peripherials. There, you can (with some exceptions) see what values the device is currently running with.

    Alas, the baud rates are not shown for the LPC23xx chips :(

Reply
  • Which is the reason why the chapter describing the Power Control for Peripherials register writes (in bold):

    Important: valid read from a peripheral register and valid write to a peripheral register is possible only if that peripheral is enabled in the PCONP register!

    One of the advantages of using the Keil debugger is that you can select the peripherials menu and open a device dialog for any of the supported peripherials. There, you can (with some exceptions) see what values the device is currently running with.

    Alas, the baud rates are not shown for the LPC23xx chips :(

Children
No data