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