From 4e388abd0a08181e2eb93211b024f573b59523fd Mon Sep 17 00:00:00 2001 From: hebinglin Date: Tue, 28 Oct 2025 10:35:57 +0800 Subject: [PATCH] fix(esp_driver_uart): resolve the issue of other chips receiving break data --- .../test_apps/uart/main/test_hp_uart_wakeup.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/components/esp_driver_uart/test_apps/uart/main/test_hp_uart_wakeup.c b/components/esp_driver_uart/test_apps/uart/main/test_hp_uart_wakeup.c index e2b5b6b80a..f85c7cba37 100644 --- a/components/esp_driver_uart/test_apps/uart/main/test_hp_uart_wakeup.c +++ b/components/esp_driver_uart/test_apps/uart/main/test_hp_uart_wakeup.c @@ -56,6 +56,7 @@ #define UART_BAUD_RATE (115200) #define BUF_SIZE (1024) #define TIMER_WAKEUP_TIME_US (1 * 100 * 1000) +#define UART_READ_TOUT (pdMS_TO_TICKS(500)) static void force_stdout(void) { @@ -131,14 +132,15 @@ void send_and_verify_recived_data(const char* message, uint8_t length, bool shou uart_flush_input(MASTER_UART_NUM); uart_write_bytes(MASTER_UART_NUM, message, length); /* Wait for uart write finish */ - uart_wait_tx_idle_polling(MASTER_UART_NUM); + uart_wait_tx_done(MASTER_UART_NUM, portMAX_DELAY); bool wake_up_detected = false; const char *target = "Wakeup OK!"; int target_len = 11; bool match = true; char *data = (char *) malloc(BUF_SIZE); - int len = uart_read_bytes(MASTER_UART_NUM, data, target_len, 5000 / portTICK_PERIOD_MS); + int len = uart_read_bytes(MASTER_UART_NUM, data, target_len, UART_READ_TOUT); + *(data + len) = '\0'; if (len > 0) { if (len != target_len) { @@ -215,7 +217,10 @@ static void enter_sleep_and_send_respond(void) } /* Wait for uart write finish */ - uart_wait_tx_idle_polling(SLAVE_UART_NUM); + uart_wait_tx_done(MASTER_UART_NUM, portMAX_DELAY); + + /* Wait for Master read data, otherwise the UART_INTR_TX_BRK_DONE intr will be triggered*/ + vTaskDelay(UART_READ_TOUT); } // slave