The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_TB_SENSE_12/TOOLCHAIN_ARM_STD/rail_chip_specific.h@171:3a7713b1edbc, 2018-11-08 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 08 11:45:42 2018 +0000
- Revision:
- 171:3a7713b1edbc
- Parent:
- TARGET_TB_SENSE_1/TARGET_Silicon_Labs/TARGET_SL_RAIL/efr32-rf-driver/rail/rail_chip_specific.h@167:84c0a372a020
mbed library. Release version 164
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anna Bridge |
142:4eea097334d6 | 1 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 2 | * @file rail_chip_specific.h |
Anna Bridge |
142:4eea097334d6 | 3 | * @brief This file contains the type definitions for EFR32 chip specific |
Anna Bridge |
142:4eea097334d6 | 4 | * aspects of RAIL. |
AnnaBridge | 167:84c0a372a020 | 5 | * @copyright Copyright 2015 Silicon Laboratories, Inc. www.silabs.com |
Anna Bridge |
142:4eea097334d6 | 6 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 7 | |
Anna Bridge |
142:4eea097334d6 | 8 | #ifndef __RAIL_CHIP_SPECIFIC_H_ |
Anna Bridge |
142:4eea097334d6 | 9 | #define __RAIL_CHIP_SPECIFIC_H_ |
Anna Bridge |
142:4eea097334d6 | 10 | |
Anna Bridge |
142:4eea097334d6 | 11 | // Include standard type headers to help define structures |
Anna Bridge |
142:4eea097334d6 | 12 | #include <stdint.h> |
Anna Bridge |
142:4eea097334d6 | 13 | #include <stdbool.h> |
Anna Bridge |
142:4eea097334d6 | 14 | #include <stddef.h> |
Anna Bridge |
142:4eea097334d6 | 15 | |
Anna Bridge |
160:5571c4ff569f | 16 | #include "em_gpio.h" |
Anna Bridge |
160:5571c4ff569f | 17 | |
Anna Bridge |
160:5571c4ff569f | 18 | #include "rail_types.h" |
Anna Bridge |
160:5571c4ff569f | 19 | |
AnnaBridge | 167:84c0a372a020 | 20 | #ifdef __cplusplus |
AnnaBridge | 167:84c0a372a020 | 21 | extern "C" { |
AnnaBridge | 167:84c0a372a020 | 22 | #endif |
AnnaBridge | 167:84c0a372a020 | 23 | |
Anna Bridge |
160:5571c4ff569f | 24 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 25 | // Multiprotocol |
Anna Bridge |
160:5571c4ff569f | 26 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 27 | /** |
Anna Bridge |
160:5571c4ff569f | 28 | * @addtogroup Multiprotocol_EFR32 EFR32 |
Anna Bridge |
160:5571c4ff569f | 29 | * @{ |
Anna Bridge |
160:5571c4ff569f | 30 | * @brief EFR32 Specific multiprotocol support defines |
Anna Bridge |
160:5571c4ff569f | 31 | * @ingroup Multiprotocol |
Anna Bridge |
160:5571c4ff569f | 32 | */ |
Anna Bridge |
160:5571c4ff569f | 33 | |
Anna Bridge |
160:5571c4ff569f | 34 | /** |
Anna Bridge |
160:5571c4ff569f | 35 | * Placeholder for a chip specific RAIL handle. Using NULL as a RAIL handle is |
Anna Bridge |
160:5571c4ff569f | 36 | * frowned upon, so we use another value that can't be de-referenced. |
Anna Bridge |
160:5571c4ff569f | 37 | */ |
Anna Bridge |
160:5571c4ff569f | 38 | #define RAIL_EFR32_HANDLE ((RAIL_Handle_t)0xFFFFFFFFUL) |
Anna Bridge |
160:5571c4ff569f | 39 | |
Anna Bridge |
160:5571c4ff569f | 40 | /** @} */ // end of group Multiprotocol_EFR32 |
Anna Bridge |
160:5571c4ff569f | 41 | |
Anna Bridge |
142:4eea097334d6 | 42 | // ----------------------------------------------------------------------------- |
Anna Bridge |
142:4eea097334d6 | 43 | // Calibration |
Anna Bridge |
142:4eea097334d6 | 44 | // ----------------------------------------------------------------------------- |
Anna Bridge |
142:4eea097334d6 | 45 | /** |
Anna Bridge |
160:5571c4ff569f | 46 | * @addtogroup Calibration_EFR32 EFR32 |
Anna Bridge |
142:4eea097334d6 | 47 | * @{ |
Anna Bridge |
142:4eea097334d6 | 48 | * @brief EFR32 Specific Calibrations |
Anna Bridge |
160:5571c4ff569f | 49 | * @ingroup Calibration |
Anna Bridge |
142:4eea097334d6 | 50 | * |
Anna Bridge |
142:4eea097334d6 | 51 | * The EFR32 has two supported calibrations. There is the Image Rejection (IR) |
Anna Bridge |
142:4eea097334d6 | 52 | * calibration and a temperature dependent calibration. The IR calibration is |
Anna Bridge |
142:4eea097334d6 | 53 | * something that can be computed once and stored off or computed each time at |
Anna Bridge |
142:4eea097334d6 | 54 | * startup. It is PHY specific and provides sensitivity improvements so we |
Anna Bridge |
142:4eea097334d6 | 55 | * highly recommend using it. The IR calibration should only be run when the |
Anna Bridge |
142:4eea097334d6 | 56 | * radio is IDLE. |
Anna Bridge |
142:4eea097334d6 | 57 | * |
Anna Bridge |
142:4eea097334d6 | 58 | * The temperature dependent calibrations are used to recalibrate the synth if |
Anna Bridge |
142:4eea097334d6 | 59 | * the temperature crosses 0C or the temperature delta since the last |
Anna Bridge |
142:4eea097334d6 | 60 | * calibration exceeds 70C while sitting in receive. RAIL will run VCO |
Anna Bridge |
142:4eea097334d6 | 61 | * calibration automatically upon entering receive state so the application can |
Anna Bridge |
142:4eea097334d6 | 62 | * omit this calibration if the stack will re-enter receive with enough |
Anna Bridge |
160:5571c4ff569f | 63 | * frequency to not hit this temperature delta. If the application does not |
Anna Bridge |
142:4eea097334d6 | 64 | * calibrate for temperature, it's possible to miss receive packets due to |
Anna Bridge |
142:4eea097334d6 | 65 | * drift in the carrier frequency. |
Anna Bridge |
142:4eea097334d6 | 66 | */ |
Anna Bridge |
142:4eea097334d6 | 67 | |
Anna Bridge |
160:5571c4ff569f | 68 | /** EFR32 specific temperature calibration bit */ |
AnnaBridge | 167:84c0a372a020 | 69 | #define RAIL_CAL_TEMP_VCO (0x00000001U) |
Anna Bridge |
160:5571c4ff569f | 70 | /** EFR32 specific IR calibration bit */ |
AnnaBridge | 167:84c0a372a020 | 71 | #define RAIL_CAL_ONETIME_IRCAL (0x00010000U) |
Anna Bridge |
160:5571c4ff569f | 72 | |
Anna Bridge |
160:5571c4ff569f | 73 | /** Mask to run temperature dependent calibrations */ |
Anna Bridge |
160:5571c4ff569f | 74 | #define RAIL_CAL_TEMP (RAIL_CAL_TEMP_VCO) |
Anna Bridge |
160:5571c4ff569f | 75 | /** Mask to run one time calibrations */ |
Anna Bridge |
160:5571c4ff569f | 76 | #define RAIL_CAL_ONETIME (RAIL_CAL_ONETIME_IRCAL) |
Anna Bridge |
160:5571c4ff569f | 77 | /** Mask to run optional performance calibrations */ |
Anna Bridge |
160:5571c4ff569f | 78 | #define RAIL_CAL_PERF (0) |
Anna Bridge |
160:5571c4ff569f | 79 | /** Mask for calibrations that require the radio to be off */ |
Anna Bridge |
160:5571c4ff569f | 80 | #define RAIL_CAL_OFFLINE (RAIL_CAL_ONETIME_IRCAL) |
Anna Bridge |
160:5571c4ff569f | 81 | /** Mask to run all possible calibrations for this chip */ |
Anna Bridge |
160:5571c4ff569f | 82 | #define RAIL_CAL_ALL (RAIL_CAL_TEMP | RAIL_CAL_ONETIME) |
Anna Bridge |
160:5571c4ff569f | 83 | /** Mask to run all pending calibrations */ |
AnnaBridge | 167:84c0a372a020 | 84 | #define RAIL_CAL_ALL_PENDING (0x00000000U) |
Anna Bridge |
160:5571c4ff569f | 85 | /** Invalid calibration value */ |
AnnaBridge | 167:84c0a372a020 | 86 | #define RAIL_CAL_INVALID_VALUE (0xFFFFFFFFU) |
AnnaBridge | 167:84c0a372a020 | 87 | |
AnnaBridge | 167:84c0a372a020 | 88 | /** |
AnnaBridge | 167:84c0a372a020 | 89 | * Applies a given image rejection calibration value. |
AnnaBridge | 167:84c0a372a020 | 90 | * |
AnnaBridge | 167:84c0a372a020 | 91 | * @param[in] railHandle A RAIL instance handle. |
AnnaBridge | 167:84c0a372a020 | 92 | * @param[in] imageRejection The image rejection value to apply. |
AnnaBridge | 167:84c0a372a020 | 93 | * @return Status code indicating success of the function call. |
AnnaBridge | 167:84c0a372a020 | 94 | * |
AnnaBridge | 167:84c0a372a020 | 95 | * Take an image rejection calibration value and apply it. This value should be |
AnnaBridge | 167:84c0a372a020 | 96 | * determined from a previous run of \ref RAIL_CalibrateIr on the same |
AnnaBridge | 167:84c0a372a020 | 97 | * physical device with the same radio configuration. The imageRejection value |
AnnaBridge | 167:84c0a372a020 | 98 | * will also be stored to the \ref RAIL_ChannelConfigEntry_t::attr, if possible. |
AnnaBridge | 167:84c0a372a020 | 99 | * |
AnnaBridge | 167:84c0a372a020 | 100 | * If multiple protocols are used, this function will return |
AnnaBridge | 167:84c0a372a020 | 101 | * \ref RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is |
AnnaBridge | 167:84c0a372a020 | 102 | * not active. The caller must attempt to re-call this function later, in that |
AnnaBridge | 167:84c0a372a020 | 103 | * case. |
AnnaBridge | 167:84c0a372a020 | 104 | */ |
AnnaBridge | 167:84c0a372a020 | 105 | RAIL_Status_t RAIL_ApplyIrCalibration(RAIL_Handle_t railHandle, |
AnnaBridge | 167:84c0a372a020 | 106 | uint32_t imageRejection); |
AnnaBridge | 167:84c0a372a020 | 107 | |
AnnaBridge | 167:84c0a372a020 | 108 | /** |
AnnaBridge | 167:84c0a372a020 | 109 | * Run the image rejection calibration |
AnnaBridge | 167:84c0a372a020 | 110 | * |
AnnaBridge | 167:84c0a372a020 | 111 | * @param[in] railHandle A RAIL instance handle. |
AnnaBridge | 167:84c0a372a020 | 112 | * @param[out] imageRejection The result of the image rejection calibration. |
AnnaBridge | 167:84c0a372a020 | 113 | * @return Status code indicating success of the function call. |
AnnaBridge | 167:84c0a372a020 | 114 | * |
AnnaBridge | 167:84c0a372a020 | 115 | * Run the image rejection calibration, and apply the resulting value. If the |
AnnaBridge | 167:84c0a372a020 | 116 | * imageRejection parameter is non-NULL, then also store the value at that |
AnnaBridge | 167:84c0a372a020 | 117 | * location. The imageRejection value will also be stored to the |
AnnaBridge | 167:84c0a372a020 | 118 | * \ref RAIL_ChannelConfigEntry_t::attr, if possible. This is a long-running |
AnnaBridge | 167:84c0a372a020 | 119 | * calibration that adds significant code space when run, and can be run with a |
AnnaBridge | 167:84c0a372a020 | 120 | * separate firmware image on each device in order to save code space in the |
AnnaBridge | 167:84c0a372a020 | 121 | * final image. |
AnnaBridge | 167:84c0a372a020 | 122 | * |
AnnaBridge | 167:84c0a372a020 | 123 | * If multiple protocols are used, this function will return |
AnnaBridge | 167:84c0a372a020 | 124 | * \ref RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is |
AnnaBridge | 167:84c0a372a020 | 125 | * not active. The caller must attempt to re-call this function later, in that |
AnnaBridge | 167:84c0a372a020 | 126 | * case. |
AnnaBridge | 167:84c0a372a020 | 127 | */ |
AnnaBridge | 167:84c0a372a020 | 128 | RAIL_Status_t RAIL_CalibrateIr(RAIL_Handle_t railHandle, |
AnnaBridge | 167:84c0a372a020 | 129 | uint32_t *imageRejection); |
AnnaBridge | 167:84c0a372a020 | 130 | |
AnnaBridge | 167:84c0a372a020 | 131 | /** |
AnnaBridge | 167:84c0a372a020 | 132 | * Run the temperature calibration |
AnnaBridge | 167:84c0a372a020 | 133 | * |
AnnaBridge | 167:84c0a372a020 | 134 | * @param[in] railHandle A RAIL instance handle. |
AnnaBridge | 167:84c0a372a020 | 135 | * @return Status code indicating success of the function call. |
AnnaBridge | 167:84c0a372a020 | 136 | * |
AnnaBridge | 167:84c0a372a020 | 137 | * Run the temperature calibration, which needs to recalibrate the synth if |
AnnaBridge | 167:84c0a372a020 | 138 | * the temperature crosses 0C or the temperature delta since the last |
AnnaBridge | 167:84c0a372a020 | 139 | * calibration exceeds 70C while sitting in receive. RAIL will run VCO |
AnnaBridge | 167:84c0a372a020 | 140 | * calibration automatically upon entering receive state so the application can |
AnnaBridge | 167:84c0a372a020 | 141 | * omit this calibration if the stack will re-enter receive with enough |
AnnaBridge | 167:84c0a372a020 | 142 | * frequency to not hit this temperature delta. If the application does not |
AnnaBridge | 167:84c0a372a020 | 143 | * calibrate for temperature, it's possible to miss receive packets due to |
AnnaBridge | 167:84c0a372a020 | 144 | * drift in the carrier frequency. |
AnnaBridge | 167:84c0a372a020 | 145 | * |
AnnaBridge | 167:84c0a372a020 | 146 | * If multiple protocols are used, this function will return |
AnnaBridge | 167:84c0a372a020 | 147 | * \ref RAIL_STATUS_INVALID_STATE if it is called and the given railHandle is |
AnnaBridge | 167:84c0a372a020 | 148 | * not active. In that case the calibration will be automatically performed the |
AnnaBridge | 167:84c0a372a020 | 149 | * next time the radio enters receive. |
AnnaBridge | 167:84c0a372a020 | 150 | */ |
AnnaBridge | 167:84c0a372a020 | 151 | RAIL_Status_t RAIL_CalibrateTemp(RAIL_Handle_t railHandle); |
Anna Bridge |
160:5571c4ff569f | 152 | |
Anna Bridge |
142:4eea097334d6 | 153 | /** |
Anna Bridge |
142:4eea097334d6 | 154 | * @struct RAIL_CalValues_t |
Anna Bridge |
142:4eea097334d6 | 155 | * @brief Calibration value structure |
Anna Bridge |
142:4eea097334d6 | 156 | * |
Anna Bridge |
142:4eea097334d6 | 157 | * This structure contains the set of persistent calibration values for the |
Anna Bridge |
142:4eea097334d6 | 158 | * EFR32. You can set these before hand and apply them at startup to save the |
Anna Bridge |
142:4eea097334d6 | 159 | * time required to compute them. Any of these values may be set to |
Anna Bridge |
142:4eea097334d6 | 160 | * RAIL_CAL_INVALID_VALUE to force the code to compute that calibration value. |
Anna Bridge |
142:4eea097334d6 | 161 | */ |
Anna Bridge |
142:4eea097334d6 | 162 | typedef struct RAIL_CalValues { |
Anna Bridge |
142:4eea097334d6 | 163 | uint32_t imageRejection; /**< Image Rejection (IR) calibration value */ |
Anna Bridge |
142:4eea097334d6 | 164 | } RAIL_CalValues_t; |
Anna Bridge |
142:4eea097334d6 | 165 | |
Anna Bridge |
142:4eea097334d6 | 166 | /** |
Anna Bridge |
142:4eea097334d6 | 167 | * A define to set all RAIL_CalValues_t values to uninitialized. |
Anna Bridge |
142:4eea097334d6 | 168 | * |
Anna Bridge |
142:4eea097334d6 | 169 | * This define can be used when you have no data to pass to the calibration |
Anna Bridge |
142:4eea097334d6 | 170 | * routines but wish to compute and save all possible calibrations. |
Anna Bridge |
142:4eea097334d6 | 171 | */ |
Anna Bridge |
160:5571c4ff569f | 172 | #define RAIL_CALVALUES_UNINIT (RAIL_CalValues_t){ \ |
Anna Bridge |
160:5571c4ff569f | 173 | RAIL_CAL_INVALID_VALUE, \ |
Anna Bridge |
142:4eea097334d6 | 174 | } |
Anna Bridge |
142:4eea097334d6 | 175 | |
Anna Bridge |
160:5571c4ff569f | 176 | /** @} */ // end of group Calibration_EFR32 |
Anna Bridge |
160:5571c4ff569f | 177 | |
Anna Bridge |
160:5571c4ff569f | 178 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 179 | // Diagnostic |
Anna Bridge |
160:5571c4ff569f | 180 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 181 | /** |
Anna Bridge |
160:5571c4ff569f | 182 | * @addtogroup Diagnostic_EFR32 EFR32 |
Anna Bridge |
160:5571c4ff569f | 183 | * @{ |
Anna Bridge |
160:5571c4ff569f | 184 | * @brief Types specific to the EFR32 for the diagnostic routines. |
Anna Bridge |
160:5571c4ff569f | 185 | * @ingroup Diagnostic |
Anna Bridge |
160:5571c4ff569f | 186 | */ |
Anna Bridge |
160:5571c4ff569f | 187 | |
Anna Bridge |
160:5571c4ff569f | 188 | /** |
Anna Bridge |
160:5571c4ff569f | 189 | * @typedef RAIL_FrequencyOffset_t |
Anna Bridge |
160:5571c4ff569f | 190 | * @brief Chip-specific type that represents the number of Frequency Offset |
Anna Bridge |
160:5571c4ff569f | 191 | * units. It is used with \ref RAIL_GetRxFreqOffset() and |
Anna Bridge |
160:5571c4ff569f | 192 | * \ref RAIL_SetFreqOffset(). |
Anna Bridge |
160:5571c4ff569f | 193 | * |
Anna Bridge |
160:5571c4ff569f | 194 | * The units on this chip are radio synthesizer resolution steps (synthTicks). |
Anna Bridge |
160:5571c4ff569f | 195 | * On EFR32 (at least for now), the frequency offset is limited to 15 bits |
Anna Bridge |
160:5571c4ff569f | 196 | * (size of SYNTH_CALOFFSET). A value of \ref RAIL_FREQUENCY_OFFSET_INVALID |
Anna Bridge |
160:5571c4ff569f | 197 | * means that this value is invalid. |
Anna Bridge |
160:5571c4ff569f | 198 | */ |
Anna Bridge |
160:5571c4ff569f | 199 | typedef int16_t RAIL_FrequencyOffset_t; |
Anna Bridge |
160:5571c4ff569f | 200 | |
Anna Bridge |
160:5571c4ff569f | 201 | /** |
Anna Bridge |
160:5571c4ff569f | 202 | * Specifies an invalid frequency offset value. This will be returned if you |
Anna Bridge |
160:5571c4ff569f | 203 | * call \ref RAIL_GetRxFreqOffset() at an invalid time. |
Anna Bridge |
160:5571c4ff569f | 204 | */ |
Anna Bridge |
160:5571c4ff569f | 205 | #define RAIL_FREQUENCY_OFFSET_INVALID ((int16_t)0xFFFF) |
Anna Bridge |
160:5571c4ff569f | 206 | |
Anna Bridge |
160:5571c4ff569f | 207 | /** @} */ // end of group Diagnostic_EFR32 |
Anna Bridge |
142:4eea097334d6 | 208 | |
Anna Bridge |
160:5571c4ff569f | 209 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 210 | // Radio Configuration |
Anna Bridge |
160:5571c4ff569f | 211 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 212 | /** |
Anna Bridge |
160:5571c4ff569f | 213 | * @addtogroup Radio_Configuration_EFR32 EFR32 |
Anna Bridge |
160:5571c4ff569f | 214 | * @{ |
Anna Bridge |
160:5571c4ff569f | 215 | * @ingroup Radio_Configuration |
Anna Bridge |
160:5571c4ff569f | 216 | * @brief Types specific to the EFR32 for radio configuration. |
Anna Bridge |
160:5571c4ff569f | 217 | */ |
Anna Bridge |
160:5571c4ff569f | 218 | |
Anna Bridge |
160:5571c4ff569f | 219 | /** |
Anna Bridge |
160:5571c4ff569f | 220 | * @brief Radio Configuration structure |
Anna Bridge |
160:5571c4ff569f | 221 | * |
Anna Bridge |
160:5571c4ff569f | 222 | * The radio configuration is generated in order to properly configure the |
Anna Bridge |
160:5571c4ff569f | 223 | * radio for operation on a protocol. These configurations should not be |
Anna Bridge |
160:5571c4ff569f | 224 | * created or edited by hand. |
Anna Bridge |
160:5571c4ff569f | 225 | */ |
Anna Bridge |
160:5571c4ff569f | 226 | typedef const uint32_t *RAIL_RadioConfig_t; |
Anna Bridge |
160:5571c4ff569f | 227 | |
Anna Bridge |
160:5571c4ff569f | 228 | /** @} */ // end of group Radio_Configuration_EFR32 |
Anna Bridge |
160:5571c4ff569f | 229 | |
Anna Bridge |
160:5571c4ff569f | 230 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 231 | // Transmit |
Anna Bridge |
160:5571c4ff569f | 232 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 233 | /** |
Anna Bridge |
160:5571c4ff569f | 234 | * @addtogroup PA_EFR32 EFR32 |
Anna Bridge |
160:5571c4ff569f | 235 | * @{ |
Anna Bridge |
160:5571c4ff569f | 236 | * @ingroup PA |
Anna Bridge |
160:5571c4ff569f | 237 | * @brief Types specific to the EFR32 for dealing with the on chip PAs. |
Anna Bridge |
160:5571c4ff569f | 238 | */ |
Anna Bridge |
160:5571c4ff569f | 239 | |
Anna Bridge |
160:5571c4ff569f | 240 | /** |
Anna Bridge |
160:5571c4ff569f | 241 | * Raw power levels used directly by the RAIL_Get/SetTxPower API where a higher |
Anna Bridge |
160:5571c4ff569f | 242 | * numerical value corresponds to a higher output power. These are referred to |
Anna Bridge |
160:5571c4ff569f | 243 | * as 'raw (values/units)'. On the EFR32 they can range from one of \ref |
Anna Bridge |
160:5571c4ff569f | 244 | * RAIL_TX_POWER_LEVEL_LP_MIN, \ref RAIL_TX_POWER_LEVEL_HP_MIN, or |
Anna Bridge |
160:5571c4ff569f | 245 | * \ref RAIL_TX_POWER_LEVEL_SUBGIG_MIN to one of \ref |
Anna Bridge |
160:5571c4ff569f | 246 | * RAIL_TX_POWER_LEVEL_LP_MAX, \ref RAIL_TX_POWER_LEVEL_HP_MAX, and \ref |
Anna Bridge |
160:5571c4ff569f | 247 | * RAIL_TX_POWER_LEVEL_SUBGIG_MAX, respectively, depending on the selected \ref |
Anna Bridge |
160:5571c4ff569f | 248 | * RAIL_TxPowerMode_t. |
Anna Bridge |
160:5571c4ff569f | 249 | */ |
Anna Bridge |
160:5571c4ff569f | 250 | typedef uint8_t RAIL_TxPowerLevel_t; |
Anna Bridge |
142:4eea097334d6 | 251 | |
Anna Bridge |
142:4eea097334d6 | 252 | /** |
Anna Bridge |
160:5571c4ff569f | 253 | * The maximum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 254 | * RAIL_TX_POWER_MODE_2P4_LP mode. |
Anna Bridge |
160:5571c4ff569f | 255 | */ |
Anna Bridge |
160:5571c4ff569f | 256 | #define RAIL_TX_POWER_LEVEL_LP_MAX 7 |
Anna Bridge |
160:5571c4ff569f | 257 | /** |
Anna Bridge |
160:5571c4ff569f | 258 | * The maximum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 259 | * RAIL_TX_POWER_MODE_2P4_HP mode. |
Anna Bridge |
160:5571c4ff569f | 260 | */ |
Anna Bridge |
160:5571c4ff569f | 261 | #define RAIL_TX_POWER_LEVEL_HP_MAX 252 |
Anna Bridge |
160:5571c4ff569f | 262 | /** |
Anna Bridge |
160:5571c4ff569f | 263 | * The maximum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 264 | * RAIL_TX_POWER_MODE_SUBGIG mode. |
Anna Bridge |
160:5571c4ff569f | 265 | */ |
Anna Bridge |
160:5571c4ff569f | 266 | #define RAIL_TX_POWER_LEVEL_SUBGIG_MAX 248 |
Anna Bridge |
160:5571c4ff569f | 267 | /** |
Anna Bridge |
160:5571c4ff569f | 268 | * The minimum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 269 | * RAIL_TX_POWER_MODE_2P4_LP mode. |
Anna Bridge |
160:5571c4ff569f | 270 | */ |
Anna Bridge |
160:5571c4ff569f | 271 | #define RAIL_TX_POWER_LEVEL_HP_MIN 0 |
Anna Bridge |
160:5571c4ff569f | 272 | /** |
Anna Bridge |
160:5571c4ff569f | 273 | * The minimum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 274 | * RAIL_TX_POWER_MODE_2P4_HP mode. |
Anna Bridge |
160:5571c4ff569f | 275 | */ |
Anna Bridge |
160:5571c4ff569f | 276 | #define RAIL_TX_POWER_LEVEL_LP_MIN 1 |
Anna Bridge |
160:5571c4ff569f | 277 | /** |
Anna Bridge |
160:5571c4ff569f | 278 | * The minimum valid value for the \ref RAIL_TxPowerLevel_t when in \ref |
Anna Bridge |
160:5571c4ff569f | 279 | * RAIL_TX_POWER_MODE_SUBGIG mode. |
Anna Bridge |
160:5571c4ff569f | 280 | */ |
Anna Bridge |
160:5571c4ff569f | 281 | #define RAIL_TX_POWER_LEVEL_SUBGIG_MIN 0 |
Anna Bridge |
160:5571c4ff569f | 282 | /** |
Anna Bridge |
160:5571c4ff569f | 283 | * Invalid RAIL_TxPowerLevel_t value returned when there is an error |
Anna Bridge |
160:5571c4ff569f | 284 | * with RAIL_GetTxPower |
Anna Bridge |
160:5571c4ff569f | 285 | */ |
Anna Bridge |
160:5571c4ff569f | 286 | #define RAIL_TX_POWER_LEVEL_INVALID 255 |
Anna Bridge |
160:5571c4ff569f | 287 | |
Anna Bridge |
160:5571c4ff569f | 288 | /** |
Anna Bridge |
160:5571c4ff569f | 289 | * @enum RAIL_TxPowerMode_t |
Anna Bridge |
160:5571c4ff569f | 290 | * @brief Enumeration of the EFR32 power modes. |
Anna Bridge |
160:5571c4ff569f | 291 | * |
Anna Bridge |
160:5571c4ff569f | 292 | * The power modes on the EFR32 correspond to the different on-chip PA's that |
Anna Bridge |
160:5571c4ff569f | 293 | * are available. For more information about the power and performance |
Anna Bridge |
160:5571c4ff569f | 294 | * characteristics of a given amplifier, please consult the data sheet. |
Anna Bridge |
160:5571c4ff569f | 295 | */ |
Anna Bridge |
160:5571c4ff569f | 296 | RAIL_ENUM(RAIL_TxPowerMode_t) { |
Anna Bridge |
160:5571c4ff569f | 297 | /** High power amplifier, up to 20dBm, raw values: 0-252 */ |
Anna Bridge |
160:5571c4ff569f | 298 | RAIL_TX_POWER_MODE_2P4_HP, |
Anna Bridge |
160:5571c4ff569f | 299 | /** Low power amplifier, up to 0dBm, raw values: 1-7 */ |
Anna Bridge |
160:5571c4ff569f | 300 | RAIL_TX_POWER_MODE_2P4_LP, |
Anna Bridge |
160:5571c4ff569f | 301 | /** SubGig amplifier, up to 20dBm, raw values: 0-248 */ |
Anna Bridge |
160:5571c4ff569f | 302 | RAIL_TX_POWER_MODE_SUBGIG, |
Anna Bridge |
160:5571c4ff569f | 303 | /** Invalid amplifier Selection */ |
Anna Bridge |
160:5571c4ff569f | 304 | RAIL_TX_POWER_MODE_NONE |
Anna Bridge |
160:5571c4ff569f | 305 | }; |
Anna Bridge |
160:5571c4ff569f | 306 | |
Anna Bridge |
160:5571c4ff569f | 307 | /** |
Anna Bridge |
160:5571c4ff569f | 308 | * @struct RAIL_TxPowerConfig_t |
Anna Bridge |
160:5571c4ff569f | 309 | * |
Anna Bridge |
160:5571c4ff569f | 310 | * @brief Structure containing values used to initialize the power amplifiers. |
Anna Bridge |
160:5571c4ff569f | 311 | */ |
Anna Bridge |
160:5571c4ff569f | 312 | typedef struct RAIL_TxPowerConfig { |
Anna Bridge |
160:5571c4ff569f | 313 | /** Tx power mode */ |
Anna Bridge |
160:5571c4ff569f | 314 | RAIL_TxPowerMode_t mode; |
Anna Bridge |
160:5571c4ff569f | 315 | /** Power amplifier supply voltage in mV, generally: |
Anna Bridge |
160:5571c4ff569f | 316 | * DCDC supply ~ 1800mV (1.8V) |
Anna Bridge |
160:5571c4ff569f | 317 | * Battery supply ~ 3300mV (3.3V) |
Anna Bridge |
160:5571c4ff569f | 318 | */ |
Anna Bridge |
160:5571c4ff569f | 319 | uint16_t voltage; |
Anna Bridge |
160:5571c4ff569f | 320 | /** The amount of time to spend ramping for Tx in uS. */ |
Anna Bridge |
160:5571c4ff569f | 321 | uint16_t rampTime; |
Anna Bridge |
160:5571c4ff569f | 322 | } RAIL_TxPowerConfig_t; |
Anna Bridge |
160:5571c4ff569f | 323 | |
Anna Bridge |
160:5571c4ff569f | 324 | /** @} */ // end of group PA_EFR32 |
Anna Bridge |
160:5571c4ff569f | 325 | |
Anna Bridge |
160:5571c4ff569f | 326 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 327 | // PTI |
Anna Bridge |
160:5571c4ff569f | 328 | // ----------------------------------------------------------------------------- |
Anna Bridge |
160:5571c4ff569f | 329 | /** |
Anna Bridge |
160:5571c4ff569f | 330 | * @addtogroup PTI_EFR32 EFR32 |
Anna Bridge |
160:5571c4ff569f | 331 | * @{ |
Anna Bridge |
160:5571c4ff569f | 332 | * @brief EFR32 PTI functionality |
Anna Bridge |
160:5571c4ff569f | 333 | * @ingroup PTI |
Anna Bridge |
160:5571c4ff569f | 334 | * |
Anna Bridge |
160:5571c4ff569f | 335 | * These enums and structures are used with RAIL PTI API. EFR32 supports |
Anna Bridge |
160:5571c4ff569f | 336 | * SPI and UART PTI, and is configurable in terms of baud rates and pin PTI |
Anna Bridge |
160:5571c4ff569f | 337 | * pin locations. |
Anna Bridge |
142:4eea097334d6 | 338 | */ |
Anna Bridge |
142:4eea097334d6 | 339 | |
Anna Bridge |
160:5571c4ff569f | 340 | /** Channel type enumeration. */ |
Anna Bridge |
160:5571c4ff569f | 341 | RAIL_ENUM(RAIL_PtiMode_t) { |
Anna Bridge |
160:5571c4ff569f | 342 | /** Turn PTI off entirely */ |
Anna Bridge |
160:5571c4ff569f | 343 | RAIL_PTI_MODE_DISABLED, |
Anna Bridge |
160:5571c4ff569f | 344 | /** SPI mode. */ |
Anna Bridge |
160:5571c4ff569f | 345 | RAIL_PTI_MODE_SPI, |
Anna Bridge |
160:5571c4ff569f | 346 | /** UART mode. */ |
Anna Bridge |
160:5571c4ff569f | 347 | RAIL_PTI_MODE_UART, |
Anna Bridge |
160:5571c4ff569f | 348 | /** 9bit UART mode. */ |
Anna Bridge |
160:5571c4ff569f | 349 | RAIL_PTI_MODE_UART_ONEWIRE |
Anna Bridge |
160:5571c4ff569f | 350 | }; |
Anna Bridge |
160:5571c4ff569f | 351 | |
Anna Bridge |
160:5571c4ff569f | 352 | /** |
Anna Bridge |
160:5571c4ff569f | 353 | * @struct RAIL_PtiConfig_t |
Anna Bridge |
160:5571c4ff569f | 354 | * @brief Configuration for PTI. |
Anna Bridge |
160:5571c4ff569f | 355 | */ |
Anna Bridge |
160:5571c4ff569f | 356 | typedef struct RAIL_PtiConfig { |
Anna Bridge |
160:5571c4ff569f | 357 | /** Packet Trace mode (UART or SPI) */ |
Anna Bridge |
160:5571c4ff569f | 358 | RAIL_PtiMode_t mode; |
Anna Bridge |
160:5571c4ff569f | 359 | /** Output baudrate for PTI in Hz */ |
Anna Bridge |
160:5571c4ff569f | 360 | uint32_t baud; |
Anna Bridge |
160:5571c4ff569f | 361 | /** Data output (DOUT) location for pin/port */ |
Anna Bridge |
160:5571c4ff569f | 362 | uint8_t doutLoc; |
Anna Bridge |
160:5571c4ff569f | 363 | /** Data output (DOUT) GPIO port */ |
Anna Bridge |
160:5571c4ff569f | 364 | GPIO_Port_TypeDef doutPort; |
Anna Bridge |
160:5571c4ff569f | 365 | /** Data output (DOUT) GPIO pin */ |
Anna Bridge |
160:5571c4ff569f | 366 | uint8_t doutPin; |
Anna Bridge |
160:5571c4ff569f | 367 | /** Data clock (DCLK) location for pin/port. Only used in SPI mode */ |
Anna Bridge |
160:5571c4ff569f | 368 | uint8_t dclkLoc; |
Anna Bridge |
160:5571c4ff569f | 369 | /** Data clock (DCLK) GPIO port. Only used in SPI mode */ |
Anna Bridge |
160:5571c4ff569f | 370 | GPIO_Port_TypeDef dclkPort; |
Anna Bridge |
160:5571c4ff569f | 371 | /** Data clock (DCLK) GPIO pin. Only used in SPI mode */ |
Anna Bridge |
160:5571c4ff569f | 372 | uint8_t dclkPin; |
Anna Bridge |
160:5571c4ff569f | 373 | /** Data frame (DFRAME) location for pin/port. Only used for */ |
Anna Bridge |
160:5571c4ff569f | 374 | uint8_t dframeLoc; |
Anna Bridge |
160:5571c4ff569f | 375 | /** Data frame (DFRAME) GPIO port */ |
Anna Bridge |
160:5571c4ff569f | 376 | GPIO_Port_TypeDef dframePort; |
Anna Bridge |
160:5571c4ff569f | 377 | /** Data frame (DFRAME) GPIO pin */ |
Anna Bridge |
160:5571c4ff569f | 378 | uint8_t dframePin; |
Anna Bridge |
160:5571c4ff569f | 379 | } RAIL_PtiConfig_t; |
Anna Bridge |
160:5571c4ff569f | 380 | |
Anna Bridge |
160:5571c4ff569f | 381 | /** @} */ // end of group PTI_EFR32 |
Anna Bridge |
160:5571c4ff569f | 382 | |
AnnaBridge | 167:84c0a372a020 | 383 | // ----------------------------------------------------------------------------- |
AnnaBridge | 167:84c0a372a020 | 384 | // Antenna Control |
AnnaBridge | 167:84c0a372a020 | 385 | // ----------------------------------------------------------------------------- |
AnnaBridge | 167:84c0a372a020 | 386 | /** |
AnnaBridge | 167:84c0a372a020 | 387 | * @addtogroup Antenna_Control_EFR32 EFR32 |
AnnaBridge | 167:84c0a372a020 | 388 | * @{ |
AnnaBridge | 167:84c0a372a020 | 389 | * @brief EFR32 Antenna Control functionality |
AnnaBridge | 167:84c0a372a020 | 390 | * @ingroup Antenna |
AnnaBridge | 167:84c0a372a020 | 391 | * |
AnnaBridge | 167:84c0a372a020 | 392 | * These enums and structures are used with RAIL Antenna Control API. EFR32 supports |
AnnaBridge | 167:84c0a372a020 | 393 | * up to two antennas and with configurable pin locations. |
AnnaBridge | 167:84c0a372a020 | 394 | */ |
AnnaBridge | 167:84c0a372a020 | 395 | |
AnnaBridge | 167:84c0a372a020 | 396 | /** |
AnnaBridge | 167:84c0a372a020 | 397 | * @struct RAIL_AntennaConfig_t |
AnnaBridge | 167:84c0a372a020 | 398 | * @brief Configuration for Antenna switch pins. |
AnnaBridge | 167:84c0a372a020 | 399 | */ |
AnnaBridge | 167:84c0a372a020 | 400 | typedef struct RAIL_AntennaConfig { |
AnnaBridge | 167:84c0a372a020 | 401 | /** MODEM_ROUTEPEN fields */ |
AnnaBridge | 167:84c0a372a020 | 402 | /** Antenna 0 Pin Enable */ |
AnnaBridge | 167:84c0a372a020 | 403 | bool ant0PinEn; |
AnnaBridge | 167:84c0a372a020 | 404 | /** Antenna 1 Pin Enable */ |
AnnaBridge | 167:84c0a372a020 | 405 | bool ant1PinEn; |
AnnaBridge | 167:84c0a372a020 | 406 | /** MODEM_ROUTELOC1 fields */ |
AnnaBridge | 167:84c0a372a020 | 407 | /** Antenna 0 location for pin/port */ |
AnnaBridge | 167:84c0a372a020 | 408 | uint8_t ant0Loc; |
AnnaBridge | 167:84c0a372a020 | 409 | /** Antenna 0 output GPIO port */ |
AnnaBridge | 167:84c0a372a020 | 410 | GPIO_Port_TypeDef ant0Port; |
AnnaBridge | 167:84c0a372a020 | 411 | /** Antenna 0 output GPIO pin */ |
AnnaBridge | 167:84c0a372a020 | 412 | uint8_t ant0Pin; |
AnnaBridge | 167:84c0a372a020 | 413 | /** Antenna 1 location for pin/port */ |
AnnaBridge | 167:84c0a372a020 | 414 | uint8_t ant1Loc; |
AnnaBridge | 167:84c0a372a020 | 415 | /** Antenna 1 output GPIO port */ |
AnnaBridge | 167:84c0a372a020 | 416 | GPIO_Port_TypeDef ant1Port; |
AnnaBridge | 167:84c0a372a020 | 417 | /** Antenna 1 output GPIO pin */ |
AnnaBridge | 167:84c0a372a020 | 418 | uint8_t ant1Pin; |
AnnaBridge | 167:84c0a372a020 | 419 | } RAIL_AntennaConfig_t; |
AnnaBridge | 167:84c0a372a020 | 420 | |
AnnaBridge | 167:84c0a372a020 | 421 | /** @} */ // end of group Antenna_Control_EFR32 |
AnnaBridge | 167:84c0a372a020 | 422 | |
AnnaBridge | 167:84c0a372a020 | 423 | #ifdef __cplusplus |
AnnaBridge | 167:84c0a372a020 | 424 | } |
Anna Bridge |
142:4eea097334d6 | 425 | #endif |
AnnaBridge | 167:84c0a372a020 | 426 | |
AnnaBridge | 167:84c0a372a020 | 427 | #endif |