diff --git a/arch/arm/src/kinetis/kinetis_lowputc.c b/arch/arm/src/kinetis/kinetis_lowputc.c index 5529443c37e..a808e091759 100644 --- a/arch/arm/src/kinetis/kinetis_lowputc.c +++ b/arch/arm/src/kinetis/kinetis_lowputc.c @@ -424,10 +424,18 @@ void kinetis_uartconfigure(uintptr_t uart_base, uint32_t baud, putreg8(UART_PFIFO_RXFE | UART_PFIFO_TXFE, uart_base+KINETIS_UART_PFIFO_OFFSET); #else + /* Otherwise, disable the FIFOs. Then the FIFOs are disable, the effective + * FIFO depth is 1. So set the watermarks as follows: + * + * TWFIFO[TXWATER] = 0: TDRE will be set when the number of queues bytes + * (1 in this case) is less than or equal to 0. + * RWFIFO[RXWATER] = 1: RDRF will be set when the number of queues bytes + * (1 in this case) is greater than or equal to 1. + * /* Set the watermarks to one and disable the FIFOs */ putreg8(1, uart_base+KINETIS_UART_RWFIFO_OFFSET); - putreg8(1, uart_base+KINETIS_UART_TWFIFO_OFFSET); + putreg8(0, uart_base+KINETIS_UART_TWFIFO_OFFSET); putreg8(0, uart_base+KINETIS_UART_PFIFO_OFFSET); #endif