fix(esp_driver_uart): resolve the issue of other chips receiving break data

This commit is contained in:
hebinglin
2025-10-28 10:35:57 +08:00
parent 3ed6979a4d
commit 4e388abd0a

View File

@@ -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