Line 10: Line 10:
  
 
====RBR ( Receiver Buffer Register )====
 
====RBR ( Receiver Buffer Register )====
The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register
+
The RBR is the top byte of the UART receiver FIFO. The top byte of this FIFO contains
 +
the oldest character received.
 +
 
 +
The data is available in the register bits 0:7.
 +
 
 +
While accessing this register, the DLAB bit in LCR must be zero.
 +
 
 
====THR ( Transmit Holding Register )====
 
====THR ( Transmit Holding Register )====
 
The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register
 
The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register

Revision as of 16:22, 17 March 2015

Amruta (talk) 13:22, 17 March 2015 (IST)


Basics

LPC1768 has 4 UARTS out of which UART0, UART2, UART3 are very similar while UART1 is little bit different from all these.

Registers

Let's have a brief review through some of the important UART registers.

RBR ( Receiver Buffer Register )

The RBR is the top byte of the UART receiver FIFO. The top byte of this FIFO contains the oldest character received.

The data is available in the register bits 0:7.

While accessing this register, the DLAB bit in LCR must be zero.

THR ( Transmit Holding Register )

The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register

DLL ( Divisor Latch LSB register )

The Divisor Latch Access Bit (DLAB) in LCR must be onein order to access this register

DLM ( Divisor Latch MSB register )

The Divisor Latch Access Bit (DLAB) in LCR must be one in order to access this register

FCR ( FIFO Control Register )

LCR ( Line Control Register )

LSR ( Line Status Register )

Schematic

Code

Let's make a Decimal Counter with UART .

Initialize the UART0 with 9600 baud-rate.

Display the initial message and go on displaying incremented count taking some pause.

To know more about UART library, check this.

#include "lpc17xx.h" //Device specific header file
#include "uart.h"	//Explore Embedded UART library which contains the uart routines
#include "delay.h" //Explore Embedded  library containing the delay routines
 
/* start the main program */
int main()
{
	uint16_t cnt=0;
 
        /* Setup and initialize the microcontroller system */
	SystemInit();
 
	/* Initialize the UART before Transmitting/Receiving any data */
	UART_Init(UART0,9600);
 
	UART_Printf("5digit decimal counter: ");
 
	/* Transmit the counter till 9999 */
	while(cnt < 9999)
	{
		/* Transmit the 4-digit counter value and go to next line */
		UART_Printf("\n\r%4u",cnt);
 
		/* Increment the counter value after 1-sec */
		DELAY_sec(1);
		cnt++;
	}
	while(1);
}