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.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew 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