HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

mbed 2.0 (a.k.a classic) HelloWorld example for Spirit1 to transfer data from one node to another.
To send the predefined data packet from the sender to the receiver, user needs to press User Button on the board. The LED on the receiver expansion board will toggle on reception of data successfully.
Data packets sent and received can be seen on USB serial terminal.

EVALUATION BOARDS RF FREQUENCY DESCRIPTION :
X-NUCLEO-IDS01A4 868 MHz 868 MHz RF expansion board based on SPIRIT1

Committer:
rosarium
Date:
Thu May 25 16:38:55 2017 +0000
Revision:
0:2ddc0583bcec
First draft version of HelloWorld_IDS01A5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 0:2ddc0583bcec 1 /**
rosarium 0:2ddc0583bcec 2 ******************************************************************************
rosarium 0:2ddc0583bcec 3 * @file SPIRIT_General.c
rosarium 0:2ddc0583bcec 4 * @author VMA division - AMS
rosarium 0:2ddc0583bcec 5 * @version 3.2.2
rosarium 0:2ddc0583bcec 6 * @date 08-July-2015
rosarium 0:2ddc0583bcec 7 * @brief Configuration and management of SPIRIT General functionalities.
rosarium 0:2ddc0583bcec 8 * @details
rosarium 0:2ddc0583bcec 9 *
rosarium 0:2ddc0583bcec 10 * @attention
rosarium 0:2ddc0583bcec 11 *
rosarium 0:2ddc0583bcec 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 13 *
rosarium 0:2ddc0583bcec 14 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 15 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 16 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 17 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 19 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 20 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 22 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 23 * without specific prior written permission.
rosarium 0:2ddc0583bcec 24 *
rosarium 0:2ddc0583bcec 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 35 *
rosarium 0:2ddc0583bcec 36 ******************************************************************************
rosarium 0:2ddc0583bcec 37 */
rosarium 0:2ddc0583bcec 38
rosarium 0:2ddc0583bcec 39 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 40 #include "SPIRIT_General.h"
rosarium 0:2ddc0583bcec 41 #include "MCU_Interface.h"
rosarium 0:2ddc0583bcec 42
rosarium 0:2ddc0583bcec 43
rosarium 0:2ddc0583bcec 44 /**
rosarium 0:2ddc0583bcec 45 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 46 * @{
rosarium 0:2ddc0583bcec 47 */
rosarium 0:2ddc0583bcec 48
rosarium 0:2ddc0583bcec 49
rosarium 0:2ddc0583bcec 50 /**
rosarium 0:2ddc0583bcec 51 * @addtogroup SPIRIT_General
rosarium 0:2ddc0583bcec 52 * @{
rosarium 0:2ddc0583bcec 53 */
rosarium 0:2ddc0583bcec 54
rosarium 0:2ddc0583bcec 55
rosarium 0:2ddc0583bcec 56 /**
rosarium 0:2ddc0583bcec 57 * @defgroup General_Private_TypesDefinitions General Private Types Definitions
rosarium 0:2ddc0583bcec 58 * @{
rosarium 0:2ddc0583bcec 59 */
rosarium 0:2ddc0583bcec 60
rosarium 0:2ddc0583bcec 61 /**
rosarium 0:2ddc0583bcec 62 *@}
rosarium 0:2ddc0583bcec 63 */
rosarium 0:2ddc0583bcec 64
rosarium 0:2ddc0583bcec 65
rosarium 0:2ddc0583bcec 66 /**
rosarium 0:2ddc0583bcec 67 * @defgroup General_Private_Defines General Private Defines
rosarium 0:2ddc0583bcec 68 * @{
rosarium 0:2ddc0583bcec 69 */
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71 /**
rosarium 0:2ddc0583bcec 72 *@}
rosarium 0:2ddc0583bcec 73 */
rosarium 0:2ddc0583bcec 74
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76 /**
rosarium 0:2ddc0583bcec 77 * @defgroup General_Private_Macros General Private Macros
rosarium 0:2ddc0583bcec 78 * @{
rosarium 0:2ddc0583bcec 79 */
rosarium 0:2ddc0583bcec 80
rosarium 0:2ddc0583bcec 81 /**
rosarium 0:2ddc0583bcec 82 *@}
rosarium 0:2ddc0583bcec 83 */
rosarium 0:2ddc0583bcec 84
rosarium 0:2ddc0583bcec 85
rosarium 0:2ddc0583bcec 86 /**
rosarium 0:2ddc0583bcec 87 * @defgroup General_Private_Variables General Private Variables
rosarium 0:2ddc0583bcec 88 * @{
rosarium 0:2ddc0583bcec 89 */
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91
rosarium 0:2ddc0583bcec 92 /**
rosarium 0:2ddc0583bcec 93 *@}
rosarium 0:2ddc0583bcec 94 */
rosarium 0:2ddc0583bcec 95
rosarium 0:2ddc0583bcec 96
rosarium 0:2ddc0583bcec 97 /**
rosarium 0:2ddc0583bcec 98 * @defgroup General_Private_FunctionPrototypes General Private Function Prototypes
rosarium 0:2ddc0583bcec 99 * @{
rosarium 0:2ddc0583bcec 100 */
rosarium 0:2ddc0583bcec 101
rosarium 0:2ddc0583bcec 102 /**
rosarium 0:2ddc0583bcec 103 *@}
rosarium 0:2ddc0583bcec 104 */
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106
rosarium 0:2ddc0583bcec 107 /**
rosarium 0:2ddc0583bcec 108 * @defgroup General_Private_Functions General Private Functions
rosarium 0:2ddc0583bcec 109 * @{
rosarium 0:2ddc0583bcec 110 */
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 /**
rosarium 0:2ddc0583bcec 113 * @brief Enables or Disables the output of battery level detector.
rosarium 0:2ddc0583bcec 114 * @param xNewState new state for battery level detector.
rosarium 0:2ddc0583bcec 115 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 116 * @retval None
rosarium 0:2ddc0583bcec 117 */
rosarium 0:2ddc0583bcec 118 void SpiritGeneralBatteryLevel(SpiritFunctionalState xNewState)
rosarium 0:2ddc0583bcec 119 {
rosarium 0:2ddc0583bcec 120 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 121
rosarium 0:2ddc0583bcec 122 /* Check the parameters */
rosarium 0:2ddc0583bcec 123 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
rosarium 0:2ddc0583bcec 124
rosarium 0:2ddc0583bcec 125 /* Reads the ANA_FUNC_CONF0_BASE register value */
rosarium 0:2ddc0583bcec 126 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 127
rosarium 0:2ddc0583bcec 128 /* Build the value to be stored */
rosarium 0:2ddc0583bcec 129 if(xNewState == S_ENABLE)
rosarium 0:2ddc0583bcec 130 {
rosarium 0:2ddc0583bcec 131 tempRegValue |= BATTERY_LEVEL_MASK;
rosarium 0:2ddc0583bcec 132 }
rosarium 0:2ddc0583bcec 133 else
rosarium 0:2ddc0583bcec 134 {
rosarium 0:2ddc0583bcec 135 tempRegValue &= ~BATTERY_LEVEL_MASK;
rosarium 0:2ddc0583bcec 136 }
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138 /* Writes the new value */
rosarium 0:2ddc0583bcec 139 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 140
rosarium 0:2ddc0583bcec 141 }
rosarium 0:2ddc0583bcec 142
rosarium 0:2ddc0583bcec 143
rosarium 0:2ddc0583bcec 144 /**
rosarium 0:2ddc0583bcec 145 * @brief Sets the battery level.
rosarium 0:2ddc0583bcec 146 * @param xBatteryLevel new state for battery level.
rosarium 0:2ddc0583bcec 147 * This parameter can be a value of @ref BatteryLevel.
rosarium 0:2ddc0583bcec 148 * @retval None.
rosarium 0:2ddc0583bcec 149 */
rosarium 0:2ddc0583bcec 150 void SpiritGeneralSetBatteryLevel(BatteryLevel xBatteryLevel)
rosarium 0:2ddc0583bcec 151 {
rosarium 0:2ddc0583bcec 152 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 153
rosarium 0:2ddc0583bcec 154 /* Check the parameters */
rosarium 0:2ddc0583bcec 155 s_assert_param(IS_BLD_LVL(xBatteryLevel));
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157 /* Reads the ANA_FUNC_CONF1_BASE register value */
rosarium 0:2ddc0583bcec 158 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 159
rosarium 0:2ddc0583bcec 160 /* Build the value to be stored */
rosarium 0:2ddc0583bcec 161 tempRegValue &= ~ANA_FUNC_CONF1_SET_BLD_LVL_MASK;
rosarium 0:2ddc0583bcec 162 switch(xBatteryLevel)
rosarium 0:2ddc0583bcec 163 {
rosarium 0:2ddc0583bcec 164 case BLD_LVL_2_7_V:
rosarium 0:2ddc0583bcec 165 tempRegValue |= BLD_LVL_2_7;
rosarium 0:2ddc0583bcec 166 break;
rosarium 0:2ddc0583bcec 167 case BLD_LVL_2_5_V:
rosarium 0:2ddc0583bcec 168 tempRegValue |= BLD_LVL_2_5;
rosarium 0:2ddc0583bcec 169 break;
rosarium 0:2ddc0583bcec 170 case BLD_LVL_2_3_V:
rosarium 0:2ddc0583bcec 171 tempRegValue |= BLD_LVL_2_3;
rosarium 0:2ddc0583bcec 172 break;
rosarium 0:2ddc0583bcec 173 case BLD_LVL_2_1_V:
rosarium 0:2ddc0583bcec 174 tempRegValue |= BLD_LVL_2_1;
rosarium 0:2ddc0583bcec 175 break;
rosarium 0:2ddc0583bcec 176 }
rosarium 0:2ddc0583bcec 177
rosarium 0:2ddc0583bcec 178 /* Writes the new value */
rosarium 0:2ddc0583bcec 179 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 180
rosarium 0:2ddc0583bcec 181 }
rosarium 0:2ddc0583bcec 182
rosarium 0:2ddc0583bcec 183
rosarium 0:2ddc0583bcec 184 /**
rosarium 0:2ddc0583bcec 185 * @brief Returns the settled battery level.
rosarium 0:2ddc0583bcec 186 * @param None.
rosarium 0:2ddc0583bcec 187 * @retval BatteryLevel Settled battery level. This parameter can be a value of @ref BatteryLevel.
rosarium 0:2ddc0583bcec 188 */
rosarium 0:2ddc0583bcec 189 BatteryLevel SpiritGeneralGetBatteryLevel(void)
rosarium 0:2ddc0583bcec 190 {
rosarium 0:2ddc0583bcec 191 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 192
rosarium 0:2ddc0583bcec 193 /* Reads the ANA_FUNC_CONF1_BASE register value */
rosarium 0:2ddc0583bcec 194 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 195
rosarium 0:2ddc0583bcec 196 /* Mask the battery level field and returns the settled battery level */
rosarium 0:2ddc0583bcec 197 return ((BatteryLevel)(tempRegValue & ANA_FUNC_CONF1_SET_BLD_LVL_MASK));
rosarium 0:2ddc0583bcec 198
rosarium 0:2ddc0583bcec 199 }
rosarium 0:2ddc0583bcec 200
rosarium 0:2ddc0583bcec 201
rosarium 0:2ddc0583bcec 202 /**
rosarium 0:2ddc0583bcec 203 * @brief Enables or Disables the output of brown out detector.
rosarium 0:2ddc0583bcec 204 * @param xNewState new state for brown out detector.
rosarium 0:2ddc0583bcec 205 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 206 * @retval None.
rosarium 0:2ddc0583bcec 207 */
rosarium 0:2ddc0583bcec 208 void SpiritGeneralBrownOut(SpiritFunctionalState xNewState)
rosarium 0:2ddc0583bcec 209 {
rosarium 0:2ddc0583bcec 210 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 211
rosarium 0:2ddc0583bcec 212 /* Check the parameters */
rosarium 0:2ddc0583bcec 213 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
rosarium 0:2ddc0583bcec 214
rosarium 0:2ddc0583bcec 215 /* Reads the ANA_FUNC_CONF0_BASE register value */
rosarium 0:2ddc0583bcec 216 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 217
rosarium 0:2ddc0583bcec 218 /* Build the value to be stored */
rosarium 0:2ddc0583bcec 219 if(xNewState == S_ENABLE)
rosarium 0:2ddc0583bcec 220 {
rosarium 0:2ddc0583bcec 221 tempRegValue |= BROWN_OUT_MASK;
rosarium 0:2ddc0583bcec 222 }
rosarium 0:2ddc0583bcec 223 else
rosarium 0:2ddc0583bcec 224 {
rosarium 0:2ddc0583bcec 225 tempRegValue &= ~BROWN_OUT_MASK;
rosarium 0:2ddc0583bcec 226 }
rosarium 0:2ddc0583bcec 227
rosarium 0:2ddc0583bcec 228 /* Writes value on register */
rosarium 0:2ddc0583bcec 229 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 230
rosarium 0:2ddc0583bcec 231 }
rosarium 0:2ddc0583bcec 232
rosarium 0:2ddc0583bcec 233
rosarium 0:2ddc0583bcec 234 /**
rosarium 0:2ddc0583bcec 235 * @brief Sets High Power Mode.
rosarium 0:2ddc0583bcec 236 * @param xNewState new state for High Power Mode.
rosarium 0:2ddc0583bcec 237 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 238 * @retval None.
rosarium 0:2ddc0583bcec 239 */
rosarium 0:2ddc0583bcec 240 void SpiritGeneralHighPwr(SpiritFunctionalState xNewState)
rosarium 0:2ddc0583bcec 241 {
rosarium 0:2ddc0583bcec 242 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 243
rosarium 0:2ddc0583bcec 244 /* Check the parameters */
rosarium 0:2ddc0583bcec 245 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
rosarium 0:2ddc0583bcec 246
rosarium 0:2ddc0583bcec 247 /* Reads the ANA_FUNC_CONF0_BASE register value */
rosarium 0:2ddc0583bcec 248 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 249
rosarium 0:2ddc0583bcec 250 /* Build the value to write */
rosarium 0:2ddc0583bcec 251 if(xNewState == S_ENABLE)
rosarium 0:2ddc0583bcec 252 {
rosarium 0:2ddc0583bcec 253 tempRegValue |= HIGH_POWER_MODE_MASK;
rosarium 0:2ddc0583bcec 254 }
rosarium 0:2ddc0583bcec 255 else
rosarium 0:2ddc0583bcec 256 {
rosarium 0:2ddc0583bcec 257 tempRegValue &= ~HIGH_POWER_MODE_MASK;
rosarium 0:2ddc0583bcec 258 }
rosarium 0:2ddc0583bcec 259
rosarium 0:2ddc0583bcec 260 /* Writes the new value on register */
rosarium 0:2ddc0583bcec 261 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 262
rosarium 0:2ddc0583bcec 263 }
rosarium 0:2ddc0583bcec 264
rosarium 0:2ddc0583bcec 265
rosarium 0:2ddc0583bcec 266 /**
rosarium 0:2ddc0583bcec 267 * @brief Sets External Reference.
rosarium 0:2ddc0583bcec 268 * @param xExtMode new state for the external reference.
rosarium 0:2ddc0583bcec 269 * This parameter can be: MODE_EXT_XO or MODE_EXT_XIN.
rosarium 0:2ddc0583bcec 270 * @retval None.
rosarium 0:2ddc0583bcec 271 */
rosarium 0:2ddc0583bcec 272 void SpiritGeneralSetExtRef(ModeExtRef xExtMode)
rosarium 0:2ddc0583bcec 273 {
rosarium 0:2ddc0583bcec 274 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 275
rosarium 0:2ddc0583bcec 276 /* Check the parameters */
rosarium 0:2ddc0583bcec 277 s_assert_param(IS_MODE_EXT(xExtMode));
rosarium 0:2ddc0583bcec 278
rosarium 0:2ddc0583bcec 279 /* Reads the ANA_FUNC_CONF0_BASE register value */
rosarium 0:2ddc0583bcec 280 SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 281
rosarium 0:2ddc0583bcec 282 /* Build the value to write */
rosarium 0:2ddc0583bcec 283 if(xExtMode == MODE_EXT_XO)
rosarium 0:2ddc0583bcec 284 {
rosarium 0:2ddc0583bcec 285 tempRegValue &= ~EXT_REF_MASK;
rosarium 0:2ddc0583bcec 286 }
rosarium 0:2ddc0583bcec 287 else
rosarium 0:2ddc0583bcec 288 {
rosarium 0:2ddc0583bcec 289 tempRegValue |= EXT_REF_MASK;
rosarium 0:2ddc0583bcec 290 }
rosarium 0:2ddc0583bcec 291
rosarium 0:2ddc0583bcec 292 /* Writes value on register */
rosarium 0:2ddc0583bcec 293 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 294
rosarium 0:2ddc0583bcec 295 }
rosarium 0:2ddc0583bcec 296
rosarium 0:2ddc0583bcec 297
rosarium 0:2ddc0583bcec 298 /**
rosarium 0:2ddc0583bcec 299 * @brief Returns External Reference.
rosarium 0:2ddc0583bcec 300 * @param None.
rosarium 0:2ddc0583bcec 301 * @retval ModeExtRef Settled external reference.
rosarium 0:2ddc0583bcec 302 * This parameter can be: MODE_EXT_XO or MODE_EXT_XIN.
rosarium 0:2ddc0583bcec 303 */
rosarium 0:2ddc0583bcec 304 ModeExtRef SpiritGeneralGetExtRef(void)
rosarium 0:2ddc0583bcec 305 {
rosarium 0:2ddc0583bcec 306 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 307
rosarium 0:2ddc0583bcec 308 /* Reads the ANA_FUNC_CONF0_BASE register value and return the result */
rosarium 0:2ddc0583bcec 309 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 310
rosarium 0:2ddc0583bcec 311 /* Mask the EXT_REF field field and returns the settled reference signal */
rosarium 0:2ddc0583bcec 312 return ((ModeExtRef)((tempRegValue & 0x10)>>4));
rosarium 0:2ddc0583bcec 313
rosarium 0:2ddc0583bcec 314 }
rosarium 0:2ddc0583bcec 315
rosarium 0:2ddc0583bcec 316
rosarium 0:2ddc0583bcec 317 /**
rosarium 0:2ddc0583bcec 318 * @brief Sets XO gm at startup.
rosarium 0:2ddc0583bcec 319 * @param xGm transconductance value of XO at startup.
rosarium 0:2ddc0583bcec 320 * This parameter can be a value of @ref GmConf.
rosarium 0:2ddc0583bcec 321 * @retval None.
rosarium 0:2ddc0583bcec 322 */
rosarium 0:2ddc0583bcec 323 void SpiritGeneralSetXoGm(GmConf xGm)
rosarium 0:2ddc0583bcec 324 {
rosarium 0:2ddc0583bcec 325 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 326
rosarium 0:2ddc0583bcec 327 /* Check the parameters */
rosarium 0:2ddc0583bcec 328 s_assert_param(IS_GM_CONF(xGm));
rosarium 0:2ddc0583bcec 329
rosarium 0:2ddc0583bcec 330 /* Reads the ANA_FUNC_CONF1_BASE register value */
rosarium 0:2ddc0583bcec 331 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 332
rosarium 0:2ddc0583bcec 333 /* Build the value to write */
rosarium 0:2ddc0583bcec 334 tempRegValue &= ~ANA_FUNC_CONF1_GMCONF_MASK;
rosarium 0:2ddc0583bcec 335 switch(xGm)
rosarium 0:2ddc0583bcec 336 {
rosarium 0:2ddc0583bcec 337 case GM_SU_13_2:
rosarium 0:2ddc0583bcec 338 tempRegValue |= GM_13_2;
rosarium 0:2ddc0583bcec 339 break;
rosarium 0:2ddc0583bcec 340 case GM_SU_18_2:
rosarium 0:2ddc0583bcec 341 tempRegValue |= GM_18_2;
rosarium 0:2ddc0583bcec 342 break;
rosarium 0:2ddc0583bcec 343 case GM_SU_21_5:
rosarium 0:2ddc0583bcec 344 tempRegValue |= GM_21_5;
rosarium 0:2ddc0583bcec 345 break;
rosarium 0:2ddc0583bcec 346 case GM_SU_25_6:
rosarium 0:2ddc0583bcec 347 tempRegValue |= GM_25_6;
rosarium 0:2ddc0583bcec 348 break;
rosarium 0:2ddc0583bcec 349 case GM_SU_28_8:
rosarium 0:2ddc0583bcec 350 tempRegValue |= GM_28_8;
rosarium 0:2ddc0583bcec 351 break;
rosarium 0:2ddc0583bcec 352 case GM_SU_33_9:
rosarium 0:2ddc0583bcec 353 tempRegValue |= GM_33_9;
rosarium 0:2ddc0583bcec 354 break;
rosarium 0:2ddc0583bcec 355 case GM_SU_38_5:
rosarium 0:2ddc0583bcec 356 tempRegValue |= GM_38_5;
rosarium 0:2ddc0583bcec 357 break;
rosarium 0:2ddc0583bcec 358 case GM_SU_43_0:
rosarium 0:2ddc0583bcec 359 tempRegValue |= GM_43_0;
rosarium 0:2ddc0583bcec 360 break;
rosarium 0:2ddc0583bcec 361 }
rosarium 0:2ddc0583bcec 362
rosarium 0:2ddc0583bcec 363 /* Writes new value on register */
rosarium 0:2ddc0583bcec 364 g_xStatus = SpiritSpiWriteRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 365
rosarium 0:2ddc0583bcec 366 }
rosarium 0:2ddc0583bcec 367
rosarium 0:2ddc0583bcec 368
rosarium 0:2ddc0583bcec 369 /**
rosarium 0:2ddc0583bcec 370 * @brief Returns the configured XO gm at startup.
rosarium 0:2ddc0583bcec 371 * @param None.
rosarium 0:2ddc0583bcec 372 * @retval GmConf Settled XO gm. This parameter can be a value of @ref GmConf.
rosarium 0:2ddc0583bcec 373 */
rosarium 0:2ddc0583bcec 374 GmConf SpiritGeneralGetXoGm(void)
rosarium 0:2ddc0583bcec 375 {
rosarium 0:2ddc0583bcec 376 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 377
rosarium 0:2ddc0583bcec 378 /* Reads the ANA_FUNC_CONF1_BASE register value */
rosarium 0:2ddc0583bcec 379 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF1_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 380
rosarium 0:2ddc0583bcec 381 /* Mask the GM_CONF field field and returns the settled transconductance of the XO at startup */
rosarium 0:2ddc0583bcec 382 return ((GmConf)((tempRegValue & 0x1C)>>2));
rosarium 0:2ddc0583bcec 383
rosarium 0:2ddc0583bcec 384 }
rosarium 0:2ddc0583bcec 385
rosarium 0:2ddc0583bcec 386
rosarium 0:2ddc0583bcec 387 /**
rosarium 0:2ddc0583bcec 388 * @brief Returns the settled packet format.
rosarium 0:2ddc0583bcec 389 * @param None.
rosarium 0:2ddc0583bcec 390 * @retval PacketType Settled packet type. This parameter can be a value of @ref PacketType.
rosarium 0:2ddc0583bcec 391 */
rosarium 0:2ddc0583bcec 392 PacketType SpiritGeneralGetPktType(void)
rosarium 0:2ddc0583bcec 393 {
rosarium 0:2ddc0583bcec 394 uint8_t tempRegValue;
rosarium 0:2ddc0583bcec 395
rosarium 0:2ddc0583bcec 396 /* Reads the PROTOCOL1 register */
rosarium 0:2ddc0583bcec 397 g_xStatus = SpiritSpiReadRegisters(PCKTCTRL3_BASE, 1, &tempRegValue);
rosarium 0:2ddc0583bcec 398
rosarium 0:2ddc0583bcec 399 /* cast and return value */
rosarium 0:2ddc0583bcec 400 return (PacketType)(tempRegValue>>6);
rosarium 0:2ddc0583bcec 401
rosarium 0:2ddc0583bcec 402 }
rosarium 0:2ddc0583bcec 403
rosarium 0:2ddc0583bcec 404
rosarium 0:2ddc0583bcec 405
rosarium 0:2ddc0583bcec 406 /**
rosarium 0:2ddc0583bcec 407 * @brief Returns device part number.
rosarium 0:2ddc0583bcec 408 * @param None.
rosarium 0:2ddc0583bcec 409 * @retval uint16_t Device part number.
rosarium 0:2ddc0583bcec 410 */
rosarium 0:2ddc0583bcec 411 uint16_t SpiritGeneralGetDevicePartNumber(void)
rosarium 0:2ddc0583bcec 412 {
rosarium 0:2ddc0583bcec 413 uint8_t tempRegValue[2];
rosarium 0:2ddc0583bcec 414
rosarium 0:2ddc0583bcec 415 /* Reads the register value containing the device part number */
rosarium 0:2ddc0583bcec 416 g_xStatus = SpiritSpiReadRegisters(DEVICE_INFO1_PARTNUM, 2, tempRegValue);
rosarium 0:2ddc0583bcec 417
rosarium 0:2ddc0583bcec 418 return ((((uint16_t)tempRegValue[0])<<8) | ((uint16_t)tempRegValue[1]));
rosarium 0:2ddc0583bcec 419
rosarium 0:2ddc0583bcec 420 }
rosarium 0:2ddc0583bcec 421
rosarium 0:2ddc0583bcec 422 /**
rosarium 0:2ddc0583bcec 423 * @brief Returns SPIRIT RF board version.
rosarium 0:2ddc0583bcec 424 * @param None.
rosarium 0:2ddc0583bcec 425 * @retval SPIRIT RF board version: 0x30 is the only admitted value
rosarium 0:2ddc0583bcec 426 */
rosarium 0:2ddc0583bcec 427 uint8_t SpiritGeneralGetSpiritVersion(void)
rosarium 0:2ddc0583bcec 428 {
rosarium 0:2ddc0583bcec 429 uint8_t ver;
rosarium 0:2ddc0583bcec 430 SpiritSpiReadRegisters(DEVICE_INFO0_VERSION, 1, &ver);
rosarium 0:2ddc0583bcec 431 return ver;
rosarium 0:2ddc0583bcec 432 }
rosarium 0:2ddc0583bcec 433
rosarium 0:2ddc0583bcec 434 /**
rosarium 0:2ddc0583bcec 435 *@}
rosarium 0:2ddc0583bcec 436 */
rosarium 0:2ddc0583bcec 437
rosarium 0:2ddc0583bcec 438
rosarium 0:2ddc0583bcec 439 /**
rosarium 0:2ddc0583bcec 440 *@}
rosarium 0:2ddc0583bcec 441 */
rosarium 0:2ddc0583bcec 442
rosarium 0:2ddc0583bcec 443
rosarium 0:2ddc0583bcec 444 /**
rosarium 0:2ddc0583bcec 445 *@}
rosarium 0:2ddc0583bcec 446 */
rosarium 0:2ddc0583bcec 447
rosarium 0:2ddc0583bcec 448
rosarium 0:2ddc0583bcec 449 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/