mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
feat(phy): update PHY libraries and improve PLL temperature tracking
1. Allow customization of temperature deltas for PHY track PLL. 2. Fix abnormal PHY state which may trigger task watchdog timeout.
This commit is contained in:
@@ -207,5 +207,46 @@ menu "PHY"
|
||||
PLL track helps the PHY module adapt to temperature changes, ensuring stable performance.
|
||||
When pll enabled, the ESP PHY module will periodically track and adjust PLL parameters.
|
||||
|
||||
config ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
bool "PHY temperature tracking debug mode"
|
||||
depends on ESP_PHY_DEBUG
|
||||
default n
|
||||
help
|
||||
If enabled, allows customization of temperature delta for PHY track pll.
|
||||
|
||||
config ESP_PHY_PLL_TRACK_TEMP_DEBUG_FLAG
|
||||
int "Debug flag for PHY temperature tracking"
|
||||
depends on ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
range 1 3
|
||||
default 1
|
||||
help
|
||||
Bitmask debug flag passed to the PHY temperature tracking routine.
|
||||
Each bit enables a specific tracking mode.
|
||||
|
||||
- bit0: PLL tracking
|
||||
- bit1: Calibration parameter tracking
|
||||
|
||||
config ESP_PHY_PLL_TRACK_TEMP_DELTA
|
||||
int "Temperature delta for PHY track pll"
|
||||
depends on ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
range 0 255
|
||||
default 10
|
||||
help
|
||||
Set the temperature delta for PHY track pll.
|
||||
|
||||
config ESP_PHY_INIT_IRAM
|
||||
bool "Place PHY (de)init in IRAM"
|
||||
depends on SOC_IEEE802154_BLE_ONLY
|
||||
default n
|
||||
help
|
||||
Select this option to place esp_phy and PHY library functions related to phy_init in IRAM.
|
||||
This config applies to ESP32-H2, ESP32-H21, and ESP32-H4.
|
||||
|
||||
config ESP_PHY_ENABLE_VERSION_PRINT
|
||||
bool "Print PHY version"
|
||||
default y
|
||||
help
|
||||
Select to print PHY version in esp_phy_enable. This config only applies to esp32hxx for now.
|
||||
|
||||
endif
|
||||
endmenu # PHY
|
||||
|
||||
@@ -247,6 +247,16 @@ void esp_phy_modem_rf_flag_update(void);
|
||||
*/
|
||||
void phy_wait_freq_hw_hop_done(void);
|
||||
|
||||
#if CONFIG_ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
/**
|
||||
* @brief Set the temperature delta for PHY track pll
|
||||
*
|
||||
* @param debug_flag Debug flag for PHY temperature tracking
|
||||
* @param track_temp Temperature delta for PHY temperature tracking
|
||||
*/
|
||||
void phy_track_temp_debug(uint8_t debug_flag, uint8_t track_temp);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -334,6 +334,9 @@ void esp_phy_enable(esp_phy_modem_t modem)
|
||||
assert(phy_module_has_clock_bits(PHY_INIT_MODEM_CLOCK_REQUIRED_BITS));
|
||||
if (s_is_phy_calibrated == false) {
|
||||
esp_phy_load_cal_and_init();
|
||||
#if CONFIG_ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
phy_track_temp_debug(CONFIG_ESP_PHY_PLL_TRACK_TEMP_DEBUG_FLAG, CONFIG_ESP_PHY_PLL_TRACK_TEMP_DELTA);
|
||||
#endif
|
||||
s_is_phy_calibrated = true;
|
||||
} else {
|
||||
#if SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP
|
||||
|
||||
@@ -118,6 +118,9 @@ void esp_phy_enable(esp_phy_modem_t modem)
|
||||
if (!s_phy_is_enabled) {
|
||||
register_chipv7_phy(NULL, NULL, PHY_RF_CAL_FULL);
|
||||
phy_version_print();
|
||||
#if CONFIG_ESP_PHY_PLL_TRACK_TEMP_DEBUG
|
||||
phy_track_temp_debug(CONFIG_ESP_PHY_PLL_TRACK_TEMP_DEBUG_FLAG, CONFIG_ESP_PHY_PLL_TRACK_TEMP_DELTA);
|
||||
#endif
|
||||
s_phy_is_enabled = true;
|
||||
} else {
|
||||
phy_wakeup_init();
|
||||
|
||||
Reference in New Issue
Block a user