I started work with UART of lPC1788,in that I did the following settings for PCLK as 12MHZ and baud rate as 115200 but while i am simulating this code the baud rate is not assigned as 115200 or approx.
uint32_t uart0_init() {
LPC_SC->PCONP |=(1<<3); //Enabling power/clock for UART0
LPC_SC->PCLKSEL |=(1<<0); //Selecting PCLKDIV value as 1 for PCLKSEL
LPC_IOCON->P0_2 = 1; //Selecting fn. 001 for P0.2(U0_TXD)
LPC_IOCON->P0_3 = 1; //Selecting fn. 001 for P0.3(U0_RXD)
LPC_UART0->LCR =(0x83); //Selecting DLAB=1,1 stop bit,Parity bit and 8-bit character length
LPC_UART0->DLL = 0x04; //For PCLK=12MHZ and baud rate as 115200,DLL=4(in dec.)
LPC_UART0->DLM = 0x00; //For PCLK=12MHZ and baud rate as 115200,DLM=0(in dec.)
LPC_UART0->FDR =(0x85); //DIVADDVAL=1(3:0) and MULVAL=2(7:4) in FDR calculated from the FRest value
LPC_UART0->LCR =(0x03); //Disabling DLAB=0
LPC_UART0->FCR |=(7<<0); //Enable FIFOEN,TXFIFORES and RXFIFORES in FCR(0,1,2)
LPC_UART0->FCR |=(0<<0); //Disable FIFOEN,TXFIFORES and RXFIFORES in FCR(0,1,2)
//NVIC_EnableIRQ(UART0_IRQn);
//LPC_UART0->IER = IER_RBRIE | IER_THREIE | IER_RXIE;
return 1;
}
For me its coming near 384615,its totally different.Is there any calculations to be done to obtain exact of 115200 baud.
Please do clear for me..
Thanks in advance for suggesting experts..
With the CCLK value of 120MHZ,I used to select the PCLKSEL value of 0x0000000A to obtain the PCLK of 12MHZ.Now I am getting PCLK of 12MHZ which is my required frequency and I am obtaining 9600 approx. value while debugging the code with UART0.
Is this is a correct method to set 9600 baud rate?.
Why not used the CMSIS library code? It has routines, which when called (with correct parameter passing) will work as desired. It saves a lot of your time.
Hi D.7, Ya used the CMSIS library code,even in CMSIS they used PCLKSEL value as 0x00000002.But I want PCLK as 12Mhz and baud rate of 9600 to send a data to PC like devices.
With that PCLKSEL value I am getting PCLK of 60MHZ,so what I asked.