mirror of
https://github.com/espressif/esp-idf.git
synced 2026-01-04 17:37:05 +00:00
fix(esp_driver_uart): resolve the issue of other chips receiving break data
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user