test of UART Auto-baud for LPC1768

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalOut myled(LED1);
00004 Serial pc(USBTX, USBRX);
00005 
00006 Serial ser(p28, p27);
00007 LPC_UART1_TypeDef *uart = (LPC_UART1_TypeDef*)LPC_UART2;
00008 
00009 int main() {
00010     int fdiv, baud;
00011 
00012     pc.baud(115200);
00013     pc.printf("Auto-baud start...\r\n");
00014     myled = 1;
00015 
00016     uart->LCR |= (1<<7);
00017     uart->DLL = 0;
00018     uart->DLM = 0;
00019     uart->LCR &= ~(1<<7);
00020     uart->FDR = 0x10;
00021 //    uart->ACR = (1<<9)|(1<<8)|(1<<2)|(1<<0); // Auto-baud start, mode 0
00022     uart->ACR = (1<<9)|(1<<8)|(1<<2)|(1<<1)|(1<<0); // Auto-baud start, mode 1
00023     while (uart->ACR & (1<<0));
00024 
00025     uart->LCR |= (1<<7);
00026     fdiv = uart->DLM * 256 + uart->DLL;
00027     uart->LCR &= ~(1<<7);
00028     baud = SystemCoreClock / (16 * fdiv);
00029     pc.printf("Baudrate: %d\r\n", baud);
00030 
00031     myled = 0;
00032     for (;;) {
00033         if (pc.readable()) {
00034             ser.putc(pc.getc());
00035         }
00036         if (ser.readable()) {
00037             pc.putc(ser.getc());
00038         }
00039     }
00040 }