I am not able to get any data from LPC11C14 uart port. I am using ISP UART programmer with Flash Magic, so I guess board should be fine. Unless there is something that needs to be grounded while using UART vs UART in ISP.
I have connect Logic Analyzer on P1.6 and P1.7 and I can see data flow when programming board, but I only get flat line while my program is running.
I dont have SWD so I cant check whether the configuration of registers are correct, but I run the program in simulator and it seems fine there.
main.cpp:
#include "LPC11xx.h" void SystemInit () { } #define LSR_THRE 0x20 int main(void) { uint32_t Fdiv; uint32_t regVal; uint32_t baudrate = 19200; LPC_IOCON->PIO1_6 &= ~0x07; LPC_IOCON->PIO1_6 |= 0x01; LPC_IOCON->PIO1_7 &= ~0x07; LPC_IOCON->PIO1_7 |= 0x01; LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12); LPC_SYSCON->UARTCLKDIV = 0x1; LPC_UART->LCR = 0x83; regVal = LPC_SYSCON->UARTCLKDIV; Fdiv = (((12000000UL*LPC_SYSCON->SYSAHBCLKDIV)/regVal)/16)/baudrate ; LPC_UART->DLM = Fdiv / 256; LPC_UART->DLL = Fdiv % 256; LPC_UART->LCR = 0x03; LPC_UART->FCR = 0x07; while(1){ while ( !(LPC_UART->LSR & LSR_THRE) ); LPC_UART->THR = 0x55; for (uint32_t i =0; i < 0xffff; i++); } return 0 ; }
Have no clue what else to try ...
First step I'd suggest is try using the simulator.
From memory, it supports the LPC1114 family.
Try enabling the clock for the LPC_IOCON register block in the LPC_SYSCON->SYSAHBCLKCTRL register before setting up IOCON.
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 16) ;
Thank you Jim, that was exactly what I was missing. Now it works!