1RF calibration
2==============
3
4{IDF_TARGET_NAME} supports three RF calibration methods during RF initialization:
5
61. Partial calibration
7
82. Full calibration
9
103. No calibration
11
12Partial calibration
13-------------------
14During RF initialization, the partial calibration method is used by default for RF calibration.
15It is done based on the full calibration data which is stored in the NVS.
16To use this method, please go to ``menuconfig`` and enable :ref:`CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE`.
17
18Full calibration
19----------------
20Full calibration is triggered in the follwing conditions:
21
221. NVS does not exist.
23
242. The NVS partition to store calibration data is erased.
25
263. Hardware MAC address is changed.
27
284. PHY library version is changed.
29
305. The RF calibration data loaded from the NVS partition is broken.
31
32It takes about 100ms more than partial calibration.
33If boot duration is not critical, it is suggested to use the full calibration method.
34To switch to the full calibration method, go to ``menuconfig`` and disable :ref:`CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE`.
35If you use the default method of RF calibration, there are two ways to add the function of triggering full calibration as a last-resort remedy.
36
371. Erase the NVS partition if you don't mind all of the data stored in the NVS partition is erased. That is indeed the easiest way.
38
392. Call API :cpp:func:`esp_phy_erase_cal_data_in_nvs` before initializing WiFi and BT/BLE based on some conditions (e.g. an option provided in some diagnostic mode).
40   In this case, only phy namespace of the NVS partition is erased.
41
42No calibration
43---------------
44No calibration method is only used when the device wakes up from deep sleep.
45
46PHY initialization data
47-----------------------
48The PHY initialization data is used for RF calibration.
49There are two ways to get the PHY initialization data.
50
51One is the default initialization data which is located in the header file :idf_file:`components/esp_phy/{IDF_TARGET_PATH_NAME}/include/phy_init_data.h`.
52
53It is embedded into the application binary after compiling and then stored into read-only memory (DROM).
54To use the default initialization data, please go to ``menuconfig`` and disable :ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`.
55
56Another is the initialization data which is stored in a partition.
57When using a custom partition table, make sure that PHY data partition is included (type: `data`, subtype: `phy`).
58With default partition table, this is done automatically.
59If initialization data is stored in a partition, it has to be flashed there, otherwise runtime error will occur.
60To switch to the initialization data stored in a partition, go to ``menuconfig`` and enable :ref:`CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION`.
61