From fc72d53c71bd097920ed9747a7179c0c346d6aa9 Mon Sep 17 00:00:00 2001 From: Liu Zhi Fu Date: Tue, 12 Jun 2018 15:51:51 +0800 Subject: [PATCH] esp32: fix the bug that the first two reboots do full calibration If the NVS is erased, the first two reboots will do full calibration. This commit is to fix this issue and only need to do full calibration once. --- components/esp32/phy_init.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/esp32/phy_init.c b/components/esp32/phy_init.c index d730e01c6b..2da98c31b0 100644 --- a/components/esp32/phy_init.c +++ b/components/esp32/phy_init.c @@ -493,7 +493,6 @@ static esp_err_t load_cal_data_from_nvs_handle(nvs_handle handle, ESP_LOGD(TAG, "%s: invalid length of cal_data (%d)", __func__, length); return ESP_ERR_INVALID_SIZE; } - memcpy(out_cal_data->mac, sta_mac, 6); return ESP_OK; } @@ -549,6 +548,7 @@ void esp_phy_load_cal_and_init(phy_rf_module_t module) #ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE esp_phy_calibration_mode_t calibration_mode = PHY_RF_CAL_PARTIAL; + uint8_t sta_mac[6]; if (rtc_get_reset_reason(0) == DEEPSLEEP_RESET) { calibration_mode = PHY_RF_CAL_NONE; } @@ -558,6 +558,8 @@ void esp_phy_load_cal_and_init(phy_rf_module_t module) calibration_mode = PHY_RF_CAL_FULL; } + esp_efuse_mac_get_default(sta_mac); + memcpy(cal_data->mac, sta_mac, 6); esp_phy_rf_init(init_data, calibration_mode, cal_data, module); if (calibration_mode != PHY_RF_CAL_NONE && err != ESP_OK) {