rp2/machine_uart: Fix setting of UART LCR parameters.
Prior to this change, setting of UART parameters like parity, stop bits or data bits did not work correctly. As suggested by @iabdalkader, adding __DSB() fixes the problem, making sure that changes to the UART LCR_H register are seen by the peripheral. Note: the FIFO is already enabled in the call to uart_init(), so the call to uart_set_fifo_enabled() is not required, but kept for visibility. Fixes issue #10976.
This commit is contained in:
parent
b5ceb9d577
commit
b7ea90d4cb
@ -336,7 +336,9 @@ STATIC void machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args, co
|
||||
|
||||
uart_init(self->uart, self->baudrate);
|
||||
uart_set_format(self->uart, self->bits, self->stop, self->parity);
|
||||
__DSB(); // make sure UARTLCR_H register is written to
|
||||
uart_set_fifo_enabled(self->uart, true);
|
||||
__DSB(); // make sure UARTLCR_H register is written to
|
||||
gpio_set_function(self->tx, GPIO_FUNC_UART);
|
||||
gpio_set_function(self->rx, GPIO_FUNC_UART);
|
||||
if (self->invert & UART_INVERT_RX) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user