Prototype RF driver for STM Sub-1 GHz RF expansion board based on the SPSGRF-868 module for STM32 Nucleo.
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/Inc/SPIRIT_Radio.h@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_Radio.h |
| 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 This file provides all the low level API to manage Analog and Digital |
| Wolfgang Betz |
0:4fb29d9ee571 | 8 | * radio part of SPIRIT. |
| Wolfgang Betz |
0:4fb29d9ee571 | 9 | * @details |
| Wolfgang Betz |
0:4fb29d9ee571 | 10 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 11 | * In order to configure the Radio main parameters, the user can |
| Wolfgang Betz |
0:4fb29d9ee571 | 12 | * fit <i>SRadioInit</i> structure the and call the <i>SpiritRadioInit()</i> |
| Wolfgang Betz |
0:4fb29d9ee571 | 13 | * function passing its pointer as an argument. |
| Wolfgang Betz |
0:4fb29d9ee571 | 14 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 15 | * <b>Example:</b> |
| Wolfgang Betz |
0:4fb29d9ee571 | 16 | * @code |
| Wolfgang Betz |
0:4fb29d9ee571 | 17 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 18 | * SRadioInit radioInit = { |
| Wolfgang Betz |
0:4fb29d9ee571 | 19 | * 0, // Xtal offset in ppm |
| Wolfgang Betz |
0:4fb29d9ee571 | 20 | * 433.4e6, // base frequency |
| Wolfgang Betz |
0:4fb29d9ee571 | 21 | * 20e3, // channel space |
| Wolfgang Betz |
0:4fb29d9ee571 | 22 | * 0, // channel number |
| Wolfgang Betz |
0:4fb29d9ee571 | 23 | * FSK, // modulation select |
| Wolfgang Betz |
0:4fb29d9ee571 | 24 | * 38400, // datarate |
| Wolfgang Betz |
0:4fb29d9ee571 | 25 | * 20e3, // frequency deviation |
| Wolfgang Betz |
0:4fb29d9ee571 | 26 | * 100.5e3 // channel filter bandwidth |
| Wolfgang Betz |
0:4fb29d9ee571 | 27 | * }; |
| Wolfgang Betz |
0:4fb29d9ee571 | 28 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 29 | * ... |
| Wolfgang Betz |
0:4fb29d9ee571 | 30 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 31 | * SpiritRadioInit(&radioInit); |
| Wolfgang Betz |
0:4fb29d9ee571 | 32 | * @endcode |
| Wolfgang Betz |
0:4fb29d9ee571 | 33 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 34 | * Another important parameter for the radio configuration is the |
| Wolfgang Betz |
0:4fb29d9ee571 | 35 | * transmission power. |
| Wolfgang Betz |
0:4fb29d9ee571 | 36 | * The user is allowed to configure it using the function <i>SpiritRadioSetPALeveldBm()</i> |
| Wolfgang Betz |
0:4fb29d9ee571 | 37 | * which sets the PA LEVEL specified by the first argument to the |
| Wolfgang Betz |
0:4fb29d9ee571 | 38 | * power expressed in dBm by the second parameter. |
| Wolfgang Betz |
0:4fb29d9ee571 | 39 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 40 | * <b>Example:</b> |
| Wolfgang Betz |
0:4fb29d9ee571 | 41 | * @code |
| Wolfgang Betz |
0:4fb29d9ee571 | 42 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 43 | * SpiritRadioSetPALeveldBm(0 , 10.0); |
| Wolfgang Betz |
0:4fb29d9ee571 | 44 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 45 | * @endcode |
| Wolfgang Betz |
0:4fb29d9ee571 | 46 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 47 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 48 | * @note The effective power that is set can be a little different from the |
| Wolfgang Betz |
0:4fb29d9ee571 | 49 | * passed argument in dBm because the function performs an approximation. |
| Wolfgang Betz |
0:4fb29d9ee571 | 50 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 51 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 52 | * @attention |
| Wolfgang Betz |
0:4fb29d9ee571 | 53 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 54 | * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> |
| Wolfgang Betz |
0:4fb29d9ee571 | 55 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 56 | * Redistribution and use in source and binary forms, with or without modification, |
| Wolfgang Betz |
0:4fb29d9ee571 | 57 | * are permitted provided that the following conditions are met: |
| Wolfgang Betz |
0:4fb29d9ee571 | 58 | * 1. Redistributions of source code must retain the above copyright notice, |
| Wolfgang Betz |
0:4fb29d9ee571 | 59 | * this list of conditions and the following disclaimer. |
| Wolfgang Betz |
0:4fb29d9ee571 | 60 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
| Wolfgang Betz |
0:4fb29d9ee571 | 61 | * this list of conditions and the following disclaimer in the documentation |
| Wolfgang Betz |
0:4fb29d9ee571 | 62 | * and/or other materials provided with the distribution. |
| Wolfgang Betz |
0:4fb29d9ee571 | 63 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
| Wolfgang Betz |
0:4fb29d9ee571 | 64 | * may be used to endorse or promote products derived from this software |
| Wolfgang Betz |
0:4fb29d9ee571 | 65 | * without specific prior written permission. |
| Wolfgang Betz |
0:4fb29d9ee571 | 66 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 67 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| Wolfgang Betz |
0:4fb29d9ee571 | 68 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| Wolfgang Betz |
0:4fb29d9ee571 | 69 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| Wolfgang Betz |
0:4fb29d9ee571 | 70 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
| Wolfgang Betz |
0:4fb29d9ee571 | 71 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| Wolfgang Betz |
0:4fb29d9ee571 | 72 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| Wolfgang Betz |
0:4fb29d9ee571 | 73 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| Wolfgang Betz |
0:4fb29d9ee571 | 74 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| Wolfgang Betz |
0:4fb29d9ee571 | 75 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| Wolfgang Betz |
0:4fb29d9ee571 | 76 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| Wolfgang Betz |
0:4fb29d9ee571 | 77 | * |
| Wolfgang Betz |
0:4fb29d9ee571 | 78 | ****************************************************************************** |
| Wolfgang Betz |
0:4fb29d9ee571 | 79 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 80 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 81 | /* Define to prevent recursive inclusion -------------------------------------*/ |
| Wolfgang Betz |
0:4fb29d9ee571 | 82 | #ifndef __SPIRIT_RADIO_H |
| Wolfgang Betz |
0:4fb29d9ee571 | 83 | #define __SPIRIT_RADIO_H |
| Wolfgang Betz |
0:4fb29d9ee571 | 84 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 85 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 86 | /* Includes ------------------------------------------------------------------*/ |
| Wolfgang Betz |
0:4fb29d9ee571 | 87 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 88 | #include "SPIRIT_Regs.h" |
| Wolfgang Betz |
0:4fb29d9ee571 | 89 | #include "SPIRIT_Types.h" |
| Wolfgang Betz |
0:4fb29d9ee571 | 90 | #include "SPIRIT_Config.h" |
| Wolfgang Betz |
0:4fb29d9ee571 | 91 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 92 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 93 | #ifdef __cplusplus |
| Wolfgang Betz |
0:4fb29d9ee571 | 94 | extern "C" { |
| Wolfgang Betz |
0:4fb29d9ee571 | 95 | #endif |
| Wolfgang Betz |
0:4fb29d9ee571 | 96 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 97 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 98 | /** @addtogroup SPIRIT_Libraries |
| Wolfgang Betz |
0:4fb29d9ee571 | 99 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 100 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 101 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 102 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 103 | /** @defgroup SPIRIT_Radio Radio |
| Wolfgang Betz |
0:4fb29d9ee571 | 104 | * @brief Configuration and management of SPIRIT RF Analog and Digital part. |
| Wolfgang Betz |
0:4fb29d9ee571 | 105 | * @details See the file <i>@ref SPIRIT_Radio.h</i> for more details. |
| 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 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 111 | /** @defgroup Radio_Exported_Types Radio Exported Types |
| Wolfgang Betz |
0:4fb29d9ee571 | 112 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 113 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 114 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 115 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 116 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 117 | * @brief SPIRIT XTAL frequency enumeration |
| Wolfgang Betz |
0:4fb29d9ee571 | 118 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 119 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 120 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 121 | XTAL_FLAG_24_MHz = 0x00, /*!< 24 MHz Xtal selected */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 122 | XTAL_FLAG_26_MHz = 0x01 /*!< 26 MHz Xtal selected */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 123 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 124 | }XtalFlag; |
| Wolfgang Betz |
0:4fb29d9ee571 | 125 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 126 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 127 | #define IS_XTAL_FLAG(FLAG) (((FLAG) == XTAL_FLAG_24_MHz) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 128 | ((FLAG) == XTAL_FLAG_26_MHz)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 129 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 130 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 131 | * @brief SPIRIT Band enumeration |
| Wolfgang Betz |
0:4fb29d9ee571 | 132 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 133 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 134 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 135 | HIGH_BAND = 0x00, /*!< High_Band selected: from 779 MHz to 915 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 136 | MIDDLE_BAND = 0x01, /*!< Middle Band selected: from 387 MHz to 470 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 137 | LOW_BAND = 0x02, /*!< Low Band selected: from 300 MHz to 348 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 138 | VERY_LOW_BAND = 0x03 /*!< Vary low Band selected: from 150 MHz to 174 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 139 | }BandSelect; |
| Wolfgang Betz |
0:4fb29d9ee571 | 140 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 141 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 142 | #define IS_BAND_SELECTED(BAND) ((BAND == HIGH_BAND) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 143 | (BAND == MIDDLE_BAND) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 144 | (BAND == LOW_BAND) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 145 | (BAND == VERY_LOW_BAND)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 146 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 147 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 148 | * @brief SPIRIT Modulation enumeration |
| Wolfgang Betz |
0:4fb29d9ee571 | 149 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 150 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 151 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 152 | FSK = 0x00, /*!< 2-FSK modulation selected */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 153 | GFSK_BT05 = 0x50, /*!< GFSK modulation selected with BT=0.5 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 154 | GFSK_BT1 = 0x10, /*!< GFSK modulation selected with BT=1 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 155 | ASK_OOK = 0x20, /*!< ASK or OOK modulation selected. ASK will use power ramping */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 156 | MSK = 0x30 /*!< MSK modulation selected */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 157 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 158 | }ModulationSelect; |
| Wolfgang Betz |
0:4fb29d9ee571 | 159 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 160 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 161 | #define IS_MODULATION_SELECTED(MOD) (((MOD) == FSK) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 162 | ((MOD) == GFSK_BT05) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 163 | ((MOD) == GFSK_BT1) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 164 | ((MOD) == ASK_OOK) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 165 | ((MOD) == MSK)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 166 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 167 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 168 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 169 | * @brief SPIRIT PA additional load capacitors bank enumeration |
| Wolfgang Betz |
0:4fb29d9ee571 | 170 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 171 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 172 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 173 | LOAD_0_PF = PA_POWER0_CWC_0, /*!< No additional PA load capacitor */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 174 | LOAD_1_2_PF = PA_POWER0_CWC_1_2P, /*!< 1.2pF additional PA load capacitor */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 175 | LOAD_2_4_PF = PA_POWER0_CWC_2_4P, /*!< 2.4pF additional PA load capacitor */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 176 | LOAD_3_6_PF = PA_POWER0_CWC_3_6P /*!< 3.6pF additional PA load capacitor */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 177 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 178 | }PALoadCapacitor; |
| Wolfgang Betz |
0:4fb29d9ee571 | 179 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 180 | #define IS_PA_LOAD_CAP(CWC) (((CWC) == LOAD_0_PF) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 181 | ((CWC) == LOAD_1_2_PF) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 182 | ((CWC) == LOAD_2_4_PF) || \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 183 | ((CWC) == LOAD_3_6_PF)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 184 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 185 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 186 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 187 | * @brief SPIRIT AFC Mode selection |
| Wolfgang Betz |
0:4fb29d9ee571 | 188 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 189 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 190 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 191 | AFC_SLICER_CORRECTION = AFC2_AFC_MODE_SLICER, /*!< AFC loop closed on slicer */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 192 | AFC_2ND_IF_CORRECTION = AFC2_AFC_MODE_MIXER /*!< AFC loop closed on 2nd conversion stage */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 193 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 194 | }AFCMode; |
| Wolfgang Betz |
0:4fb29d9ee571 | 195 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 196 | #define IS_AFC_MODE(MODE) ((MODE) == AFC_SLICER_CORRECTION || (MODE) == AFC_2ND_IF_CORRECTION) |
| Wolfgang Betz |
0:4fb29d9ee571 | 197 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 198 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 199 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 200 | * @brief SPIRIT AGC Mode selection |
| Wolfgang Betz |
0:4fb29d9ee571 | 201 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 202 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 203 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 204 | AGC_LINEAR_MODE = AGCCTRL0_AGC_MODE_LINEAR, /*!< AGC works in linear mode */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 205 | AGC_BINARY_MODE = AGCCTRL0_AGC_MODE_BINARY /*!< AGC works in binary mode */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 206 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 207 | }AGCMode; |
| Wolfgang Betz |
0:4fb29d9ee571 | 208 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 209 | #define IS_AGC_MODE(MODE) ((MODE) == AGC_LINEAR_MODE || (MODE) == AGC_BINARY_MODE) |
| Wolfgang Betz |
0:4fb29d9ee571 | 210 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 211 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 212 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 213 | * @brief SPIRIT Clock Recovery Mode selection |
| Wolfgang Betz |
0:4fb29d9ee571 | 214 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 215 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 216 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 217 | CLK_REC_PLL = FDEV0_CLOCK_REG_ALGO_SEL_PLL, /*!< PLL alogrithm for clock recovery */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 218 | CLK_REC_DLL = FDEV0_CLOCK_REG_ALGO_SEL_DLL /*!< DLL alogrithm for clock recovery */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 219 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 220 | }ClkRecMode; |
| Wolfgang Betz |
0:4fb29d9ee571 | 221 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 222 | #define IS_CLK_REC_MODE(MODE) ((MODE) == CLK_REC_PLL || (MODE) == CLK_REC_DLL) |
| Wolfgang Betz |
0:4fb29d9ee571 | 223 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 224 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 225 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 226 | * @brief SPIRIT Postfilter length |
| Wolfgang Betz |
0:4fb29d9ee571 | 227 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 228 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 229 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 230 | PSTFLT_LENGTH_8 = 0x00, /*!< Postfilter length is 8 symbols */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 231 | PSTFLT_LENGTH_16 = 0x10 /*!< Postfilter length is 16 symbols */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 232 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 233 | }PstFltLength; |
| Wolfgang Betz |
0:4fb29d9ee571 | 234 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 235 | #define IS_PST_FLT_LENGTH(LENGTH) ((LENGTH) == PSTFLT_LENGTH_8 || (LENGTH) == PSTFLT_LENGTH_16) |
| Wolfgang Betz |
0:4fb29d9ee571 | 236 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 237 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 238 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 239 | * @brief SPIRIT OOK Peak Decay |
| Wolfgang Betz |
0:4fb29d9ee571 | 240 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 241 | typedef enum |
| Wolfgang Betz |
0:4fb29d9ee571 | 242 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 243 | FAST_DECAY = 0x00, /*!< Peak decay control for OOK: fast decay */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 244 | MEDIUM_FAST_DECAY = 0x01, /*!< Peak decay control for OOK: medium_fast decay */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 245 | MEDIUM_SLOW_DECAY = 0x02, /*!< Peak decay control for OOK: medium_fast decay */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 246 | SLOW_DECAY = 0x03 /*!< Peak decay control for OOK: slow decay */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 247 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 248 | }OokPeakDecay; |
| Wolfgang Betz |
0:4fb29d9ee571 | 249 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 250 | #define IS_OOK_PEAK_DECAY(DECAY) (((DECAY) == FAST_DECAY) ||\ |
| Wolfgang Betz |
0:4fb29d9ee571 | 251 | ((DECAY) == MEDIUM_FAST_DECAY) ||\ |
| Wolfgang Betz |
0:4fb29d9ee571 | 252 | ((DECAY) == MEDIUM_SLOW_DECAY) ||\ |
| Wolfgang Betz |
0:4fb29d9ee571 | 253 | ((DECAY) == SLOW_DECAY)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 254 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 255 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 256 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 257 | * @brief SPIRIT Radio Init structure definition |
| Wolfgang Betz |
0:4fb29d9ee571 | 258 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 259 | typedef struct |
| Wolfgang Betz |
0:4fb29d9ee571 | 260 | { |
| Wolfgang Betz |
0:4fb29d9ee571 | 261 | int16_t nXtalOffsetPpm; /*!< Specifies the offset frequency (in ppm) |
| Wolfgang Betz |
0:4fb29d9ee571 | 262 | to compensate crystal inaccuracy expressed |
| Wolfgang Betz |
0:4fb29d9ee571 | 263 | as signed value.*/ |
| Wolfgang Betz |
0:4fb29d9ee571 | 264 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 265 | uint32_t lFrequencyBase; /*!< Specifies the base carrier frequency (in Hz), |
| Wolfgang Betz |
0:4fb29d9ee571 | 266 | i.e. the carrier frequency of channel #0. |
| Wolfgang Betz |
0:4fb29d9ee571 | 267 | This parameter can be in one of the following ranges: |
| Wolfgang Betz |
0:4fb29d9ee571 | 268 | High_Band: from 779 MHz to 915 MHz |
| Wolfgang Betz |
0:4fb29d9ee571 | 269 | Middle Band: from 387 MHz to 470 MHz |
| Wolfgang Betz |
0:4fb29d9ee571 | 270 | Low Band: from 300 MHz to 348 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 271 | uint32_t nChannelSpace; /*!< Specifies the channel spacing expressed in Hz. |
| Wolfgang Betz |
0:4fb29d9ee571 | 272 | The channel spacing is expressed as: |
| Wolfgang Betz |
0:4fb29d9ee571 | 273 | NxFREQUENCY_STEPS, where FREQUENCY STEPS |
| Wolfgang Betz |
0:4fb29d9ee571 | 274 | is F_Xo/2^15. |
| Wolfgang Betz |
0:4fb29d9ee571 | 275 | This parameter can be in the range: [0, F_Xo/2^15*255] Hz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 276 | uint8_t cChannelNumber; /*!< Specifies the channel number. This value |
| Wolfgang Betz |
0:4fb29d9ee571 | 277 | is multiplied by the channel spacing and |
| Wolfgang Betz |
0:4fb29d9ee571 | 278 | added to synthesizer base frequency to |
| Wolfgang Betz |
0:4fb29d9ee571 | 279 | generate the actual RF carrier frequency */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 280 | ModulationSelect xModulationSelect; /*!< Specifies the modulation. This |
| Wolfgang Betz |
0:4fb29d9ee571 | 281 | parameter can be any value of |
| Wolfgang Betz |
0:4fb29d9ee571 | 282 | @ref ModulationSelect */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 283 | uint32_t lDatarate; /*!< Specifies the datarate expressed in bps. |
| Wolfgang Betz |
0:4fb29d9ee571 | 284 | This parameter can be in the range between |
| Wolfgang Betz |
0:4fb29d9ee571 | 285 | 100 bps and 500 kbps */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 286 | uint32_t lFreqDev; /*!< Specifies the frequency deviation expressed in Hz. |
| Wolfgang Betz |
0:4fb29d9ee571 | 287 | This parameter can be in the range: [F_Xo*8/2^18, F_Xo*7680/2^18] Hz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 288 | uint32_t lBandwidth; /*!< Specifies the channel filter bandwidth |
| Wolfgang Betz |
0:4fb29d9ee571 | 289 | expressed in Hz. This parameter can be |
| Wolfgang Betz |
0:4fb29d9ee571 | 290 | in the range between 1100 and 800100 Hz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 291 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 292 | }SRadioInit; |
| Wolfgang Betz |
0:4fb29d9ee571 | 293 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 294 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 295 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 296 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 297 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 298 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 299 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 300 | /** @defgroup Radio_Exported_Constants Radio Exported Constants |
| Wolfgang Betz |
0:4fb29d9ee571 | 301 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 302 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 303 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 304 | /** @defgroup Radio_Band |
| Wolfgang Betz |
0:4fb29d9ee571 | 305 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 306 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 307 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 308 | #define FBASE_DIVIDER 262144 /*!< 2^18 factor dividing fxo in fbase formula */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 309 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 310 | #define HIGH_BAND_FACTOR 6 /*!< Band select factor for high band. Factor B in the equation 2 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 311 | #define MIDDLE_BAND_FACTOR 12 /*!< Band select factor for middle band. Factor B in the equation 2 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 312 | #define LOW_BAND_FACTOR 16 /*!< Band select factor for low band. Factor B in the equation 2 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 313 | #define VERY_LOW_BAND_FACTOR 32 /*!< Band select factor for very low band. Factor B in the equation 2 */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 314 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 315 | #define HIGH_BAND_LOWER_LIMIT 778000000 /*!< Lower limit of the high band: 779 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 316 | #define HIGH_BAND_UPPER_LIMIT 957100000 /*!< Upper limit of the high band: 956 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 317 | #define MIDDLE_BAND_LOWER_LIMIT 386000000 /*!< Lower limit of the middle band: 387 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 318 | #define MIDDLE_BAND_UPPER_LIMIT 471100000 /*!< Upper limit of the middle band: 470 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 319 | #define LOW_BAND_LOWER_LIMIT 299000000 /*!< Lower limit of the low band: 300 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 320 | #define LOW_BAND_UPPER_LIMIT 349100000 /*!< Upper limit of the low band: 348 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 321 | #define VERY_LOW_BAND_LOWER_LIMIT 149000000 /*!< Lower limit of the very low band: 150 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 322 | #define VERY_LOW_BAND_UPPER_LIMIT 175100000 /*!< Upper limit of the very low band: 174 MHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 323 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 324 | #define IS_FREQUENCY_BAND_HIGH(FREQUENCY) ((FREQUENCY)>=HIGH_BAND_LOWER_LIMIT && \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 325 | (FREQUENCY)<=HIGH_BAND_UPPER_LIMIT) |
| Wolfgang Betz |
0:4fb29d9ee571 | 326 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 327 | #define IS_FREQUENCY_BAND_MIDDLE(FREQUENCY) ((FREQUENCY)>=MIDDLE_BAND_LOWER_LIMIT && \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 328 | (FREQUENCY)<=MIDDLE_BAND_UPPER_LIMIT) |
| Wolfgang Betz |
0:4fb29d9ee571 | 329 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 330 | #define IS_FREQUENCY_BAND_LOW(FREQUENCY) ((FREQUENCY)>=LOW_BAND_LOWER_LIMIT && \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 331 | (FREQUENCY)<=LOW_BAND_UPPER_LIMIT) |
| Wolfgang Betz |
0:4fb29d9ee571 | 332 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 333 | #define IS_FREQUENCY_BAND_VERY_LOW(FREQUENCY) ((FREQUENCY)>=VERY_LOW_BAND_LOWER_LIMIT && \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 334 | (FREQUENCY)<=VERY_LOW_BAND_UPPER_LIMIT) |
| Wolfgang Betz |
0:4fb29d9ee571 | 335 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 336 | #define IS_FREQUENCY_BAND(FREQUENCY) (IS_FREQUENCY_BAND_HIGH(FREQUENCY)|| \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 337 | IS_FREQUENCY_BAND_MIDDLE(FREQUENCY)|| \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 338 | IS_FREQUENCY_BAND_LOW(FREQUENCY)|| \ |
| Wolfgang Betz |
0:4fb29d9ee571 | 339 | IS_FREQUENCY_BAND_VERY_LOW(FREQUENCY)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 340 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 341 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 342 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 343 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 344 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 345 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 346 | /** @defgroup Radio_IF_Offset Radio IF Offset |
| Wolfgang Betz |
0:4fb29d9ee571 | 347 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 348 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 349 | #define IF_OFFSET_ANA(F_Xo) (lroundf(480140.0/(F_Xo)*12288-64.0)) /*!< It represents the IF_OFFSET_ANA in order |
| Wolfgang Betz |
0:4fb29d9ee571 | 350 | to have an intermediate frequency of 480 kHz */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 351 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 352 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 353 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 354 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 355 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 356 | /** @defgroup Radio_FC_Offset Radio FC Offset |
| Wolfgang Betz |
0:4fb29d9ee571 | 357 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 358 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 359 | #define F_OFFSET_DIVIDER 262144 /*!< 2^18 factor dividing fxo in foffset formula */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 360 | #define PPM_FACTOR 1000000 /*!< 10^6 factor to use with Xtal_offset_ppm */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 361 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 362 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 363 | #define F_OFFSET_LOWER_LIMIT(F_Xo) ((-(int32_t)F_Xo)/F_OFFSET_DIVIDER*2048) |
| Wolfgang Betz |
0:4fb29d9ee571 | 364 | #define F_OFFSET_UPPER_LIMIT(F_Xo) ((int32_t)(F_Xo/F_OFFSET_DIVIDER*2047)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 365 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 366 | #define IS_FREQUENCY_OFFSET(OFFSET, F_Xo) (OFFSET>=F_OFFSET_LOWER_LIMIT(F_Xo) && OFFSET<=F_OFFSET_UPPER_LIMIT(F_Xo)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 367 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 368 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 369 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 370 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 371 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 372 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 373 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 374 | /** @defgroup Radio_Channel_Space Radio Channel Space |
| Wolfgang Betz |
0:4fb29d9ee571 | 375 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 376 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 377 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 378 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 379 | #define CHSPACE_DIVIDER 32768 /*!< 2^15 factor dividing fxo in channel space formula */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 380 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 381 | #define IS_CHANNEL_SPACE(CHANNELSPACE, F_Xo) (CHANNELSPACE<=(F_Xo/32768*255)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 382 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 383 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 384 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 385 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 386 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 387 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 388 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 389 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 390 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 391 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 392 | /** @defgroup Radio_Datarate Radio Datarate |
| Wolfgang Betz |
0:4fb29d9ee571 | 393 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 394 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 395 | #define MINIMUM_DATARATE 100 /*!< Minimum datarate supported by SPIRIT1 100 bps */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 396 | #define MAXIMUM_DATARATE 510000 /*!< Maximum datarate supported by SPIRIT1 500 kbps */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 397 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 398 | #define IS_DATARATE(DATARATE) (DATARATE>=MINIMUM_DATARATE && DATARATE<=MAXIMUM_DATARATE) |
| Wolfgang Betz |
0:4fb29d9ee571 | 399 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 400 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 401 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 402 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 403 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 404 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 405 | /** @defgroup Radio_Frequency_Deviation Radio Frequency Deviation |
| Wolfgang Betz |
0:4fb29d9ee571 | 406 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 407 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 408 | #define F_DEV_MANTISSA_UPPER_LIMIT 7 /*!< Maximum value for the mantissa in frequency deviation formula */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 409 | #define F_DEV_EXPONENT_UPPER_LIMIT 9 /*!< Maximum value for the exponent in frequency deviation formula */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 410 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 411 | #define F_DEV_LOWER_LIMIT(F_Xo) (F_Xo>>16) |
| Wolfgang Betz |
0:4fb29d9ee571 | 412 | #define F_DEV_UPPER_LIMIT(F_Xo) ((F_Xo*15)>>10) |
| Wolfgang Betz |
0:4fb29d9ee571 | 413 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 414 | #define IS_F_DEV(FDEV,F_Xo) (FDEV>=F_DEV_LOWER_LIMIT(F_Xo) && FDEV<=F_DEV_UPPER_LIMIT(F_Xo)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 415 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 416 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 417 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 418 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 419 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 420 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 421 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 422 | /** @defgroup Radio_Channel_Bandwidth Radio Channel Bandwidth |
| Wolfgang Betz |
0:4fb29d9ee571 | 423 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 424 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 425 | #define CH_BW_LOWER_LIMIT(F_Xo) 1100*(F_Xo/1000000)/26 /*!< Minimum value of the channel filter bandwidth */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 426 | #define CH_BW_UPPER_LIMIT(F_Xo) 800100*(F_Xo/1000000)/26 /*!< Maximum value of the channel filter bandwidth */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 427 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 428 | #define IS_CH_BW(BW,F_Xo) ((BW)>=CH_BW_LOWER_LIMIT(F_Xo) && (BW)<=CH_BW_UPPER_LIMIT(F_Xo)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 429 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 430 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 431 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 432 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 433 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 434 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 435 | /** @defgroup Radio_Power_Amplifier Radio Power Amplifier |
| Wolfgang Betz |
0:4fb29d9ee571 | 436 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 437 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 438 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 439 | #define IS_PA_MAX_INDEX(INDEX) ((INDEX)<=7) |
| Wolfgang Betz |
0:4fb29d9ee571 | 440 | #define IS_PAPOWER_DBM(PATABLE) ((PATABLE)>= (-31) && (PATABLE)<=(12)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 441 | #define IS_PAPOWER(PATABLE) ((PATABLE)<=90) |
| Wolfgang Betz |
0:4fb29d9ee571 | 442 | #define IS_PA_STEP_WIDTH(WIDTH) ((WIDTH)>=1 && (WIDTH)<=4) |
| Wolfgang Betz |
0:4fb29d9ee571 | 443 | |
| 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 | /** @defgroup Radio_Automatic_Frequency_Correction Radio Automatic Frequency Correction |
| Wolfgang Betz |
0:4fb29d9ee571 | 450 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 451 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 452 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 453 | #define IS_AFC_FAST_GAIN(GAIN) ((GAIN)<=15) |
| Wolfgang Betz |
0:4fb29d9ee571 | 454 | #define IS_AFC_SLOW_GAIN(GAIN) ((GAIN)<=15) |
| Wolfgang Betz |
0:4fb29d9ee571 | 455 | #define IS_AFC_PD_LEAKAGE(LEAKAGE) ((LEAKAGE)<=31) |
| Wolfgang Betz |
0:4fb29d9ee571 | 456 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 457 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 458 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 459 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 460 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 461 | /** @defgroup Radio_Automatic_Gain_Control Radio Automatic Gain Control |
| Wolfgang Betz |
0:4fb29d9ee571 | 462 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 463 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 464 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 465 | #define AGC_MEASURE_TIME_UPPER_LIMIT_US(F_Xo) (393216.0/F_Xo) |
| Wolfgang Betz |
0:4fb29d9ee571 | 466 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 467 | #define IS_AGC_MEASURE_TIME_US(TIME, F_Xo) (TIME<=AGC_MEASURE_TIME_UPPER_LIMIT_US(F_Xo)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 468 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 469 | #define IS_AGC_MEASURE_TIME(TIME) (TIME<=15) |
| Wolfgang Betz |
0:4fb29d9ee571 | 470 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 471 | #define AGC_HOLD_TIME_UPPER_LIMIT_US(F_Xo) (756.0/F_Xo) |
| Wolfgang Betz |
0:4fb29d9ee571 | 472 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 473 | #define IS_AGC_HOLD_TIME_US(TIME,F_Xo) (TIME<=AGC_HOLD_TIME_UPPER_LIMIT_US(F_Xo)) |
| Wolfgang Betz |
0:4fb29d9ee571 | 474 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 475 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 476 | #define IS_AGC_HOLD_TIME(TIME) (TIME<=63) |
| Wolfgang Betz |
0:4fb29d9ee571 | 477 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 478 | #define IS_AGC_THRESHOLD(THRESHOLD) (THRESHOLD<=15) |
| 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 | /** @defgroup Radio_Clock_Recovery Radio Clock Recovery |
| Wolfgang Betz |
0:4fb29d9ee571 | 486 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 487 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 488 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 489 | #define IS_CLK_REC_P_GAIN(GAIN) ((GAIN)<=7) |
| Wolfgang Betz |
0:4fb29d9ee571 | 490 | #define IS_CLK_REC_I_GAIN(GAIN) ((GAIN)<=15) |
| Wolfgang Betz |
0:4fb29d9ee571 | 491 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 492 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 493 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 494 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 495 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 496 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 497 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 498 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 499 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 500 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 501 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 502 | /** @defgroup Radio_Exported_Macros Radio Exported Macros |
| Wolfgang Betz |
0:4fb29d9ee571 | 503 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 504 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 505 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 506 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 507 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 508 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 509 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 510 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 511 | /** @defgroup Radio_Exported_Functions Radio Exported Functions |
| Wolfgang Betz |
0:4fb29d9ee571 | 512 | * @{ |
| Wolfgang Betz |
0:4fb29d9ee571 | 513 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 514 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 515 | uint8_t SpiritRadioInit(SRadioInit* pxSRadioInitStruct); |
| Wolfgang Betz |
0:4fb29d9ee571 | 516 | void SpiritRadioGetInfo(SRadioInit* pxSRadioInitStruct); |
| Wolfgang Betz |
0:4fb29d9ee571 | 517 | void SpiritRadioSetXtalFlag(XtalFlag xXtal); |
| Wolfgang Betz |
0:4fb29d9ee571 | 518 | XtalFlag SpiritRadioGetXtalFlag(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 519 | uint8_t SpiritRadioSearchWCP(uint32_t lFc); |
| Wolfgang Betz |
0:4fb29d9ee571 | 520 | void SpiritRadioSetSynthWord(uint32_t lSynthWord); |
| Wolfgang Betz |
0:4fb29d9ee571 | 521 | uint32_t SpiritRadioGetSynthWord(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 522 | void SpiritRadioSetBand(BandSelect xBand); |
| Wolfgang Betz |
0:4fb29d9ee571 | 523 | BandSelect SpiritRadioGetBand(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 524 | void SpiritRadioSetChannel(uint8_t cChannel); |
| Wolfgang Betz |
0:4fb29d9ee571 | 525 | uint8_t SpiritRadioGetChannel(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 526 | void SpiritRadioSetChannelSpace(uint32_t lChannelSpace); |
| Wolfgang Betz |
0:4fb29d9ee571 | 527 | uint32_t SpiritRadioGetChannelSpace(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 528 | void SpiritRadioSetFrequencyOffsetPpm(int16_t nXtalPpm); |
| Wolfgang Betz |
0:4fb29d9ee571 | 529 | void SpiritRadioSetFrequencyOffset(int32_t lFOffset); |
| Wolfgang Betz |
0:4fb29d9ee571 | 530 | int32_t SpiritRadioGetFrequencyOffset(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 531 | void SpiritRadioVcoCalibrationWAFB(SpiritFunctionalState xNewstate); |
| Wolfgang Betz |
0:4fb29d9ee571 | 532 | uint8_t SpiritRadioSetFrequencyBase(uint32_t lFBase); |
| Wolfgang Betz |
0:4fb29d9ee571 | 533 | uint32_t SpiritRadioGetFrequencyBase(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 534 | uint32_t SpiritRadioGetCenterFrequency(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 535 | void SpiritRadioSearchDatarateME(uint32_t lDatarate, uint8_t* pcM, uint8_t* pcE); |
| Wolfgang Betz |
0:4fb29d9ee571 | 536 | void SpiritRadioSearchFreqDevME(uint32_t lFDev, uint8_t* pcM, uint8_t* pcE); |
| Wolfgang Betz |
0:4fb29d9ee571 | 537 | void SpiritRadioSearchChannelBwME(uint32_t lBandwidth, uint8_t* pcM, uint8_t* pcE); |
| Wolfgang Betz |
0:4fb29d9ee571 | 538 | void SpiritRadioSetDatarate(uint32_t lDatarate); |
| Wolfgang Betz |
0:4fb29d9ee571 | 539 | uint32_t SpiritRadioGetDatarate(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 540 | void SpiritRadioSetFrequencyDev(uint32_t lFDev); |
| Wolfgang Betz |
0:4fb29d9ee571 | 541 | uint32_t SpiritRadioGetFrequencyDev(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 542 | void SpiritRadioSetChannelBW(uint32_t lBandwidth); |
| Wolfgang Betz |
0:4fb29d9ee571 | 543 | uint32_t SpiritRadioGetChannelBW(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 544 | void SpiritRadioSetModulation(ModulationSelect xModulation); |
| Wolfgang Betz |
0:4fb29d9ee571 | 545 | ModulationSelect SpiritRadioGetModulation(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 546 | void SpiritRadioCWTransmitMode(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 547 | void SpiritRadioSetOokPeakDecay(OokPeakDecay xOokDecay); |
| Wolfgang Betz |
0:4fb29d9ee571 | 548 | OokPeakDecay SpiritRadioGetOokPeakDecay(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 549 | uint8_t SpiritRadioGetdBm2Reg(uint32_t lFBase, float fPowerdBm); |
| Wolfgang Betz |
0:4fb29d9ee571 | 550 | float SpiritRadioGetReg2dBm(uint32_t lFBase, uint8_t cPowerReg); |
| Wolfgang Betz |
0:4fb29d9ee571 | 551 | void SpiritRadioSetPATabledBm(uint8_t cPALevelMaxIndex, uint8_t cWidth, PALoadCapacitor xCLoad, float* pfPAtabledBm); |
| Wolfgang Betz |
0:4fb29d9ee571 | 552 | void SpiritRadioGetPATabledBm(uint8_t* pcPALevelMaxIndex, float* pfPAtabledBm); |
| Wolfgang Betz |
0:4fb29d9ee571 | 553 | void SpiritRadioSetPATable(uint8_t cPALevelMaxIndex, uint8_t cWidth, PALoadCapacitor xCLoad, uint8_t* pcPAtable); |
| Wolfgang Betz |
0:4fb29d9ee571 | 554 | void SpiritRadioGetPATable(uint8_t* pcPALevelMaxIndex, uint8_t* pcPAtable); |
| Wolfgang Betz |
0:4fb29d9ee571 | 555 | void SpiritRadioSetPALeveldBm(uint8_t cIndex, float fPowerdBm); |
| Wolfgang Betz |
0:4fb29d9ee571 | 556 | float SpiritRadioGetPALeveldBm(uint8_t cIndex); |
| Wolfgang Betz |
0:4fb29d9ee571 | 557 | void SpiritRadioSetPALevel(uint8_t cIndex, uint8_t cPower); |
| Wolfgang Betz |
0:4fb29d9ee571 | 558 | uint8_t SpiritRadioGetPALevel(uint8_t cIndex); |
| Wolfgang Betz |
0:4fb29d9ee571 | 559 | void SpiritRadioSetPACwc(PALoadCapacitor xCLoad); |
| Wolfgang Betz |
0:4fb29d9ee571 | 560 | PALoadCapacitor SpiritRadioGetPACwc(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 561 | void SpiritRadioSetPALevelMaxIndex(uint8_t cIndex); |
| Wolfgang Betz |
0:4fb29d9ee571 | 562 | uint8_t SpiritRadioGetPALevelMaxIndex(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 563 | void SpiritRadioSetPAStepWidth(uint8_t cWidth); |
| Wolfgang Betz |
0:4fb29d9ee571 | 564 | uint8_t SpiritRadioGetPAStepWidth(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 565 | void SpiritRadioPARamping(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 566 | SpiritFunctionalState SpiritRadioGetPARamping(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 567 | void SpiritRadioAFC(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 568 | void SpiritRadioAFCFreezeOnSync(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 569 | void SpiritRadioSetAFCMode(AFCMode xMode); |
| Wolfgang Betz |
0:4fb29d9ee571 | 570 | AFCMode SpiritRadioGetAFCMode(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 571 | void SpiritRadioSetAFCPDLeakage(uint8_t cLeakage); |
| Wolfgang Betz |
0:4fb29d9ee571 | 572 | uint8_t SpiritRadioGetAFCPDLeakage(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 573 | void SpiritRadioSetAFCFastPeriod(uint8_t cLength); |
| Wolfgang Betz |
0:4fb29d9ee571 | 574 | uint8_t SpiritRadioGetAFCFastPeriod(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 575 | void SpiritRadioSetAFCFastGain(uint8_t cGain); |
| Wolfgang Betz |
0:4fb29d9ee571 | 576 | uint8_t SpiritRadioGetAFCFastGain(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 577 | void SpiritRadioSetAFCSlowGain(uint8_t cGain); |
| Wolfgang Betz |
0:4fb29d9ee571 | 578 | uint8_t SpiritRadioGetAFCSlowGain(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 579 | int8_t SpiritRadioGetAFCCorrectionReg(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 580 | int32_t SpiritRadioGetAFCCorrectionHz(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 581 | void SpiritRadioAGC(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 582 | void SpiritRadioSetAGCMode(AGCMode xMode); |
| Wolfgang Betz |
0:4fb29d9ee571 | 583 | AGCMode SpiritRadioGetAGCMode(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 584 | void SpiritRadioAGCFreezeOnSteady(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 585 | void SpiritRadioAGCFreezeOnSync(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 586 | void SpiritRadioAGCStartMaxAttenuation(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 587 | void SpiritRadioSetAGCMeasureTimeUs(uint16_t nTime); |
| Wolfgang Betz |
0:4fb29d9ee571 | 588 | uint16_t SpiritRadioGetAGCMeasureTimeUs(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 589 | void SpiritRadioSetAGCMeasureTime(uint8_t cTime); |
| Wolfgang Betz |
0:4fb29d9ee571 | 590 | uint8_t SpiritRadioGetAGCMeasureTime(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 591 | void SpiritRadioSetAGCHoldTimeUs(uint8_t cTime); |
| Wolfgang Betz |
0:4fb29d9ee571 | 592 | uint8_t SpiritRadioGetAGCHoldTimeUs(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 593 | void SpiritRadioSetAGCHoldTime(uint8_t cTime); |
| Wolfgang Betz |
0:4fb29d9ee571 | 594 | uint8_t SpiritRadioGetAGCHoldTime(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 595 | void SpiritRadioSetAGCHighThreshold(uint8_t cHighThreshold); |
| Wolfgang Betz |
0:4fb29d9ee571 | 596 | uint8_t SpiritRadioGetAGCHighThreshold(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 597 | void SpiritRadioSetAGCLowThreshold(uint8_t cLowThreshold); |
| Wolfgang Betz |
0:4fb29d9ee571 | 598 | uint8_t SpiritRadioGetAGCLowThreshold(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 599 | void SpiritRadioSetClkRecMode(ClkRecMode xMode); |
| Wolfgang Betz |
0:4fb29d9ee571 | 600 | ClkRecMode SpiritRadioGetClkRecMode(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 601 | void SpiritRadioSetClkRecPGain(uint8_t cPGain); |
| Wolfgang Betz |
0:4fb29d9ee571 | 602 | uint8_t SpiritRadioGetClkRecPGain(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 603 | void SpiritRadioSetClkRecIGain(uint8_t cIGain); |
| Wolfgang Betz |
0:4fb29d9ee571 | 604 | uint8_t SpiritRadioGetClkRecIGain(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 605 | void SpiritRadioSetClkRecPstFltLength(PstFltLength xLength); |
| Wolfgang Betz |
0:4fb29d9ee571 | 606 | PstFltLength SpiritRadioGetClkRecPstFltLength(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 607 | void SpiritRadioCsBlanking(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 608 | void SpiritRadioPersistenRx(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 609 | uint32_t SpiritRadioGetXtalFrequency(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 610 | void SpiritRadioSetXtalFrequency(uint32_t lXtalFrequency); |
| Wolfgang Betz |
0:4fb29d9ee571 | 611 | void SpiritRadioSetRefDiv(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 612 | SpiritFunctionalState SpiritRadioGetRefDiv(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 613 | void SpiritRadioSetDigDiv(SpiritFunctionalState xNewState); |
| Wolfgang Betz |
0:4fb29d9ee571 | 614 | SpiritFunctionalState SpiritRadioGetDigDiv(void); |
| Wolfgang Betz |
0:4fb29d9ee571 | 615 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 616 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 617 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 618 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 619 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 620 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 621 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 622 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 623 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 624 | /** |
| Wolfgang Betz |
0:4fb29d9ee571 | 625 | * @} |
| Wolfgang Betz |
0:4fb29d9ee571 | 626 | */ |
| Wolfgang Betz |
0:4fb29d9ee571 | 627 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 628 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 629 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 630 | #ifdef __cplusplus |
| Wolfgang Betz |
0:4fb29d9ee571 | 631 | } |
| Wolfgang Betz |
0:4fb29d9ee571 | 632 | #endif |
| Wolfgang Betz |
0:4fb29d9ee571 | 633 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 634 | #endif |
| Wolfgang Betz |
0:4fb29d9ee571 | 635 | |
| Wolfgang Betz |
0:4fb29d9ee571 | 636 | /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/ |
X-NUCLEO-IDS01A4 Sub-1GHz RF Expansion Board