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 pa.h
Anna Bridge 142:4eea097334d6 3 * @brief RADIO PA API
Anna Bridge 142:4eea097334d6 4 *******************************************************************************
Anna Bridge 142:4eea097334d6 5 * @section License
AnnaBridge 167:84c0a372a020 6 * <b>(C) Copyright 2015 Silicon Labs, www.silabs.com</b>
Anna Bridge 142:4eea097334d6 7 *******************************************************************************
Anna Bridge 142:4eea097334d6 8 *
Anna Bridge 142:4eea097334d6 9 * Permission is granted to anyone to use this software for any purpose,
Anna Bridge 142:4eea097334d6 10 * including commercial applications, and to alter it and redistribute it
Anna Bridge 142:4eea097334d6 11 * freely, subject to the following restrictions:
Anna Bridge 142:4eea097334d6 12 *
Anna Bridge 142:4eea097334d6 13 * 1. The origin of this software must not be misrepresented; you must not
Anna Bridge 142:4eea097334d6 14 * claim that you wrote the original software.
Anna Bridge 142:4eea097334d6 15 * 2. Altered source versions must be plainly marked as such, and must not be
Anna Bridge 142:4eea097334d6 16 * misrepresented as being the original software.
Anna Bridge 142:4eea097334d6 17 * 3. This notice may not be removed or altered from any source distribution.
Anna Bridge 142:4eea097334d6 18 *
Anna Bridge 142:4eea097334d6 19 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
Anna Bridge 142:4eea097334d6 20 * obligation to support this Software. Silicon Labs is providing the
Anna Bridge 142:4eea097334d6 21 * Software "AS IS", with no express or implied warranties of any kind,
Anna Bridge 142:4eea097334d6 22 * including, but not limited to, any implied warranties of merchantability
Anna Bridge 142:4eea097334d6 23 * or fitness for any particular purpose or warranties against infringement
Anna Bridge 142:4eea097334d6 24 * of any proprietary rights of a third party.
Anna Bridge 142:4eea097334d6 25 *
Anna Bridge 142:4eea097334d6 26 * Silicon Labs will not be liable for any consequential, incidental, or
Anna Bridge 142:4eea097334d6 27 * special damages, or any other relief, or for any claim by any third party,
Anna Bridge 142:4eea097334d6 28 * arising from your use of this Software.
Anna Bridge 142:4eea097334d6 29 *
Anna Bridge 142:4eea097334d6 30 ******************************************************************************/
Anna Bridge 142:4eea097334d6 31 #ifndef __RADIO_PA_H
Anna Bridge 142:4eea097334d6 32 #define __RADIO_PA_H
Anna Bridge 142:4eea097334d6 33
Anna Bridge 142:4eea097334d6 34 #include <stdint.h>
Anna Bridge 142:4eea097334d6 35 #include <stdbool.h>
Anna Bridge 142:4eea097334d6 36
Anna Bridge 160:5571c4ff569f 37 #include "timing_state.h"
Anna Bridge 160:5571c4ff569f 38 #include "rail_chip_specific.h"
Anna Bridge 160:5571c4ff569f 39
Anna Bridge 160:5571c4ff569f 40 // Once this is a RAIL API this code can be removed as rail-types.h does this
Anna Bridge 160:5571c4ff569f 41 #ifndef RAIL_ENUM
Anna Bridge 160:5571c4ff569f 42 #ifdef DOXYGEN_SHOULD_SKIP_THIS
Anna Bridge 160:5571c4ff569f 43 /// The RAIL library does not use actual enums because the ARM EABI leaves their
Anna Bridge 160:5571c4ff569f 44 /// size ambiguous. This ambiguity causes problems if the application is built
Anna Bridge 160:5571c4ff569f 45 /// with different flags than the library. To work around this we use uint8_t
Anna Bridge 160:5571c4ff569f 46 /// typedefs in compiled code for all enums. For documentation purposes this is
Anna Bridge 160:5571c4ff569f 47 /// converted to an actual enum since it's much easier to read in Doxygen.
Anna Bridge 160:5571c4ff569f 48 #define RAIL_ENUM(name) enum name
Anna Bridge 160:5571c4ff569f 49 #else
Anna Bridge 160:5571c4ff569f 50 /// Define used for the actual RAIL library which sets each enum to a uint8_t
Anna Bridge 160:5571c4ff569f 51 /// typedef and creates a named enum structure for the enumeration values.
Anna Bridge 160:5571c4ff569f 52 #define RAIL_ENUM(name) typedef uint8_t name; enum name##_enum
Anna Bridge 160:5571c4ff569f 53 // For debugging use the following define to turn this back into a proper enum
Anna Bridge 160:5571c4ff569f 54 // #define RAIL_ENUM(name) typedef enum name##_enum name; enum name##_enum
Anna Bridge 160:5571c4ff569f 55 #endif
Anna Bridge 160:5571c4ff569f 56 #endif
Anna Bridge 160:5571c4ff569f 57
Anna Bridge 142:4eea097334d6 58 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 59 extern "C" {
Anna Bridge 142:4eea097334d6 60 #endif
Anna Bridge 142:4eea097334d6 61
Anna Bridge 142:4eea097334d6 62 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 63 * @addtogroup Chip_Specific
Anna Bridge 142:4eea097334d6 64 * @{
Anna Bridge 142:4eea097334d6 65 ******************************************************************************/
Anna Bridge 142:4eea097334d6 66
Anna Bridge 142:4eea097334d6 67 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 68 * @addtogroup EFR32xG1x_PA
Anna Bridge 142:4eea097334d6 69 * @{
Anna Bridge 142:4eea097334d6 70 ******************************************************************************/
Anna Bridge 142:4eea097334d6 71
Anna Bridge 142:4eea097334d6 72 /*******************************************************************************
Anna Bridge 142:4eea097334d6 73 ****************************** PROTOTYPES *********************************
Anna Bridge 142:4eea097334d6 74 ******************************************************************************/
Anna Bridge 142:4eea097334d6 75
Anna Bridge 142:4eea097334d6 76 /**
Anna Bridge 142:4eea097334d6 77 * @brief
Anna Bridge 142:4eea097334d6 78 * Initilize the PA settings based on the settings provided in the paInit
Anna Bridge 142:4eea097334d6 79 * structure.
Anna Bridge 142:4eea097334d6 80 *
Anna Bridge 160:5571c4ff569f 81 * @param[in] paConfig
Anna Bridge 142:4eea097334d6 82 * Pointer to a structure containing the desired PA configuration settings.
Anna Bridge 142:4eea097334d6 83 *
AnnaBridge 167:84c0a372a020 84 * @param[in] timings
AnnaBridge 167:84c0a372a020 85 * Pointer to a structure containing the current state transition timings.
AnnaBridge 167:84c0a372a020 86 *
Anna Bridge 142:4eea097334d6 87 * @return
Anna Bridge 160:5571c4ff569f 88 * RAIL_Status_t indicating success
Anna Bridge 142:4eea097334d6 89 *
Anna Bridge 142:4eea097334d6 90 * @warning
Anna Bridge 142:4eea097334d6 91 * The radio should not be transmitting when this function is called!
Anna Bridge 160:5571c4ff569f 92 */
AnnaBridge 167:84c0a372a020 93 RAIL_Status_t PA_Config(const RAIL_TxPowerConfig_t *paConfig,
AnnaBridge 167:84c0a372a020 94 const StateTimings_t *timings);
Anna Bridge 160:5571c4ff569f 95
Anna Bridge 160:5571c4ff569f 96 /**
Anna Bridge 160:5571c4ff569f 97 * @brief
Anna Bridge 160:5571c4ff569f 98 * Get the current PA settings in use
Anna Bridge 160:5571c4ff569f 99 *
Anna Bridge 160:5571c4ff569f 100 * @param[out] config
Anna Bridge 160:5571c4ff569f 101 * Pointer to memory location into which the configuration will be
Anna Bridge 160:5571c4ff569f 102 * copied
Anna Bridge 160:5571c4ff569f 103 *
Anna Bridge 160:5571c4ff569f 104 * @return
Anna Bridge 160:5571c4ff569f 105 * RAIL_Status_t indicating success
Anna Bridge 160:5571c4ff569f 106 */
Anna Bridge 160:5571c4ff569f 107 RAIL_Status_t PA_GetTxPowerConfig(RAIL_TxPowerConfig_t *config);
Anna Bridge 142:4eea097334d6 108
Anna Bridge 142:4eea097334d6 109 /**
Anna Bridge 142:4eea097334d6 110 * @brief
Anna Bridge 142:4eea097334d6 111 * Returns the current power level of transmit power
Anna Bridge 142:4eea097334d6 112 *
Anna Bridge 142:4eea097334d6 113 * @return
Anna Bridge 160:5571c4ff569f 114 * Current power level in deci-dBm
Anna Bridge 142:4eea097334d6 115 */
Anna Bridge 160:5571c4ff569f 116 RAIL_TxPowerLevel_t PA_GetPowerLevel(void);
Anna Bridge 142:4eea097334d6 117
Anna Bridge 142:4eea097334d6 118 /**
Anna Bridge 142:4eea097334d6 119 * @brief
Anna Bridge 142:4eea097334d6 120 * Return the current ramp time in microseconds
Anna Bridge 142:4eea097334d6 121 *
Anna Bridge 142:4eea097334d6 122 * @return
Anna Bridge 142:4eea097334d6 123 * Current ramp time in microseconds
Anna Bridge 142:4eea097334d6 124 */
Anna Bridge 160:5571c4ff569f 125 uint32_t PA_GetRampTime(void);
Anna Bridge 142:4eea097334d6 126
Anna Bridge 142:4eea097334d6 127 /**
Anna Bridge 142:4eea097334d6 128 * @brief
Anna Bridge 142:4eea097334d6 129 * Sets up the ramp configuration so that it best matches the given ramp time
Anna Bridge 142:4eea097334d6 130 *
Anna Bridge 142:4eea097334d6 131 * @details
Anna Bridge 142:4eea097334d6 132 * Each PA has a distinct ramp level and ramp rate that can be used to
Anna Bridge 142:4eea097334d6 133 * achieve various ramp times. This API will pick the ramp rate that closest
Anna Bridge 142:4eea097334d6 134 * approximates the desired ramp time.
Anna Bridge 142:4eea097334d6 135 *
Anna Bridge 142:4eea097334d6 136 * @param[in] ramptime
Anna Bridge 142:4eea097334d6 137 * Desired ramp time in microseconds
AnnaBridge 167:84c0a372a020 138
AnnaBridge 167:84c0a372a020 139 * @param[in] timings
AnnaBridge 167:84c0a372a020 140 * Pointer to a structure containing the current state transition timings.
Anna Bridge 142:4eea097334d6 141 *
Anna Bridge 142:4eea097334d6 142 * @return
Anna Bridge 142:4eea097334d6 143 * The actual ramp time that was set in microseconds.
Anna Bridge 142:4eea097334d6 144 *
Anna Bridge 142:4eea097334d6 145 * @warning
Anna Bridge 142:4eea097334d6 146 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 147 */
AnnaBridge 167:84c0a372a020 148 uint32_t PA_SetRampTime(uint32_t rampTime, const StateTimings_t *timings);
Anna Bridge 160:5571c4ff569f 149
Anna Bridge 160:5571c4ff569f 150 /**
Anna Bridge 160:5571c4ff569f 151 * Enable/Disable PA calibration
Anna Bridge 160:5571c4ff569f 152 *
Anna Bridge 160:5571c4ff569f 153 * @param[in] enable Enables/Disables PA calibration
Anna Bridge 160:5571c4ff569f 154 * @return void
Anna Bridge 160:5571c4ff569f 155 *
Anna Bridge 160:5571c4ff569f 156 * Enabling this will ensure that the PA power remains constant chip to chip.
Anna Bridge 160:5571c4ff569f 157 * By default this feature is disabled after reset.
Anna Bridge 160:5571c4ff569f 158 */
Anna Bridge 160:5571c4ff569f 159 void PA_EnableCal(bool enable);
Anna Bridge 142:4eea097334d6 160
Anna Bridge 142:4eea097334d6 161 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 162 * @addtogroup EFR32xG1x_PA_Advanced
Anna Bridge 142:4eea097334d6 163 * @{
Anna Bridge 142:4eea097334d6 164 ******************************************************************************/
Anna Bridge 142:4eea097334d6 165
Anna Bridge 142:4eea097334d6 166 /**
Anna Bridge 142:4eea097334d6 167 * @brief
Anna Bridge 142:4eea097334d6 168 * Set PACTUNE value for TX and RX mode.
Anna Bridge 142:4eea097334d6 169 *
Anna Bridge 142:4eea097334d6 170 * This value can vary depending on band and match and board design.
Anna Bridge 142:4eea097334d6 171 *
Anna Bridge 142:4eea097334d6 172 * @param[in] txPaCtuneValue
Anna Bridge 142:4eea097334d6 173 * Transmit value for pa ctune
Anna Bridge 142:4eea097334d6 174 * @param[in] rxPaCtuneValue
Anna Bridge 142:4eea097334d6 175 * Receive value for pa ctune
Anna Bridge 142:4eea097334d6 176 *
Anna Bridge 160:5571c4ff569f 177 * @note PACTUNE will reset to default values when PA_Config() or
Anna Bridge 160:5571c4ff569f 178 * RAIL_ConfigRadio() are called.
Anna Bridge 142:4eea097334d6 179 *
Anna Bridge 142:4eea097334d6 180 * @warning
Anna Bridge 142:4eea097334d6 181 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 182 */
Anna Bridge 160:5571c4ff569f 183 void PA_SetCTune(uint8_t txPaCtuneValue, uint8_t rxPaCtuneValue);
Anna Bridge 142:4eea097334d6 184
Anna Bridge 142:4eea097334d6 185 /**
Anna Bridge 142:4eea097334d6 186 * @brief
Anna Bridge 142:4eea097334d6 187 * Set the output power level based on power steps available in the chosen PA.
Anna Bridge 142:4eea097334d6 188 *
Anna Bridge 142:4eea097334d6 189 * @details
Anna Bridge 142:4eea097334d6 190 * Each PA has distinct maximum power, minimum power, and power step sizes.
Anna Bridge 142:4eea097334d6 191 * This API allows direct access to these power steps to tune between the
Anna Bridge 142:4eea097334d6 192 * maximum and minimum output power the selected PA is capable of.
Anna Bridge 142:4eea097334d6 193 *
Anna Bridge 142:4eea097334d6 194 * @param[in] pwrLevel
Anna Bridge 142:4eea097334d6 195 * Output power level. Note that the maximum power level will change
Anna Bridge 142:4eea097334d6 196 * depending on PA selection.
Anna Bridge 142:4eea097334d6 197 *
Anna Bridge 142:4eea097334d6 198 * @return
Anna Bridge 160:5571c4ff569f 199 * Power level set in the current PA.
Anna Bridge 142:4eea097334d6 200 *
Anna Bridge 142:4eea097334d6 201 * @warning
Anna Bridge 142:4eea097334d6 202 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 203 */
AnnaBridge 167:84c0a372a020 204 RAIL_TxPowerLevel_t PA_SetPowerLevel(RAIL_TxPowerLevel_t powerLevel);
Anna Bridge 142:4eea097334d6 205
Anna Bridge 142:4eea097334d6 206 /** @} (end addtogroup EFR32xG1x_PA_Advanced) */
Anna Bridge 142:4eea097334d6 207 /** @} (end addtogroup EFR32xG1x_PA) */
Anna Bridge 142:4eea097334d6 208 /** @} (end addtogroup Chip_Specific) */
Anna Bridge 142:4eea097334d6 209
Anna Bridge 160:5571c4ff569f 210 /**
Anna Bridge 160:5571c4ff569f 211 * Non RAIL functions.
Anna Bridge 160:5571c4ff569f 212 *
Anna Bridge 160:5571c4ff569f 213 * The following functions can only be safely used by customers not yet on the
Anna Bridge 160:5571c4ff569f 214 * RAIL platform yet. For those on RAIL, please see RAIL_ConvertDbmToRaw and
Anna Bridge 160:5571c4ff569f 215 * RAIL_ConvertRawToDbm.
Anna Bridge 160:5571c4ff569f 216 */
Anna Bridge 160:5571c4ff569f 217
Anna Bridge 160:5571c4ff569f 218 /**
Anna Bridge 160:5571c4ff569f 219 * Function used to convert deci-dBm values to raw values that can be used in
Anna Bridge 160:5571c4ff569f 220 * SetTxPower.
Anna Bridge 160:5571c4ff569f 221 *
Anna Bridge 160:5571c4ff569f 222 * @param[in] power deci-dBm value that should be converted to the appropriate
Anna Bridge 160:5571c4ff569f 223 * raw power for the current PA
Anna Bridge 160:5571c4ff569f 224 * @return equivalent raw power for the deci-dBm value supplied, for the active
Anna Bridge 160:5571c4ff569f 225 * PA.
Anna Bridge 160:5571c4ff569f 226 */
Anna Bridge 160:5571c4ff569f 227 RAIL_TxPowerLevel_t PA_ConvertDbmToRaw(RAIL_TxPower_t power);
Anna Bridge 160:5571c4ff569f 228
Anna Bridge 160:5571c4ff569f 229 /**
Anna Bridge 160:5571c4ff569f 230 * Function to convert the raw power levels returned from GetTxPower to
Anna Bridge 160:5571c4ff569f 231 * the equivalent deci-dBm value for the current PA.
Anna Bridge 160:5571c4ff569f 232 *
Anna Bridge 160:5571c4ff569f 233 * @param[in] powerLevel Raw PA power level that should be converted into
Anna Bridge 160:5571c4ff569f 234 * the equivalent deci-dBm value for the active PA
Anna Bridge 160:5571c4ff569f 235 * @return equivalent deci-dBm value for the raw power level passed in.
Anna Bridge 160:5571c4ff569f 236 */
Anna Bridge 160:5571c4ff569f 237 RAIL_TxPower_t PA_ConvertRawToDbm(RAIL_TxPowerLevel_t powerLevel);
Anna Bridge 160:5571c4ff569f 238
Anna Bridge 142:4eea097334d6 239 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 240 }
Anna Bridge 142:4eea097334d6 241 #endif
Anna Bridge 142:4eea097334d6 242
Anna Bridge 142:4eea097334d6 243 #endif /* __RADIO_PA_H */