LPC1857 USART problem

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LPC1857 USART problem

ソリューションへジャンプ
943件の閲覧回数
andrewbarningha
Contributor III

Hi,

Is anyone able to help me. I am new to the LPC1857 chip.

I am using the MCB1857 development board and i want to use USART3.

I can send data from the controller by simple doing the below after setting the USART up.

   LPC_USART3->THR = 'A'

But i am unable to get the USART3 interrupt to trigger on a send or receive char, in debug it will NOT jump into the interrupt function at all. See below my code... have i missed anything?

/*prototype*/

__irq void UART3_IRQHandler (void);

/**************** SET UP USART 3 *************************************/
LPC_SCU->SFSP2_3 = 0x02;
LPC_SCU->SFSP2_4 = 0x02;

LPC_USART3->LCR = 0x83; /*line control register.. stop, data bits etc.... 8 data bits, 1stop bit, NO parity*/
LPC_USART3->FDR = 0; /*fractional divide*/
LPC_USART3->DLL = 78; /*divide latch LSB... 9600 baud*/
LPC_USART3->DLM = 0; /*divide latch MSB*/
LPC_USART3->LCR = 0x03; /* disable DLAB*/
LPC_USART3->FCR = 0x07; /*Fifo buffer*/
LPC_USART3->IER = 0x01; /*enable interupt*/

NVIC_SetPriority(USART3_IRQn, 1);
NVIC_EnableIRQ(USART3_IRQn); /*enable USART3 interupt*/

/********************************************************************************/
/* ####### USART interupt function ########################## */
/********************************************************************************/
__irq void UART3_IRQHandler(void)
{
unsigned short ushLocalVar = 0;

   /*recieving a byte*/
   if(LPC_USART3->LSR & 0x01)
   {
   ushLocalVar = LPC_USART3->RBR;
   }

   if((ushLocalVar == 'A') || (ushLocalVar == 'a'))
   {
    /*transmit a byte*/
         if(LPC_USART3->LSR & 0x20)
         {
         LPC_USART3->THR = 'K';
        }
    }
     else
     {
      LPC_USART3->IER = 0x01; /*re-enable interupt*/
     }
}

1 解決策
600件の閲覧回数
Carlos_Mendoza
NXP Employee
NXP Employee

Hi Andrew,

Have you tried using the periph_uart example that comes with the LPCOpen package? This example shows how to use the UART in polling, interrupt and DMA mode. You can download the LPCOpen package for the Keil MCB1800 (LPC1857) board from this link:

LPCOpen Software for LPC18XX|NXP 

Hope it helps!

Best Regards,
Carlos Mendoza
Technical Support Engineer

元の投稿で解決策を見る

0 件の賞賛
返信
2 返答(返信)
601件の閲覧回数
Carlos_Mendoza
NXP Employee
NXP Employee

Hi Andrew,

Have you tried using the periph_uart example that comes with the LPCOpen package? This example shows how to use the UART in polling, interrupt and DMA mode. You can download the LPCOpen package for the Keil MCB1800 (LPC1857) board from this link:

LPCOpen Software for LPC18XX|NXP 

Hope it helps!

Best Regards,
Carlos Mendoza
Technical Support Engineer

0 件の賞賛
返信
600件の閲覧回数
andrewbarningha
Contributor III

Thanks Carlos,

I now have the USART working, i had the pin multiplexing setup wrong, so i changed the settings to below and it now works.

/*set pins up for USART 0 */
 LPC_SCU->SFSP2_0 = 0x09; /* Function 1..U0_TXD, enable pull down. */
 LPC_SCU->SFSP2_1 = 0xC1; /* Function 1..U0_RXD, Enable input buffer, Disable glitch filter*/

I will look at the link you sent me for a deeper understanding of the USART.

Thanks

Andrew