feat(esp_hal_rtc_timer): introduce new RTC timer component and refactor existing timer functions

This commit is contained in:
wuzhenghui
2026-01-31 22:29:20 +08:00
committed by morris
parent 78464dfab7
commit 12b9fb6549
31 changed files with 322 additions and 101 deletions
+29
View File
@@ -0,0 +1,29 @@
# ESP Hardware Abstraction Layer for RTC Timer Peripherals
> [!NOTE]
> This component is currently in beta. Its API, behavior, and compatibility may change at any time and without notice; backward compatibility is not guaranteed. Use caution when integrating into production systems.
## Overview
The `esp_hal_rtc_timer` component provides a **unified Hardware Abstraction Layer** for RTC Timer peripherals across all ESP-IDF supported targets. This HAL abstracts hardware differences between legacy RTC timer implementations (in RTC_CNTL peripheral) and modern low-power timer implementations, providing a consistent API for wakeup timer configuration and RTC time reading across different ESP chip families.
The component consolidates timer functionality from two different hardware implementations:
- **RTC_TIMER_LL_HARDWARE_V1**: Legacy RTC timer functionality in RTC_CNTL peripheral (ESP32, ESP32C2, ESP32C3, ESP32S2, ESP32S3)
- **RTC_TIMER_LL_HARDWARE_V2**: Newer LP timer peripheral
## Hardware Version Abstraction
The component uses hardware version macros defined in LL headers to automatically select the correct implementation:
- **RTC_TIMER_LL_HARDWARE_V1**: Defined in LL headers for legacy chips (ESP32, ESP32C2, ESP32C3, ESP32S2, ESP32S3)
- **RTC_TIMER_LL_HARDWARE_V2**: Defined in LL headers for modern chips (ESP32C5, ESP32C6, ESP32C61, ESP32H2, ESP32H21, ESP32H4, ESP32P4)
### Unified HAL API (All Chips)
- Wakeup timer configuration via `rtc_timer_hal_set_wakeup_timer()`
- RTC time reading via `rtc_timer_hal_get_cycle_count()`
### Hardware-Specific LL API
- **V1 Chips**: Direct register access in RTC_CNTL peripheral
- **V2 Chips**: LP Timer peripheral with alarm target configuration and counter snapshot operations
Please note that the interfaces provided by this component are internal to ESP-IDF and are subject to change.