From 8c919f1cff3a5e917d1fb0f3c024f1ba8bbc19f7 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 13 Jan 2022 13:33:57 -0300 Subject: [PATCH] Fixes UART MODBUS and Loopback issue --- cores/esp32/esp32-hal-uart.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cores/esp32/esp32-hal-uart.c b/cores/esp32/esp32-hal-uart.c index c34c54b1a25..580c55ddce8 100644 --- a/cores/esp32/esp32-hal-uart.c +++ b/cores/esp32/esp32-hal-uart.c @@ -153,9 +153,6 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx ESP_ERROR_CHECK(uart_set_line_inverse(uart_nr, UART_SIGNAL_TXD_INV | UART_SIGNAL_RXD_INV)); } - // Set RS485 half duplex mode on UART. This shall force flush to wait up to sending all bits out - ESP_ERROR_CHECK(uart_set_mode(uart_nr, UART_MODE_RS485_HALF_DUPLEX)); - UART_MUTEX_UNLOCK(); uartFlush(uart); @@ -306,7 +303,7 @@ void uartFlushTxOnly(uart_t* uart, bool txOnly) } UART_MUTEX_LOCK(); - ESP_ERROR_CHECK(uart_wait_tx_done(uart->num, portMAX_DELAY)); + while(!uart_ll_is_tx_idle(UART_LL_GET_HW(uart->num))); if ( !txOnly ) { ESP_ERROR_CHECK(uart_flush_input(uart->num));