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 May 10 11:31:27 2017 +0100
Revision:
142:4eea097334d6
Child:
159:7130f322cb7e
Release 142 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

4059: [Silicon Labs] Rename targets https://github.com/ARMmbed/mbed-os/pull/4059
4187: [NCS36510] Reduce default heap size allocated by IAR to 1/4 of RAM https://github.com/ARMmbed/mbed-os/pull/4187
4225: fixed missing device_name for xDot and removed progen https://github.com/ARMmbed/mbed-os/pull/4225
4251: Fix C++11 build error w/ u-blox EVK-ODIN-W2 https://github.com/ARMmbed/mbed-os/pull/4251
4236: STM32 Fixed warning related to __packed redefinition https://github.com/ARMmbed/mbed-os/pull/4236
4190: LPC4088: Enable LWIP feature https://github.com/ARMmbed/mbed-os/pull/4190
4260: Inherit Xadow M0 target from LPC11U35_501 https://github.com/ARMmbed/mbed-os/pull/4260
4249: Add consistent button names across targets https://github.com/ARMmbed/mbed-os/pull/4249

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 142:4eea097334d6 37 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 38 extern "C" {
Anna Bridge 142:4eea097334d6 39 #endif
Anna Bridge 142:4eea097334d6 40
Anna Bridge 142:4eea097334d6 41 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 42 * @addtogroup Chip_Specific
Anna Bridge 142:4eea097334d6 43 * @{
Anna Bridge 142:4eea097334d6 44 ******************************************************************************/
Anna Bridge 142:4eea097334d6 45
Anna Bridge 142:4eea097334d6 46 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 47 * @addtogroup EFR32xG1x_PA
Anna Bridge 142:4eea097334d6 48 * @{
Anna Bridge 142:4eea097334d6 49 ******************************************************************************/
Anna Bridge 142:4eea097334d6 50
Anna Bridge 142:4eea097334d6 51 /*******************************************************************************
Anna Bridge 142:4eea097334d6 52 **************************** CONFIGURATION ********************************
Anna Bridge 142:4eea097334d6 53 ******************************************************************************/
Anna Bridge 142:4eea097334d6 54 /** Scaling factor applied to all dBm power level inputs and outputs * */
Anna Bridge 142:4eea097334d6 55 #define PA_SCALING_FACTOR 10
Anna Bridge 142:4eea097334d6 56
Anna Bridge 142:4eea097334d6 57 /**
Anna Bridge 142:4eea097334d6 58 * @brief Selection of the rf power amplifier (PA) to use
Anna Bridge 142:4eea097334d6 59 */
Anna Bridge 142:4eea097334d6 60 typedef enum RADIO_PASel
Anna Bridge 142:4eea097334d6 61 {
Anna Bridge 142:4eea097334d6 62 /** High power PA */
Anna Bridge 142:4eea097334d6 63 PA_SEL_2P4_HP,
Anna Bridge 142:4eea097334d6 64 /** Low power PA */
Anna Bridge 142:4eea097334d6 65 PA_SEL_2P4_LP,
Anna Bridge 142:4eea097334d6 66 /** SubGig PA*/
Anna Bridge 142:4eea097334d6 67 PA_SEL_SUBGIG,
Anna Bridge 142:4eea097334d6 68 /** Invalid PA Selection */
Anna Bridge 142:4eea097334d6 69 PA_SEL_INVALID
Anna Bridge 142:4eea097334d6 70 } RADIO_PASel_t;
Anna Bridge 142:4eea097334d6 71
Anna Bridge 142:4eea097334d6 72 /**
Anna Bridge 142:4eea097334d6 73 * @brief Selection should match the configuration of the voltage on the vPa pin
Anna Bridge 142:4eea097334d6 74 * of the chip.
Anna Bridge 142:4eea097334d6 75 */
Anna Bridge 142:4eea097334d6 76 typedef enum RADIO_PAVoltMode
Anna Bridge 142:4eea097334d6 77 {
Anna Bridge 142:4eea097334d6 78 /** Vpa = Vbat = 3.3V */
Anna Bridge 142:4eea097334d6 79 PA_VOLTMODE_VBAT,
Anna Bridge 142:4eea097334d6 80 /** Vpa = DCDC Vout = 1.8V */
Anna Bridge 142:4eea097334d6 81 PA_VOLTMODE_DCDC
Anna Bridge 142:4eea097334d6 82 } RADIO_PAVoltMode_t;
Anna Bridge 142:4eea097334d6 83
Anna Bridge 142:4eea097334d6 84 /**
Anna Bridge 142:4eea097334d6 85 * @brief Configuration structure for the rf power amplifier (PA)
Anna Bridge 142:4eea097334d6 86 */
Anna Bridge 142:4eea097334d6 87 typedef struct RADIO_PAInit {
Anna Bridge 142:4eea097334d6 88 /** Power Amplifier mode */
Anna Bridge 142:4eea097334d6 89 RADIO_PASel_t paSel;
Anna Bridge 142:4eea097334d6 90 /** Power Amplifier vPA Voltage mode */
Anna Bridge 142:4eea097334d6 91 RADIO_PAVoltMode_t voltMode;
Anna Bridge 142:4eea097334d6 92 /** Desired output power in dBm * \ref PA_SCALING_FACTOR */
Anna Bridge 142:4eea097334d6 93 int16_t power;
Anna Bridge 142:4eea097334d6 94 /** Output power offset in dBm * \ref PA_SCALING_FACTOR */
Anna Bridge 142:4eea097334d6 95 int16_t offset;
Anna Bridge 142:4eea097334d6 96 /** Desired ramp time in us */
Anna Bridge 142:4eea097334d6 97 uint16_t rampTime;
Anna Bridge 142:4eea097334d6 98 } RADIO_PAInit_t;
Anna Bridge 142:4eea097334d6 99
Anna Bridge 142:4eea097334d6 100 /*******************************************************************************
Anna Bridge 142:4eea097334d6 101 ****************************** PROTOTYPES *********************************
Anna Bridge 142:4eea097334d6 102 ******************************************************************************/
Anna Bridge 142:4eea097334d6 103
Anna Bridge 142:4eea097334d6 104 /**
Anna Bridge 142:4eea097334d6 105 * @brief
Anna Bridge 142:4eea097334d6 106 * Initilize the PA settings based on the settings provided in the paInit
Anna Bridge 142:4eea097334d6 107 * structure.
Anna Bridge 142:4eea097334d6 108 *
Anna Bridge 142:4eea097334d6 109 * @param[in] paInit
Anna Bridge 142:4eea097334d6 110 * Pointer to a structure containing the desired PA configuration settings.
Anna Bridge 142:4eea097334d6 111 *
Anna Bridge 142:4eea097334d6 112 * @return
Anna Bridge 142:4eea097334d6 113 * True if the settings were accepted.
Anna Bridge 142:4eea097334d6 114 * False if settings were invalid.
Anna Bridge 142:4eea097334d6 115 *
Anna Bridge 142:4eea097334d6 116 * @warning
Anna Bridge 142:4eea097334d6 117 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 118 */
Anna Bridge 142:4eea097334d6 119 bool RADIO_PA_Init(RADIO_PAInit_t * paInit);
Anna Bridge 142:4eea097334d6 120
Anna Bridge 142:4eea097334d6 121 /**
Anna Bridge 142:4eea097334d6 122 * @brief
Anna Bridge 142:4eea097334d6 123 * Returns the current power level of transmit power
Anna Bridge 142:4eea097334d6 124 *
Anna Bridge 142:4eea097334d6 125 * @return
Anna Bridge 142:4eea097334d6 126 * Current power level in dBm * \ref PA_SCALING_FACTOR
Anna Bridge 142:4eea097334d6 127 */
Anna Bridge 142:4eea097334d6 128 int32_t PA_OutputPowerGet(void);
Anna Bridge 142:4eea097334d6 129
Anna Bridge 142:4eea097334d6 130 /**
Anna Bridge 142:4eea097334d6 131 * @brief
Anna Bridge 142:4eea097334d6 132 * Sets the output power of the PA.
Anna Bridge 142:4eea097334d6 133 *
Anna Bridge 142:4eea097334d6 134 * Each PA has distinct maximum power, minimum power, and power step sizes.
Anna Bridge 142:4eea097334d6 135 * This API will calculate the best pa output power level setting to acheieve
Anna Bridge 142:4eea097334d6 136 * the desired output power.
Anna Bridge 142:4eea097334d6 137 *
Anna Bridge 142:4eea097334d6 138 * @note
Anna Bridge 142:4eea097334d6 139 * Board and chip variations will affect the accuracy of this API. Use
Anna Bridge 142:4eea097334d6 140 * of the RADIO_PAInit_t.offset paramter can help account for this variation.
Anna Bridge 142:4eea097334d6 141 *
Anna Bridge 142:4eea097334d6 142 * @param[in] power
Anna Bridge 142:4eea097334d6 143 * Power value in dBm * \ref PA_SCALING_FACTOR
Anna Bridge 142:4eea097334d6 144 *
Anna Bridge 142:4eea097334d6 145 * Examples with \ref PA_SCALING_FACTOR of 10:
Anna Bridge 142:4eea097334d6 146 * - 10 dBm --> 100
Anna Bridge 142:4eea097334d6 147 * - 5.5 dBm --> 55
Anna Bridge 142:4eea097334d6 148 *
Anna Bridge 142:4eea097334d6 149 * @return
Anna Bridge 142:4eea097334d6 150 * Returns the actual power that was set in dBm * \ref PA_SCALING_FACTOR
Anna Bridge 142:4eea097334d6 151 *
Anna Bridge 142:4eea097334d6 152 * @warning
Anna Bridge 142:4eea097334d6 153 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 154 */
Anna Bridge 142:4eea097334d6 155 int32_t PA_OutputPowerSet(int32_t power);
Anna Bridge 142:4eea097334d6 156
Anna Bridge 142:4eea097334d6 157 /**
Anna Bridge 142:4eea097334d6 158 * @brief
Anna Bridge 142:4eea097334d6 159 * Set the maximum possible output power for the selected PA.
Anna Bridge 142:4eea097334d6 160 *
Anna Bridge 142:4eea097334d6 161 * @return
Anna Bridge 142:4eea097334d6 162 * Returns the actual power that was set in dBm * \ref PA_SCALING_FACTOR
Anna Bridge 142:4eea097334d6 163 *
Anna Bridge 142:4eea097334d6 164 * @warning
Anna Bridge 142:4eea097334d6 165 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 166 */
Anna Bridge 142:4eea097334d6 167 int32_t PA_MaxOutputPowerSet(void);
Anna Bridge 142:4eea097334d6 168
Anna Bridge 142:4eea097334d6 169 /**
Anna Bridge 142:4eea097334d6 170 * @brief
Anna Bridge 142:4eea097334d6 171 * Return the current ramp time in microseconds
Anna Bridge 142:4eea097334d6 172 *
Anna Bridge 142:4eea097334d6 173 * @return
Anna Bridge 142:4eea097334d6 174 * Current ramp time in microseconds
Anna Bridge 142:4eea097334d6 175 */
Anna Bridge 142:4eea097334d6 176 uint32_t PA_RampTimeGet(void);
Anna Bridge 142:4eea097334d6 177
Anna Bridge 142:4eea097334d6 178 /**
Anna Bridge 142:4eea097334d6 179 * @brief
Anna Bridge 142:4eea097334d6 180 * Sets up the ramp configuration so that it best matches the given ramp time
Anna Bridge 142:4eea097334d6 181 *
Anna Bridge 142:4eea097334d6 182 * @details
Anna Bridge 142:4eea097334d6 183 * Each PA has a distinct ramp level and ramp rate that can be used to
Anna Bridge 142:4eea097334d6 184 * achieve various ramp times. This API will pick the ramp rate that closest
Anna Bridge 142:4eea097334d6 185 * approximates the desired ramp time.
Anna Bridge 142:4eea097334d6 186 *
Anna Bridge 142:4eea097334d6 187 * @param[in] ramptime
Anna Bridge 142:4eea097334d6 188 * Desired ramp time in microseconds
Anna Bridge 142:4eea097334d6 189 *
Anna Bridge 142:4eea097334d6 190 * @return
Anna Bridge 142:4eea097334d6 191 * The actual ramp time that was set in microseconds.
Anna Bridge 142:4eea097334d6 192 *
Anna Bridge 142:4eea097334d6 193 * @warning
Anna Bridge 142:4eea097334d6 194 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 195 */
Anna Bridge 142:4eea097334d6 196 uint32_t PA_RampTimeSet(uint32_t ramptime);
Anna Bridge 142:4eea097334d6 197
Anna Bridge 142:4eea097334d6 198 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 199 * @addtogroup EFR32xG1x_PA_Advanced
Anna Bridge 142:4eea097334d6 200 * @{
Anna Bridge 142:4eea097334d6 201 ******************************************************************************/
Anna Bridge 142:4eea097334d6 202
Anna Bridge 142:4eea097334d6 203 /**
Anna Bridge 142:4eea097334d6 204 * @brief
Anna Bridge 142:4eea097334d6 205 * Set PACTUNE value for TX and RX mode.
Anna Bridge 142:4eea097334d6 206 *
Anna Bridge 142:4eea097334d6 207 * This value can vary depending on band and match and board design.
Anna Bridge 142:4eea097334d6 208 *
Anna Bridge 142:4eea097334d6 209 * @param[in] txPaCtuneValue
Anna Bridge 142:4eea097334d6 210 * Transmit value for pa ctune
Anna Bridge 142:4eea097334d6 211 * @param[in] rxPaCtuneValue
Anna Bridge 142:4eea097334d6 212 * Receive value for pa ctune
Anna Bridge 142:4eea097334d6 213 *
Anna Bridge 142:4eea097334d6 214 * @note PACTUNE will reset to default values when RADIO_PA_Init() or
Anna Bridge 142:4eea097334d6 215 * RAIL_RadioConfig() are called.
Anna Bridge 142:4eea097334d6 216 *
Anna Bridge 142:4eea097334d6 217 * @warning
Anna Bridge 142:4eea097334d6 218 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 219 */
Anna Bridge 142:4eea097334d6 220 void PA_CTuneSet(uint8_t txPaCtuneValue, uint8_t rxPaCtuneValue);
Anna Bridge 142:4eea097334d6 221
Anna Bridge 142:4eea097334d6 222 /**
Anna Bridge 142:4eea097334d6 223 * @brief
Anna Bridge 142:4eea097334d6 224 * Set the output power level based on power steps available in the chosen PA.
Anna Bridge 142:4eea097334d6 225 *
Anna Bridge 142:4eea097334d6 226 * @details
Anna Bridge 142:4eea097334d6 227 * Each PA has distinct maximum power, minimum power, and power step sizes.
Anna Bridge 142:4eea097334d6 228 * This API allows direct access to these power steps to tune between the
Anna Bridge 142:4eea097334d6 229 * maximum and minimum output power the selected PA is capable of.
Anna Bridge 142:4eea097334d6 230 *
Anna Bridge 142:4eea097334d6 231 * @param[in] pwrLevel
Anna Bridge 142:4eea097334d6 232 * Output power level. Note that the maximum power level will change
Anna Bridge 142:4eea097334d6 233 * depending on PA selection.
Anna Bridge 142:4eea097334d6 234 * @param[in] boostMode
Anna Bridge 142:4eea097334d6 235 * Output boost mode. Some PA selections have a mode that will increase the
Anna Bridge 142:4eea097334d6 236 * output power for each step if this is enabled.
Anna Bridge 142:4eea097334d6 237 *
Anna Bridge 142:4eea097334d6 238 * @return
Anna Bridge 142:4eea097334d6 239 * MSB Configured boost mode. \n
Anna Bridge 142:4eea097334d6 240 * LSB Configured power level
Anna Bridge 142:4eea097334d6 241 *
Anna Bridge 142:4eea097334d6 242 * @warning
Anna Bridge 142:4eea097334d6 243 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 244 */
Anna Bridge 142:4eea097334d6 245 uint16_t PA_PowerLevelSet(uint8_t pwrLevel, uint8_t boostMode);
Anna Bridge 142:4eea097334d6 246
Anna Bridge 142:4eea097334d6 247 /**
Anna Bridge 142:4eea097334d6 248 * @brief
Anna Bridge 142:4eea097334d6 249 * Optimize the PA settings based on expected output power level.
Anna Bridge 142:4eea097334d6 250 *
Anna Bridge 142:4eea097334d6 251 * @details
Anna Bridge 142:4eea097334d6 252 * This API optimizes the current consumption of the radio based on the
Anna Bridge 142:4eea097334d6 253 * provided output power. This is only necessary when output power is
Anna Bridge 142:4eea097334d6 254 * controlled by PA_PowerLevelSet().
Anna Bridge 142:4eea097334d6 255 *
Anna Bridge 142:4eea097334d6 256 * @param[in] power
Anna Bridge 142:4eea097334d6 257 * Power value in dBm * \ref PA_SCALING_FACTOR
Anna Bridge 142:4eea097334d6 258 *
Anna Bridge 142:4eea097334d6 259 * @warning
Anna Bridge 142:4eea097334d6 260 * The radio should not be transmitting when this function is called!
Anna Bridge 142:4eea097334d6 261 */
Anna Bridge 142:4eea097334d6 262 void PA_PowerLevelOptimize(int32_t power);
Anna Bridge 142:4eea097334d6 263
Anna Bridge 142:4eea097334d6 264 /** @} (end addtogroup EFR32xG1x_PA_Advanced) */
Anna Bridge 142:4eea097334d6 265 /** @} (end addtogroup EFR32xG1x_PA) */
Anna Bridge 142:4eea097334d6 266 /** @} (end addtogroup Chip_Specific) */
Anna Bridge 142:4eea097334d6 267
Anna Bridge 142:4eea097334d6 268 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 269 }
Anna Bridge 142:4eea097334d6 270 #endif
Anna Bridge 142:4eea097334d6 271
Anna Bridge 142:4eea097334d6 272
Anna Bridge 142:4eea097334d6 273 #endif /* __RADIO_PA_H */