EFR32#

EFR32-specific Calibrations.

The EFR32 supports the Image Rejection (IR) calibration and a temperature-dependent calibration. The IR calibration can be computed once and stored off or computed each time at startup. Because it is PHY-specific and provides sensitivity improvements, it is highly recommended. 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 in receive. RAIL will run the VCO calibration automatically upon entering receive or transmit states, so the application can omit this calibration if the stack re-enters receive or transmit with enough frequency to avoid reaching the temperature delta. If the application does not calibrate for temperature, it's possible to miss receive packets due to a drift in the carrier frequency.

Modules#

RAIL_ChannelConfigEntryAttr

Typedefs#

typedef uint32_t

RAIL_IrCalValues_t.

A calibration value structure.

Functions#

RAIL_ApplyIrCalibration(RAIL_Handle_t railHandle, uint32_t imageRejection)

Apply a given image rejection calibration value.

RAIL_ApplyIrCalibrationAlt(RAIL_Handle_t railHandle, RAIL_IrCalValues_t *imageRejection, RAIL_AntennaSel_t rfPath)

Apply a given image rejection calibration value.

RAIL_CalibrateIr(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Run the image rejection calibration.

RAIL_CalibrateIrAlt(RAIL_Handle_t railHandle, RAIL_IrCalValues_t *imageRejection, RAIL_AntennaSel_t rfPath)

Run the image rejection calibration.

RAIL_IEEE802154_CalibrateIr2p4Ghz(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Calibrate image rejection for IEEE 802.15.4 2.4 GHz.

RAIL_IEEE802154_CalibrateIrSubGhz(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Calibrate image rejection for IEEE 802.15.4 915 MHz and 868 MHz.

RAIL_BLE_CalibrateIr(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Calibrate image rejection for Bluetooth Low Energy.

RAIL_CalibrateTemp(RAIL_Handle_t railHandle)

Run the temperature calibration.

RAIL_CalibrateHFXO(RAIL_Handle_t railHandle, int8_t *crystalPPMError)

Performs HFXO compensation.

Macros#

#define
RAIL_CAL_TEMP_VCO (0x00000001U)

EFR32-specific temperature calibration bit.

#define

EFR32-specific HFXO temperature check bit.

#define

EFR32-specific HFXO compensation bit.

#define
RAIL_CAL_RX_IRCAL (0x00010000U)

EFR32-specific IR calibration bit.

#define
RAIL_CAL_ONETIME_IRCAL (RAIL_CAL_RX_IRCAL)

EFR32-specific IR calibration bit.

#define
RAIL_CAL_TEMP (RAIL_CAL_TEMP_VCO)

A mask to run temperature-dependent calibrations.

#define
RAIL_CAL_ONETIME (RAIL_CAL_ONETIME_IRCAL)

A mask to run one-time calibrations.

#define

A mask to run optional performance calibrations.

#define
RAIL_CAL_OFFLINE (RAIL_CAL_ONETIME_IRCAL)

A mask for calibrations that require the radio to be off.

#define
RAIL_CAL_ALL (RAIL_CAL_TEMP | RAIL_CAL_ONETIME)

A mask to run all possible calibrations for this chip.

#define
RAIL_CAL_ALL_PENDING (0x00000000U)

A mask to run all pending calibrations.

#define

An invalid calibration value.

#define

Indicates the number of RF Paths supported.

#define

A define to set all RAIL_IrCalValues_t values to uninitialized.

#define
RAIL_IRCALVAL (irCalStruct, rfPath)

A define allowing Rx calibration value access compatibility between series 1 and series 2.

#define
RAIL_CALVALUES_UNINIT RAIL_IRCALVALUES_UNINIT

A define to set all RAIL_CalValues_t values to uninitialized.

Typedef Documentation#

RAIL_IrCalValues_t#

typedef uint32_t RAIL_IrCalValues_t[1] [1]

RAIL_IrCalValues_t.

An IR calibration value structure.

This definition contains the set of persistent calibration values for EFR32. You can set these beforehand and apply them at startup to save the time required to compute them. Any of these values may be set to RAIL_IRCAL_INVALID_VALUE to force the code to compute that calibration value.


Definition at line 393 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CalValues_t#

RAIL_CalValues_t

A calibration value structure.

This structure contains the set of persistent calibration values for EFR32. You can set these beforehand and apply them at startup to save the time required to compute them. Any of these values may be set to RAIL_CAL_INVALID_VALUE to force the code to compute that calibration value.


Definition at line 616 of file chip/efr32/efr32xg1x/rail_chip_specific.h

Function Documentation#

RAIL_ApplyIrCalibration#

RAIL_Status_t RAIL_ApplyIrCalibration (RAIL_Handle_t railHandle, uint32_t imageRejection)

Apply a given image rejection calibration value.

Parameters
[in]railHandle

A RAIL instance handle.

[in]imageRejection

The image rejection value to apply.

Returns

  • A 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. In that case, the caller must attempt to re-call this function later.

DeprecatedPlease use RAIL_ApplyIrCalibrationAlt instead.


Definition at line 440 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_ApplyIrCalibrationAlt#

RAIL_Status_t RAIL_ApplyIrCalibrationAlt (RAIL_Handle_t railHandle, RAIL_IrCalValues_t * imageRejection, RAIL_AntennaSel_t rfPath)

Apply a given image rejection calibration value.

Parameters
[in]railHandle

A RAIL instance handle.

[in]imageRejection

Pointer to the image rejection value to apply.

[in]rfPath

RF path to calibrate.

Returns

  • A 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_CalibrateIrAlt 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. Note

  • : To make sure the imageRejection value is stored/configured correctly, RAIL_ConfigAntenna should be called before calling this API.

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 caller must attempt to re-call this function later.


Definition at line 462 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CalibrateIr#

RAIL_Status_t RAIL_CalibrateIr (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Run the image rejection calibration.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

The result of the image rejection calibration.

Returns

  • A status code indicating success of the function call.

Run the image rejection calibration and apply the resulting value. If the imageRejection parameter is not NULL, 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 to save code space in the final image.

If multiple protocols are used, this function will make the given railHandle active, if not already, and perform calibration. If called during a protocol switch, it will return RAIL_STATUS_INVALID_STATE. In this case, RAIL_ApplyIrCalibration may be called to apply a previously determined IR calibration value, or the app must defer calibration until the protocol switch is complete. Silicon Labs recommends calling this function from the application main loop.

DeprecatedPlease use RAIL_CalibrateIrAlt instead.


Definition at line 491 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CalibrateIrAlt#

RAIL_Status_t RAIL_CalibrateIrAlt (RAIL_Handle_t railHandle, RAIL_IrCalValues_t * imageRejection, RAIL_AntennaSel_t rfPath)

Run the image rejection calibration.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

Pointer to the image rejection result.

[in]rfPath

RF path to calibrate.

Returns

  • A status code indicating success of the function call.

Run the image rejection calibration and apply the resulting value. If the imageRejection parameter is not NULL, 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 to save code space in the final image. Note

  • : To make sure the imageRejection value is stored/configured correctly, RAIL_ConfigAntenna should be called before calling this API.

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 caller must attempt to re-call this function later.


Definition at line 516 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_IEEE802154_CalibrateIr2p4Ghz#

RAIL_Status_t RAIL_IEEE802154_CalibrateIr2p4Ghz (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Calibrate image rejection for IEEE 802.15.4 2.4 GHz.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

The result of the image rejection calibration.

Returns

  • A status code indicating success of the function call.

Some chips have protocol-specific image rejection calibrations programmed into their flash. This function will either get the value from flash and apply it, or run the image rejection algorithm to find the value.


Definition at line 531 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_IEEE802154_CalibrateIrSubGhz#

RAIL_Status_t RAIL_IEEE802154_CalibrateIrSubGhz (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Calibrate image rejection for IEEE 802.15.4 915 MHz and 868 MHz.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

The result of the image rejection calibration.

Returns

  • A status code indicating success of the function call.

Some chips have protocol-specific image rejection calibrations programmed into their flash. This function will either get the value from flash and apply it, or run the image rejection algorithm to find the value.


Definition at line 545 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_BLE_CalibrateIr#

RAIL_Status_t RAIL_BLE_CalibrateIr (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Calibrate image rejection for Bluetooth Low Energy.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

The result of the image rejection calibration.

Returns

  • A status code indicating success of the function call.

Some chips have protocol-specific image rejection calibrations programmed into their flash. This function will either get the value from flash and apply it, or run the image rejection algorithm to find the value.


Definition at line 559 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CalibrateTemp#

RAIL_Status_t RAIL_CalibrateTemp (RAIL_Handle_t railHandle)

Run the temperature calibration.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • A 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 in receive. RAIL will run the VCO calibration automatically upon entering receive or transmit states, so the application can omit this calibration if the stack re-enters receive or transmit with enough frequency to avoid reaching the temperature delta. If the application does not calibrate for temperature, it's possible to miss receive packets due to a 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 next time the radio enters receive.


Definition at line 582 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CalibrateHFXO#

RAIL_Status_t RAIL_CalibrateHFXO (RAIL_Handle_t railHandle, int8_t * crystalPPMError)

Performs HFXO compensation.

Parameters
[in]railHandle

A RAIL instance handle.

[out]crystalPPMError

Current deviation that has been corrected, measured in PPM. May be NULL.

Returns

  • A status code indicating the result of the function call.

Compute the PPM correction using the thermistor value available when RAIL_EVENT_THERMISTOR_DONE occurs, after RAIL_StartThermistorMeasurement() call. Then correct the RF frequency as well as TX and RX sampling.

This function calls the following RAIL functions in sequence saving having to call them individually:

Note

  • This function makes the radio idle.


Definition at line 605 of file chip/efr32/efr32xg1x/rail_chip_specific.h

Macro Definition Documentation#

RAIL_CAL_TEMP_VCO#

#define RAIL_CAL_TEMP_VCO
Value:
(0x00000001U)

EFR32-specific temperature calibration bit.


Definition at line 353 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_TEMP_HFXO#

#define RAIL_CAL_TEMP_HFXO
Value:
(0U)

EFR32-specific HFXO temperature check bit.


Definition at line 355 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_COMPENSATE_HFXO#

#define RAIL_CAL_COMPENSATE_HFXO
Value:
(0U)

EFR32-specific HFXO compensation bit.


Definition at line 357 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_RX_IRCAL#

#define RAIL_CAL_RX_IRCAL
Value:
(0x00010000U)

EFR32-specific IR calibration bit.


Definition at line 359 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_ONETIME_IRCAL#

#define RAIL_CAL_ONETIME_IRCAL
Value:
(RAIL_CAL_RX_IRCAL)

EFR32-specific IR calibration bit.


Definition at line 361 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_TEMP#

#define RAIL_CAL_TEMP
Value:
(RAIL_CAL_TEMP_VCO)

A mask to run temperature-dependent calibrations.


Definition at line 364 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_ONETIME#

#define RAIL_CAL_ONETIME
Value:
(RAIL_CAL_ONETIME_IRCAL)

A mask to run one-time calibrations.


Definition at line 366 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_PERF#

#define RAIL_CAL_PERF
Value:
(0)

A mask to run optional performance calibrations.


Definition at line 368 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_OFFLINE#

#define RAIL_CAL_OFFLINE
Value:
(RAIL_CAL_ONETIME_IRCAL)

A mask for calibrations that require the radio to be off.


Definition at line 370 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_ALL#

#define RAIL_CAL_ALL
Value:
(RAIL_CAL_TEMP | RAIL_CAL_ONETIME)

A mask to run all possible calibrations for this chip.


Definition at line 372 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_ALL_PENDING#

#define RAIL_CAL_ALL_PENDING
Value:
(0x00000000U)

A mask to run all pending calibrations.


Definition at line 374 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CAL_INVALID_VALUE#

#define RAIL_CAL_INVALID_VALUE
Value:
(0xFFFFFFFFU)

An invalid calibration value.


Definition at line 376 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_RF_PATHS#

#define RAIL_RF_PATHS
Value:
1

Indicates the number of RF Paths supported.


Definition at line 382 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_IRCALVALUES_UNINIT#

#define RAIL_IRCALVALUES_UNINIT
Value:
{ \
RAIL_CAL_INVALID_VALUE, \
}

A define to set all RAIL_IrCalValues_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 401 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_IRCALVAL#

#define RAIL_IRCALVAL
Value:
(irCalStruct, rfPath)

A define allowing Rx calibration value access compatibility between series 1 and series 2.


Definition at line 409 of file chip/efr32/efr32xg1x/rail_chip_specific.h

RAIL_CALVALUES_UNINIT#

#define RAIL_CALVALUES_UNINIT
Value:
RAIL_IRCALVALUES_UNINIT

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 624 of file chip/efr32/efr32xg1x/rail_chip_specific.h