Modules#

RAIL_EffCalConfig_t

RAIL_EffClpcSensorConfig_t

RAIL_EffClpcConfig_t

RAIL_EffConfig_t

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.

Enumerations#

enum
RAIL_EFF_DEVICE_NONE = 0
RAIL_EFF_DEVICE_EFF01A11NMFA0
RAIL_EFF_DEVICE_EFF01B11NMFA0
RAIL_EFF_DEVICE_EFF01A11IMFB0
RAIL_EFF_DEVICE_EFF01B11IMFB0
RAIL_EFF_DEVICE_COUNT
}

EFF part numbers.

enum
RAIL_EFF_LNA_MODE_RURAL = (0x01U << 0)
RAIL_EFF_LNA_MODE_URBAN = (0x01U << 1)
RAIL_EFF_LNA_MODE_BYPASS = (0x01U << 2)
RAIL_EFF_LNA_MODE_COUNT = (0x01U << 3)
}

EFF LNA Modes.

enum
RAIL_EFF_CLPC_DISABLED = 0
RAIL_EFF_CLPC_MODE_CHANGE = 1
RAIL_EFF_CLPC_POWER_SLOW = 2
RAIL_EFF_CLPC_POWER_FAST = 3
RAIL_EFF_CLPC_POWER_BOTH = 4
RAIL_EFF_CLPC_POWER_SLOW_STOPPED = 5
RAIL_EFF_CLPC_POWER_FAST_STOPPED = 6
RAIL_EFF_CLPC_POWER_BOTH_STOPPED = 7
RAIL_EFF_CLPC_COUNT = 8
}

EFF Closed Loop Power Control (CLPC) Enable states.

enum
RAIL_EFF_MODE_SENSOR_FSK_ANTV = 0
RAIL_EFF_MODE_SENSOR_FSK_SAW2 = 1
RAIL_EFF_MODE_SENSOR_OFDM_ANTV = 2
RAIL_EFF_MODE_SENSOR_OFDM_SAW2 = 3
RAIL_EFF_MODE_SENSOR_COUNT
}

EFF Closed Loop Power Control (CLPC) Mode Sensor Indices.

Functions#

RAIL_ConfigEff(RAIL_Handle_t genericRailHandle, const RAIL_EffConfig_t *config)

Configure the attached EFF device.

RAIL_GetTemperature(RAIL_Handle_t railHandle, int16_t tempBuffer[((3U)+(6U)+(2U)+(1U))], bool reset)

Get the different temperature measurements in Kelvin done by sequencer or host.

RAIL_GetSetEffControl(RAIL_Handle_t railHandle, uint16_t tempBuffer[(52U)/sizeof(uint16_t)], bool reset)

Get the different EFF Control measurements.

RAIL_GetSetEffMode(RAIL_Handle_t railHandle, uint8_t *newMode, bool changeMode)

Copy the current FEM_DATA pin values into newMode.

RAIL_GetSetEffRuralUrbanMv(RAIL_Handle_t railHandle, uint16_t *newTrip, bool changeTrip)

Copy the current Rural to Urban trip voltage into newTrip.

RAIL_GetSetEffUrbanBypassMv(RAIL_Handle_t railHandle, uint16_t *newTrip, bool changeTrip)

Copy the current Urban to Bypass trip voltage into newTrip.

RAIL_GetSetEffUrbanDwellTimeMs(RAIL_Handle_t railHandle, uint32_t *newDwellTime, bool changeDwellTime)

Copy the current Urban dwell time into newDwellTime.

RAIL_GetSetEffBypassDwellTimeMs(RAIL_Handle_t railHandle, uint32_t *newDwellTime, bool changeDwellTime)

Copy the current Bypass dwell time into newDwellTime.

