change(example): change uart wakeup mode 0 edge threshold

This commit is contained in:
hebinglin
2026-03-09 16:04:35 +08:00
parent 12445bd359
commit 838bde9885
3 changed files with 12 additions and 7 deletions
+8 -4
View File
@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -1004,8 +1004,10 @@ FORCE_INLINE_ATTR void uart_ll_set_dtr_active_level(uart_dev_t *hw, int level)
*/ */
FORCE_INLINE_ATTR void uart_ll_set_wakeup_thrd(uart_dev_t *hw, uint32_t wakeup_thrd) FORCE_INLINE_ATTR void uart_ll_set_wakeup_thrd(uart_dev_t *hw, uint32_t wakeup_thrd)
{ {
// System would wakeup when the number of positive edges of RxD signal is larger than or equal to (UART_ACTIVE_THRESHOLD+3) // System would wakeup when the number of positive edges of RxD signal is larger than or equal to (UART_ACTIVE_THRESHOLD+offset)
hw->sleep_conf2.active_threshold = wakeup_thrd - UART_LL_MIN_WAKEUP_THRESH; // HP UART: offset is 6, LP UART: offset is 3
uint32_t offset = (hw == &LP_UART) ? UART_LL_MIN_WAKEUP_THRESH : UART_LL_MIN_WAKEUP_THRESH + 3;
hw->sleep_conf2.active_threshold = wakeup_thrd - offset;
} }
/** /**
@@ -1183,7 +1185,9 @@ FORCE_INLINE_ATTR void uart_ll_get_at_cmd_char(uart_dev_t *hw, uint8_t *cmd_char
*/ */
FORCE_INLINE_ATTR uint32_t uart_ll_get_wakeup_thrd(uart_dev_t *hw) FORCE_INLINE_ATTR uint32_t uart_ll_get_wakeup_thrd(uart_dev_t *hw)
{ {
return hw->sleep_conf2.active_threshold + UART_LL_MIN_WAKEUP_THRESH; // HP UART: offset is 6, LP UART: offset is 3
uint32_t offset = (hw == &LP_UART) ? UART_LL_MIN_WAKEUP_THRESH : UART_LL_MIN_WAKEUP_THRESH + 3;
return hw->sleep_conf2.active_threshold + offset;
} }
/** /**
@@ -24,7 +24,8 @@
#define EXAMPLE_UART_BAUDRATE 115200 #define EXAMPLE_UART_BAUDRATE 115200
#endif #endif
#define EXAMPLE_UART_WAKEUP_THRESHOLD 3 /* In ESP32, the min wakeup threshold is 2; in ESP32P4, the min wakeup threshold is 6; in other targets, the min wakeup threshold is 3.*/
#define EXAMPLE_UART_WAKEUP_THRESHOLD 6
#define EXAMPLE_READ_BUF_SIZE 1024 #define EXAMPLE_READ_BUF_SIZE 1024
#define EXAMPLE_UART_BUF_SIZE (EXAMPLE_READ_BUF_SIZE * 2) #define EXAMPLE_UART_BUF_SIZE (EXAMPLE_READ_BUF_SIZE * 2)
@@ -52,8 +52,8 @@ def test_light_sleep(dut: Dut) -> None:
dut.expect_exact(ENTERING_SLEEP_STR) dut.expect_exact(ENTERING_SLEEP_STR)
logging.info('Went to sleep again') logging.info('Went to sleep again')
# Write 'a' to uart, 'a' in ascii is 0x61 which contains 3 rising edges in total (including the stop bit) # Write 'tt' to uart, 'tt' in ascii is 0x74 0x74 which contains 6 rising edges in total (including the stop bit)
dut.write('a') dut.serial.proc.write(b'tt')
time.sleep(1) time.sleep(1)
match = dut.expect(EXIT_SLEEP_UART_REGEX) match = dut.expect(EXIT_SLEEP_UART_REGEX)
logging.info('Got third sleep period, wakeup from {}, slept for {}'.format(match.group(1), match.group(3))) logging.info('Got third sleep period, wakeup from {}, slept for {}'.format(match.group(1), match.group(3)))