EFR32 Specific CalibrationsThe EFR32 has two supported calibrations.

Data Structures

struct  RAIL_CalValues_t
 Calibration value structure.

Macros

#define RAIL_CAL_TEMP_VCO   (0x00000001U)
 EFR32 specific temperature calibration bit.
 
#define RAIL_CAL_ONETIME_IRCAL   (0x00010000U)
 EFR32 specific IR calibration bit.
 
#define RAIL_CAL_TEMP   (RAIL_CAL_TEMP_VCO)
 Mask to run temperature dependent calibrations.
 
#define RAIL_CAL_ONETIME   (RAIL_CAL_ONETIME_IRCAL)
 Mask to run one time calibrations.
 
#define RAIL_CAL_PERF   (0)
 Mask to run optional performance calibrations.
 
#define RAIL_CAL_OFFLINE   (RAIL_CAL_ONETIME_IRCAL)
 Mask for calibrations that require the radio to be off.
 
#define RAIL_CAL_ALL   (RAIL_CAL_TEMP | RAIL_CAL_ONETIME)
 Mask to run all possible calibrations for this chip.
 
#define RAIL_CAL_ALL_PENDING   (0x00000000U)
 Mask to run all pending calibrations.
 
#define RAIL_CAL_INVALID_VALUE   (0xFFFFFFFFU)
 Invalid calibration value.
 
#define RAIL_CALVALUES_UNINIT
 A define to set all RAIL_CalValues_t values to uninitialized.

Functions

RAIL_Status_t RAIL_ApplyIrCalibration (RAIL_Handle_t railHandle, uint32_t imageRejection)
 Applies a given image rejection calibration value.
 
RAIL_Status_t RAIL_CalibrateIr (RAIL_Handle_t railHandle, uint32_t *imageRejection)
 Run the image rejection calibration.
 
RAIL_Status_t RAIL_CalibrateTemp (RAIL_Handle_t railHandle)
 Run the temperature calibration.

Detailed Description

EFR32 Specific Calibrations

The EFR32 has two supported calibrations.

There is the Image Rejection (IR) calibration and a temperature dependent calibration. The IR calibration is something that can be computed once and stored off or computed each time at startup. It is PHY specific and provides sensitivity improvements so we highly recommend using it. The IR calibration should only be run when the radio is IDLE.

The temperature dependent calibrations are used to recalibrate the synth if the temperature crosses 0C or the temperature delta since the last calibration exceeds 70C while sitting in receive. RAIL will run VCO calibration automatically upon entering receive state so the application can omit this calibration if the stack will re-enter receive with enough frequency to not hit this temperature delta. If the application does not calibrate for temperature, it's possible to miss receive packets due to drift in the carrier frequency.

Macro Definition Documentation

◆ RAIL_CALVALUES_UNINIT

#define RAIL_CALVALUES_UNINIT
Value:
RAIL_CAL_INVALID_VALUE, \
}
Calibration value structure.
Definition: rail_chip_specific.h:162

A define to set all RAIL_CalValues_t values to uninitialized.

This define can be used when you have no data to pass to the calibration routines but wish to compute and save all possible calibrations.

Definition at line 172 of file rail_chip_specific.h.

Function Documentation

◆ RAIL_ApplyIrCalibration()

RAIL_Status_t RAIL_ApplyIrCalibration ( RAIL_Handle_t  railHandle,
uint32_t  imageRejection 
)

Applies a given image rejection calibration value.

Parameters
[in]railHandleA RAIL instance handle.
[in]imageRejectionThe image rejection value to apply.
Returns
Status code indicating success of the function call.

Take an image rejection calibration value and apply it. This value should be determined from a previous run of RAIL_CalibrateIr on the same physical device with the same radio configuration. The imageRejection value will also be stored to the RAIL_ChannelConfigEntry_t::attr, if possible.

If multiple protocols are used, this function will return RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is not active. The caller must attempt to re-call this function later, in that case.

◆ RAIL_CalibrateIr()

RAIL_Status_t RAIL_CalibrateIr ( RAIL_Handle_t  railHandle,
uint32_t *  imageRejection 
)

Run the image rejection calibration.

Parameters
[in]railHandleA RAIL instance handle.
[out]imageRejectionThe result of the image rejection calibration.
Returns
Status code indicating success of the function call.

Run the image rejection calibration, and apply the resulting value. If the imageRejection parameter is non-NULL, then also store the value at that location. The imageRejection value will also be stored to the RAIL_ChannelConfigEntry_t::attr, if possible. This is a long-running calibration that adds significant code space when run, and can be run with a separate firmware image on each device in order to save code space in the final image.

If multiple protocols are used, this function will return RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is not active. The caller must attempt to re-call this function later, in that case.

◆ RAIL_CalibrateTemp()

RAIL_Status_t RAIL_CalibrateTemp ( RAIL_Handle_t  railHandle)

Run the temperature calibration.

Parameters
[in]railHandleA RAIL instance handle.
Returns
Status code indicating success of the function call.

Run the temperature calibration, which needs to recalibrate the synth if the temperature crosses 0C or the temperature delta since the last calibration exceeds 70C while sitting in receive. RAIL will run VCO calibration automatically upon entering receive state so the application can omit this calibration if the stack will re-enter receive with enough frequency to not hit this temperature delta. If the application does not calibrate for temperature, it's possible to miss receive packets due to drift in the carrier frequency.

If multiple protocols are used, this function will return RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is not active. In that case the calibration will be automatically performed the next time the radio enters receive.