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/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