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:
Anna Bridge
Date:
Wed Jan 17 16:13:02 2018 +0000
Revision:
160:5571c4ff569f
Parent:
142:4eea097334d6
Child:
167:84c0a372a020
mbed library. Release version 158

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
Anna Bridge 142:4eea097334d6 6 * <b>(C) Copyright 2015 Silicon Labs, http://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 *
Anna Bridge 142:4eea097334d6 84 * @return
Anna Bridge 160:5571c4ff569f 85 * RAIL_Status_t indicating success
Anna Bridge 142:4eea097334d6 86 *
Anna Bridge 142:4eea097334d6 87 * @warning
Anna Bridge 142:4eea097334d6 88 * The radio should not be transmitting when this function is called!
Anna Bridge 160:5571c4ff569f 89 */
Anna Bridge 160:5571c4ff569f 90 RAIL_Status_t PA_Config(const RAIL_TxPowerConfig_t *paConfig);
Anna Bridge 160:5571c4ff569f 91
Anna Bridge 160:5571c4ff569f 92 /**
Anna Bridge 160:5571c4ff569f 93 * @brief
Anna Bridge 160:5571c4ff569f 94 * Get the current PA settings in use
Anna Bridge 160:5571c4ff569f 95 *
Anna Bridge 160:5571c4ff569f 96 * @param[out] config
Anna Bridge 160:5571c4ff569f 97 * Pointer to memory location into which the configuration will be
Anna Bridge 160:5571c4ff569f 98 * copied
Anna Bridge 160:5571c4ff569f 99 *
Anna Bridge 160:5571c4ff569f 100 * @return
Anna Bridge 160:5571c4ff569f 101 * RAIL_Status_t indicating success
Anna Bridge 160:5571c4ff569f 102 */
Anna Bridge 160:5571c4ff569f 103 RAIL_Status_t PA_GetTxPowerConfig(RAIL_TxPowerConfig_t *config);
Anna Bridge 142:4eea097334d6 104
Anna Bridge 142:4eea097334d6 105 /**
Anna Bridge 142:4eea097334d6 106 * @brief
Anna Bridge 142:4eea097334d6 107 * Returns the current power level of transmit power
Anna Bridge 142:4eea097334d6 108 *
Anna Bridge 142:4eea097334d6 109 * @return
Anna Bridge 160:5571c4ff569f 110 * Current power level in deci-dBm
Anna Bridge 142:4eea097334d6 111 */
Anna Bridge 160:5571c4ff569f 112 RAIL_TxPowerLevel_t PA_GetPowerLevel(void);
Anna Bridge 142:4eea097334d6 113
Anna Bridge 142:4eea097334d6 114 /**
Anna Bridge 142:4eea097334d6 115 * @brief
Anna Bridge 142:4eea097334d6 116 * Return the current ramp time in microseconds
Anna Bridge 142:4eea097334d6 117 *
Anna Bridge 142:4eea097334d6 118 * @return
Anna Bridge 142:4eea097334d6 119 * Current ramp time in microseconds
Anna Bridge 142:4eea097334d6 120 */
Anna Bridge 160:5571c4ff569f 121 uint32_t PA_GetRampTime(void);
Anna Bridge 142:4eea097334d6 122
Anna Bridge 142:4eea097334d6 123 /**
Anna Bridge 142:4eea097334d6 124 * @brief
Anna Bridge 142:4eea097334d6 125 * Sets up the ramp configuration so that it best matches the given ramp time
Anna Bridge 142:4eea097334d6 126 *
Anna Bridge 142:4eea097334d6 127 * @details
Anna Bridge 142:4eea097334d6 128 * Each PA has a distinct ramp level and ramp rate that can be used to
Anna Bridge 142:4eea097334d6 129 * achieve various ramp times. This API will pick the ramp rate that closest
Anna Bridge 142:4eea097334d6 130 * approximates the desired ramp time.
Anna Bridge 142:4eea097334d6 131 *
Anna Bridge 142:4eea097334d6 132 * @param[in] ramptime
Anna Bridge 142:4eea097334d6 133 * Desired ramp time in microseconds
Anna Bridge 142:4eea097334d6 134 *
Anna Bridge 142:4eea097334d6 135 * @return
Anna Bridge 142:4eea097334d6 136 * The actual ramp time that was set in microseconds.
Anna Bridge 142:4eea097334d6 137 *
Anna Bridge 142:4eea097334d6 138 * @warning
Anna Bridge 142:4eea097334d6 139 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 140 */
Anna Bridge 160:5571c4ff569f 141 uint32_t PA_SetRampTime(uint32_t ramptime, StateTimings_t *timings);
Anna Bridge 160:5571c4ff569f 142
Anna Bridge 160:5571c4ff569f 143 /**
Anna Bridge 160:5571c4ff569f 144 * Enable/Disable PA calibration
Anna Bridge 160:5571c4ff569f 145 *
Anna Bridge 160:5571c4ff569f 146 * @param[in] enable Enables/Disables PA calibration
Anna Bridge 160:5571c4ff569f 147 * @return void
Anna Bridge 160:5571c4ff569f 148 *
Anna Bridge 160:5571c4ff569f 149 * Enabling this will ensure that the PA power remains constant chip to chip.
Anna Bridge 160:5571c4ff569f 150 * By default this feature is disabled after reset.
Anna Bridge 160:5571c4ff569f 151 */
Anna Bridge 160:5571c4ff569f 152 void PA_EnableCal(bool enable);
Anna Bridge 142:4eea097334d6 153
Anna Bridge 142:4eea097334d6 154 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 155 * @addtogroup EFR32xG1x_PA_Advanced
Anna Bridge 142:4eea097334d6 156 * @{
Anna Bridge 142:4eea097334d6 157 ******************************************************************************/
Anna Bridge 142:4eea097334d6 158
Anna Bridge 142:4eea097334d6 159 /**
Anna Bridge 142:4eea097334d6 160 * @brief
Anna Bridge 142:4eea097334d6 161 * Set PACTUNE value for TX and RX mode.
Anna Bridge 142:4eea097334d6 162 *
Anna Bridge 142:4eea097334d6 163 * This value can vary depending on band and match and board design.
Anna Bridge 142:4eea097334d6 164 *
Anna Bridge 142:4eea097334d6 165 * @param[in] txPaCtuneValue
Anna Bridge 142:4eea097334d6 166 * Transmit value for pa ctune
Anna Bridge 142:4eea097334d6 167 * @param[in] rxPaCtuneValue
Anna Bridge 142:4eea097334d6 168 * Receive value for pa ctune
Anna Bridge 142:4eea097334d6 169 *
Anna Bridge 160:5571c4ff569f 170 * @note PACTUNE will reset to default values when PA_Config() or
Anna Bridge 160:5571c4ff569f 171 * RAIL_ConfigRadio() are called.
Anna Bridge 142:4eea097334d6 172 *
Anna Bridge 142:4eea097334d6 173 * @warning
Anna Bridge 142:4eea097334d6 174 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 175 */
Anna Bridge 160:5571c4ff569f 176 void PA_SetCTune(uint8_t txPaCtuneValue, uint8_t rxPaCtuneValue);
Anna Bridge 142:4eea097334d6 177
Anna Bridge 142:4eea097334d6 178 /**
Anna Bridge 142:4eea097334d6 179 * @brief
Anna Bridge 142:4eea097334d6 180 * Set the output power level based on power steps available in the chosen PA.
Anna Bridge 142:4eea097334d6 181 *
Anna Bridge 142:4eea097334d6 182 * @details
Anna Bridge 142:4eea097334d6 183 * Each PA has distinct maximum power, minimum power, and power step sizes.
Anna Bridge 142:4eea097334d6 184 * This API allows direct access to these power steps to tune between the
Anna Bridge 142:4eea097334d6 185 * maximum and minimum output power the selected PA is capable of.
Anna Bridge 142:4eea097334d6 186 *
Anna Bridge 142:4eea097334d6 187 * @param[in] pwrLevel
Anna Bridge 142:4eea097334d6 188 * Output power level. Note that the maximum power level will change
Anna Bridge 142:4eea097334d6 189 * depending on PA selection.
Anna Bridge 142:4eea097334d6 190 *
Anna Bridge 142:4eea097334d6 191 * @return
Anna Bridge 160:5571c4ff569f 192 * Power level set in the current PA.
Anna Bridge 142:4eea097334d6 193 *
Anna Bridge 142:4eea097334d6 194 * @warning
Anna Bridge 142:4eea097334d6 195 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 196 */
Anna Bridge 160:5571c4ff569f 197 RAIL_TxPowerLevel_t PA_SetPowerLevel(RAIL_TxPowerLevel_t pwrLevel);
Anna Bridge 142:4eea097334d6 198
Anna Bridge 142:4eea097334d6 199 /** @} (end addtogroup EFR32xG1x_PA_Advanced) */
Anna Bridge 142:4eea097334d6 200 /** @} (end addtogroup EFR32xG1x_PA) */
Anna Bridge 142:4eea097334d6 201 /** @} (end addtogroup Chip_Specific) */
Anna Bridge 142:4eea097334d6 202
Anna Bridge 160:5571c4ff569f 203 /**
Anna Bridge 160:5571c4ff569f 204 * Non RAIL functions.
Anna Bridge 160:5571c4ff569f 205 *
Anna Bridge 160:5571c4ff569f 206 * The following functions can only be safely used by customers not yet on the
Anna Bridge 160:5571c4ff569f 207 * RAIL platform yet. For those on RAIL, please see RAIL_ConvertDbmToRaw and
Anna Bridge 160:5571c4ff569f 208 * RAIL_ConvertRawToDbm.
Anna Bridge 160:5571c4ff569f 209 */
Anna Bridge 160:5571c4ff569f 210
Anna Bridge 160:5571c4ff569f 211 /**
Anna Bridge 160:5571c4ff569f 212 * Function used to convert deci-dBm values to raw values that can be used in
Anna Bridge 160:5571c4ff569f 213 * SetTxPower.
Anna Bridge 160:5571c4ff569f 214 *
Anna Bridge 160:5571c4ff569f 215 * @param[in] power deci-dBm value that should be converted to the appropriate
Anna Bridge 160:5571c4ff569f 216 * raw power for the current PA
Anna Bridge 160:5571c4ff569f 217 * @return equivalent raw power for the deci-dBm value supplied, for the active
Anna Bridge 160:5571c4ff569f 218 * PA.
Anna Bridge 160:5571c4ff569f 219 */
Anna Bridge 160:5571c4ff569f 220 RAIL_TxPowerLevel_t PA_ConvertDbmToRaw(RAIL_TxPower_t power);
Anna Bridge 160:5571c4ff569f 221
Anna Bridge 160:5571c4ff569f 222 /**
Anna Bridge 160:5571c4ff569f 223 * Function to convert the raw power levels returned from GetTxPower to
Anna Bridge 160:5571c4ff569f 224 * the equivalent deci-dBm value for the current PA.
Anna Bridge 160:5571c4ff569f 225 *
Anna Bridge 160:5571c4ff569f 226 * @param[in] powerLevel Raw PA power level that should be converted into
Anna Bridge 160:5571c4ff569f 227 * the equivalent deci-dBm value for the active PA
Anna Bridge 160:5571c4ff569f 228 * @return equivalent deci-dBm value for the raw power level passed in.
Anna Bridge 160:5571c4ff569f 229 */
Anna Bridge 160:5571c4ff569f 230 RAIL_TxPower_t PA_ConvertRawToDbm(RAIL_TxPowerLevel_t powerLevel);
Anna Bridge 160:5571c4ff569f 231
Anna Bridge 142:4eea097334d6 232 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 233 }
Anna Bridge 142:4eea097334d6 234 #endif
Anna Bridge 142:4eea097334d6 235
Anna Bridge 142:4eea097334d6 236 #endif /* __RADIO_PA_H */