This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

UART TRANSMITING THE DATA

HELLO 

I TRANSMITTED THE DETA THROUGH UART 2 IN LPC 1768 BUT STILL I CHEK ALL RAGISTERS AND ALSO DATA SHEET 

I TRANSMITTING DATA UART  TO UART  HELP OF MCP BUT STILL IT IS NOT TRANSMITTED ACCORDINGLY SO PLZ HELP ME I SEND A FULL CODE

#include <lpc17xx.h>
#define THRE (1<<5) //Transmit Holding Register Empty
#define MULVAL 15
#define DIVADDVAL 2
#define Ux_FIFO_EN (1<<0)
#define Rx_FIFO_RST (1<<1)
#define Tx_FIFO_RST (1<<2)
#define DLAB_BIT (1<<7)
#define LINE_FEED 0x0A //LF, For Linux, MAC and Windows Terminals
#define CARRIAGE_RETURN 0x0D //CR, For Windows Terminals (CR+LF).

void initUART1(void);
void U0Write(char data);

int main(void)
{
//SystemInit(); //This already gets called by CMSIS Startup Code.
char msg[] = { 'H','e','l','l','o',' ','f','r','o','m',' ','L','P','C','1','7','6','8','\0' };
int count=0;

initUART1();

while(1)
{
while( msg[count]!='\0' )
{
U0Write(msg[count]);
count++;
}
//Send NEW Line Character(s) i.e. "\n"
U0Write(CARRIAGE_RETURN); //Comment this for Linux or MacOS
U0Write(LINE_FEED); //Windows uses CR+LF for newline.
count=0; // reset counter
}
//return 0; //This won't execute normally
}

void U0Write(char txData)
{
while(!(LPC_UART1->LSR & THRE)); //wait until THR is empty
//now we can write to Tx FIFO
LPC_UART1->THR = txData;
}

void initUART1(void)
{
/*Assuming CCLK = 100Mhz and PCLK = 25Mhz!*/
LPC_PINCON->PINSEL4 |= 0x0000000A; //Select TXD0 and RXD0 function for P0.2 & P0.3!
//LPC_SC->PCONP |= 1<<3; //Power up UART0 block. By Default it is enabled after RESET.

LPC_UART1->LCR = 3 | DLAB_BIT ; /* 8 bits, no Parity, 1 Stop bit & DLAB set to 1 */
LPC_UART1->DLL = 12;
LPC_UART1->DLM = 0;

//LPC_UART0->IER |= ..; //Edit this if want you to use UART interrupts
LPC_UART1->FCR |= Ux_FIFO_EN | Rx_FIFO_RST | Tx_FIFO_RST;
// LPC_UART1>FDR = (MULVAL<<4) | DIVADDVAL; /* MULVAL=15(bits - 7:4) , DIVADDVAL=2(bits - 3:0) */
LPC_UART1->LCR &= ~(DLAB_BIT);
}
//Now since we have applied DLL and DLM we now lock or freeze those valuse by diabling DLAB i.e DLAB=0
//Baud= ~115200(114882). Now we can perform UART communication!