/* Board Debug UART Initialisation function */ STATIC void Board_UART_Init(void) { /* Enable the clock to the Switch Matrix */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM); /* Connect the U0_TXD_O and U0_RXD_I signals to port pins(P0.07, P0.18) */ Chip_SWM_DisableFixedPin(SWM_FIXED_ADC0); Chip_SWM_DisableFixedPin(SWM_FIXED_ADC8); /* Enable UART Divider clock, divided by 1 */ Chip_Clock_SetUARTClockDiv(1); /* Divided by 1 */ if (DEBUG_UART == LPC_USART0) { Chip_SWM_MovablePinAssign(SWM_U0_TXD_O, 7); Chip_SWM_MovablePinAssign(SWM_U0_RXD_I, 18); } else if (DEBUG_UART == LPC_USART1) { Chip_SWM_MovablePinAssign(SWM_U1_TXD_O, 7); Chip_SWM_MovablePinAssign(SWM_U1_RXD_I, 18); } else { Chip_SWM_MovablePinAssign(SWM_U2_TXD_O, 7); Chip_SWM_MovablePinAssign(SWM_U2_RXD_I, 18); } /* Disable the clock to the Switch Matrix to save power */ Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_SWM); }
/* Board UART Initialisation function */ void Board_UART_Init(LPC_USART_T *pUART) { /* Enable the clock to the Switch Matrix */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_SWM); Chip_Clock_SetUARTClockDiv(1); /* divided by 1 */ if (pUART == LPC_USART0) { /*connect the U0_TXD_O and U0_RXD_I signals to port pins(P0.4, P0.0) */ Chip_SWM_FixedPinEnable(ACMP_I1, DISABLE); Chip_SWM_MovablePinAssign(SWM_U0_TXD_O, PIO4); Chip_SWM_MovablePinAssign(SWM_U0_RXD_I, PIO0); /* Enable USART0 clock */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_UART0); // FIXME UART clocking and reset need to be part of CHIP driver /* Peripheral reset control to USART0, a "1" bring it out of reset. */ Chip_SYSCTL_PeriphReset(RESET_USART0); } else if (pUART == LPC_USART1) { /*connect the U1_TXD_O and U1_RXD_I signals to port pins(P0.13, P0.14) */ Chip_SWM_MovablePinAssign(SWM_U1_TXD_O, PIO13); Chip_SWM_MovablePinAssign(SWM_U1_RXD_I, PIO14); /* Enable USART1 clock */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_UART1); // FIXME UART clocking and reset need to be part of CHIP driver /* Peripheral reset control to USART1, a "1" bring it out of reset. */ Chip_SYSCTL_PeriphReset(RESET_USART1); } else { /*connect the U2_TXD_O and U2_RXD_I signals to port pins(P0.13, P0.14) */ Chip_SWM_MovablePinAssign(SWM_U2_TXD_O, PIO13); Chip_SWM_MovablePinAssign(SWM_U2_RXD_I, PIO14); /* Enable USART2 clock */ Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_UART2); // FIXME UART clocking and reset need to be part of CHIP driver /* Peripheral reset control to USART2, a "1" bring it out of reset. */ Chip_SYSCTL_PeriphReset(RESET_USART2); } }
/* Initializes the pUART peripheral */ void Chip_UART_Init(LPC_USART_T *pUART) { Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_UART0); Chip_Clock_SetUARTClockDiv(1); /* Enable FIFOs by default, reset them */ Chip_UART_SetupFIFOS(pUART, (UART_FCR_FIFO_EN | UART_FCR_RX_RS | UART_FCR_TX_RS)); /* Default 8N1, with DLAB disabled */ Chip_UART_ConfigData(pUART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS)); /* Disable fractional divider */ pUART->FDR = 0x10; }