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_Calibration.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 Configuration and management of SPIRIT VCO-RCO calibration.
JMF 0:24d3eb812fd4 8 *
JMF 0:24d3eb812fd4 9 * @attention
JMF 0:24d3eb812fd4 10 *
JMF 0:24d3eb812fd4 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
JMF 0:24d3eb812fd4 12 *
JMF 0:24d3eb812fd4 13 * Redistribution and use in source and binary forms, with or without modification,
JMF 0:24d3eb812fd4 14 * are permitted provided that the following conditions are met:
JMF 0:24d3eb812fd4 15 * 1. Redistributions of source code must retain the above copyright notice,
JMF 0:24d3eb812fd4 16 * this list of conditions and the following disclaimer.
JMF 0:24d3eb812fd4 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
JMF 0:24d3eb812fd4 18 * this list of conditions and the following disclaimer in the documentation
JMF 0:24d3eb812fd4 19 * and/or other materials provided with the distribution.
JMF 0:24d3eb812fd4 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
JMF 0:24d3eb812fd4 21 * may be used to endorse or promote products derived from this software
JMF 0:24d3eb812fd4 22 * without specific prior written permission.
JMF 0:24d3eb812fd4 23 *
JMF 0:24d3eb812fd4 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
JMF 0:24d3eb812fd4 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
JMF 0:24d3eb812fd4 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
JMF 0:24d3eb812fd4 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
JMF 0:24d3eb812fd4 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
JMF 0:24d3eb812fd4 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
JMF 0:24d3eb812fd4 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
JMF 0:24d3eb812fd4 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
JMF 0:24d3eb812fd4 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
JMF 0:24d3eb812fd4 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
JMF 0:24d3eb812fd4 34 *
JMF 0:24d3eb812fd4 35 ******************************************************************************
JMF 0:24d3eb812fd4 36 */
JMF 0:24d3eb812fd4 37
JMF 0:24d3eb812fd4 38 /* Includes ------------------------------------------------------------------*/
JMF 0:24d3eb812fd4 39 #include "SPIRIT_Calibration.h"
JMF 0:24d3eb812fd4 40 #include "MCU_Interface.h"
JMF 0:24d3eb812fd4 41
JMF 0:24d3eb812fd4 42
JMF 0:24d3eb812fd4 43
JMF 0:24d3eb812fd4 44
JMF 0:24d3eb812fd4 45 /**
JMF 0:24d3eb812fd4 46 * @addtogroup SPIRIT_Libraries
JMF 0:24d3eb812fd4 47 * @{
JMF 0:24d3eb812fd4 48 */
JMF 0:24d3eb812fd4 49
JMF 0:24d3eb812fd4 50
JMF 0:24d3eb812fd4 51 /**
JMF 0:24d3eb812fd4 52 * @addtogroup SPIRIT_Calibration
JMF 0:24d3eb812fd4 53 * @{
JMF 0:24d3eb812fd4 54 */
JMF 0:24d3eb812fd4 55
JMF 0:24d3eb812fd4 56
JMF 0:24d3eb812fd4 57 /**
JMF 0:24d3eb812fd4 58 * @defgroup Calibration_Private_TypesDefinitions Calibration Private Types Definitions
JMF 0:24d3eb812fd4 59 * @{
JMF 0:24d3eb812fd4 60 */
JMF 0:24d3eb812fd4 61
JMF 0:24d3eb812fd4 62 /**
JMF 0:24d3eb812fd4 63 *@}
JMF 0:24d3eb812fd4 64 */
JMF 0:24d3eb812fd4 65
JMF 0:24d3eb812fd4 66
JMF 0:24d3eb812fd4 67 /**
JMF 0:24d3eb812fd4 68 * @defgroup Calibration_Private_Defines Calibration Private Defines
JMF 0:24d3eb812fd4 69 * @{
JMF 0:24d3eb812fd4 70 */
JMF 0:24d3eb812fd4 71
JMF 0:24d3eb812fd4 72
JMF 0:24d3eb812fd4 73 /**
JMF 0:24d3eb812fd4 74 *@}
JMF 0:24d3eb812fd4 75 */
JMF 0:24d3eb812fd4 76
JMF 0:24d3eb812fd4 77
JMF 0:24d3eb812fd4 78 /**
JMF 0:24d3eb812fd4 79 * @defgroup Calibration_Private_Macros Calibration Private Macros
JMF 0:24d3eb812fd4 80 * @{
JMF 0:24d3eb812fd4 81 */
JMF 0:24d3eb812fd4 82
JMF 0:24d3eb812fd4 83 /**
JMF 0:24d3eb812fd4 84 *@}
JMF 0:24d3eb812fd4 85 */
JMF 0:24d3eb812fd4 86
JMF 0:24d3eb812fd4 87
JMF 0:24d3eb812fd4 88 /**
JMF 0:24d3eb812fd4 89 * @defgroup Calibration_Private_Variables Calibration Private Variables
JMF 0:24d3eb812fd4 90 * @{
JMF 0:24d3eb812fd4 91 */
JMF 0:24d3eb812fd4 92
JMF 0:24d3eb812fd4 93 /**
JMF 0:24d3eb812fd4 94 *@}
JMF 0:24d3eb812fd4 95 */
JMF 0:24d3eb812fd4 96
JMF 0:24d3eb812fd4 97
JMF 0:24d3eb812fd4 98
JMF 0:24d3eb812fd4 99 /**
JMF 0:24d3eb812fd4 100 * @defgroup Calibration_Private_FunctionPrototypes Calibration Private Function Prototypes
JMF 0:24d3eb812fd4 101 * @{
JMF 0:24d3eb812fd4 102 */
JMF 0:24d3eb812fd4 103
JMF 0:24d3eb812fd4 104 /**
JMF 0:24d3eb812fd4 105 *@}
JMF 0:24d3eb812fd4 106 */
JMF 0:24d3eb812fd4 107
JMF 0:24d3eb812fd4 108
JMF 0:24d3eb812fd4 109 /**
JMF 0:24d3eb812fd4 110 * @defgroup Calibration_Private_Functions Calibration Private Functions
JMF 0:24d3eb812fd4 111 * @{
JMF 0:24d3eb812fd4 112 */
JMF 0:24d3eb812fd4 113
JMF 0:24d3eb812fd4 114 /**
JMF 0:24d3eb812fd4 115 * @brief Enables or Disables the RCO calibration.
JMF 0:24d3eb812fd4 116 * @param xNewState new state for RCO calibration.
JMF 0:24d3eb812fd4 117 This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 118 * @retval None.
JMF 0:24d3eb812fd4 119 */
JMF 0:24d3eb812fd4 120 void SpiritCalibrationRco(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 121 {
JMF 0:24d3eb812fd4 122 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 123
JMF 0:24d3eb812fd4 124 /* Check the parameters */
JMF 0:24d3eb812fd4 125 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 126
JMF 0:24d3eb812fd4 127 /* Reads the register value */
JMF 0:24d3eb812fd4 128 g_xStatus = SpiritSpiReadRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 129
JMF 0:24d3eb812fd4 130 /* Build new value for the register */
JMF 0:24d3eb812fd4 131 if(xNewState==S_ENABLE)
JMF 0:24d3eb812fd4 132 {
JMF 0:24d3eb812fd4 133 tempRegValue |= PROTOCOL2_RCO_CALIBRATION_MASK;
JMF 0:24d3eb812fd4 134 }
JMF 0:24d3eb812fd4 135 else
JMF 0:24d3eb812fd4 136 {
JMF 0:24d3eb812fd4 137 tempRegValue &= ~PROTOCOL2_RCO_CALIBRATION_MASK;
JMF 0:24d3eb812fd4 138 }
JMF 0:24d3eb812fd4 139
JMF 0:24d3eb812fd4 140 /* Writes register to enable or disable the RCO calibration */
JMF 0:24d3eb812fd4 141 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 142
JMF 0:24d3eb812fd4 143 }
JMF 0:24d3eb812fd4 144
JMF 0:24d3eb812fd4 145
JMF 0:24d3eb812fd4 146 /**
JMF 0:24d3eb812fd4 147 * @brief Enables or Disables the VCO calibration.
JMF 0:24d3eb812fd4 148 * @param xNewState new state for VCO calibration.
JMF 0:24d3eb812fd4 149 This parameter can be S_ENABLE or S_DISABLE.
JMF 0:24d3eb812fd4 150 * @retval None.
JMF 0:24d3eb812fd4 151 */
JMF 0:24d3eb812fd4 152 void SpiritCalibrationVco(SpiritFunctionalState xNewState)
JMF 0:24d3eb812fd4 153 {
JMF 0:24d3eb812fd4 154 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 155
JMF 0:24d3eb812fd4 156 /* Check the parameters */
JMF 0:24d3eb812fd4 157 s_assert_param(IS_SPIRIT_FUNCTIONAL_STATE(xNewState));
JMF 0:24d3eb812fd4 158
JMF 0:24d3eb812fd4 159 /* Reads the register value */
JMF 0:24d3eb812fd4 160 g_xStatus = SpiritSpiReadRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 161
JMF 0:24d3eb812fd4 162 /* Build new value for the register */
JMF 0:24d3eb812fd4 163 if(xNewState==S_ENABLE)
JMF 0:24d3eb812fd4 164 tempRegValue |= PROTOCOL2_VCO_CALIBRATION_MASK;
JMF 0:24d3eb812fd4 165 else
JMF 0:24d3eb812fd4 166 tempRegValue &= ~PROTOCOL2_VCO_CALIBRATION_MASK;
JMF 0:24d3eb812fd4 167
JMF 0:24d3eb812fd4 168 /* Writes register to enable or disable the VCO calibration */
JMF 0:24d3eb812fd4 169 g_xStatus = SpiritSpiWriteRegisters(PROTOCOL2_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 170
JMF 0:24d3eb812fd4 171 }
JMF 0:24d3eb812fd4 172
JMF 0:24d3eb812fd4 173
JMF 0:24d3eb812fd4 174 /**
JMF 0:24d3eb812fd4 175 * @brief Sets the RCO calibration words.
JMF 0:24d3eb812fd4 176 * @param cRwt RWT word for RCO calibration.
JMF 0:24d3eb812fd4 177 * This parameter can be a value of uint8_t.
JMF 0:24d3eb812fd4 178 * @param cRfb RFB word for RCO calibration.
JMF 0:24d3eb812fd4 179 * This parameter can be a value of uint8_t.
JMF 0:24d3eb812fd4 180 * @retval None.
JMF 0:24d3eb812fd4 181 */
JMF 0:24d3eb812fd4 182 void SpiritCalibrationSetRcoCalWords(uint8_t cRwt, uint8_t cRfb)
JMF 0:24d3eb812fd4 183 {
JMF 0:24d3eb812fd4 184 uint8_t tempRegValue[2];
JMF 0:24d3eb812fd4 185
JMF 0:24d3eb812fd4 186 /* Build the value of RWT and the MSbits of the RFB word */
JMF 0:24d3eb812fd4 187 tempRegValue[0] = (cRwt << 4) | (cRfb >> 1);
JMF 0:24d3eb812fd4 188
JMF 0:24d3eb812fd4 189 /* Reads the register value to update the LSbit of RFB */
JMF 0:24d3eb812fd4 190 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_IN1_BASE, 1, &tempRegValue[1]);
JMF 0:24d3eb812fd4 191
JMF 0:24d3eb812fd4 192 /* Build new value for the register */
JMF 0:24d3eb812fd4 193 tempRegValue[1] = (tempRegValue[1] & 0x7F) | (cRfb<<7);
JMF 0:24d3eb812fd4 194
JMF 0:24d3eb812fd4 195 /* Writes the new value for RCO calibration words */
JMF 0:24d3eb812fd4 196 g_xStatus = SpiritSpiWriteRegisters(RCO_VCO_CALIBR_IN2_BASE, 2, tempRegValue);
JMF 0:24d3eb812fd4 197
JMF 0:24d3eb812fd4 198 }
JMF 0:24d3eb812fd4 199
JMF 0:24d3eb812fd4 200
JMF 0:24d3eb812fd4 201 /**
JMF 0:24d3eb812fd4 202 * @brief Returns the RCO calibration words.
JMF 0:24d3eb812fd4 203 * @param pcRwt pointer to the variable in which the RWT word has to be stored.
JMF 0:24d3eb812fd4 204 * This parameter is a variable of uint8_t*.
JMF 0:24d3eb812fd4 205 * @param pcRfb pointer to the variable in which the RFB word has to be stored.
JMF 0:24d3eb812fd4 206 * This parameter is a variable of uint8_t*.
JMF 0:24d3eb812fd4 207 * @retval None.
JMF 0:24d3eb812fd4 208 */
JMF 0:24d3eb812fd4 209 void SpiritCalibrationGetRcoCalWords(uint8_t* pcRwt, uint8_t* pcRfb)
JMF 0:24d3eb812fd4 210 {
JMF 0:24d3eb812fd4 211 uint8_t tempRegValue[2];
JMF 0:24d3eb812fd4 212
JMF 0:24d3eb812fd4 213 /* Reads the registers values */
JMF 0:24d3eb812fd4 214 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_OUT1_BASE, 2, tempRegValue);
JMF 0:24d3eb812fd4 215
JMF 0:24d3eb812fd4 216 /* Build the RWT value */
JMF 0:24d3eb812fd4 217 (*pcRwt) = tempRegValue[0] >> 4;
JMF 0:24d3eb812fd4 218 /* Build the RFB value */
JMF 0:24d3eb812fd4 219 (*pcRfb) = (tempRegValue[0] & 0x0F)<<1 | (tempRegValue[1]>>7);
JMF 0:24d3eb812fd4 220
JMF 0:24d3eb812fd4 221 }
JMF 0:24d3eb812fd4 222
JMF 0:24d3eb812fd4 223
JMF 0:24d3eb812fd4 224 /**
JMF 0:24d3eb812fd4 225 * @brief Returns the VCO calibration data from internal VCO calibrator.
JMF 0:24d3eb812fd4 226 * @param None.
JMF 0:24d3eb812fd4 227 * @retval uint8_t VCO calibration data word.
JMF 0:24d3eb812fd4 228 */
JMF 0:24d3eb812fd4 229 uint8_t SpiritCalibrationGetVcoCalData(void)
JMF 0:24d3eb812fd4 230 {
JMF 0:24d3eb812fd4 231 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 232
JMF 0:24d3eb812fd4 233 /* Reads the register value */
JMF 0:24d3eb812fd4 234 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_OUT0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 235
JMF 0:24d3eb812fd4 236 /* Build and returns the VCO calibration data value */
JMF 0:24d3eb812fd4 237 return (tempRegValue & 0x7F);
JMF 0:24d3eb812fd4 238
JMF 0:24d3eb812fd4 239 }
JMF 0:24d3eb812fd4 240
JMF 0:24d3eb812fd4 241
JMF 0:24d3eb812fd4 242 /**
JMF 0:24d3eb812fd4 243 * @brief Sets the VCO calibration data to be used in TX mode.
JMF 0:24d3eb812fd4 244 * @param cVcoCalData calibration data word to be set.
JMF 0:24d3eb812fd4 245 * This parameter is a variable of uint8_t.
JMF 0:24d3eb812fd4 246 * @retval None.
JMF 0:24d3eb812fd4 247 */
JMF 0:24d3eb812fd4 248 void SpiritCalibrationSetVcoCalDataTx(uint8_t cVcoCalData)
JMF 0:24d3eb812fd4 249 {
JMF 0:24d3eb812fd4 250 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 251
JMF 0:24d3eb812fd4 252 /* Reads the register value */
JMF 0:24d3eb812fd4 253 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_IN1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 254
JMF 0:24d3eb812fd4 255 /* Build the value to be written */
JMF 0:24d3eb812fd4 256 tempRegValue &= 0x80;
JMF 0:24d3eb812fd4 257 tempRegValue |= cVcoCalData;
JMF 0:24d3eb812fd4 258
JMF 0:24d3eb812fd4 259 /* Writes the new value of calibration data in TX */
JMF 0:24d3eb812fd4 260 g_xStatus = SpiritSpiWriteRegisters(RCO_VCO_CALIBR_IN1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 261
JMF 0:24d3eb812fd4 262 }
JMF 0:24d3eb812fd4 263
JMF 0:24d3eb812fd4 264
JMF 0:24d3eb812fd4 265 /**
JMF 0:24d3eb812fd4 266 * @brief Returns the actual VCO calibration data used in TX mode.
JMF 0:24d3eb812fd4 267 * @param None.
JMF 0:24d3eb812fd4 268 * @retval uint8_t Calibration data word used in TX mode.
JMF 0:24d3eb812fd4 269 */
JMF 0:24d3eb812fd4 270 uint8_t SpiritCalibrationGetVcoCalDataTx(void)
JMF 0:24d3eb812fd4 271 {
JMF 0:24d3eb812fd4 272 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 273
JMF 0:24d3eb812fd4 274 /* Reads the register containing the calibration data word used in TX mode */
JMF 0:24d3eb812fd4 275 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_IN1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 276
JMF 0:24d3eb812fd4 277 /* Mask the VCO_CALIBR_TX field and returns the value */
JMF 0:24d3eb812fd4 278 return (tempRegValue & 0x7F);
JMF 0:24d3eb812fd4 279
JMF 0:24d3eb812fd4 280 }
JMF 0:24d3eb812fd4 281
JMF 0:24d3eb812fd4 282
JMF 0:24d3eb812fd4 283 /**
JMF 0:24d3eb812fd4 284 * @brief Sets the VCO calibration data to be used in RX mode.
JMF 0:24d3eb812fd4 285 * @param cVcoCalData calibration data word to be set.
JMF 0:24d3eb812fd4 286 * This parameter is a variable of uint8_t.
JMF 0:24d3eb812fd4 287 * @retval None.
JMF 0:24d3eb812fd4 288 */
JMF 0:24d3eb812fd4 289 void SpiritCalibrationSetVcoCalDataRx(uint8_t cVcoCalData)
JMF 0:24d3eb812fd4 290 {
JMF 0:24d3eb812fd4 291 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 292
JMF 0:24d3eb812fd4 293 /* Reads the register value */
JMF 0:24d3eb812fd4 294 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_IN0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 295
JMF 0:24d3eb812fd4 296 /* Build the value to be written */
JMF 0:24d3eb812fd4 297 tempRegValue &= 0x80;
JMF 0:24d3eb812fd4 298 tempRegValue |= cVcoCalData;
JMF 0:24d3eb812fd4 299
JMF 0:24d3eb812fd4 300 /* Writes the new value of calibration data in RX */
JMF 0:24d3eb812fd4 301 g_xStatus = SpiritSpiWriteRegisters(RCO_VCO_CALIBR_IN0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 302
JMF 0:24d3eb812fd4 303 }
JMF 0:24d3eb812fd4 304
JMF 0:24d3eb812fd4 305
JMF 0:24d3eb812fd4 306 /**
JMF 0:24d3eb812fd4 307 * @brief Returns the actual VCO calibration data used in RX mode.
JMF 0:24d3eb812fd4 308 * @param None.
JMF 0:24d3eb812fd4 309 * @retval uint8_t Calibration data word used in RX mode.
JMF 0:24d3eb812fd4 310 */
JMF 0:24d3eb812fd4 311 uint8_t SpiritCalibrationGetVcoCalDataRx(void)
JMF 0:24d3eb812fd4 312 {
JMF 0:24d3eb812fd4 313 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 314
JMF 0:24d3eb812fd4 315 /* Reads the register containing the calibration data word used in TX mode */
JMF 0:24d3eb812fd4 316 g_xStatus = SpiritSpiReadRegisters(RCO_VCO_CALIBR_IN0_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 317
JMF 0:24d3eb812fd4 318 /* Mask the VCO_CALIBR_RX field and returns the value */
JMF 0:24d3eb812fd4 319 return (tempRegValue & 0x7F);
JMF 0:24d3eb812fd4 320
JMF 0:24d3eb812fd4 321 }
JMF 0:24d3eb812fd4 322
JMF 0:24d3eb812fd4 323
JMF 0:24d3eb812fd4 324 /**
JMF 0:24d3eb812fd4 325 * @brief Sets the VCO calibration window.
JMF 0:24d3eb812fd4 326 * @param xRefWord value of REFWORD corresponding to the Ref_period according to the formula: CALIBRATION_WIN = 11*Ref_period/fxo.
JMF 0:24d3eb812fd4 327 This parameter can be a value of @ref VcoWin.
JMF 0:24d3eb812fd4 328 * @retval None.
JMF 0:24d3eb812fd4 329 */
JMF 0:24d3eb812fd4 330 void SpiritCalibrationSetVcoWindow(VcoWin xRefWord)
JMF 0:24d3eb812fd4 331 {
JMF 0:24d3eb812fd4 332 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 333
JMF 0:24d3eb812fd4 334 /* Check the parameters */
JMF 0:24d3eb812fd4 335 s_assert_param(IS_VCO_WIN(xRefWord));
JMF 0:24d3eb812fd4 336
JMF 0:24d3eb812fd4 337 /* Reads the register value */
JMF 0:24d3eb812fd4 338 g_xStatus = SpiritSpiReadRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 339
JMF 0:24d3eb812fd4 340 /* Build the values to be written */
JMF 0:24d3eb812fd4 341 tempRegValue &= 0xFC;
JMF 0:24d3eb812fd4 342 tempRegValue |= xRefWord;
JMF 0:24d3eb812fd4 343
JMF 0:24d3eb812fd4 344 /* Writes the new value of VCO calibration window */
JMF 0:24d3eb812fd4 345 g_xStatus = SpiritSpiWriteRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 346
JMF 0:24d3eb812fd4 347 }
JMF 0:24d3eb812fd4 348
JMF 0:24d3eb812fd4 349
JMF 0:24d3eb812fd4 350 /**
JMF 0:24d3eb812fd4 351 * @brief Returns the VCO calibration window.
JMF 0:24d3eb812fd4 352 * @param None.
JMF 0:24d3eb812fd4 353 * @retval VcoWin Value of REFWORD corresponding to the Ref_period according to the formula: CALIBRATION_WIN = 11*Ref_period/fxo.
JMF 0:24d3eb812fd4 354 * This parameter can be a value of @ref VcoWin.
JMF 0:24d3eb812fd4 355 */
JMF 0:24d3eb812fd4 356 VcoWin SpiritCalibrationGetVcoWindow(void)
JMF 0:24d3eb812fd4 357 {
JMF 0:24d3eb812fd4 358 uint8_t tempRegValue1, tempRegValue2;
JMF 0:24d3eb812fd4 359 VcoWin refWord;
JMF 0:24d3eb812fd4 360
JMF 0:24d3eb812fd4 361 /* Reads the register containing the REFWORD value */
JMF 0:24d3eb812fd4 362 g_xStatus = SpiritSpiReadRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue1);
JMF 0:24d3eb812fd4 363
JMF 0:24d3eb812fd4 364 /* Reads the Xtal configuration */
JMF 0:24d3eb812fd4 365 g_xStatus = SpiritSpiReadRegisters(ANA_FUNC_CONF0_BASE, 1, &tempRegValue2);
JMF 0:24d3eb812fd4 366
JMF 0:24d3eb812fd4 367 /* Mask the REFWORD field */
JMF 0:24d3eb812fd4 368 tempRegValue1 &= 0x03;
JMF 0:24d3eb812fd4 369
JMF 0:24d3eb812fd4 370 /* Mask the 24_26_MHz_SELECT field */
JMF 0:24d3eb812fd4 371 tempRegValue2 = ((tempRegValue2 & 0x40)>>6);
JMF 0:24d3eb812fd4 372
JMF 0:24d3eb812fd4 373 /* In case of 26 MHz crystal */
JMF 0:24d3eb812fd4 374 if(tempRegValue2)
JMF 0:24d3eb812fd4 375 {
JMF 0:24d3eb812fd4 376 switch(tempRegValue1)
JMF 0:24d3eb812fd4 377 {
JMF 0:24d3eb812fd4 378 case 0:
JMF 0:24d3eb812fd4 379 refWord = CALIB_TIME_6_77_US_26MHZ;
JMF 0:24d3eb812fd4 380 break;
JMF 0:24d3eb812fd4 381 case 1:
JMF 0:24d3eb812fd4 382 refWord = CALIB_TIME_13_54_US_26MHZ;
JMF 0:24d3eb812fd4 383 break;
JMF 0:24d3eb812fd4 384 case 2:
JMF 0:24d3eb812fd4 385 refWord = CALIB_TIME_27_08_US_26MHZ;
JMF 0:24d3eb812fd4 386 break;
JMF 0:24d3eb812fd4 387 case 3:
JMF 0:24d3eb812fd4 388 refWord = CALIB_TIME_54_15_US_26MHZ;
JMF 0:24d3eb812fd4 389 break;
JMF 0:24d3eb812fd4 390 }
JMF 0:24d3eb812fd4 391 }
JMF 0:24d3eb812fd4 392
JMF 0:24d3eb812fd4 393 /* In case of 24 MHz crystal */
JMF 0:24d3eb812fd4 394 else
JMF 0:24d3eb812fd4 395 {
JMF 0:24d3eb812fd4 396 switch(tempRegValue1)
JMF 0:24d3eb812fd4 397 {
JMF 0:24d3eb812fd4 398 case 0:
JMF 0:24d3eb812fd4 399 refWord = CALIB_TIME_7_33_US_24MHZ;
JMF 0:24d3eb812fd4 400 break;
JMF 0:24d3eb812fd4 401 case 1:
JMF 0:24d3eb812fd4 402 refWord = CALIB_TIME_14_67_US_24MHZ;
JMF 0:24d3eb812fd4 403 break;
JMF 0:24d3eb812fd4 404 case 2:
JMF 0:24d3eb812fd4 405 refWord = CALIB_TIME_29_33_US_24MHZ;
JMF 0:24d3eb812fd4 406 break;
JMF 0:24d3eb812fd4 407 case 3:
JMF 0:24d3eb812fd4 408 refWord = CALIB_TIME_58_67_US_24MHZ;
JMF 0:24d3eb812fd4 409 break;
JMF 0:24d3eb812fd4 410 }
JMF 0:24d3eb812fd4 411 }
JMF 0:24d3eb812fd4 412
JMF 0:24d3eb812fd4 413 return refWord;
JMF 0:24d3eb812fd4 414
JMF 0:24d3eb812fd4 415 }
JMF 0:24d3eb812fd4 416
JMF 0:24d3eb812fd4 417 /**
JMF 0:24d3eb812fd4 418 * @brief Selects a VCO.
JMF 0:24d3eb812fd4 419 * @param xVco can be VCO_H or VCO_L according to which VCO select.
JMF 0:24d3eb812fd4 420 * This parameter can be a value of @ref VcoSel.
JMF 0:24d3eb812fd4 421 * @retval None.
JMF 0:24d3eb812fd4 422 */
JMF 0:24d3eb812fd4 423 void SpiritCalibrationSelectVco(VcoSel xVco)
JMF 0:24d3eb812fd4 424 {
JMF 0:24d3eb812fd4 425 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 426
JMF 0:24d3eb812fd4 427 /* Check the parameter */
JMF 0:24d3eb812fd4 428 s_assert_param(IS_VCO_SEL(xVco));
JMF 0:24d3eb812fd4 429
JMF 0:24d3eb812fd4 430 SpiritSpiReadRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 431
JMF 0:24d3eb812fd4 432 tempRegValue &= 0xF9;
JMF 0:24d3eb812fd4 433
JMF 0:24d3eb812fd4 434 if(xVco == VCO_H)
JMF 0:24d3eb812fd4 435 {
JMF 0:24d3eb812fd4 436 tempRegValue |= 0x02;
JMF 0:24d3eb812fd4 437
JMF 0:24d3eb812fd4 438 }
JMF 0:24d3eb812fd4 439 else
JMF 0:24d3eb812fd4 440 {
JMF 0:24d3eb812fd4 441 tempRegValue |= 0x04;
JMF 0:24d3eb812fd4 442 }
JMF 0:24d3eb812fd4 443 SpiritSpiWriteRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 444
JMF 0:24d3eb812fd4 445 }
JMF 0:24d3eb812fd4 446
JMF 0:24d3eb812fd4 447
JMF 0:24d3eb812fd4 448
JMF 0:24d3eb812fd4 449 /**
JMF 0:24d3eb812fd4 450 * @brief Returns the VCO selected.
JMF 0:24d3eb812fd4 451 * @param void.
JMF 0:24d3eb812fd4 452 * @retval VCO_H or VCO_L according to which VCO selected.
JMF 0:24d3eb812fd4 453 * This parameter can be a value of @ref VcoSel.
JMF 0:24d3eb812fd4 454 */
JMF 0:24d3eb812fd4 455 VcoSel SpiritCalibrationGetVcoSelecttion(void)
JMF 0:24d3eb812fd4 456 {
JMF 0:24d3eb812fd4 457 uint8_t tempRegValue;
JMF 0:24d3eb812fd4 458
JMF 0:24d3eb812fd4 459 SpiritSpiReadRegisters(SYNTH_CONFIG1_BASE, 1, &tempRegValue);
JMF 0:24d3eb812fd4 460
JMF 0:24d3eb812fd4 461 tempRegValue = (tempRegValue>>1)&0x3;
JMF 0:24d3eb812fd4 462
JMF 0:24d3eb812fd4 463 if(tempRegValue == 0x01)
JMF 0:24d3eb812fd4 464 {
JMF 0:24d3eb812fd4 465 return VCO_H;
JMF 0:24d3eb812fd4 466
JMF 0:24d3eb812fd4 467 }
JMF 0:24d3eb812fd4 468 else
JMF 0:24d3eb812fd4 469 {
JMF 0:24d3eb812fd4 470 return VCO_L;
JMF 0:24d3eb812fd4 471 }
JMF 0:24d3eb812fd4 472
JMF 0:24d3eb812fd4 473 }
JMF 0:24d3eb812fd4 474
JMF 0:24d3eb812fd4 475
JMF 0:24d3eb812fd4 476 /**
JMF 0:24d3eb812fd4 477 *@}
JMF 0:24d3eb812fd4 478 */
JMF 0:24d3eb812fd4 479
JMF 0:24d3eb812fd4 480 /**
JMF 0:24d3eb812fd4 481 *@}
JMF 0:24d3eb812fd4 482 */
JMF 0:24d3eb812fd4 483
JMF 0:24d3eb812fd4 484
JMF 0:24d3eb812fd4 485 /**
JMF 0:24d3eb812fd4 486 *@}
JMF 0:24d3eb812fd4 487 */
JMF 0:24d3eb812fd4 488
JMF 0:24d3eb812fd4 489
JMF 0:24d3eb812fd4 490
JMF 0:24d3eb812fd4 491 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/