Difference between revisions of "ARM Communication Protocol : UART"
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 | ||
====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 | ||
====DLL ( Divisor Latch LSB 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 )==== | ====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 )==== | ====FCR ( FIFO Control Register )==== | ||
====LCR ( Line Control Register )==== | ====LCR ( Line Control Register )==== |
Revision as of 16:18, 17 March 2015
Amruta (talk) 13:22, 17 March 2015 (IST)
Contents
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 Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register
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); }