RAIL_GetSetClpcFastLoopCal(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.

RAIL_GetSetClpcFastLoopCalSlp(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.

RAIL_GetSetClpcFastLoop(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.

RAIL_GetSetClpcEnable(RAIL_Handle_t railHandle, uint8_t *newClpcEnable, bool changeClpcEnable)

Copy the current CLPC Enable in to newClpcEnable.

RAIL_GetSetEffTempThreshold(RAIL_Handle_t railHandle, uint16_t *newThresholdK, bool changeThreshold)

Get and set the EFF temperature threshold.

Macros#

#define

Minimum power for CLPC usage in deci-dBm.

#define

Number of temperature values provided for the EFF thermal protection.

#define

Number of deprecated temperature values in EFF thermal protection.

#define

Number of temperature values provided for HFXO metrics.

#define

Total number of temperature values provided by RAIL_GetTemperature().

#define

Number of bytes provided by RAIL_GetSetEffControl().

#define

A macro that checks for EFFxx devices that support high power transmit.

#define

A macro that checks for EFFxx devices that support receive.

#define

Maximum EFF internal temperature in Kelvin, allowing transmissions when RAIL_SUPPORTS_EFF is enabled.

#define

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.


Definition at line 4450 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.


Definition at line 4500 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.


Definition at line 4524 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.


Definition at line 4555 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.

Parameters
[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.


Definition at line 5716 of file common/rail.h

RAIL_GetTemperature#

RAIL_Status_t RAIL_GetTemperature (RAIL_Handle_t railHandle, int16_t tempBuffer[((3U)+(6U)+(2U)+(1U))], bool reset)

Get the different temperature measurements in Kelvin done by sequencer or host.

Parameters
[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.


Definition at line 5760 of file common/rail.h

RAIL_GetSetEffControl#

RAIL_Status_t RAIL_GetSetEffControl (RAIL_Handle_t railHandle, uint16_t tempBuffer[(52U)/sizeof(uint16_t)], bool reset)

Get the different EFF Control measurements.

Parameters
[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.


Definition at line 5776 of file common/rail.h

RAIL_GetSetEffMode#

RAIL_Status_t RAIL_GetSetEffMode (RAIL_Handle_t railHandle, uint8_t *newMode, bool changeMode)

Copy the current FEM_DATA pin values into newMode.

Parameters
[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.


Definition at line 5789 of file common/rail.h

RAIL_GetSetEffRuralUrbanMv#

RAIL_Status_t RAIL_GetSetEffRuralUrbanMv (RAIL_Handle_t railHandle, uint16_t *newTrip, bool changeTrip)

Copy the current Rural to Urban trip voltage into newTrip.

Parameters
[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.


Definition at line 5802 of file common/rail.h

RAIL_GetSetEffUrbanBypassMv#

RAIL_Status_t RAIL_GetSetEffUrbanBypassMv (RAIL_Handle_t railHandle, uint16_t *newTrip, bool changeTrip)

Copy the current Urban to Bypass trip voltage into newTrip.

Parameters
[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.


Definition at line 5815 of file common/rail.h

RAIL_GetSetEffUrbanDwellTimeMs#

RAIL_Status_t RAIL_GetSetEffUrbanDwellTimeMs (RAIL_Handle_t railHandle, uint32_t *newDwellTime, bool changeDwellTime)

Copy the current Urban dwell time into newDwellTime.

Parameters
[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.


Definition at line 5829 of file common/rail.h

RAIL_GetSetEffBypassDwellTimeMs#

RAIL_Status_t RAIL_GetSetEffBypassDwellTimeMs (RAIL_Handle_t railHandle, uint32_t *newDwellTime, bool changeDwellTime)

Copy the current Bypass dwell time into newDwellTime.

Parameters
[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.


Definition at line 5843 of file common/rail.h

RAIL_GetSetClpcFastLoopCal#

RAIL_Status_t RAIL_GetSetClpcFastLoopCal (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.

Parameters
[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.


Definition at line 5858 of file common/rail.h

RAIL_GetSetClpcFastLoopCalSlp#

RAIL_Status_t RAIL_GetSetClpcFastLoopCalSlp (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.

Parameters
[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.


Definition at line 5875 of file common/rail.h

RAIL_GetSetClpcFastLoop#

RAIL_Status_t RAIL_GetSetClpcFastLoop (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.

Parameters
[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.


Definition at line 5893 of file common/rail.h

RAIL_GetSetClpcEnable#

RAIL_Status_t RAIL_GetSetClpcEnable (RAIL_Handle_t railHandle, uint8_t *newClpcEnable, bool changeClpcEnable)

Copy the current CLPC Enable in to newClpcEnable.

Parameters
[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.


Definition at line 5908 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.

Parameters
[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.


Definition at line 5942 of file common/rail.h

Macro Definition Documentation#

RAIL_CLPC_MINIMUM_POWER#

#define RAIL_CLPC_MINIMUM_POWER
Value:
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.


Definition at line 5705 of file common/rail.h

RAIL_EFF_TEMP_MEASURE_COUNT#

#define RAIL_EFF_TEMP_MEASURE_COUNT
Value:
(6U)

Number of temperature values provided for the EFF thermal protection.


Definition at line 5720 of file common/rail.h

RAIL_EFF_TEMP_MEASURE_DEPRECATED_COUNT#

#define RAIL_EFF_TEMP_MEASURE_DEPRECATED_COUNT
Value:
(2U)

Number of deprecated temperature values in EFF thermal protection.


Definition at line 5722 of file common/rail.h

RAIL_HFXO_TEMP_MEASURE_COUNT#

#define RAIL_HFXO_TEMP_MEASURE_COUNT
Value:
(1U)

Number of temperature values provided for HFXO metrics.


Definition at line 5724 of file common/rail.h

RAIL_TEMP_MEASURE_COUNT#

#define RAIL_TEMP_MEASURE_COUNT
Value:
(RAIL_CHIP_TEMP_MEASURE_COUNT \
+ RAIL_EFF_TEMP_MEASURE_COUNT \
+ RAIL_EFF_TEMP_MEASURE_DEPRECATED_COUNT \
+ RAIL_HFXO_TEMP_MEASURE_COUNT)

Total number of temperature values provided by RAIL_GetTemperature().


Definition at line 5727 of file common/rail.h

RAIL_EFF_CONTROL_SIZE#

#define RAIL_EFF_CONTROL_SIZE
Value:
(52U)

Number of bytes provided by RAIL_GetSetEffControl().


Definition at line 5765 of file common/rail.h

RAIL_EFF_SUPPORTS_TRANSMIT#

#define RAIL_EFF_SUPPORTS_TRANSMIT
Value:
( ((x) == RAIL_EFF_DEVICE_EFF01A11NMFA0) \
|| ((x) == RAIL_EFF_DEVICE_EFF01A11IMFB0) \
)

A macro that checks for EFFxx devices that support high power transmit.


Definition at line 4473 of file common/rail_types.h

RAIL_EFF_SUPPORTS_RECEIVE#

#define RAIL_EFF_SUPPORTS_RECEIVE
Value:
( ((x) == RAIL_EFF_DEVICE_EFF01A11NMFA0) \
|| ((x) == RAIL_EFF_DEVICE_EFF01B11NMFA0) \
|| ((x) == RAIL_EFF_DEVICE_EFF01A11IMFB0) \
|| ((x) == RAIL_EFF_DEVICE_EFF01B11IMFB0) \
)

A macro that checks for EFFxx devices that support receive.


Definition at line 4480 of file common/rail_types.h

RAIL_EFF_TEMP_THRESHOLD_MAX#

#define RAIL_EFF_TEMP_THRESHOLD_MAX
Value:
(383U)

Maximum EFF internal temperature in Kelvin, allowing transmissions when RAIL_SUPPORTS_EFF is enabled.


Definition at line 4489 of file common/rail_types.h

RAIL_EFF_MODE_SENSOR_ENUM_NAMES#

#define RAIL_EFF_MODE_SENSOR_ENUM_NAMES
Value:
{ \
"RAIL_EFF_MODE_SENSOR_FSK_ANTV", \
"RAIL_EFF_MODE_SENSOR_FSK_SAW2", \
"RAIL_EFF_MODE_SENSOR_OFDM_ANTV", \
"RAIL_EFF_MODE_SENSOR_OFDM_SAW2", \
}

A macro that is string versions of the calibration enums.


Definition at line 4576 of file common/rail_types.h