Energy Friendly Front End Module (EFF)#
APIs for configuring and controlling an attached Energy Friendly Front End Module (EFF).
The EFF is a high-performance, transmit/receive (T/R) front end module (FEM) for sub-GHz EFR32 devices. RAIL includes built-in functionality to transmit and receive via an attached EFF. This functionality optimizes RF performance while ensuring that the EFF stays within safe operating temperature limits.
Configuration and control of the EFF is performed by the Energy Friendly Front End Module (EFF) Utility.
Note
The EFF is only supported with EFR32XG25 devices.
Modules#
Enumerations#
EFF part numbers.
EFF LNA Modes.
EFF Closed Loop Power Control (CLPC) Enable states.
EFF Closed Loop Power Control (CLPC) Mode Sensor Indices.
Functions#
Configure the attached EFF device.
Get the different temperature measurements in Kelvin done by sequencer or host.
Get the different EFF Control measurements.
Copy the current FEM_DATA pin values into newMode.
Copy the current Rural to Urban trip voltage into newTrip.
Copy the current Urban to Bypass trip voltage into newTrip.
Copy the current Urban dwell time into newDwellTime.
Copy the current Bypass dwell time into newDwellTime.
If changeValues is true, update current CLPC Fast Loop calibration values using the new variables.
If changeValues is true, update current CLPC Fast Loop calibration equations using the new variables.
If changeValues is true, update current CLPC Fast Loop Target and Slope.
Copy the current CLPC Enable in to newClpcEnable.
Get and set the EFF temperature threshold.
Macros#
Minimum power for CLPC usage in deci-dBm.
Number of temperature values provided for the EFF thermal protection.
Number of deprecated temperature values in EFF thermal protection.
Number of temperature values provided for HFXO metrics.
Total number of temperature values provided by RAIL_GetTemperature().
Number of bytes provided by RAIL_GetSetEffClpcControl().
A macro that checks for EFFxx devices that support high power transmit.
A macro that checks for EFFxx devices that support receive.
Maximum EFF internal temperature in Kelvin, allowing transmissions when RAIL_SUPPORTS_EFF is enabled.
A macro that is string versions of the calibration enums.
A macro that is string versions of the calibration enums.
Enumeration Documentation#
RAIL_EffDevice_t#
RAIL_EffDevice_t
EFF part numbers.
The part number of the attached EFF device is passed to RAIL_ConfigEff() as RAIL_EffConfig_t::device. The Energy Friendly Front End Module (EFF) Utility configures and controls the EFF based on the capabilities of the attached EFF.
Enumerator | |
---|---|
RAIL_EFF_DEVICE_NONE | No EFF device attached. |
RAIL_EFF_DEVICE_EFF01A11NMFA0 | +30 dBm, LNA, QFN24, +105C max ambient |
RAIL_EFF_DEVICE_EFF01B11NMFA0 | PA Bypass, LNA, QFN24, +105C max ambient. |
RAIL_EFF_DEVICE_EFF01A11IMFB0 | +30 dBm, LNA, QFN24, +125C max ambient |
RAIL_EFF_DEVICE_EFF01B11IMFB0 | PA Bypass, LNA, QFN24, +125C max ambient. |
RAIL_EFF_DEVICE_COUNT | A count of the choices in this enumeration. |
5426
of file common/rail_types.h
RAIL_EffLnaMode_t#
RAIL_EffLnaMode_t
EFF LNA Modes.
The enabled EFF LNA modes are passed toRAIL_ConfigEff() as the RAIL_EffConfig_t::enabledLnaModes. The Energy Friendly Front End Module (EFF) Utility dynamically transitions between enabled LNA modes to maximize receive performance.
Enumerator | |
---|---|
RAIL_EFF_LNA_MODE_RURAL | Rural LNA Mode. |
RAIL_EFF_LNA_MODE_URBAN | Urban LNA Mode. |
RAIL_EFF_LNA_MODE_BYPASS | Bypass LNA Mode. |
RAIL_EFF_LNA_MODE_COUNT | A count of the choices in this enumeration. |
5476
of file common/rail_types.h
RAIL_ClpcEnable_t#
RAIL_ClpcEnable_t
EFF Closed Loop Power Control (CLPC) Enable states.
The EFF CLPC Enable state is passed to RAIL_ConfigEff() as the RAIL_EffConfig_t::clpcEnable. The Energy Friendly Front End Module (EFF) Utility uses advanced power controls to tune EFF output to match Surface Acoustic Wave (SAW) filter losses and antenna performance.
Enumerator | |
---|---|
RAIL_EFF_CLPC_DISABLED | CLPC actions are completely disabled. |
RAIL_EFF_CLPC_MODE_CHANGE | CLPC actions are completely disabled. |
RAIL_EFF_CLPC_POWER_SLOW | CLPC actions allows Slow Loop. |
RAIL_EFF_CLPC_POWER_FAST | CLPC actions allows Fast Loop. |
RAIL_EFF_CLPC_POWER_BOTH | CLPC actions are completely enabled. |
RAIL_EFF_CLPC_POWER_SLOW_STOPPED | CLPC actions allows Slow Loop. |
RAIL_EFF_CLPC_POWER_FAST_STOPPED | CLPC actions allows Fast Loop. |
RAIL_EFF_CLPC_POWER_BOTH_STOPPED | CLPC actions are completely enabled. |
RAIL_EFF_CLPC_COUNT | A count of the choices in this enumeration. |
5500
of file common/rail_types.h
RAIL_EffModeSensor_t#
RAIL_EffModeSensor_t
EFF Closed Loop Power Control (CLPC) Mode Sensor Indices.
The mode sensor indices are used to access specific settings with CLPC.
Enumerator | |
---|---|
RAIL_EFF_MODE_SENSOR_FSK_ANTV | CLPC FSK ANTV Sensor. |
RAIL_EFF_MODE_SENSOR_FSK_SAW2 | CLPC FSK SAW2 Sensor. |
RAIL_EFF_MODE_SENSOR_OFDM_ANTV | CLPC OFDM ANTV power calibration entry 1. |
RAIL_EFF_MODE_SENSOR_OFDM_SAW2 | CLPC OFDM SAW2 power calibration entry 1. |
RAIL_EFF_MODE_SENSOR_COUNT | A count of the choices in this enumeration. |
5531
of file common/rail_types.h
Function Documentation#
RAIL_ConfigEff#
RAIL_Status_t RAIL_ConfigEff (RAIL_Handle_t genericRailHandle, const RAIL_EffConfig_t * config)
Configure the attached EFF device.
[in] | genericRailHandle | A generic RAIL instance handle. |
[in] | config | A pointer to a RAIL_EffConfig_t struct that contains configuration data for the EFF. |
Returns
Status code indicating success of the function call.
6180
of file common/rail.h
RAIL_GetTemperature#
RAIL_Status_t RAIL_GetTemperature (RAIL_Handle_t railHandle, int16_t tempBuffer, bool reset)
Get the different temperature measurements in Kelvin done by sequencer or host.
[in] | railHandle | A RAIL instance handle. |
[out] | tempBuffer | The address of the array that will contain temperatures. tempBuffer array must be at least RAIL_TEMP_MEASURE_COUNT int16_t. |
[in] | reset | Reset min, max and average temperature values. |
Values that are not populated yet or incorrect are set to 0.
Temperatures, in Kelvin, are stored in tempBuffer such as: tempBuffer[0] is the chip temperature tempBuffer[1] is the minimal chip temperature tempBuffer[2] is the maximal chip temperature
If RAIL_SUPPORTS_EFF is defined tempBuffer[3] is the EFF temperature before Tx tempBuffer[4] is the EFF temperature after Tx tempBuffer[5] is the minimal EFF temperature value before Tx tempBuffer[6] is the minimal EFF temperature value after Tx tempBuffer[7] is the maximal EFF temperature value before Tx tempBuffer[8] is the maximal EFF temperature value after Tx tempBuffer[9] is not used tempBuffer[10] is not used
If RAIL_SUPPORTS_HFXO_COMPENSATION tempBuffer[11] is the HFXO temperature
Returns
Status code indicating success of the function call.
6224
of file common/rail.h
RAIL_GetSetEffClpcControl#
RAIL_Status_t RAIL_GetSetEffClpcControl (RAIL_Handle_t railHandle, uint16_t tempBuffer, bool reset)
Get the different EFF Control measurements.
[in] | railHandle | A RAIL instance handle. |
[out] | tempBuffer | The address of the target array. tempBuffer array must be at least RAIL_EFF_CONTROL_SIZE bytes. |
[in] | reset | Reset the EFF Control measurements. |
Returns
Status code indicating success of the function call.
6240
of file common/rail.h
RAIL_GetSetEffClpcFemdata#
RAIL_Status_t RAIL_GetSetEffClpcFemdata (RAIL_Handle_t railHandle, uint8_t * newMode, bool changeMode)
Copy the current FEM_DATA pin values into newMode.
[in] | railHandle | A RAIL instance handle |
[inout] | newMode | A pointer to a uint8_t that will contain the FEM_DATA pin values |
[in] | changeMode | If true, use newMode to update FEM_DATA pin values |
If changeMode is true, update FEM_DATA pin values with newMode first.
Returns
Status code indicating success of the function call.
6253
of file common/rail.h
RAIL_GetSetEffLnaRuralUrbanMv#
RAIL_Status_t RAIL_GetSetEffLnaRuralUrbanMv (RAIL_Handle_t railHandle, uint16_t * newTrip, bool changeTrip)
Copy the current Rural to Urban trip voltage into newTrip.
[in] | railHandle | A RAIL instance handle |
[inout] | newTrip | A pointer to a uint16_t that will contain the Rural to Urban trip voltage, in millivolts |
[in] | changeTrip | If true, use newTrip to update current Rural to Urban trip voltage |
If changeTrip is true, update current Rural to Urban trip voltage with newTrip first.
Returns
Status code indicating success of the function call.
6266
of file common/rail.h
RAIL_GetSetEffLnaUrbanBypassMv#
RAIL_Status_t RAIL_GetSetEffLnaUrbanBypassMv (RAIL_Handle_t railHandle, uint16_t * newTrip, bool changeTrip)
Copy the current Urban to Bypass trip voltage into newTrip.
[in] | railHandle | A RAIL instance handle |
[inout] | newTrip | A pointer to a uint16_t that will contain the Urban to Bypass trip voltage, in millivolts |
[in] | changeTrip | If true, use newTrip to update current Urban to Bypass trip voltage |
If changeTrip is true, update current Urban to Bypass trip voltage with newTrip first.
Returns
Status code indicating success of the function call.
6279
of file common/rail.h
RAIL_GetSetEffLnaUrbanDwellTimeMs#
RAIL_Status_t RAIL_GetSetEffLnaUrbanDwellTimeMs (RAIL_Handle_t railHandle, uint32_t * newDwellTime, bool changeDwellTime)
Copy the current Urban dwell time into newDwellTime.
[in] | railHandle | A RAIL instance handle |
[inout] | newDwellTime | A pointer to a uint16_t that will contain the Urban dwell dwell time, in milliseconds |
[in] | changeDwellTime | If true, use newDwellTime to update current Urban dwell time |
If changeDwellTime is true, update current Urban dwell time with newDwellTime first.
Returns
Status code indicating success of the function call.
6293
of file common/rail.h
RAIL_GetSetEffLnaBypassDwellTimeMs#
RAIL_Status_t RAIL_GetSetEffLnaBypassDwellTimeMs (RAIL_Handle_t railHandle, uint32_t * newDwellTime, bool changeDwellTime)
Copy the current Bypass dwell time into newDwellTime.
[in] | railHandle | A RAIL instance handle |
[inout] | newDwellTime | A pointer to a uint16_t that will contain the Bypass dwell dwell time, in milliseconds |
[in] | changeDwellTime | If true, use newDwellTime to update current Bypass dwell time |
If changeDwellTime is true, update current Bypass dwell time with newDwellTime first.
Returns
Status code indicating success of the function call.
6307
of file common/rail.h
RAIL_GetSetEffClpcFastLoopCal#
RAIL_Status_t RAIL_GetSetEffClpcFastLoopCal (RAIL_Handle_t railHandle, RAIL_EffModeSensor_t modeSensorIndex, RAIL_EffCalConfig_t * calibrationEntry, bool changeValues)
If changeValues is true, update current CLPC Fast Loop calibration values using the new variables.
[in] | railHandle | A RAIL instance handle |
[in] | modeSensorIndex | The mode sensor to use for this operation. |
[inout] | calibrationEntry | The calibration entry to retrieve or update |
[in] | changeValues | If true, use new values to update the CLPC fast loop calibration |
If false, copy the current CLPC Fast Loop calibration values into new variables.
Returns
Status code indicating success of the function call.
6322
of file common/rail.h
RAIL_GetSetEffClpcFastLoopCalSlp#
RAIL_Status_t RAIL_GetSetEffClpcFastLoopCalSlp (RAIL_Handle_t railHandle, RAIL_EffModeSensor_t modeSensorIndex, int16_t * newSlope1e1MvPerDdbm, int16_t * newoffset290Ddbm, bool changeValues)
If changeValues is true, update current CLPC Fast Loop calibration equations using the new variables.
[in] | railHandle | A RAIL instance handle |
[in] | modeSensorIndex | The mode sensor to use for this operation. |
[inout] | newSlope1e1MvPerDdbm | A pointer to a uint16_t that will contain the CLPC Cal slope, in mV/ddBm * 10 |
[inout] | newoffset290Ddbm | A pointer to a uint16_t that will contain the CLPC Cal offset from 29 dB |
[in] | changeValues | If true, use new values to update the CLPC fast loop calibration equations |
If false, copy the current CLPC Fast Loop calibration equations into new variables.
Returns
Status code indicating success of the function call.
6339
of file common/rail.h
RAIL_GetSetEffClpcFastLoop#
RAIL_Status_t RAIL_GetSetEffClpcFastLoop (RAIL_Handle_t railHandle, RAIL_EffModeSensor_t modeSensorIndex, uint16_t * newTargetMv, uint16_t * newSlopeMvPerPaLevel, bool changeValues)
If changeValues is true, update current CLPC Fast Loop Target and Slope.
[in] | railHandle | A RAIL instance handle |
[in] | modeSensorIndex | The mode sensor to use for this operation. |
[inout] | newTargetMv | A pointer to a uint16_t that will contain the CLPC Fast Loop Target in mV |
[inout] | newSlopeMvPerPaLevel | A pointer to a uint16_t that will contain the CLPC Fast Loop Slope in mV/(PA power level) |
[in] | changeValues | If true, use newTargetMv and newSlopeMvPerPaLevel to update the CLPC Fast Loop values |
If false, copy the current CLPC Fast Loop values into newTarget and newSlope.
Returns
Status code indicating success of the function call.
6357
of file common/rail.h
RAIL_GetSetEffClpcEnable#
RAIL_Status_t RAIL_GetSetEffClpcEnable (RAIL_Handle_t railHandle, uint8_t * newClpcEnable, bool changeClpcEnable)
Copy the current CLPC Enable in to newClpcEnable.
[in] | railHandle | A RAIL instance handle |
[inout] | newClpcEnable | A pointer to a uint8_t that will contain the CLPC Enable |
[in] | changeClpcEnable | If true, use newClpcEnable to update the current CLPC Enable |
If changeClpcEnable is true, update current CLPC Enable with newClpcEnable first.
Returns
Status code indicating success of the function call.
6372
of file common/rail.h
RAIL_GetSetEffTempThreshold#
RAIL_Status_t RAIL_GetSetEffTempThreshold (RAIL_Handle_t railHandle, uint16_t * newThresholdK, bool changeThreshold)
Get and set the EFF temperature threshold.
[in] | railHandle | A RAIL instance handle. |
[inout] | newThresholdK | A pointer to a uint16_t that will contain the current EFF temperature threshold, in Kelvin. |
[in] | changeThreshold | If true, use newThresholdK to update current EFF temperature threshold. |
The EFR32 device periodically takes temperature measurements of the attached EFF device. If the EFF temperature ever exceeds the EFF temperature threshold, any active transmit operation is aborted and future transmit operations are blocked until the EFF temperature falls below the threshold.
Returns
Status code indicating the result of the function call.
6406
of file common/rail.h
Macro Definition Documentation#
RAIL_CLPC_MINIMUM_POWER#
#define RAIL_CLPC_MINIMUM_POWERValue:
180
Minimum power for CLPC usage in deci-dBm.
Below this power CLPC will not activate. Recommend staying above 19 dBm for best performance. Signed unit, do not add U.
6169
of file common/rail.h
RAIL_EFF_TEMP_MEASURE_COUNT#
#define RAIL_EFF_TEMP_MEASURE_COUNTValue:
(6U)
Number of temperature values provided for the EFF thermal protection.
6184
of file common/rail.h
RAIL_EFF_TEMP_MEASURE_DEPRECATED_COUNT#
#define RAIL_EFF_TEMP_MEASURE_DEPRECATED_COUNTValue:
(2U)
Number of deprecated temperature values in EFF thermal protection.
6186
of file common/rail.h
RAIL_HFXO_TEMP_MEASURE_COUNT#
#define RAIL_HFXO_TEMP_MEASURE_COUNTValue:
(1U)
Number of temperature values provided for HFXO metrics.
6188
of file common/rail.h
RAIL_TEMP_MEASURE_COUNT#
#define RAIL_TEMP_MEASURE_COUNTValue:
Total number of temperature values provided by RAIL_GetTemperature().
6191
of file common/rail.h
RAIL_EFF_CONTROL_SIZE#
#define RAIL_EFF_CONTROL_SIZEValue:
(52U)
Number of bytes provided by RAIL_GetSetEffClpcControl().
6229
of file common/rail.h
RAIL_EFF_SUPPORTS_TRANSMIT#
#define RAIL_EFF_SUPPORTS_TRANSMITValue:
A macro that checks for EFFxx devices that support high power transmit.
5449
of file common/rail_types.h
RAIL_EFF_SUPPORTS_RECEIVE#
#define RAIL_EFF_SUPPORTS_RECEIVEValue:
A macro that checks for EFFxx devices that support receive.
5456
of file common/rail_types.h
RAIL_EFF_TEMP_THRESHOLD_MAX#
#define RAIL_EFF_TEMP_THRESHOLD_MAXValue:
(383U)
Maximum EFF internal temperature in Kelvin, allowing transmissions when RAIL_SUPPORTS_EFF is enabled.
5465
of file common/rail_types.h
RAIL_EFF_MODE_SENSOR_ENUM_NAMES#
#define RAIL_EFF_MODE_SENSOR_ENUM_NAMESValue:
A macro that is string versions of the calibration enums.
5552
of file common/rail_types.h
RAIL_EFF_CLPC_ENABLE_ENUM_NAMES#
#define RAIL_EFF_CLPC_ENABLE_ENUM_NAMESValue:
A macro that is string versions of the calibration enums.
5563
of file common/rail_types.h