Merge branch 'feat/ulp_add_cycle_function' into 'master'

feat(lp_core): add a public function to get the timer cycle count

Closes IDFGH-12036

See merge request espressif/esp-idf!28910
This commit is contained in:
Omar Chebib
2024-02-12 14:19:17 +08:00
2 changed files with 11 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -11,6 +11,13 @@
extern "C" { extern "C" {
#endif #endif
/**
* @brief Get the number of cycle count for the LP timer
*
* @return current timer cycle count
*/
uint64_t ulp_lp_core_lp_timer_get_cycle_count(void);
/** /**
* @brief Sets the next wakeup alarm * @brief Sets the next wakeup alarm
* *

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -21,7 +21,7 @@ static void lp_timer_hal_set_alarm_target(uint64_t value)
lp_timer_ll_set_target_enable(lp_timer_context.dev, TIMER_ID, true); lp_timer_ll_set_target_enable(lp_timer_context.dev, TIMER_ID, true);
} }
static uint64_t lp_timer_hal_get_cycle_count(void) uint64_t ulp_lp_core_lp_timer_get_cycle_count(void)
{ {
lp_timer_ll_counter_snapshot(lp_timer_context.dev); lp_timer_ll_counter_snapshot(lp_timer_context.dev);
@@ -38,7 +38,7 @@ static uint64_t lp_timer_hal_get_cycle_count(void)
void ulp_lp_core_lp_timer_set_wakeup_time(uint64_t sleep_duration_us) void ulp_lp_core_lp_timer_set_wakeup_time(uint64_t sleep_duration_us)
{ {
uint64_t cycle_cnt = lp_timer_hal_get_cycle_count(); uint64_t cycle_cnt = ulp_lp_core_lp_timer_get_cycle_count();
uint64_t alarm_target = cycle_cnt + sleep_duration_us * (1 << RTC_CLK_CAL_FRACT) / clk_ll_rtc_slow_load_cal(); uint64_t alarm_target = cycle_cnt + sleep_duration_us * (1 << RTC_CLK_CAL_FRACT) / clk_ll_rtc_slow_load_cal();
lp_timer_hal_set_alarm_target(alarm_target); lp_timer_hal_set_alarm_target(alarm_target);