We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
i am using lpc 1768 but i dont know how to set how to set LPC_UART1->LCR=?? value for 4800 baud,8 data bits,odd parity,1 stop.I hope that someone help me. Thank you.
im uable to collect
saravanan, They want you to read and understand the datasheet of respective controller which you are using. Or some application note or least go through the sample program provided by keil for specific controller boards which might be available in your keil installation paths. If above all fails, you can google for LPC UART sample code.
So there are many ways available for you to get the answer to your own question.
You will not get any useful and understandable answers in this forum until 1. You specify what you have tried so far 2. Post the code with proper comments with compiler warnings/Errors if any 3. What difficulty you are facing to understand the information related to UART given by manufacturer etc.
Before visiting the forum, better you understand what are the other sources available for you to support.
Obviously this forum is not going to solve all of the problems here. But atleast people are listening to other problems and trying to provide some solution with their experience.
So my point to you is to be smart before presenting yourself to others.
\mcb1700.code_.bundle.lpc17xx.keil_\keil_examples\UART
/**************************************************************************** * $Id:: uart.c 5751 2010-11-30 23:56:11Z usb00423 $ * Project: NXP LPC17xx UART example * * Description: * This file contains UART code example which include UART initialization, * UART interrupt handler, and APIs for UART access. * **************************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. ****************************************************************************/ /***************************************************************************** ** Function name: UARTInit ** ** Descriptions: Initialize UART port, setup pin select, ** clock, parity, stop bits, FIFO, etc. ** ** parameters: portNum(0 or 1) and UART baudrate ** Returned value: true or false, return false only if the ** interrupt handler can't be installed to the ** VIC table ** *****************************************************************************/ uint32_t UARTInit( uint32_t PortNum, uint32_t baudrate ) { uint32_t Fdiv; uint32_t pclkdiv, pclk; if ( PortNum == 0 ) { LPC_PINCON->PINSEL0 &= ~0x000000F0; LPC_PINCON->PINSEL0 |= 0x00000050; /* RxD0 is P0.3 and TxD0 is P0.2 */ /* By default, the PCLKSELx value is zero, thus, the PCLK for all the peripherals is 1/4 of the SystemFrequency. */ /* Bit 6~7 is for UART0 */ pclkdiv = (LPC_SC->PCLKSEL0 >> 6) & 0x03; switch ( pclkdiv ) { case 0x00: default: pclk = SystemFrequency/4; break; case 0x01: pclk = SystemFrequency; break; case 0x02: pclk = SystemFrequency/2; break; case 0x03: pclk = SystemFrequency/8; break; } LPC_UART0->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ Fdiv = ( pclk / 16 ) / baudrate ; /*baud rate */ LPC_UART0->DLM = Fdiv / 256; LPC_UART0->DLL = Fdiv % 256; LPC_UART0->LCR = 0x03; /* DLAB = 0 */ LPC_UART0->FCR = 0x07; /* Enable and reset TX and RX FIFO. */ NVIC_EnableIRQ(UART0_IRQn); LPC_UART0->IER = IER_RBR | IER_THRE | IER_RLS; /* Enable UART0 interrupt */ return (TRUE); } else if ( PortNum == 1 ) { LPC_PINCON->PINSEL4 &= ~0x0000000F; LPC_PINCON->PINSEL4 |= 0x0000000A; /* Enable RxD1 P2.1, TxD1 P2.0 */ /* By default, the PCLKSELx value is zero, thus, the PCLK for all the peripherals is 1/4 of the SystemFrequency. */ /* Bit 8,9 are for UART1 */ pclkdiv = (LPC_SC->PCLKSEL0 >> 8) & 0x03; switch ( pclkdiv ) { case 0x00: default: pclk = SystemFrequency/4; break; case 0x01: pclk = SystemFrequency; break; case 0x02: pclk = SystemFrequency/2; break; case 0x03: pclk = SystemFrequency/8; break; } LPC_UART1->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ Fdiv = ( pclk / 16 ) / baudrate ; /*baud rate */ LPC_UART1->DLM = Fdiv / 256; LPC_UART1->DLL = Fdiv % 256; LPC_UART1->LCR = 0x03; /* DLAB = 0 */ LPC_UART1->FCR = 0x07; /* Enable and reset TX and RX FIFO. */ NVIC_EnableIRQ(UART1_IRQn); LPC_UART1->IER = IER_RBR | IER_THRE | IER_RLS; /* Enable UART1 interrupt */ return (TRUE); } return( FALSE ); }
Dear Friends
Thank for your replies. i have datasheet,usermanual,keil sample code etc see here i used UART based sensor. that datasheet was gave 4800 baud ,8data bytes,1stop bit for receive that values
first i tried in hyperterminal everything is fine i modify the keil receiver code. according to that LPC_UART0->LCR = 0xb8. i got data but that value was different compare than microcontroller