wifi test

Dependencies:   X_NUCLEO_IKS01A2 mbed-http

Committer:
JMF
Date:
Wed Sep 05 14:28:24 2018 +0000
Revision:
0:24d3eb812fd4
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:24d3eb812fd4 1 /**
JMF 0:24d3eb812fd4 2 ******************************************************************************
JMF 0:24d3eb812fd4 3 * @file SPIRIT_Management.c
JMF 0:24d3eb812fd4 4 * @author VMA division - AMS
JMF 0:24d3eb812fd4 5 * @version 3.2.2
JMF 0:24d3eb812fd4 6 * @date 08-July-2015
JMF 0:24d3eb812fd4 7 * @brief The management layer for SPIRIT1 library.
JMF 0:24d3eb812fd4 8 * @details
JMF 0:24d3eb812fd4 9 *
JMF 0:24d3eb812fd4 10 * @attention
JMF 0:24d3eb812fd4 11 *
JMF 0:24d3eb812fd4 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
JMF 0:24d3eb812fd4 13 *
JMF 0:24d3eb812fd4 14 * Redistribution and use in source and binary forms, with or without modification,
JMF 0:24d3eb812fd4 15 * are permitted provided that the following conditions are met:
JMF 0:24d3eb812fd4 16 * 1. Redistributions of source code must retain the above copyright notice,
JMF 0:24d3eb812fd4 17 * this list of conditions and the following disclaimer.
JMF 0:24d3eb812fd4 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
JMF 0:24d3eb812fd4 19 * this list of conditions and the following disclaimer in the documentation
JMF 0:24d3eb812fd4 20 * and/or other materials provided with the distribution.
JMF 0:24d3eb812fd4 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
JMF 0:24d3eb812fd4 22 * may be used to endorse or promote products derived from this software
JMF 0:24d3eb812fd4 23 * without specific prior written permission.
JMF 0:24d3eb812fd4 24 *
JMF 0:24d3eb812fd4 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
JMF 0:24d3eb812fd4 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
JMF 0:24d3eb812fd4 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
JMF 0:24d3eb812fd4 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
JMF 0:24d3eb812fd4 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
JMF 0:24d3eb812fd4 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
JMF 0:24d3eb812fd4 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
JMF 0:24d3eb812fd4 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
JMF 0:24d3eb812fd4 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
JMF 0:24d3eb812fd4 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JMF 0:24d3eb812fd4 35 *
JMF 0:24d3eb812fd4 36 ******************************************************************************
JMF 0:24d3eb812fd4 37 */
JMF 0:24d3eb812fd4 38
JMF 0:24d3eb812fd4 39 /* Includes ------------------------------------------------------------------*/
JMF 0:24d3eb812fd4 40 #include "SPIRIT_Management.h"
JMF 0:24d3eb812fd4 41
JMF 0:24d3eb812fd4 42 /**
JMF 0:24d3eb812fd4 43 * @addtogroup SPIRIT_Libraries
JMF 0:24d3eb812fd4 44 * @{
JMF 0:24d3eb812fd4 45 */
JMF 0:24d3eb812fd4 46
JMF 0:24d3eb812fd4 47
JMF 0:24d3eb812fd4 48 /**
JMF 0:24d3eb812fd4 49 * @defgroup SPIRIT_MANAGEMENT SPIRIT Management
JMF 0:24d3eb812fd4 50 * @{
JMF 0:24d3eb812fd4 51 */
JMF 0:24d3eb812fd4 52
JMF 0:24d3eb812fd4 53 /**
JMF 0:24d3eb812fd4 54 * @brief BS value to write in the SYNT0 register according to the selected band
JMF 0:24d3eb812fd4 55 */
JMF 0:24d3eb812fd4 56 static const uint8_t s_vectcBandRegValue[4]={SYNT0_BS_6, SYNT0_BS_12, SYNT0_BS_16, SYNT0_BS_32};
JMF 0:24d3eb812fd4 57
JMF 0:24d3eb812fd4 58 #define COMMUNICATION_STATE_TX 0
JMF 0:24d3eb812fd4 59 #define COMMUNICATION_STATE_RX 1
JMF 0:24d3eb812fd4 60 #define COMMUNICATION_STATE_NONE 2
JMF 0:24d3eb812fd4 61
JMF 0:24d3eb812fd4 62 static uint32_t s_nDesiredFrequency;
JMF 0:24d3eb812fd4 63
JMF 0:24d3eb812fd4 64 static volatile uint8_t s_cCommunicationState = COMMUNICATION_STATE_NONE;
JMF 0:24d3eb812fd4 65
JMF 0:24d3eb812fd4 66
JMF 0:24d3eb812fd4 67 /**
JMF 0:24d3eb812fd4 68 * @brief Factor is: B/2 used in the formula for SYNTH word calculation
JMF 0:24d3eb812fd4 69 */
JMF 0:24d3eb812fd4 70 static const uint8_t s_vectcBHalfFactor[4]={(HIGH_BAND_FACTOR/2), (MIDDLE_BAND_FACTOR/2), (LOW_BAND_FACTOR/2), (VERY_LOW_BAND_FACTOR/2)};
JMF 0:24d3eb812fd4 71
JMF 0:24d3eb812fd4 72
JMF 0:24d3eb812fd4 73 /**
JMF 0:24d3eb812fd4 74 * @defgroup SPIRIT_MANAGEMENT_FUNCTIONS SPIRIT Management Functions
JMF 0:24d3eb812fd4 75 * @{
JMF 0:24d3eb812fd4 76 */
JMF 0:24d3eb812fd4 77
JMF 0:24d3eb812fd4 78
JMF 0:24d3eb812fd4 79 /**
JMF 0:24d3eb812fd4 80 * @defgroup WORKAROUND_FUNCTIONS SPIRIT Management Workaround Functions
JMF 0:24d3eb812fd4 81 * @{
JMF 0:24d3eb812fd4 82 */
JMF 0:24d3eb812fd4 83
JMF 0:24d3eb812fd4 84 /**
JMF 0:24d3eb812fd4 85 * @brief Private SpiritRadioSetFrequencyBase function only used in SpiritManagementWaVcoCalibration.
JMF 0:24d3eb812fd4 86 * @param lFBase the base carrier frequency expressed in Hz as unsigned word.
JMF 0:24d3eb812fd4 87 * @retval None.
JMF 0:24d3eb812fd4 88 */
JMF 0:24d3eb812fd4 89 void SpiritManagementSetFrequencyBase(uint32_t lFBase)
JMF 0:24d3eb812fd4 90 {
JMF 0:24d3eb812fd4 91 uint32_t synthWord, Fc;
JMF 0:24d3eb812fd4 92 uint8_t band = 0, anaRadioRegArray[4], wcp;
JMF 0:24d3eb812fd4 93
JMF 0:24d3eb812fd4 94 /* Check the parameter */
JMF 0:24d3eb812fd4 95 s_assert_param(IS_FREQUENCY_BAND(lFBase));
JMF 0:24d3eb812fd4 96
JMF 0:24d3eb812fd4 97 /* Search the operating band */
JMF 0:24d3eb812fd4 98 if(IS_FREQUENCY_BAND_HIGH(lFBase))
JMF 0:24d3eb812fd4 99 {
JMF 0:24d3eb812fd4 100 band = HIGH_BAND;
JMF 0:24d3eb812fd4 101 }
JMF 0:24d3eb812fd4 102 else if(IS_FREQUENCY_BAND_MIDDLE(lFBase))
JMF 0:24d3eb812fd4 103 {
JMF 0:24d3eb812fd4 104 band = MIDDLE_BAND;
JMF 0:24d3eb812fd4 105 }
JMF 0:24d3eb812fd4 106 else if(IS_FREQUENCY_BAND_LOW(lFBase))
JMF 0:24d3eb812fd4 107 {
JMF 0:24d3eb812fd4 108 band = LOW_BAND;
JMF 0:24d3eb812fd4 109 }
JMF 0:24d3eb812fd4 110 else if(IS_FREQUENCY_BAND_VERY_LOW(lFBase))
JMF 0:24d3eb812fd4 111 {
JMF 0:24d3eb812fd4 112 band = VERY_LOW_BAND;
JMF 0:24d3eb812fd4 113 }
JMF 0:24d3eb812fd4 114
JMF 0:24d3eb812fd4 115 int32_t FOffset = SpiritRadioGetFrequencyOffset();
JMF 0:24d3eb812fd4 116 uint32_t lChannelSpace = SpiritRadioGetChannelSpace();
JMF 0:24d3eb812fd4 117 uint8_t cChannelNum = SpiritRadioGetChannel();
JMF 0:24d3eb812fd4 118
JMF 0:24d3eb812fd4 119 /* Calculates the channel center frequency */
JMF 0:24d3eb812fd4 120 Fc = lFBase + FOffset + lChannelSpace*cChannelNum;
JMF 0:24d3eb812fd4 121
JMF 0:24d3eb812fd4 122 /* Reads the reference divider */
JMF 0:24d3eb812fd4 123 uint8_t cRefDiv = (uint8_t)SpiritRadioGetRefDiv()+1;
JMF 0:24d3eb812fd4 124
JMF 0:24d3eb812fd4 125 switch(band)
JMF 0:24d3eb812fd4 126 {
JMF 0:24d3eb812fd4 127 case VERY_LOW_BAND:
JMF 0:24d3eb812fd4 128 if(Fc<161281250)
JMF 0:24d3eb812fd4 129 {
JMF 0:24d3eb812fd4 130 SpiritCalibrationSelectVco(VCO_L);
JMF 0:24d3eb812fd4 131 }
JMF 0:24d3eb812fd4 132 else
JMF 0:24d3eb812fd4 133 {
JMF 0:24d3eb812fd4 134 SpiritCalibrationSelectVco(VCO_H);
JMF 0:24d3eb812fd4 135 }
JMF 0:24d3eb812fd4 136 break;
JMF 0:24d3eb812fd4 137
JMF 0:24d3eb812fd4 138 case LOW_BAND:
JMF 0:24d3eb812fd4 139 if(Fc<322562500)
JMF 0:24d3eb812fd4 140 {
JMF 0:24d3eb812fd4 141 SpiritCalibrationSelectVco(VCO_L);
JMF 0:24d3eb812fd4 142 }
JMF 0:24d3eb812fd4 143 else
JMF 0:24d3eb812fd4 144 {
JMF 0:24d3eb812fd4 145 SpiritCalibrationSelectVco(VCO_H);
JMF 0:24d3eb812fd4 146 }
JMF 0:24d3eb812fd4 147 break;
JMF 0:24d3eb812fd4 148
JMF 0:24d3eb812fd4 149 case MIDDLE_BAND:
JMF 0:24d3eb812fd4 150 if(Fc<430083334)
JMF 0:24d3eb812fd4 151 {
JMF 0:24d3eb812fd4 152 SpiritCalibrationSelectVco(VCO_L);
JMF 0:24d3eb812fd4 153 }
JMF 0:24d3eb812fd4 154 else
JMF 0:24d3eb812fd4 155 {
JMF 0:24d3eb812fd4 156 SpiritCalibrationSelectVco(VCO_H);
JMF 0:24d3eb812fd4 157 }
JMF 0:24d3eb812fd4 158 break;
JMF 0:24d3eb812fd4 159
JMF 0:24d3eb812fd4 160 case HIGH_BAND:
JMF 0:24d3eb812fd4 161 if(Fc<860166667)
JMF 0:24d3eb812fd4 162 {
JMF 0:24d3eb812fd4 163 SpiritCalibrationSelectVco(VCO_L);
JMF 0:24d3eb812fd4 164 }
JMF 0:24d3eb812fd4 165 else
JMF 0:24d3eb812fd4 166 {
JMF 0:24d3eb812fd4 167 SpiritCalibrationSelectVco(VCO_H);
JMF 0:24d3eb812fd4 168 }
JMF 0:24d3eb812fd4 169 }
JMF 0:24d3eb812fd4 170
JMF 0:24d3eb812fd4 171 /* Search the VCO charge pump word and set the corresponding register */
JMF 0:24d3eb812fd4 172 wcp = SpiritRadioSearchWCP(Fc);
JMF 0:24d3eb812fd4 173
JMF 0:24d3eb812fd4 174 synthWord = (uint32_t)(lFBase*(((double)(FBASE_DIVIDER*cRefDiv*s_vectcBHalfFactor[band]))/SpiritRadioGetXtalFrequency()));
JMF 0:24d3eb812fd4 175
JMF 0:24d3eb812fd4 176 /* Build the array of registers values for the analog part */
JMF 0:24d3eb812fd4 177 anaRadioRegArray[0] = (uint8_t)(((synthWord>>21)&(0x0000001F))|(wcp<<5));
JMF 0:24d3eb812fd4 178 anaRadioRegArray[1] = (uint8_t)((synthWord>>13)&(0x000000FF));
JMF 0:24d3eb812fd4 179 anaRadioRegArray[2] = (uint8_t)((synthWord>>5)&(0x000000FF));
JMF 0:24d3eb812fd4 180 anaRadioRegArray[3] = (uint8_t)(((synthWord&0x0000001F)<<3)| s_vectcBandRegValue[band]);
JMF 0:24d3eb812fd4 181
JMF 0:24d3eb812fd4 182 /* Configures the needed Analog Radio registers */
JMF 0:24d3eb812fd4 183 g_xStatus = SpiritSpiWriteRegisters(SYNT3_BASE, 4, anaRadioRegArray);
JMF 0:24d3eb812fd4 184 }
JMF 0:24d3eb812fd4 185
JMF 0:24d3eb812fd4 186 uint8_t SpiritManagementWaVcoCalibration(void)
JMF 0:24d3eb812fd4 187 {
JMF 0:24d3eb812fd4 188 uint8_t s_cVcoWordRx;
JMF 0:24d3eb812fd4 189 uint8_t s_cVcoWordTx;
JMF 0:24d3eb812fd4 190 uint32_t nFreq;
JMF 0:24d3eb812fd4 191 uint8_t cRestore = 0;
JMF 0:24d3eb812fd4 192 uint8_t cStandby = 0;
JMF 0:24d3eb812fd4 193 uint32_t xtal_frequency = SpiritRadioGetXtalFrequency();
JMF 0:24d3eb812fd4 194
JMF 0:24d3eb812fd4 195 /* Enable the reference divider if the XTAL is between 48 and 52 MHz */
JMF 0:24d3eb812fd4 196 if(xtal_frequency>DOUBLE_XTAL_THR)
JMF 0:24d3eb812fd4 197 {
JMF 0:24d3eb812fd4 198 if(!SpiritRadioGetRefDiv())
JMF 0:24d3eb812fd4 199 {
JMF 0:24d3eb812fd4 200 cRestore = 1;
JMF 0:24d3eb812fd4 201 nFreq = SpiritRadioGetFrequencyBase();
JMF 0:24d3eb812fd4 202 SpiritRadioSetRefDiv(S_ENABLE);
JMF 0:24d3eb812fd4 203 SpiritManagementSetFrequencyBase(nFreq);
JMF 0:24d3eb812fd4 204 }
JMF 0:24d3eb812fd4 205 }
JMF 0:24d3eb812fd4 206 nFreq = SpiritRadioGetFrequencyBase();
JMF 0:24d3eb812fd4 207
JMF 0:24d3eb812fd4 208 /* Increase the VCO current */
JMF 0:24d3eb812fd4 209 uint8_t tmp = 0x19; SpiritSpiWriteRegisters(0xA1,1,&tmp);
JMF 0:24d3eb812fd4 210
JMF 0:24d3eb812fd4 211 SpiritCalibrationVco(S_ENABLE);
JMF 0:24d3eb812fd4 212
JMF 0:24d3eb812fd4 213 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 214 if(g_xStatus.MC_STATE == MC_STATE_STANDBY)
JMF 0:24d3eb812fd4 215 {
JMF 0:24d3eb812fd4 216 cStandby = 1;
JMF 0:24d3eb812fd4 217 SpiritCmdStrobeReady();
JMF 0:24d3eb812fd4 218 do{
JMF 0:24d3eb812fd4 219 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 220 if(g_xStatus.MC_STATE == 0x13)
JMF 0:24d3eb812fd4 221 {
JMF 0:24d3eb812fd4 222 return 1;
JMF 0:24d3eb812fd4 223 }
JMF 0:24d3eb812fd4 224 }while(g_xStatus.MC_STATE != MC_STATE_READY);
JMF 0:24d3eb812fd4 225 }
JMF 0:24d3eb812fd4 226
JMF 0:24d3eb812fd4 227 SpiritCmdStrobeLockTx();
JMF 0:24d3eb812fd4 228
JMF 0:24d3eb812fd4 229 do{
JMF 0:24d3eb812fd4 230 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 231 if(g_xStatus.MC_STATE == 0x13)
JMF 0:24d3eb812fd4 232 {
JMF 0:24d3eb812fd4 233 return 1;
JMF 0:24d3eb812fd4 234 }
JMF 0:24d3eb812fd4 235 }while(g_xStatus.MC_STATE != MC_STATE_LOCK);
JMF 0:24d3eb812fd4 236
JMF 0:24d3eb812fd4 237 s_cVcoWordTx = SpiritCalibrationGetVcoCalData();
JMF 0:24d3eb812fd4 238
JMF 0:24d3eb812fd4 239 SpiritCmdStrobeReady();
JMF 0:24d3eb812fd4 240
JMF 0:24d3eb812fd4 241 do{
JMF 0:24d3eb812fd4 242 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 243 }while(g_xStatus.MC_STATE != MC_STATE_READY);
JMF 0:24d3eb812fd4 244
JMF 0:24d3eb812fd4 245
JMF 0:24d3eb812fd4 246 SpiritCmdStrobeLockRx();
JMF 0:24d3eb812fd4 247
JMF 0:24d3eb812fd4 248 do{
JMF 0:24d3eb812fd4 249 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 250 if(g_xStatus.MC_STATE == 0x13)
JMF 0:24d3eb812fd4 251 {
JMF 0:24d3eb812fd4 252 return 1;
JMF 0:24d3eb812fd4 253 }
JMF 0:24d3eb812fd4 254 }while(g_xStatus.MC_STATE != MC_STATE_LOCK);
JMF 0:24d3eb812fd4 255
JMF 0:24d3eb812fd4 256 s_cVcoWordRx = SpiritCalibrationGetVcoCalData();
JMF 0:24d3eb812fd4 257
JMF 0:24d3eb812fd4 258 SpiritCmdStrobeReady();
JMF 0:24d3eb812fd4 259
JMF 0:24d3eb812fd4 260 do{
JMF 0:24d3eb812fd4 261 SpiritRefreshStatus();
JMF 0:24d3eb812fd4 262 if(g_xStatus.MC_STATE == 0x13)
JMF 0:24d3eb812fd4 263 {
JMF 0:24d3eb812fd4 264 return 1;
JMF 0:24d3eb812fd4 265 }
JMF 0:24d3eb812fd4 266 }while(g_xStatus.MC_STATE != MC_STATE_READY);
JMF 0:24d3eb812fd4 267
JMF 0:24d3eb812fd4 268 if(cStandby == 1)
JMF 0:24d3eb812fd4 269 {
JMF 0:24d3eb812fd4 270 SpiritCmdStrobeStandby();
JMF 0:24d3eb812fd4 271 }
JMF 0:24d3eb812fd4 272 SpiritCalibrationVco(S_DISABLE);
JMF 0:24d3eb812fd4 273
JMF 0:24d3eb812fd4 274 /* Disable the reference divider if the XTAL is between 48 and 52 MHz */
JMF 0:24d3eb812fd4 275 if(cRestore)
JMF 0:24d3eb812fd4 276 {
JMF 0:24d3eb812fd4 277 SpiritRadioSetRefDiv(S_DISABLE);
JMF 0:24d3eb812fd4 278 SpiritManagementSetFrequencyBase(nFreq);
JMF 0:24d3eb812fd4 279 }
JMF 0:24d3eb812fd4 280
JMF 0:24d3eb812fd4 281 /* Restore the VCO current */
JMF 0:24d3eb812fd4 282 tmp = 0x11; SpiritSpiWriteRegisters(0xA1,1,&tmp);
JMF 0:24d3eb812fd4 283
JMF 0:24d3eb812fd4 284 SpiritCalibrationSetVcoCalDataTx(s_cVcoWordTx);
JMF 0:24d3eb812fd4 285 SpiritCalibrationSetVcoCalDataRx(s_cVcoWordRx);
JMF 0:24d3eb812fd4 286
JMF 0:24d3eb812fd4 287 return 0;
JMF 0:24d3eb812fd4 288 }
JMF 0:24d3eb812fd4 289
JMF 0:24d3eb812fd4 290
JMF 0:24d3eb812fd4 291 void SpiritManagementWaCmdStrobeTx(void)
JMF 0:24d3eb812fd4 292 {
JMF 0:24d3eb812fd4 293 if(s_cCommunicationState != COMMUNICATION_STATE_TX)
JMF 0:24d3eb812fd4 294 {
JMF 0:24d3eb812fd4 295 //uint32_t xtal_frequency = SpiritRadioGetXtalFrequency();
JMF 0:24d3eb812fd4 296
JMF 0:24d3eb812fd4 297 /* To achive the max output power */
JMF 0:24d3eb812fd4 298 if(s_nDesiredFrequency>=150000000 && s_nDesiredFrequency<=470000000)
JMF 0:24d3eb812fd4 299 {
JMF 0:24d3eb812fd4 300 /* Optimal setting for Tx mode only */
JMF 0:24d3eb812fd4 301 SpiritRadioSetPACwc(LOAD_3_6_PF);
JMF 0:24d3eb812fd4 302 }
JMF 0:24d3eb812fd4 303 else
JMF 0:24d3eb812fd4 304 {
JMF 0:24d3eb812fd4 305 /* Optimal setting for Tx mode only */
JMF 0:24d3eb812fd4 306 SpiritRadioSetPACwc(LOAD_0_PF);
JMF 0:24d3eb812fd4 307 }
JMF 0:24d3eb812fd4 308
JMF 0:24d3eb812fd4 309 uint8_t tmp = 0x11; SpiritSpiWriteRegisters(0xa9, 1, &tmp); /* Enable VCO_L buffer */
JMF 0:24d3eb812fd4 310 tmp = 0x20; SpiritSpiWriteRegisters(PM_CONFIG1_BASE, 1, &tmp); /* Set SMPS switching frequency */
JMF 0:24d3eb812fd4 311
JMF 0:24d3eb812fd4 312 s_cCommunicationState = COMMUNICATION_STATE_TX;
JMF 0:24d3eb812fd4 313 }
JMF 0:24d3eb812fd4 314 }
JMF 0:24d3eb812fd4 315
JMF 0:24d3eb812fd4 316
JMF 0:24d3eb812fd4 317 void SpiritManagementWaCmdStrobeRx(void)
JMF 0:24d3eb812fd4 318 {
JMF 0:24d3eb812fd4 319 if(s_cCommunicationState != COMMUNICATION_STATE_RX)
JMF 0:24d3eb812fd4 320 {
JMF 0:24d3eb812fd4 321 uint8_t tmp = 0x98; SpiritSpiWriteRegisters(PM_CONFIG1_BASE, 1, &tmp); /* Set SMPS switching frequency */
JMF 0:24d3eb812fd4 322 SpiritRadioSetPACwc(LOAD_0_PF); /* Set the correct CWC parameter */
JMF 0:24d3eb812fd4 323
JMF 0:24d3eb812fd4 324 s_cCommunicationState = COMMUNICATION_STATE_RX;
JMF 0:24d3eb812fd4 325 }
JMF 0:24d3eb812fd4 326 }
JMF 0:24d3eb812fd4 327
JMF 0:24d3eb812fd4 328 void SpiritManagementWaTRxFcMem(uint32_t nDesiredFreq)
JMF 0:24d3eb812fd4 329 {
JMF 0:24d3eb812fd4 330 s_cCommunicationState = COMMUNICATION_STATE_NONE;
JMF 0:24d3eb812fd4 331 s_nDesiredFrequency = nDesiredFreq;
JMF 0:24d3eb812fd4 332 }
JMF 0:24d3eb812fd4 333
JMF 0:24d3eb812fd4 334
JMF 0:24d3eb812fd4 335 void SpiritManagementWaExtraCurrent(void)
JMF 0:24d3eb812fd4 336 {
JMF 0:24d3eb812fd4 337 uint8_t tmp= 0xCA;SpiritSpiWriteRegisters(0xB2, 1, &tmp);
JMF 0:24d3eb812fd4 338 tmp= 0x04;SpiritSpiWriteRegisters(0xA8, 1, &tmp);
JMF 0:24d3eb812fd4 339 /* just a read to loose some microsecs more */
JMF 0:24d3eb812fd4 340 SpiritSpiReadRegisters(0xA8, 1, &tmp);
JMF 0:24d3eb812fd4 341 tmp= 0x00;SpiritSpiWriteRegisters(0xA8, 1, &tmp);
JMF 0:24d3eb812fd4 342 }
JMF 0:24d3eb812fd4 343
JMF 0:24d3eb812fd4 344 /**
JMF 0:24d3eb812fd4 345 * @}
JMF 0:24d3eb812fd4 346 */
JMF 0:24d3eb812fd4 347
JMF 0:24d3eb812fd4 348
JMF 0:24d3eb812fd4 349
JMF 0:24d3eb812fd4 350 /**
JMF 0:24d3eb812fd4 351 * @}
JMF 0:24d3eb812fd4 352 */
JMF 0:24d3eb812fd4 353
JMF 0:24d3eb812fd4 354
JMF 0:24d3eb812fd4 355 /**
JMF 0:24d3eb812fd4 356 * @}
JMF 0:24d3eb812fd4 357 */
JMF 0:24d3eb812fd4 358
JMF 0:24d3eb812fd4 359 /**
JMF 0:24d3eb812fd4 360 * @}
JMF 0:24d3eb812fd4 361 */
JMF 0:24d3eb812fd4 362
JMF 0:24d3eb812fd4 363
JMF 0:24d3eb812fd4 364 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/