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.
Library for MAX41460, MAX41461, MAX41462, MAX41463, MAX41464 RF Transmitter ICs.
Max4146x.h@1:ccf0e1d28860, 2019-05-02 (annotated)
- Committer:
- Erman Komurcu
- Date:
- Thu May 02 14:11:03 2019 +0300
- Revision:
- 1:ccf0e1d28860
- Parent:
- 0:4040347d719c
Copyright notice changed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Erman Komurcu |
0:4040347d719c | 1 | /******************************************************************************* |
Erman Komurcu |
1:ccf0e1d28860 | 2 | * Copyright (C) 2019 Maxim Integrated Products, Inc., All rights Reserved. |
Erman Komurcu |
1:ccf0e1d28860 | 3 | * |
Erman Komurcu |
1:ccf0e1d28860 | 4 | * This software is protected by copyright laws of the United States and |
Erman Komurcu |
1:ccf0e1d28860 | 5 | * of foreign countries. This material may also be protected by patent laws |
Erman Komurcu |
1:ccf0e1d28860 | 6 | * and technology transfer regulations of the United States and of foreign |
Erman Komurcu |
1:ccf0e1d28860 | 7 | * countries. This software is furnished under a license agreement and/or a |
Erman Komurcu |
1:ccf0e1d28860 | 8 | * nondisclosure agreement and may only be used or reproduced in accordance |
Erman Komurcu |
1:ccf0e1d28860 | 9 | * with the terms of those agreements. Dissemination of this information to |
Erman Komurcu |
1:ccf0e1d28860 | 10 | * any party or parties not specified in the license agreement and/or |
Erman Komurcu |
1:ccf0e1d28860 | 11 | * nondisclosure agreement is expressly prohibited. |
Erman Komurcu |
1:ccf0e1d28860 | 12 | * |
Erman Komurcu |
1:ccf0e1d28860 | 13 | * The above copyright notice and this permission notice shall be included |
Erman Komurcu |
1:ccf0e1d28860 | 14 | * in all copies or substantial portions of the Software. |
Erman Komurcu |
1:ccf0e1d28860 | 15 | * |
Erman Komurcu |
1:ccf0e1d28860 | 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
Erman Komurcu |
1:ccf0e1d28860 | 17 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
Erman Komurcu |
1:ccf0e1d28860 | 18 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
Erman Komurcu |
1:ccf0e1d28860 | 19 | * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
Erman Komurcu |
1:ccf0e1d28860 | 20 | * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
Erman Komurcu |
1:ccf0e1d28860 | 21 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
Erman Komurcu |
1:ccf0e1d28860 | 22 | * OTHER DEALINGS IN THE SOFTWARE. |
Erman Komurcu |
1:ccf0e1d28860 | 23 | * |
Erman Komurcu |
1:ccf0e1d28860 | 24 | * Except as contained in this notice, the name of Maxim Integrated |
Erman Komurcu |
1:ccf0e1d28860 | 25 | * Products, Inc. shall not be used except as stated in the Maxim Integrated |
Erman Komurcu |
1:ccf0e1d28860 | 26 | * Products, Inc. Branding Policy. |
Erman Komurcu |
1:ccf0e1d28860 | 27 | * |
Erman Komurcu |
1:ccf0e1d28860 | 28 | * The mere transfer of this software does not imply any licenses |
Erman Komurcu |
1:ccf0e1d28860 | 29 | * of trade secrets, proprietary technology, copyrights, patents, |
Erman Komurcu |
1:ccf0e1d28860 | 30 | * trademarks, maskwork rights, or any other form of intellectual |
Erman Komurcu |
1:ccf0e1d28860 | 31 | * property whatsoever. Maxim Integrated Products, Inc. retains all |
Erman Komurcu |
1:ccf0e1d28860 | 32 | * ownership rights. |
Erman Komurcu |
1:ccf0e1d28860 | 33 | ******************************************************************************* |
Erman Komurcu |
1:ccf0e1d28860 | 34 | */ |
Erman Komurcu |
0:4040347d719c | 35 | |
Erman Komurcu |
0:4040347d719c | 36 | #ifndef MAX4146x_H_ |
Erman Komurcu |
0:4040347d719c | 37 | #define MAX4146x_H_ |
Erman Komurcu |
0:4040347d719c | 38 | |
Erman Komurcu |
0:4040347d719c | 39 | #include "mbed.h" |
Erman Komurcu |
0:4040347d719c | 40 | #include "Max41460_regs.h" |
Erman Komurcu |
0:4040347d719c | 41 | #include "Max41461_2_regs.h" |
Erman Komurcu |
0:4040347d719c | 42 | #include "Max41463_4_regs.h" |
Erman Komurcu |
0:4040347d719c | 43 | |
Erman Komurcu |
0:4040347d719c | 44 | #define I2C_ADDRESS 0xD2 |
Erman Komurcu |
0:4040347d719c | 45 | |
Erman Komurcu |
0:4040347d719c | 46 | /** |
Erman Komurcu |
0:4040347d719c | 47 | * @brief Base Class for All Maxim Max4146x RF Transmitters |
Erman Komurcu |
0:4040347d719c | 48 | * |
Erman Komurcu |
0:4040347d719c | 49 | * @details The MAX4146X is a UHF sub-GHz ISM/SRD transmitter |
Erman Komurcu |
0:4040347d719c | 50 | */ |
Erman Komurcu |
0:4040347d719c | 51 | template <class REG> |
Erman Komurcu |
0:4040347d719c | 52 | class MAX4146X |
Erman Komurcu |
0:4040347d719c | 53 | { |
Erman Komurcu |
0:4040347d719c | 54 | private: |
Erman Komurcu |
0:4040347d719c | 55 | REG *reg; |
Erman Komurcu |
0:4040347d719c | 56 | I2C *i2c_handler; |
Erman Komurcu |
0:4040347d719c | 57 | SPI *spi_handler; |
Erman Komurcu |
0:4040347d719c | 58 | DigitalOut *ssel; |
Erman Komurcu |
0:4040347d719c | 59 | |
Erman Komurcu |
0:4040347d719c | 60 | //manchester coding variables |
Erman Komurcu |
0:4040347d719c | 61 | unsigned char *manchester_bit_array; |
Erman Komurcu |
0:4040347d719c | 62 | unsigned char *bits_array; |
Erman Komurcu |
0:4040347d719c | 63 | static const unsigned char mask = 1; // Bit mask |
Erman Komurcu |
0:4040347d719c | 64 | char data_rate; |
Erman Komurcu |
0:4040347d719c | 65 | DigitalOut *data_sent; // data sent pin |
Erman Komurcu |
0:4040347d719c | 66 | |
Erman Komurcu |
0:4040347d719c | 67 | uint8_t preset_mode; |
Erman Komurcu |
0:4040347d719c | 68 | float crystal_frequency ; |
Erman Komurcu |
0:4040347d719c | 69 | float center_frequency; |
Erman Komurcu |
0:4040347d719c | 70 | float baud_rate; |
Erman Komurcu |
0:4040347d719c | 71 | |
Erman Komurcu |
0:4040347d719c | 72 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 73 | CFG1_ADDR = 0x00, |
Erman Komurcu |
0:4040347d719c | 74 | CFG2_ADDR = 0x01, |
Erman Komurcu |
0:4040347d719c | 75 | CFG3_ADDR = 0x02, |
Erman Komurcu |
0:4040347d719c | 76 | CFG4_ADDR = 0x03, |
Erman Komurcu |
0:4040347d719c | 77 | CFG5_ADDR = 0x04, |
Erman Komurcu |
0:4040347d719c | 78 | SHDN_ADDR = 0x05, |
Erman Komurcu |
0:4040347d719c | 79 | PA1_ADDR = 0x06, |
Erman Komurcu |
0:4040347d719c | 80 | PA2_ADDR = 0x07, |
Erman Komurcu |
0:4040347d719c | 81 | PLL1_ADDR = 0x08, |
Erman Komurcu |
0:4040347d719c | 82 | PLL2_ADDR = 0x09, |
Erman Komurcu |
0:4040347d719c | 83 | CFG6_ADDR = 0x0A, |
Erman Komurcu |
0:4040347d719c | 84 | PLL3_ADDR = 0x0B, |
Erman Komurcu |
0:4040347d719c | 85 | PLL4_ADDR = 0x0C, |
Erman Komurcu |
0:4040347d719c | 86 | PLL5_ADDR = 0x0D, |
Erman Komurcu |
0:4040347d719c | 87 | PLL6_ADDR = 0x0E, |
Erman Komurcu |
0:4040347d719c | 88 | PLL7_ADDR = 0x0F, |
Erman Komurcu |
0:4040347d719c | 89 | CFG7_ADDR = 0x10, |
Erman Komurcu |
0:4040347d719c | 90 | I2C1_ADDR = 0x11, |
Erman Komurcu |
0:4040347d719c | 91 | I2C2_ADDR = 0x12, |
Erman Komurcu |
0:4040347d719c | 92 | I2C3_ADDR = 0x13, |
Erman Komurcu |
0:4040347d719c | 93 | I2C4_ADDR = 0x14, |
Erman Komurcu |
0:4040347d719c | 94 | I2C5_ADDR = 0x15, |
Erman Komurcu |
0:4040347d719c | 95 | I2C6_ADDR = 0x16, |
Erman Komurcu |
0:4040347d719c | 96 | CFG8_ADDR = 0x17, |
Erman Komurcu |
0:4040347d719c | 97 | CFG9_ADDR = 0x18, |
Erman Komurcu |
0:4040347d719c | 98 | ADDL1_ADDR = 0x19, |
Erman Komurcu |
0:4040347d719c | 99 | ADDL2_ADDR = 0x1A, |
Erman Komurcu |
0:4040347d719c | 100 | } register_address_t; |
Erman Komurcu |
0:4040347d719c | 101 | |
Erman Komurcu |
0:4040347d719c | 102 | //Functions |
Erman Komurcu |
0:4040347d719c | 103 | |
Erman Komurcu |
0:4040347d719c | 104 | protected: |
Erman Komurcu |
0:4040347d719c | 105 | |
Erman Komurcu |
0:4040347d719c | 106 | //Functions |
Erman Komurcu |
0:4040347d719c | 107 | int io_write(uint8_t *data, uint32_t length); |
Erman Komurcu |
0:4040347d719c | 108 | |
Erman Komurcu |
0:4040347d719c | 109 | public: |
Erman Komurcu |
0:4040347d719c | 110 | |
Erman Komurcu |
0:4040347d719c | 111 | //Constructors |
Erman Komurcu |
0:4040347d719c | 112 | MAX4146X(REG *reg, SPI *spi, DigitalOut *cs); |
Erman Komurcu |
0:4040347d719c | 113 | |
Erman Komurcu |
0:4040347d719c | 114 | MAX4146X(REG *reg, SPI *spi); |
Erman Komurcu |
0:4040347d719c | 115 | |
Erman Komurcu |
0:4040347d719c | 116 | MAX4146X(REG *reg, I2C *i2c); |
Erman Komurcu |
0:4040347d719c | 117 | |
Erman Komurcu |
0:4040347d719c | 118 | MAX4146X(DigitalOut *cs); |
Erman Komurcu |
0:4040347d719c | 119 | |
Erman Komurcu |
0:4040347d719c | 120 | |
Erman Komurcu |
0:4040347d719c | 121 | /** |
Erman Komurcu |
0:4040347d719c | 122 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 123 | * |
Erman Komurcu |
0:4040347d719c | 124 | * @details |
Erman Komurcu |
0:4040347d719c | 125 | * - Register : CFG1(0x00) |
Erman Komurcu |
0:4040347d719c | 126 | * - Bit Fields : [7:6] |
Erman Komurcu |
0:4040347d719c | 127 | * - Default : 0x2 |
Erman Komurcu |
0:4040347d719c | 128 | * - Description : Start delay before enabling XO clock to digital block |
Erman Komurcu |
0:4040347d719c | 129 | */ |
Erman Komurcu |
0:4040347d719c | 130 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 131 | XOCLKDELAY_0_CYCLE, /**< 0x0: No delay. XO clock is immediately enabled to rest of digital block */ |
Erman Komurcu |
0:4040347d719c | 132 | XOCLKDELAY_16_CYCLE, /**< 0x1: XO clock is enabled after 16 cycles to rest of digital block */ |
Erman Komurcu |
0:4040347d719c | 133 | XOCLKDELAY_32_CYCLE, /**< 0x2: XO clock is enabled after 32 cycles to rest of digital block */ |
Erman Komurcu |
0:4040347d719c | 134 | XOCLKDELAY_64_CYCLE, /**< 0x3: XO clock is enabled after 64 cycles to rest of digital block */ |
Erman Komurcu |
0:4040347d719c | 135 | } xoclkdelay_t; |
Erman Komurcu |
0:4040347d719c | 136 | |
Erman Komurcu |
0:4040347d719c | 137 | /** |
Erman Komurcu |
0:4040347d719c | 138 | * @brief Set start delay before enabling XO clock to digital block |
Erman Komurcu |
0:4040347d719c | 139 | * |
Erman Komurcu |
0:4040347d719c | 140 | * @param[in] delay delay cycle |
Erman Komurcu |
0:4040347d719c | 141 | * |
Erman Komurcu |
0:4040347d719c | 142 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 143 | */ |
Erman Komurcu |
0:4040347d719c | 144 | int set_xoclkdelay(xoclkdelay_t delay); |
Erman Komurcu |
0:4040347d719c | 145 | |
Erman Komurcu |
0:4040347d719c | 146 | /** |
Erman Komurcu |
0:4040347d719c | 147 | * @brief Get start delay before enabling XO clock to digital block |
Erman Komurcu |
0:4040347d719c | 148 | * |
Erman Komurcu |
0:4040347d719c | 149 | * @param[in] delay delay cycle |
Erman Komurcu |
0:4040347d719c | 150 | * |
Erman Komurcu |
0:4040347d719c | 151 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 152 | */ |
Erman Komurcu |
0:4040347d719c | 153 | int get_xoclkdelay(xoclkdelay_t *delay); |
Erman Komurcu |
0:4040347d719c | 154 | |
Erman Komurcu |
0:4040347d719c | 155 | /** |
Erman Komurcu |
0:4040347d719c | 156 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 157 | * |
Erman Komurcu |
0:4040347d719c | 158 | * @details |
Erman Komurcu |
0:4040347d719c | 159 | * -Register : CFG1(0x00) |
Erman Komurcu |
0:4040347d719c | 160 | * - Bit Fields : [5:4] |
Erman Komurcu |
0:4040347d719c | 161 | * - Default : 0x2 |
Erman Komurcu |
0:4040347d719c | 162 | * - Description : XO clock division ratio for digital block |
Erman Komurcu |
0:4040347d719c | 163 | */ |
Erman Komurcu |
0:4040347d719c | 164 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 165 | XOCLKDIV_BY_4, /**< 0x0: Divide XO clock by 4 for digital clock */ |
Erman Komurcu |
0:4040347d719c | 166 | XOCLKDIV_BY_5, /**< 0x1: Divide XO clock by 5 for digital clock. High time is 2 cycles, low time is 3 cycles */ |
Erman Komurcu |
0:4040347d719c | 167 | XOCLKDIV_BY_6, /**< 0x2: Divide XO clock by 6 for digital clock */ |
Erman Komurcu |
0:4040347d719c | 168 | XOCLKDIV_BY_7, /**< 0x3: Divide XO clock by 7 for digital clock. High time is 3 cycles, |
Erman Komurcu |
0:4040347d719c | 169 | and low time is 4 cycles */ |
Erman Komurcu |
0:4040347d719c | 170 | } xoclkdiv_t; |
Erman Komurcu |
0:4040347d719c | 171 | |
Erman Komurcu |
0:4040347d719c | 172 | /** |
Erman Komurcu |
0:4040347d719c | 173 | * @brief Set XO clock division ratio for digital block |
Erman Komurcu |
0:4040347d719c | 174 | * |
Erman Komurcu |
0:4040347d719c | 175 | * @param[in] div division ratio |
Erman Komurcu |
0:4040347d719c | 176 | * |
Erman Komurcu |
0:4040347d719c | 177 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 178 | */ |
Erman Komurcu |
0:4040347d719c | 179 | int set_xoclkdiv(xoclkdiv_t div); |
Erman Komurcu |
0:4040347d719c | 180 | |
Erman Komurcu |
0:4040347d719c | 181 | /** |
Erman Komurcu |
0:4040347d719c | 182 | * @brief Get XO clock division ratio for digital block |
Erman Komurcu |
0:4040347d719c | 183 | * |
Erman Komurcu |
0:4040347d719c | 184 | * @param[in] div division ratio |
Erman Komurcu |
0:4040347d719c | 185 | * |
Erman Komurcu |
0:4040347d719c | 186 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 187 | */ |
Erman Komurcu |
0:4040347d719c | 188 | int get_xoclkdiv(xoclkdiv_t *div); |
Erman Komurcu |
0:4040347d719c | 189 | |
Erman Komurcu |
0:4040347d719c | 190 | /** |
Erman Komurcu |
0:4040347d719c | 191 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 192 | * |
Erman Komurcu |
0:4040347d719c | 193 | * @details |
Erman Komurcu |
0:4040347d719c | 194 | * - Register : CFG1(0x00) |
Erman Komurcu |
0:4040347d719c | 195 | * - Bit Fields : [2] |
Erman Komurcu |
0:4040347d719c | 196 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 197 | * - Description : Sets the state of FSK Gaussian Shaping |
Erman Komurcu |
0:4040347d719c | 198 | */ |
Erman Komurcu |
0:4040347d719c | 199 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 200 | FSKSHAPE_DISABLE, /**< 0x0: FSK Shaping disabled */ |
Erman Komurcu |
0:4040347d719c | 201 | FSKSHAPE_ENABLE, /**< 0x1: FSK Shaping enabled */ |
Erman Komurcu |
0:4040347d719c | 202 | } fskshape_t; |
Erman Komurcu |
0:4040347d719c | 203 | |
Erman Komurcu |
0:4040347d719c | 204 | /** |
Erman Komurcu |
0:4040347d719c | 205 | * @brief Sets the state of FSK Gaussian Shaping |
Erman Komurcu |
0:4040347d719c | 206 | * |
Erman Komurcu |
0:4040347d719c | 207 | * @param[in] shape enable/disable fskshaping |
Erman Komurcu |
0:4040347d719c | 208 | * |
Erman Komurcu |
0:4040347d719c | 209 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 210 | */ |
Erman Komurcu |
0:4040347d719c | 211 | int set_fskshape(fskshape_t shape); |
Erman Komurcu |
0:4040347d719c | 212 | |
Erman Komurcu |
0:4040347d719c | 213 | /** |
Erman Komurcu |
0:4040347d719c | 214 | * @brief Gets the state of FSK Gaussian Shaping |
Erman Komurcu |
0:4040347d719c | 215 | * |
Erman Komurcu |
0:4040347d719c | 216 | * @param[in] shape enable/disable fskshaping |
Erman Komurcu |
0:4040347d719c | 217 | * |
Erman Komurcu |
0:4040347d719c | 218 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 219 | */ |
Erman Komurcu |
0:4040347d719c | 220 | int get_fskshape(fskshape_t *shape); |
Erman Komurcu |
0:4040347d719c | 221 | |
Erman Komurcu |
0:4040347d719c | 222 | /** |
Erman Komurcu |
0:4040347d719c | 223 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 224 | * |
Erman Komurcu |
0:4040347d719c | 225 | * @details |
Erman Komurcu |
0:4040347d719c | 226 | * - Register : CFG1(0x00) |
Erman Komurcu |
0:4040347d719c | 227 | * - Bit Fields : [1] |
Erman Komurcu |
0:4040347d719c | 228 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 229 | * - Description : Controls if clock output acts as an input. When an input, |
Erman Komurcu |
0:4040347d719c | 230 | * it will sample the DATA pin. |
Erman Komurcu |
0:4040347d719c | 231 | */ |
Erman Komurcu |
0:4040347d719c | 232 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 233 | SYNC_0, /**< 0x0: asynchronous transmission mode */ |
Erman Komurcu |
0:4040347d719c | 234 | SYNC_1, /**< 0x1: synchronous transmission mode */ |
Erman Komurcu |
0:4040347d719c | 235 | } sync_t; |
Erman Komurcu |
0:4040347d719c | 236 | |
Erman Komurcu |
0:4040347d719c | 237 | /** |
Erman Komurcu |
0:4040347d719c | 238 | * @brief Sets the state of clock pin |
Erman Komurcu |
0:4040347d719c | 239 | * |
Erman Komurcu |
0:4040347d719c | 240 | * @param[in] state pin state async/sync |
Erman Komurcu |
0:4040347d719c | 241 | * |
Erman Komurcu |
0:4040347d719c | 242 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 243 | */ |
Erman Komurcu |
0:4040347d719c | 244 | int set_sync(sync_t state); |
Erman Komurcu |
0:4040347d719c | 245 | |
Erman Komurcu |
0:4040347d719c | 246 | /** |
Erman Komurcu |
0:4040347d719c | 247 | * @brief Gets the state of clock pin |
Erman Komurcu |
0:4040347d719c | 248 | * |
Erman Komurcu |
0:4040347d719c | 249 | * @param[in] state pin state async/sync |
Erman Komurcu |
0:4040347d719c | 250 | * |
Erman Komurcu |
0:4040347d719c | 251 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 252 | */ |
Erman Komurcu |
0:4040347d719c | 253 | int get_sync(sync_t *state); |
Erman Komurcu |
0:4040347d719c | 254 | |
Erman Komurcu |
0:4040347d719c | 255 | /** |
Erman Komurcu |
0:4040347d719c | 256 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 257 | * |
Erman Komurcu |
0:4040347d719c | 258 | * @details |
Erman Komurcu |
0:4040347d719c | 259 | * - Register : CFG1(0x00) |
Erman Komurcu |
0:4040347d719c | 260 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 261 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 262 | * - Description : Configures modulator mode |
Erman Komurcu |
0:4040347d719c | 263 | */ |
Erman Komurcu |
0:4040347d719c | 264 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 265 | MODMODE_ASK, /**< 0x0: ASK Mode */ |
Erman Komurcu |
0:4040347d719c | 266 | MODMODE_FSK, /**< 0x1: FSK Mode */ |
Erman Komurcu |
0:4040347d719c | 267 | } modmode_t; |
Erman Komurcu |
0:4040347d719c | 268 | |
Erman Komurcu |
0:4040347d719c | 269 | /** |
Erman Komurcu |
0:4040347d719c | 270 | * @brief Sets modulator mode to ASK or FSK |
Erman Komurcu |
0:4040347d719c | 271 | * |
Erman Komurcu |
0:4040347d719c | 272 | * @param[in] mode ASK or FSK |
Erman Komurcu |
0:4040347d719c | 273 | * |
Erman Komurcu |
0:4040347d719c | 274 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 275 | */ |
Erman Komurcu |
0:4040347d719c | 276 | int set_modmode(modmode_t mode); |
Erman Komurcu |
0:4040347d719c | 277 | |
Erman Komurcu |
0:4040347d719c | 278 | /** |
Erman Komurcu |
0:4040347d719c | 279 | * @brief Gets modulator mode |
Erman Komurcu |
0:4040347d719c | 280 | * |
Erman Komurcu |
0:4040347d719c | 281 | * @param[in] mode ASK or FSK |
Erman Komurcu |
0:4040347d719c | 282 | * |
Erman Komurcu |
0:4040347d719c | 283 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 284 | */ |
Erman Komurcu |
0:4040347d719c | 285 | int get_modmode(modmode_t* mode); |
Erman Komurcu |
0:4040347d719c | 286 | |
Erman Komurcu |
0:4040347d719c | 287 | /** |
Erman Komurcu |
0:4040347d719c | 288 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 289 | * |
Erman Komurcu |
0:4040347d719c | 290 | * @details |
Erman Komurcu |
0:4040347d719c | 291 | * - Register : CFG2(0x01) |
Erman Komurcu |
0:4040347d719c | 292 | * - Bit Fields : [7:6] |
Erman Komurcu |
0:4040347d719c | 293 | * - Default : 0x2 |
Erman Komurcu |
0:4040347d719c | 294 | * - Description : Selects the delay when CLKOUT starts |
Erman Komurcu |
0:4040347d719c | 295 | * toggling upon exiting SHUTDOWN mode, |
Erman Komurcu |
0:4040347d719c | 296 | * in divided XO clock cycles |
Erman Komurcu |
0:4040347d719c | 297 | */ |
Erman Komurcu |
0:4040347d719c | 298 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 299 | CLKOUT_DELAY_64_CYCLE, /**< 0x0: CLKOUT will start toggling after 64 cycles |
Erman Komurcu |
0:4040347d719c | 300 | whenever moving into normal mode from shutdown mode */ |
Erman Komurcu |
0:4040347d719c | 301 | CLKOUT_DELAY_128_CYCLE, /**< 0x1: CLKOUT will start toggling after 128 cycles |
Erman Komurcu |
0:4040347d719c | 302 | whenever moving into normal mode from shutdown mode */ |
Erman Komurcu |
0:4040347d719c | 303 | CLKOUT_DELAY_256_CYCLE, /**< 0x2: CLKOUT will start toggling after 256 cycles |
Erman Komurcu |
0:4040347d719c | 304 | whenever moving into normal mode from shutdown mode */ |
Erman Komurcu |
0:4040347d719c | 305 | CLKOUT_DELAY_512_CYCLE, /**< 0x3: CLKOUT will start toggling after 512 cycles |
Erman Komurcu |
0:4040347d719c | 306 | whenever moving into normal mode from shutdown mode */ |
Erman Komurcu |
0:4040347d719c | 307 | } clkout_delay_t; |
Erman Komurcu |
0:4040347d719c | 308 | |
Erman Komurcu |
0:4040347d719c | 309 | /** |
Erman Komurcu |
0:4040347d719c | 310 | * @brief Sets clkout delay |
Erman Komurcu |
0:4040347d719c | 311 | * |
Erman Komurcu |
0:4040347d719c | 312 | * @param[in] delay delay cycles |
Erman Komurcu |
0:4040347d719c | 313 | * |
Erman Komurcu |
0:4040347d719c | 314 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 315 | */ |
Erman Komurcu |
0:4040347d719c | 316 | int set_clkout_delay(clkout_delay_t delay); |
Erman Komurcu |
0:4040347d719c | 317 | |
Erman Komurcu |
0:4040347d719c | 318 | /** |
Erman Komurcu |
0:4040347d719c | 319 | * @brief Gets clkout delay |
Erman Komurcu |
0:4040347d719c | 320 | * |
Erman Komurcu |
0:4040347d719c | 321 | * @param[in] delay delay cycles |
Erman Komurcu |
0:4040347d719c | 322 | * |
Erman Komurcu |
0:4040347d719c | 323 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 324 | */ |
Erman Komurcu |
0:4040347d719c | 325 | int get_clkout_delay(clkout_delay_t* delay); |
Erman Komurcu |
0:4040347d719c | 326 | |
Erman Komurcu |
0:4040347d719c | 327 | /** |
Erman Komurcu |
0:4040347d719c | 328 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 329 | * |
Erman Komurcu |
0:4040347d719c | 330 | * @details |
Erman Komurcu |
0:4040347d719c | 331 | * - Register : CFG2(0x01) |
Erman Komurcu |
0:4040347d719c | 332 | * - Bit Fields : [2:0] |
Erman Komurcu |
0:4040347d719c | 333 | * - Default : 0x1 |
Erman Komurcu |
0:4040347d719c | 334 | * - Description : Baud clock post-divider setting. |
Erman Komurcu |
0:4040347d719c | 335 | */ |
Erman Komurcu |
0:4040347d719c | 336 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 337 | BCLK_POSTDIV_RESERVED_0, /**< 0x0: RESERVED */ |
Erman Komurcu |
0:4040347d719c | 338 | BCLK_POSTDIV_BY_1, /**< 0x1: Divide by 1 */ |
Erman Komurcu |
0:4040347d719c | 339 | BCLK_POSTDIV_BY_2, /**< 0x2: Divide by 2 */ |
Erman Komurcu |
0:4040347d719c | 340 | BCLK_POSTDIV_BY_3, /**< 0x3: Divide by 3 */ |
Erman Komurcu |
0:4040347d719c | 341 | BCLK_POSTDIV_BY_4, /**< 0x4: Divide by 4 */ |
Erman Komurcu |
0:4040347d719c | 342 | BCLK_POSTDIV_BY_5, /**< 0x5: Divide by 5 */ |
Erman Komurcu |
0:4040347d719c | 343 | BCLK_POSTDIV_RESERVED_6, /**< 0x6: RESERVED */ |
Erman Komurcu |
0:4040347d719c | 344 | BCLK_POSTDIV_RESERVED_7, /**< 0x7: RESERVED */ |
Erman Komurcu |
0:4040347d719c | 345 | } bclk_postdiv_t; |
Erman Komurcu |
0:4040347d719c | 346 | |
Erman Komurcu |
0:4040347d719c | 347 | /** |
Erman Komurcu |
0:4040347d719c | 348 | * @brief Sets baud clock post-divider |
Erman Komurcu |
0:4040347d719c | 349 | * |
Erman Komurcu |
0:4040347d719c | 350 | * @param[in] div divider value |
Erman Komurcu |
0:4040347d719c | 351 | * |
Erman Komurcu |
0:4040347d719c | 352 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 353 | */ |
Erman Komurcu |
0:4040347d719c | 354 | int set_bclk_postdiv(bclk_postdiv_t div); |
Erman Komurcu |
0:4040347d719c | 355 | |
Erman Komurcu |
0:4040347d719c | 356 | /** |
Erman Komurcu |
0:4040347d719c | 357 | * @brief Gets baud clock post-divider |
Erman Komurcu |
0:4040347d719c | 358 | * |
Erman Komurcu |
0:4040347d719c | 359 | * @param[in] div divider value |
Erman Komurcu |
0:4040347d719c | 360 | * |
Erman Komurcu |
0:4040347d719c | 361 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 362 | */ |
Erman Komurcu |
0:4040347d719c | 363 | int get_bclk_postdiv(bclk_postdiv_t* div); |
Erman Komurcu |
0:4040347d719c | 364 | |
Erman Komurcu |
0:4040347d719c | 365 | /** |
Erman Komurcu |
0:4040347d719c | 366 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 367 | * |
Erman Komurcu |
0:4040347d719c | 368 | * @details |
Erman Komurcu |
0:4040347d719c | 369 | * - Register : CFG4(0x03) |
Erman Komurcu |
0:4040347d719c | 370 | * - Bit Fields : [1:0] |
Erman Komurcu |
0:4040347d719c | 371 | * - Default : 0x0 |
Erman Komurcu |
0:4040347d719c | 372 | * - Description : Power Down Mode Select. |
Erman Komurcu |
0:4040347d719c | 373 | */ |
Erman Komurcu |
0:4040347d719c | 374 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 375 | PWDN_MODE_SHUTDOWN, /**< 0x0: SHUTDOWN low power state is enabled. While entering |
Erman Komurcu |
0:4040347d719c | 376 | low power state, XO, PLL, and PA are shutdown. */ |
Erman Komurcu |
0:4040347d719c | 377 | PWDN_MODE_STANDBY, /**< 0x1: STANDBY low power state is enabled. While entering |
Erman Komurcu |
0:4040347d719c | 378 | low power state, XO is enabled. PLL and PA are shutdown */ |
Erman Komurcu |
0:4040347d719c | 379 | PWDN_MODE_FAST_WAKEUP, /**< 0x2: FAST WAKEUP low power state is enabled. While entering |
Erman Komurcu |
0:4040347d719c | 380 | low power state, XO and PLL are enabled. PA is shutdown. */ |
Erman Komurcu |
0:4040347d719c | 381 | PWDN_MODE_REVERT_TO_FAST_WAKEUP, /**< 0x3: Will revert to 0x2 */ |
Erman Komurcu |
0:4040347d719c | 382 | } pwdn_mode_t; |
Erman Komurcu |
0:4040347d719c | 383 | |
Erman Komurcu |
0:4040347d719c | 384 | /** |
Erman Komurcu |
0:4040347d719c | 385 | * @brief Sets power down mode |
Erman Komurcu |
0:4040347d719c | 386 | * |
Erman Komurcu |
0:4040347d719c | 387 | * @param[in] pwdn_mode power down mode |
Erman Komurcu |
0:4040347d719c | 388 | * |
Erman Komurcu |
0:4040347d719c | 389 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 390 | */ |
Erman Komurcu |
0:4040347d719c | 391 | int set_pwdn_mode(pwdn_mode_t pwdn_mode); |
Erman Komurcu |
0:4040347d719c | 392 | |
Erman Komurcu |
0:4040347d719c | 393 | /** |
Erman Komurcu |
0:4040347d719c | 394 | * @brief Gets power down mode |
Erman Komurcu |
0:4040347d719c | 395 | * |
Erman Komurcu |
0:4040347d719c | 396 | * @param[in] pwdn_mode power down mode |
Erman Komurcu |
0:4040347d719c | 397 | * |
Erman Komurcu |
0:4040347d719c | 398 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 399 | */ |
Erman Komurcu |
0:4040347d719c | 400 | int get_pwdn_mode(pwdn_mode_t* pwdn_mode); |
Erman Komurcu |
0:4040347d719c | 401 | |
Erman Komurcu |
0:4040347d719c | 402 | /** |
Erman Komurcu |
0:4040347d719c | 403 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 404 | * |
Erman Komurcu |
0:4040347d719c | 405 | * @details |
Erman Komurcu |
0:4040347d719c | 406 | * - Register : SHDN(0x05) |
Erman Komurcu |
0:4040347d719c | 407 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 408 | * - Default : 0x0 |
Erman Komurcu |
0:4040347d719c | 409 | * - Description : Enables a boost in PA output power for frequencies above 850MHz. |
Erman Komurcu |
0:4040347d719c | 410 | * This requires a different PA match compared to normal operation. |
Erman Komurcu |
0:4040347d719c | 411 | */ |
Erman Komurcu |
0:4040347d719c | 412 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 413 | PA_BOOST_NORMAL_MODE, /**< 0x0: PA Output power in normal operation. */ |
Erman Komurcu |
0:4040347d719c | 414 | PA_BOOST_BOOST_MODE, /**< 0x1: PA Output power in boost mode for more output power. */ |
Erman Komurcu |
0:4040347d719c | 415 | } pa_boost_t; |
Erman Komurcu |
0:4040347d719c | 416 | |
Erman Komurcu |
0:4040347d719c | 417 | /** |
Erman Komurcu |
0:4040347d719c | 418 | * @brief enable/disable boost mode |
Erman Komurcu |
0:4040347d719c | 419 | * |
Erman Komurcu |
0:4040347d719c | 420 | * @param[in] pa_boost power amplifier output mode |
Erman Komurcu |
0:4040347d719c | 421 | * |
Erman Komurcu |
0:4040347d719c | 422 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 423 | */ |
Erman Komurcu |
0:4040347d719c | 424 | int set_pa_boost(pa_boost_t pa_boost); |
Erman Komurcu |
0:4040347d719c | 425 | |
Erman Komurcu |
0:4040347d719c | 426 | /** |
Erman Komurcu |
0:4040347d719c | 427 | * @brief Gets boost mode |
Erman Komurcu |
0:4040347d719c | 428 | * |
Erman Komurcu |
0:4040347d719c | 429 | * @param[in] pa_boost power amplifier output mode |
Erman Komurcu |
0:4040347d719c | 430 | * |
Erman Komurcu |
0:4040347d719c | 431 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 432 | */ |
Erman Komurcu |
0:4040347d719c | 433 | int get_pa_boost(pa_boost_t* pa_boost); |
Erman Komurcu |
0:4040347d719c | 434 | |
Erman Komurcu |
0:4040347d719c | 435 | /** |
Erman Komurcu |
0:4040347d719c | 436 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 437 | * |
Erman Komurcu |
0:4040347d719c | 438 | * @details |
Erman Komurcu |
0:4040347d719c | 439 | * - Register : PA1(0x06) |
Erman Komurcu |
0:4040347d719c | 440 | * - Bit Fields : [2:0] |
Erman Komurcu |
0:4040347d719c | 441 | * - Default : 0x0 |
Erman Komurcu |
0:4040347d719c | 442 | * - Description : Controls the PA output power by enabling parallel drivers. |
Erman Komurcu |
0:4040347d719c | 443 | */ |
Erman Komurcu |
0:4040347d719c | 444 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 445 | PAPWR_1_DRIVER, /**< 0x0: Minimum, 1 driver */ |
Erman Komurcu |
0:4040347d719c | 446 | PAPWR_2_DRIVER, /**< 0x1: 2 Drivers */ |
Erman Komurcu |
0:4040347d719c | 447 | PAPWR_3_DRIVER, /**< 0x2: 3 Drivers */ |
Erman Komurcu |
0:4040347d719c | 448 | PAPWR_4_DRIVER, /**< 0x3: 4 Drivers */ |
Erman Komurcu |
0:4040347d719c | 449 | PAPWR_5_DRIVER, /**< 0x4: 5 Drivers */ |
Erman Komurcu |
0:4040347d719c | 450 | PAPWR_6_DRIVER, /**< 0x5: 6 Drivers */ |
Erman Komurcu |
0:4040347d719c | 451 | PAPWR_7_DRIVER, /**< 0x6: 7 Drivers */ |
Erman Komurcu |
0:4040347d719c | 452 | PAPWR_8_DRIVER, /**< 0x7: 8 Drivers */ |
Erman Komurcu |
0:4040347d719c | 453 | } papwr_t; |
Erman Komurcu |
0:4040347d719c | 454 | |
Erman Komurcu |
0:4040347d719c | 455 | /** |
Erman Komurcu |
0:4040347d719c | 456 | * @brief set PA output power by enabling parallel drivers |
Erman Komurcu |
0:4040347d719c | 457 | * |
Erman Komurcu |
0:4040347d719c | 458 | * @param[in] papwr number of parallel drivers |
Erman Komurcu |
0:4040347d719c | 459 | * |
Erman Komurcu |
0:4040347d719c | 460 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 461 | */ |
Erman Komurcu |
0:4040347d719c | 462 | int set_papwr(papwr_t papwr); |
Erman Komurcu |
0:4040347d719c | 463 | |
Erman Komurcu |
0:4040347d719c | 464 | /** |
Erman Komurcu |
0:4040347d719c | 465 | * @brief Gets PA output power |
Erman Komurcu |
0:4040347d719c | 466 | * |
Erman Komurcu |
0:4040347d719c | 467 | * @param[in] papwr number of parallel drivers |
Erman Komurcu |
0:4040347d719c | 468 | * |
Erman Komurcu |
0:4040347d719c | 469 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 470 | */ |
Erman Komurcu |
0:4040347d719c | 471 | int get_papwr(papwr_t* papwr); |
Erman Komurcu |
0:4040347d719c | 472 | |
Erman Komurcu |
0:4040347d719c | 473 | |
Erman Komurcu |
0:4040347d719c | 474 | /** |
Erman Komurcu |
0:4040347d719c | 475 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 476 | * |
Erman Komurcu |
0:4040347d719c | 477 | * @details |
Erman Komurcu |
0:4040347d719c | 478 | * - Register : PA2(0x07) |
Erman Komurcu |
0:4040347d719c | 479 | * - Bit Fields : [4:0] |
Erman Komurcu |
0:4040347d719c | 480 | * - Default : 0x00 |
Erman Komurcu |
0:4040347d719c | 481 | * - Description : Controls shunt capacitance on PA output in fF. |
Erman Komurcu |
0:4040347d719c | 482 | */ |
Erman Komurcu |
0:4040347d719c | 483 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 484 | PACAP_0_fF, |
Erman Komurcu |
0:4040347d719c | 485 | PACAP_175_fF, |
Erman Komurcu |
0:4040347d719c | 486 | PACAP_350_fF, |
Erman Komurcu |
0:4040347d719c | 487 | PACAP_525_fF, |
Erman Komurcu |
0:4040347d719c | 488 | PACAP_700_fF, |
Erman Komurcu |
0:4040347d719c | 489 | PACAP_875_fF, |
Erman Komurcu |
0:4040347d719c | 490 | PACAP_1050_fF, |
Erman Komurcu |
0:4040347d719c | 491 | PACAP_1225_fF, |
Erman Komurcu |
0:4040347d719c | 492 | PACAP_1400_fF, |
Erman Komurcu |
0:4040347d719c | 493 | PACAP_1575_fF, |
Erman Komurcu |
0:4040347d719c | 494 | PACAP_1750_fF, |
Erman Komurcu |
0:4040347d719c | 495 | PACAP_1925_fF, |
Erman Komurcu |
0:4040347d719c | 496 | PACAP_2100_fF, |
Erman Komurcu |
0:4040347d719c | 497 | PACAP_2275_fF, |
Erman Komurcu |
0:4040347d719c | 498 | PACAP_2450_fF, |
Erman Komurcu |
0:4040347d719c | 499 | PACAP_2625_fF, |
Erman Komurcu |
0:4040347d719c | 500 | PACAP_2800_fF, |
Erman Komurcu |
0:4040347d719c | 501 | PACAP_2975_fF, |
Erman Komurcu |
0:4040347d719c | 502 | PACAP_3150_fF, |
Erman Komurcu |
0:4040347d719c | 503 | PACAP_3325_fF, |
Erman Komurcu |
0:4040347d719c | 504 | PACAP_3500_fF, |
Erman Komurcu |
0:4040347d719c | 505 | PACAP_3675_fF, |
Erman Komurcu |
0:4040347d719c | 506 | PACAP_3850_fF, |
Erman Komurcu |
0:4040347d719c | 507 | PACAP_4025_fF, |
Erman Komurcu |
0:4040347d719c | 508 | PACAP_4200_fF, |
Erman Komurcu |
0:4040347d719c | 509 | PACAP_4375_fF, |
Erman Komurcu |
0:4040347d719c | 510 | PACAP_4550_fF, |
Erman Komurcu |
0:4040347d719c | 511 | PACAP_4725_fF, |
Erman Komurcu |
0:4040347d719c | 512 | PACAP_4900_fF, |
Erman Komurcu |
0:4040347d719c | 513 | PACAP_5075_fF, |
Erman Komurcu |
0:4040347d719c | 514 | PACAP_5250_fF, |
Erman Komurcu |
0:4040347d719c | 515 | PACAP_5425_fF, |
Erman Komurcu |
0:4040347d719c | 516 | } pacap_t; |
Erman Komurcu |
0:4040347d719c | 517 | |
Erman Komurcu |
0:4040347d719c | 518 | /** |
Erman Komurcu |
0:4040347d719c | 519 | * @brief set shunt capacitance value |
Erman Komurcu |
0:4040347d719c | 520 | * |
Erman Komurcu |
0:4040347d719c | 521 | * @param[in] pacap shunt capacitance value |
Erman Komurcu |
0:4040347d719c | 522 | * |
Erman Komurcu |
0:4040347d719c | 523 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 524 | */ |
Erman Komurcu |
0:4040347d719c | 525 | int set_pacap(pacap_t pacap); |
Erman Komurcu |
0:4040347d719c | 526 | |
Erman Komurcu |
0:4040347d719c | 527 | /** |
Erman Komurcu |
0:4040347d719c | 528 | * @brief Gets shunt capacitance value |
Erman Komurcu |
0:4040347d719c | 529 | * |
Erman Komurcu |
0:4040347d719c | 530 | * @param[in] pacap shunt capacitance value |
Erman Komurcu |
0:4040347d719c | 531 | * |
Erman Komurcu |
0:4040347d719c | 532 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 533 | */ |
Erman Komurcu |
0:4040347d719c | 534 | int get_pacap(pacap_t* pacap); |
Erman Komurcu |
0:4040347d719c | 535 | |
Erman Komurcu |
0:4040347d719c | 536 | /** |
Erman Komurcu |
0:4040347d719c | 537 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 538 | * |
Erman Komurcu |
0:4040347d719c | 539 | * @details |
Erman Komurcu |
0:4040347d719c | 540 | * - Register : PLL1(0x08) |
Erman Komurcu |
0:4040347d719c | 541 | * - Bit Fields : [7:6] |
Erman Komurcu |
0:4040347d719c | 542 | * -Default : 0x1 |
Erman Komurcu |
0:4040347d719c | 543 | * - Description : Sets the level of charge pump offset current |
Erman Komurcu |
0:4040347d719c | 544 | * for fractional N mode to improve close in |
Erman Komurcu |
0:4040347d719c | 545 | * phase noise. Set to 'DISABLED' for integer N mode. |
Erman Komurcu |
0:4040347d719c | 546 | */ |
Erman Komurcu |
0:4040347d719c | 547 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 548 | CPLIN_NO_EXTRA_CURRENT, /**< 0x0: No extra current */ |
Erman Komurcu |
0:4040347d719c | 549 | CPLIN_CHARGE_PUMP_CURRENT_5_PERCENT, /**< 0x1: 5% of charge pump current */ |
Erman Komurcu |
0:4040347d719c | 550 | CPLIN_CHARGE_PUMP_CURRENT_10_PERCENT, /**< 0x2: 10% of charge pump current */ |
Erman Komurcu |
0:4040347d719c | 551 | CPLIN_CHARGE_PUMP_CURRENT_15_PERCENT, /**< 0x3: 15% of charge pump current */ |
Erman Komurcu |
0:4040347d719c | 552 | } cplin_t; |
Erman Komurcu |
0:4040347d719c | 553 | |
Erman Komurcu |
0:4040347d719c | 554 | /** |
Erman Komurcu |
0:4040347d719c | 555 | * @brief set level of charge pump offset current |
Erman Komurcu |
0:4040347d719c | 556 | * |
Erman Komurcu |
0:4040347d719c | 557 | * @param[in] cplin percentage of charge pump current |
Erman Komurcu |
0:4040347d719c | 558 | * |
Erman Komurcu |
0:4040347d719c | 559 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 560 | */ |
Erman Komurcu |
0:4040347d719c | 561 | int set_cplin(cplin_t cplin); |
Erman Komurcu |
0:4040347d719c | 562 | |
Erman Komurcu |
0:4040347d719c | 563 | /** |
Erman Komurcu |
0:4040347d719c | 564 | * @brief Gets level of charge pump offset current |
Erman Komurcu |
0:4040347d719c | 565 | * |
Erman Komurcu |
0:4040347d719c | 566 | * @param[in] cplin percentage of charge pump current |
Erman Komurcu |
0:4040347d719c | 567 | * |
Erman Komurcu |
0:4040347d719c | 568 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 569 | */ |
Erman Komurcu |
0:4040347d719c | 570 | int get_cplin(cplin_t* cplin); |
Erman Komurcu |
0:4040347d719c | 571 | |
Erman Komurcu |
0:4040347d719c | 572 | |
Erman Komurcu |
0:4040347d719c | 573 | /** |
Erman Komurcu |
0:4040347d719c | 574 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 575 | * |
Erman Komurcu |
0:4040347d719c | 576 | * @details |
Erman Komurcu |
0:4040347d719c | 577 | * - Register : PLL1(0x08) |
Erman Komurcu |
0:4040347d719c | 578 | * - Bit Fields : [5] |
Erman Komurcu |
0:4040347d719c | 579 | * - Default : 0b1 |
Erman Komurcu |
0:4040347d719c | 580 | * - Description : Sets PLL between fractional-N and integer-N mode. |
Erman Komurcu |
0:4040347d719c | 581 | * |
Erman Komurcu |
0:4040347d719c | 582 | */ |
Erman Komurcu |
0:4040347d719c | 583 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 584 | FRACMODE_INTEGER_N, /**< 0x0: Integer N Mode */ |
Erman Komurcu |
0:4040347d719c | 585 | RACMODE_FRACTIONAL_N, /**< 0x1: Fractional N Mode */ |
Erman Komurcu |
0:4040347d719c | 586 | } fracmode_t; |
Erman Komurcu |
0:4040347d719c | 587 | |
Erman Komurcu |
0:4040347d719c | 588 | /** |
Erman Komurcu |
0:4040347d719c | 589 | * @brief set PLL mode |
Erman Komurcu |
0:4040347d719c | 590 | * |
Erman Komurcu |
0:4040347d719c | 591 | * @param[in] fracmode Integer N/Fractional N mode |
Erman Komurcu |
0:4040347d719c | 592 | * |
Erman Komurcu |
0:4040347d719c | 593 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 594 | */ |
Erman Komurcu |
0:4040347d719c | 595 | int set_fracmode(fracmode_t fracmode); |
Erman Komurcu |
0:4040347d719c | 596 | |
Erman Komurcu |
0:4040347d719c | 597 | /** |
Erman Komurcu |
0:4040347d719c | 598 | * @brief Gets PLL mode |
Erman Komurcu |
0:4040347d719c | 599 | * |
Erman Komurcu |
0:4040347d719c | 600 | * @param[in] fracmode Integer N/Fractional N mode |
Erman Komurcu |
0:4040347d719c | 601 | * |
Erman Komurcu |
0:4040347d719c | 602 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 603 | */ |
Erman Komurcu |
0:4040347d719c | 604 | int get_fracmode(fracmode_t* fracmode); |
Erman Komurcu |
0:4040347d719c | 605 | |
Erman Komurcu |
0:4040347d719c | 606 | /* Register Configuration |
Erman Komurcu |
0:4040347d719c | 607 | * |
Erman Komurcu |
0:4040347d719c | 608 | * @Register : PLL1(0x08) |
Erman Komurcu |
0:4040347d719c | 609 | * @Bit Fields : [2:1] |
Erman Komurcu |
0:4040347d719c | 610 | * @Default : 0x0 |
Erman Komurcu |
0:4040347d719c | 611 | * @Description : |
Erman Komurcu |
0:4040347d719c | 612 | */ |
Erman Komurcu |
0:4040347d719c | 613 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 614 | LODIV_DISABLED, /**< 0x0: Disabled */ |
Erman Komurcu |
0:4040347d719c | 615 | LODIV_DIVIDE_BY_4, /**< 0x1: LC VCO divided by 4 */ |
Erman Komurcu |
0:4040347d719c | 616 | LODIV_DIVIDE_BY_8, /**< 0x2: LC VCO divided by 8 */ |
Erman Komurcu |
0:4040347d719c | 617 | LODIV_DIVIDE_BY_12, /**< 0x3: LC VCO divided by 12 */ |
Erman Komurcu |
0:4040347d719c | 618 | } lodiv_t; |
Erman Komurcu |
0:4040347d719c | 619 | |
Erman Komurcu |
0:4040347d719c | 620 | /** |
Erman Komurcu |
0:4040347d719c | 621 | * @brief set divider of LC VCO |
Erman Komurcu |
0:4040347d719c | 622 | * |
Erman Komurcu |
0:4040347d719c | 623 | * @param[in] lodiv divider value |
Erman Komurcu |
0:4040347d719c | 624 | * |
Erman Komurcu |
0:4040347d719c | 625 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 626 | */ |
Erman Komurcu |
0:4040347d719c | 627 | int set_lodiv(lodiv_t lodiv); |
Erman Komurcu |
0:4040347d719c | 628 | |
Erman Komurcu |
0:4040347d719c | 629 | /** |
Erman Komurcu |
0:4040347d719c | 630 | * @brief Gets divider of LC VCO |
Erman Komurcu |
0:4040347d719c | 631 | * |
Erman Komurcu |
0:4040347d719c | 632 | * @param[in] lodiv divider value |
Erman Komurcu |
0:4040347d719c | 633 | * |
Erman Komurcu |
0:4040347d719c | 634 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 635 | */ |
Erman Komurcu |
0:4040347d719c | 636 | int get_lodiv(lodiv_t* lodiv); |
Erman Komurcu |
0:4040347d719c | 637 | |
Erman Komurcu |
0:4040347d719c | 638 | /** |
Erman Komurcu |
0:4040347d719c | 639 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 640 | * |
Erman Komurcu |
0:4040347d719c | 641 | * @details |
Erman Komurcu |
0:4040347d719c | 642 | * - Register : PLL1(0x08) |
Erman Komurcu |
0:4040347d719c | 643 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 644 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 645 | * - Description : Sets LO generation. For lower power, choose LOWCURRENT. |
Erman Komurcu |
0:4040347d719c | 646 | * For higher performance, choose LOWNOISE |
Erman Komurcu |
0:4040347d719c | 647 | */ |
Erman Komurcu |
0:4040347d719c | 648 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 649 | LOMODE_RING_OSCILLATOR, /**< 0x0: Ring Oscillator Mode */ |
Erman Komurcu |
0:4040347d719c | 650 | LOMODE_LC_VCO, /**< 0x1: LC VCO Mode */ |
Erman Komurcu |
0:4040347d719c | 651 | } lomode_t; |
Erman Komurcu |
0:4040347d719c | 652 | |
Erman Komurcu |
0:4040347d719c | 653 | /** |
Erman Komurcu |
0:4040347d719c | 654 | * @brief set LO generation |
Erman Komurcu |
0:4040347d719c | 655 | * |
Erman Komurcu |
0:4040347d719c | 656 | * @param[in] lomode selection of mode |
Erman Komurcu |
0:4040347d719c | 657 | * |
Erman Komurcu |
0:4040347d719c | 658 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 659 | */ |
Erman Komurcu |
0:4040347d719c | 660 | int set_lomode(lomode_t lomode); |
Erman Komurcu |
0:4040347d719c | 661 | |
Erman Komurcu |
0:4040347d719c | 662 | /** |
Erman Komurcu |
0:4040347d719c | 663 | * @brief Gets LO generation |
Erman Komurcu |
0:4040347d719c | 664 | * |
Erman Komurcu |
0:4040347d719c | 665 | * @param[in] lomode selection of mode |
Erman Komurcu |
0:4040347d719c | 666 | * |
Erman Komurcu |
0:4040347d719c | 667 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 668 | */ |
Erman Komurcu |
0:4040347d719c | 669 | int get_lomode(lomode_t* lomode); |
Erman Komurcu |
0:4040347d719c | 670 | |
Erman Komurcu |
0:4040347d719c | 671 | /** |
Erman Komurcu |
0:4040347d719c | 672 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 673 | * |
Erman Komurcu |
0:4040347d719c | 674 | * @details |
Erman Komurcu |
0:4040347d719c | 675 | * - Register : PLL2(0x09) |
Erman Komurcu |
0:4040347d719c | 676 | * - Bit Fields : [1:0] |
Erman Komurcu |
0:4040347d719c | 677 | * - Default : 0x0 |
Erman Komurcu |
0:4040347d719c | 678 | * - Description : Sets Charge Pump Current in microAmpere |
Erman Komurcu |
0:4040347d719c | 679 | * |
Erman Komurcu |
0:4040347d719c | 680 | */ |
Erman Komurcu |
0:4040347d719c | 681 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 682 | CPVAL_5_UA, /**< 0x0: 5µA */ |
Erman Komurcu |
0:4040347d719c | 683 | CPVAL_10_UA, /**< 0x1: 10µA */ |
Erman Komurcu |
0:4040347d719c | 684 | CPVAL_15_UA, /**< 0x2: 15µA */ |
Erman Komurcu |
0:4040347d719c | 685 | CPVAL_20_UA, /**< 0x3: 20µA */ |
Erman Komurcu |
0:4040347d719c | 686 | } cpval_t; |
Erman Komurcu |
0:4040347d719c | 687 | |
Erman Komurcu |
0:4040347d719c | 688 | /** |
Erman Komurcu |
0:4040347d719c | 689 | * @brief set charge pump current |
Erman Komurcu |
0:4040347d719c | 690 | * |
Erman Komurcu |
0:4040347d719c | 691 | * @param[in] cpval current value |
Erman Komurcu |
0:4040347d719c | 692 | * |
Erman Komurcu |
0:4040347d719c | 693 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 694 | */ |
Erman Komurcu |
0:4040347d719c | 695 | int set_cpval(cpval_t cpval); |
Erman Komurcu |
0:4040347d719c | 696 | |
Erman Komurcu |
0:4040347d719c | 697 | /** |
Erman Komurcu |
0:4040347d719c | 698 | * @brief Gets charge pump current |
Erman Komurcu |
0:4040347d719c | 699 | * |
Erman Komurcu |
0:4040347d719c | 700 | * @param[in] cpval current value |
Erman Komurcu |
0:4040347d719c | 701 | * |
Erman Komurcu |
0:4040347d719c | 702 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 703 | */ |
Erman Komurcu |
0:4040347d719c | 704 | int get_cpval(cpval_t* cpval); |
Erman Komurcu |
0:4040347d719c | 705 | |
Erman Komurcu |
0:4040347d719c | 706 | /** |
Erman Komurcu |
0:4040347d719c | 707 | * Register Configuration |
Erman Komurcu |
0:4040347d719c | 708 | * |
Erman Komurcu |
0:4040347d719c | 709 | * @details |
Erman Komurcu |
0:4040347d719c | 710 | * - Register : CFG6(0x0A) |
Erman Komurcu |
0:4040347d719c | 711 | * - Bit Fields : [2] |
Erman Komurcu |
0:4040347d719c | 712 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 713 | * - Description : Enables DATA transmission in I2C mode. Aliased address for I2C_TXEN1. |
Erman Komurcu |
0:4040347d719c | 714 | */ |
Erman Komurcu |
0:4040347d719c | 715 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 716 | I2C_TXEN1_DISABLE, /**< 0x0: Data transmission not enabled in I2C mode. */ |
Erman Komurcu |
0:4040347d719c | 717 | I2C_TXEN1_ENABLE, /**< 0x1: Data transmission enabled in I2C mode. */ |
Erman Komurcu |
0:4040347d719c | 718 | } i2c_txen1_t; |
Erman Komurcu |
0:4040347d719c | 719 | |
Erman Komurcu |
0:4040347d719c | 720 | |
Erman Komurcu |
0:4040347d719c | 721 | /** Register Configuration |
Erman Komurcu |
0:4040347d719c | 722 | * |
Erman Komurcu |
0:4040347d719c | 723 | * @details |
Erman Komurcu |
0:4040347d719c | 724 | * - Register : CFG6(0x0A) |
Erman Komurcu |
0:4040347d719c | 725 | * - Bit Fields : [1] |
Erman Komurcu |
0:4040347d719c | 726 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 727 | * - Description : Transmission enable. |
Erman Komurcu |
0:4040347d719c | 728 | */ |
Erman Komurcu |
0:4040347d719c | 729 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 730 | SPI_TXEN1_DISABLE, /**< 0x0: Transmission disabled. */ |
Erman Komurcu |
0:4040347d719c | 731 | SPI_TXEN1_ENABLE, /**< 0x1: Transmission enabled. */ |
Erman Komurcu |
0:4040347d719c | 732 | } spi_txen1_t; |
Erman Komurcu |
0:4040347d719c | 733 | |
Erman Komurcu |
0:4040347d719c | 734 | /** |
Erman Komurcu |
0:4040347d719c | 735 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 736 | * |
Erman Komurcu |
0:4040347d719c | 737 | * @details |
Erman Komurcu |
0:4040347d719c | 738 | * - Register : CFG6(0x0A) |
Erman Komurcu |
0:4040347d719c | 739 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 740 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 741 | * - Description : Four wire readback on CLKOUT pin mode. |
Erman Komurcu |
0:4040347d719c | 742 | * |
Erman Komurcu |
0:4040347d719c | 743 | */ |
Erman Komurcu |
0:4040347d719c | 744 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 745 | FOURWIRE1_READBACK_DISABLE, /**< 0x0: Four wire readback disabled. */ |
Erman Komurcu |
0:4040347d719c | 746 | FOURWIRE1_READBACK_ENABLE, /**< 0x1: Four wire readback enabled. */ |
Erman Komurcu |
0:4040347d719c | 747 | } fourwire1_t; |
Erman Komurcu |
0:4040347d719c | 748 | |
Erman Komurcu |
0:4040347d719c | 749 | |
Erman Komurcu |
0:4040347d719c | 750 | /** |
Erman Komurcu |
0:4040347d719c | 751 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 752 | * |
Erman Komurcu |
0:4040347d719c | 753 | * @details |
Erman Komurcu |
0:4040347d719c | 754 | * - Register : CFG7(0x10) |
Erman Komurcu |
0:4040347d719c | 755 | * - Bit Fields : [2] |
Erman Komurcu |
0:4040347d719c | 756 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 757 | * - Description : Enables DATA transmission in I2C mode. Aliased address for I2C_TXEN1 |
Erman Komurcu |
0:4040347d719c | 758 | */ |
Erman Komurcu |
0:4040347d719c | 759 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 760 | I2C_TXEN2_DISABLE, /**< 0x0: Data transmission not enabled in I2C mode. */ |
Erman Komurcu |
0:4040347d719c | 761 | I2C_TXEN2_ENABLE, /**< 0x1: Data transmission enabled in I2C mode. */ |
Erman Komurcu |
0:4040347d719c | 762 | } i2c_txen2_t; |
Erman Komurcu |
0:4040347d719c | 763 | |
Erman Komurcu |
0:4040347d719c | 764 | /** |
Erman Komurcu |
0:4040347d719c | 765 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 766 | * |
Erman Komurcu |
0:4040347d719c | 767 | * @details |
Erman Komurcu |
0:4040347d719c | 768 | * - Register : CFG7(0x10) |
Erman Komurcu |
0:4040347d719c | 769 | * - Bit Fields : [1] |
Erman Komurcu |
0:4040347d719c | 770 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 771 | * - Description : Transmission enable. |
Erman Komurcu |
0:4040347d719c | 772 | */ |
Erman Komurcu |
0:4040347d719c | 773 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 774 | SPI_TXEN2_DISABLE, /**< 0x0: Transmission disabled. */ |
Erman Komurcu |
0:4040347d719c | 775 | SPI_TXEN2_ENABLE, /**< 0x1: Transmission enabled. */ |
Erman Komurcu |
0:4040347d719c | 776 | } spi_txen2_t; |
Erman Komurcu |
0:4040347d719c | 777 | |
Erman Komurcu |
0:4040347d719c | 778 | |
Erman Komurcu |
0:4040347d719c | 779 | /** |
Erman Komurcu |
0:4040347d719c | 780 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 781 | * |
Erman Komurcu |
0:4040347d719c | 782 | * @details |
Erman Komurcu |
0:4040347d719c | 783 | * - Register : CFG7(0x10) |
Erman Komurcu |
0:4040347d719c | 784 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 785 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 786 | * - Description : Four wire readback on CLKOUT pin mode. Aliased address for FOURWIRE1 |
Erman Komurcu |
0:4040347d719c | 787 | */ |
Erman Komurcu |
0:4040347d719c | 788 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 789 | FOURWIRE2_READBACK_DISABLE, /**< 0x0: Four wire readback disabled. */ |
Erman Komurcu |
0:4040347d719c | 790 | FOURWIRE2_READBACK_ENABLE, /**< 0x1: Four wire readback enabled. */ |
Erman Komurcu |
0:4040347d719c | 791 | } fourwire2_t; |
Erman Komurcu |
0:4040347d719c | 792 | |
Erman Komurcu |
0:4040347d719c | 793 | |
Erman Komurcu |
0:4040347d719c | 794 | |
Erman Komurcu |
0:4040347d719c | 795 | /** |
Erman Komurcu |
0:4040347d719c | 796 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 797 | * |
Erman Komurcu |
0:4040347d719c | 798 | * @details |
Erman Komurcu |
0:4040347d719c | 799 | * - Register : I2C1(0x11) |
Erman Komurcu |
0:4040347d719c | 800 | * - Bit Fields : [7] |
Erman Komurcu |
0:4040347d719c | 801 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 802 | * - Description : Packet Length Mode |
Erman Komurcu |
0:4040347d719c | 803 | * |
Erman Komurcu |
0:4040347d719c | 804 | */ |
Erman Komurcu |
0:4040347d719c | 805 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 806 | PKTLEN_MODE_SET_LENGTH, /**< 0x0: PKTLEN[14:0] need not be programmed. FIFO underflow event will |
Erman Komurcu |
0:4040347d719c | 807 | be treated as end of packet event. For cases where actual packet length |
Erman Komurcu |
0:4040347d719c | 808 | is greater than 32767 bits, it is expected that the µC will pad |
Erman Komurcu |
0:4040347d719c | 809 | such a packet to make it an integral multiple of 8-bits */ |
Erman Komurcu |
0:4040347d719c | 810 | PKTLEN_MODE_NO_SET_LENGTH, /**< 0x1: PKTLEN[14:0] will provide the length of packet. Once FIFO is |
Erman Komurcu |
0:4040347d719c | 811 | read for PKTLEN[14:0] bits, or if FIFO underflow, MAX4146x will consider |
Erman Komurcu |
0:4040347d719c | 812 | that as an end of packet event. */ |
Erman Komurcu |
0:4040347d719c | 813 | } pktlen_mode_t; |
Erman Komurcu |
0:4040347d719c | 814 | |
Erman Komurcu |
0:4040347d719c | 815 | /** |
Erman Komurcu |
0:4040347d719c | 816 | * @brief set packet length |
Erman Komurcu |
0:4040347d719c | 817 | * |
Erman Komurcu |
0:4040347d719c | 818 | * @param[in] pktlen_mode packet length mode |
Erman Komurcu |
0:4040347d719c | 819 | * |
Erman Komurcu |
0:4040347d719c | 820 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 821 | */ |
Erman Komurcu |
0:4040347d719c | 822 | int set_pktlen_mode(pktlen_mode_t pktlen_mode); |
Erman Komurcu |
0:4040347d719c | 823 | |
Erman Komurcu |
0:4040347d719c | 824 | /** |
Erman Komurcu |
0:4040347d719c | 825 | * @brief Gets packet length |
Erman Komurcu |
0:4040347d719c | 826 | * |
Erman Komurcu |
0:4040347d719c | 827 | * @param[in] pktlen_mode packet length mode |
Erman Komurcu |
0:4040347d719c | 828 | * |
Erman Komurcu |
0:4040347d719c | 829 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 830 | */ |
Erman Komurcu |
0:4040347d719c | 831 | int get_pktlen_mode(pktlen_mode_t* pktlen_mode); |
Erman Komurcu |
0:4040347d719c | 832 | |
Erman Komurcu |
0:4040347d719c | 833 | |
Erman Komurcu |
0:4040347d719c | 834 | /** |
Erman Komurcu |
0:4040347d719c | 835 | * @brief Register Configuration |
Erman Komurcu |
0:4040347d719c | 836 | * |
Erman Komurcu |
0:4040347d719c | 837 | * @details |
Erman Komurcu |
0:4040347d719c | 838 | * - Register : CFG8(0x17) |
Erman Komurcu |
0:4040347d719c | 839 | * - Bit Fields : [0] |
Erman Komurcu |
0:4040347d719c | 840 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 841 | * - Description : Places DUT into software reset. |
Erman Komurcu |
0:4040347d719c | 842 | */ |
Erman Komurcu |
0:4040347d719c | 843 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 844 | SOFTRESET_DEASSERT, /**< 0x0: Deassert the reset */ |
Erman Komurcu |
0:4040347d719c | 845 | SOFTRESET_RESET, /**< 0x1: Resets the entire digital, until this bit is set to 0 */ |
Erman Komurcu |
0:4040347d719c | 846 | } softreset_t; |
Erman Komurcu |
0:4040347d719c | 847 | |
Erman Komurcu |
0:4040347d719c | 848 | /** |
Erman Komurcu |
0:4040347d719c | 849 | * @brief set softreset bit |
Erman Komurcu |
0:4040347d719c | 850 | * |
Erman Komurcu |
0:4040347d719c | 851 | * @param[in] softreset enable/disable |
Erman Komurcu |
0:4040347d719c | 852 | * |
Erman Komurcu |
0:4040347d719c | 853 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 854 | */ |
Erman Komurcu |
0:4040347d719c | 855 | int set_softreset(softreset_t softreset); |
Erman Komurcu |
0:4040347d719c | 856 | |
Erman Komurcu |
0:4040347d719c | 857 | /** |
Erman Komurcu |
0:4040347d719c | 858 | * @brief Operation state of the rf transmitter |
Erman Komurcu |
0:4040347d719c | 859 | * |
Erman Komurcu |
0:4040347d719c | 860 | * @details |
Erman Komurcu |
0:4040347d719c | 861 | * - Default : 0b0 |
Erman Komurcu |
0:4040347d719c | 862 | * - Description : Places DUT into software reset. |
Erman Komurcu |
0:4040347d719c | 863 | */ |
Erman Komurcu |
0:4040347d719c | 864 | typedef enum { |
Erman Komurcu |
0:4040347d719c | 865 | INITIALIZED = 0, |
Erman Komurcu |
0:4040347d719c | 866 | UNINITIALIZED = 1, |
Erman Komurcu |
0:4040347d719c | 867 | UNKNOWN = 2, |
Erman Komurcu |
0:4040347d719c | 868 | } operation_mode_t; |
Erman Komurcu |
0:4040347d719c | 869 | |
Erman Komurcu |
0:4040347d719c | 870 | |
Erman Komurcu |
0:4040347d719c | 871 | // Indicates whether initialization is successful |
Erman Komurcu |
0:4040347d719c | 872 | operation_mode_t operation_mode; |
Erman Komurcu |
0:4040347d719c | 873 | |
Erman Komurcu |
0:4040347d719c | 874 | /** |
Erman Komurcu |
0:4040347d719c | 875 | * @brief get fifo flags (I2C6) Read only |
Erman Komurcu |
0:4040347d719c | 876 | * |
Erman Komurcu |
0:4040347d719c | 877 | * @param[in] fifo_flags 8-bit fifo flags |
Erman Komurcu |
0:4040347d719c | 878 | * |
Erman Komurcu |
0:4040347d719c | 879 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 880 | */ |
Erman Komurcu |
0:4040347d719c | 881 | int get_fifo_flags(uint8_t *fifo_flags); |
Erman Komurcu |
0:4040347d719c | 882 | |
Erman Komurcu |
0:4040347d719c | 883 | /** |
Erman Komurcu |
0:4040347d719c | 884 | * @brief get pktcomplete bit field flags (I2C4) Read only |
Erman Komurcu |
0:4040347d719c | 885 | * |
Erman Komurcu |
0:4040347d719c | 886 | * @param[in] pktcomplete 0x0: Packet transmission is not completed |
Erman Komurcu |
0:4040347d719c | 887 | * 0x1: Packet transmission is completed |
Erman Komurcu |
0:4040347d719c | 888 | * |
Erman Komurcu |
0:4040347d719c | 889 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 890 | */ |
Erman Komurcu |
0:4040347d719c | 891 | int get_pktcomplete(uint8_t *pktcomplete); |
Erman Komurcu |
0:4040347d719c | 892 | |
Erman Komurcu |
0:4040347d719c | 893 | /** |
Erman Komurcu |
0:4040347d719c | 894 | * @brief get packet length of transmitted packet |
Erman Komurcu |
0:4040347d719c | 895 | * |
Erman Komurcu |
0:4040347d719c | 896 | * @param[in] pktlen Provides status information of bits transmitted for the current packet |
Erman Komurcu |
0:4040347d719c | 897 | * |
Erman Komurcu |
0:4040347d719c | 898 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 899 | */ |
Erman Komurcu |
0:4040347d719c | 900 | int get_tx_pktlen(uint16_t *pktlen); |
Erman Komurcu |
0:4040347d719c | 901 | |
Erman Komurcu |
0:4040347d719c | 902 | |
Erman Komurcu |
0:4040347d719c | 903 | /* PUBLIC FUNCTION DECLARATIONS */ |
Erman Komurcu |
0:4040347d719c | 904 | |
Erman Komurcu |
0:4040347d719c | 905 | /** |
Erman Komurcu |
0:4040347d719c | 906 | * @brief Read from a register. |
Erman Komurcu |
0:4040347d719c | 907 | * |
Erman Komurcu |
0:4040347d719c | 908 | * @param[in] reg Address of a register to be read. |
Erman Komurcu |
0:4040347d719c | 909 | * @param[out] value Pointer to save result value. |
Erman Komurcu |
0:4040347d719c | 910 | * @param[in] len Size of result to be read. |
Erman Komurcu |
0:4040347d719c | 911 | * |
Erman Komurcu |
0:4040347d719c | 912 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 913 | */ |
Erman Komurcu |
0:4040347d719c | 914 | int read_register(uint8_t reg, uint8_t *value, uint8_t len); |
Erman Komurcu |
0:4040347d719c | 915 | |
Erman Komurcu |
0:4040347d719c | 916 | /** |
Erman Komurcu |
0:4040347d719c | 917 | * @brief Write to a register. |
Erman Komurcu |
0:4040347d719c | 918 | * |
Erman Komurcu |
0:4040347d719c | 919 | * @param[in] reg Address of a register to be written. |
Erman Komurcu |
0:4040347d719c | 920 | * @param[out] value Pointer of value to be written to register. |
Erman Komurcu |
0:4040347d719c | 921 | * @param[in] len Size of result to be written. |
Erman Komurcu |
0:4040347d719c | 922 | * |
Erman Komurcu |
0:4040347d719c | 923 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 924 | */ |
Erman Komurcu |
0:4040347d719c | 925 | int write_register(uint8_t reg, const uint8_t *value, uint8_t len); |
Erman Komurcu |
0:4040347d719c | 926 | |
Erman Komurcu |
0:4040347d719c | 927 | /** |
Erman Komurcu |
0:4040347d719c | 928 | * @brief Initial programming steps after power on or soft reset. |
Erman Komurcu |
0:4040347d719c | 929 | * |
Erman Komurcu |
0:4040347d719c | 930 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 931 | */ |
Erman Komurcu |
0:4040347d719c | 932 | int initial_programming(void); |
Erman Komurcu |
0:4040347d719c | 933 | |
Erman Komurcu |
0:4040347d719c | 934 | /** |
Erman Komurcu |
0:4040347d719c | 935 | * @brief Set Baud clock predivision ratio |
Erman Komurcu |
0:4040347d719c | 936 | * |
Erman Komurcu |
0:4040347d719c | 937 | * @param[in] prediv values between 3 and 255 |
Erman Komurcu |
0:4040347d719c | 938 | * |
Erman Komurcu |
0:4040347d719c | 939 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 940 | */ |
Erman Komurcu |
0:4040347d719c | 941 | int set_bclk_prediv(uint8_t prediv); |
Erman Komurcu |
0:4040347d719c | 942 | |
Erman Komurcu |
0:4040347d719c | 943 | /** |
Erman Komurcu |
0:4040347d719c | 944 | * @brief Gets Baud clock predivision ratio |
Erman Komurcu |
0:4040347d719c | 945 | * |
Erman Komurcu |
0:4040347d719c | 946 | * @param[in] prediv values between 3 and 255 |
Erman Komurcu |
0:4040347d719c | 947 | * |
Erman Komurcu |
0:4040347d719c | 948 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 949 | */ |
Erman Komurcu |
0:4040347d719c | 950 | int get_bclk_prediv(uint8_t* prediv); |
Erman Komurcu |
0:4040347d719c | 951 | |
Erman Komurcu |
0:4040347d719c | 952 | /** |
Erman Komurcu |
0:4040347d719c | 953 | * @brief Controls GFSK shaping |
Erman Komurcu |
0:4040347d719c | 954 | * |
Erman Komurcu |
0:4040347d719c | 955 | * @param[in] tstep values between 0 and 31 |
Erman Komurcu |
0:4040347d719c | 956 | * |
Erman Komurcu |
0:4040347d719c | 957 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 958 | */ |
Erman Komurcu |
0:4040347d719c | 959 | int set_tstep(uint8_t tstep); |
Erman Komurcu |
0:4040347d719c | 960 | |
Erman Komurcu |
0:4040347d719c | 961 | /** |
Erman Komurcu |
0:4040347d719c | 962 | * @brief Gets tstep |
Erman Komurcu |
0:4040347d719c | 963 | * |
Erman Komurcu |
0:4040347d719c | 964 | * @param[in] tstep values between 0 and 31 |
Erman Komurcu |
0:4040347d719c | 965 | * |
Erman Komurcu |
0:4040347d719c | 966 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 967 | */ |
Erman Komurcu |
0:4040347d719c | 968 | int get_tstep(uint8_t* tstep); |
Erman Komurcu |
0:4040347d719c | 969 | |
Erman Komurcu |
0:4040347d719c | 970 | /** |
Erman Komurcu |
0:4040347d719c | 971 | * @brief Set PLL frequency |
Erman Komurcu |
0:4040347d719c | 972 | * |
Erman Komurcu |
0:4040347d719c | 973 | * @param[in] freq FREQ value to PLL between 0x00 and 0xFFFFFF |
Erman Komurcu |
0:4040347d719c | 974 | * |
Erman Komurcu |
0:4040347d719c | 975 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 976 | * |
Erman Komurcu |
0:4040347d719c | 977 | * @description LO frequency = FREQ<23:0>/2^16*fXTAL |
Erman Komurcu |
0:4040347d719c | 978 | */ |
Erman Komurcu |
0:4040347d719c | 979 | int set_frequency(uint32_t freq); |
Erman Komurcu |
0:4040347d719c | 980 | |
Erman Komurcu |
0:4040347d719c | 981 | /** |
Erman Komurcu |
0:4040347d719c | 982 | * @brief Gets PLL frequency |
Erman Komurcu |
0:4040347d719c | 983 | * |
Erman Komurcu |
0:4040347d719c | 984 | * @param[in] freq FREQ value to PLL between 0x00 and 0xFFFFFF |
Erman Komurcu |
0:4040347d719c | 985 | * |
Erman Komurcu |
0:4040347d719c | 986 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 987 | * |
Erman Komurcu |
0:4040347d719c | 988 | * @description LO frequency = FREQ<23:0>/2^16*fXTAL |
Erman Komurcu |
0:4040347d719c | 989 | */ |
Erman Komurcu |
0:4040347d719c | 990 | int get_frequency(uint32_t* freq); |
Erman Komurcu |
0:4040347d719c | 991 | |
Erman Komurcu |
0:4040347d719c | 992 | /** |
Erman Komurcu |
0:4040347d719c | 993 | * @brief Set frequency deviation from the space frequency for the mark frequency |
Erman Komurcu |
0:4040347d719c | 994 | * |
Erman Komurcu |
0:4040347d719c | 995 | * @param[in] deltaf frequency deviation value |
Erman Komurcu |
0:4040347d719c | 996 | * |
Erman Komurcu |
0:4040347d719c | 997 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 998 | * |
Erman Komurcu |
0:4040347d719c | 999 | * @description fDELTA = DELTAF[6:0]* fXTAL/8192 |
Erman Komurcu |
0:4040347d719c | 1000 | */ |
Erman Komurcu |
0:4040347d719c | 1001 | int set_deltaf(uint8_t deltaf); |
Erman Komurcu |
0:4040347d719c | 1002 | |
Erman Komurcu |
0:4040347d719c | 1003 | /** |
Erman Komurcu |
0:4040347d719c | 1004 | * @brief Get frequency deviation from the space frequency for the mark frequency |
Erman Komurcu |
0:4040347d719c | 1005 | * |
Erman Komurcu |
0:4040347d719c | 1006 | * @param[in] deltaf frequency deviation value |
Erman Komurcu |
0:4040347d719c | 1007 | * |
Erman Komurcu |
0:4040347d719c | 1008 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1009 | * |
Erman Komurcu |
0:4040347d719c | 1010 | * @description fDELTA = DELTAF[6:0]* fXTAL/8192 |
Erman Komurcu |
0:4040347d719c | 1011 | */ |
Erman Komurcu |
0:4040347d719c | 1012 | int get_deltaf(uint8_t* deltaf); |
Erman Komurcu |
0:4040347d719c | 1013 | |
Erman Komurcu |
0:4040347d719c | 1014 | /** |
Erman Komurcu |
0:4040347d719c | 1015 | * @brief Set frequency deviation from the space frequency for the mark frequency |
Erman Komurcu |
0:4040347d719c | 1016 | * |
Erman Komurcu |
0:4040347d719c | 1017 | * @param[in] deltaf_shape frequency deviation value |
Erman Komurcu |
0:4040347d719c | 1018 | * |
Erman Komurcu |
0:4040347d719c | 1019 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1020 | * |
Erman Komurcu |
0:4040347d719c | 1021 | * @description fDELTA = DELTAF_SHAPE[3:0]* fXTAL/81920 |
Erman Komurcu |
0:4040347d719c | 1022 | */ |
Erman Komurcu |
0:4040347d719c | 1023 | int set_deltaf_shape(uint8_t deltaf_shape); |
Erman Komurcu |
0:4040347d719c | 1024 | |
Erman Komurcu |
0:4040347d719c | 1025 | /** |
Erman Komurcu |
0:4040347d719c | 1026 | * @brief Gets frequency deviation from the space frequency for the mark frequency |
Erman Komurcu |
0:4040347d719c | 1027 | * |
Erman Komurcu |
0:4040347d719c | 1028 | * @param[in] deltaf_shape frequency deviation value |
Erman Komurcu |
0:4040347d719c | 1029 | * |
Erman Komurcu |
0:4040347d719c | 1030 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1031 | * |
Erman Komurcu |
0:4040347d719c | 1032 | * @description fDELTA = DELTAF_SHAPE[3:0]* fXTAL/81920 |
Erman Komurcu |
0:4040347d719c | 1033 | */ |
Erman Komurcu |
0:4040347d719c | 1034 | int get_deltaf_shape(uint8_t* deltaf_shape); |
Erman Komurcu |
0:4040347d719c | 1035 | |
Erman Komurcu |
0:4040347d719c | 1036 | /** |
Erman Komurcu |
0:4040347d719c | 1037 | * @brief Set Packet Length for I2C communication |
Erman Komurcu |
0:4040347d719c | 1038 | * |
Erman Komurcu |
0:4040347d719c | 1039 | * @param[in] pktlen values between 0x00 and 0x7FF |
Erman Komurcu |
0:4040347d719c | 1040 | * |
Erman Komurcu |
0:4040347d719c | 1041 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1042 | */ |
Erman Komurcu |
0:4040347d719c | 1043 | int set_i2c_pktlen(uint16_t pktlen); |
Erman Komurcu |
0:4040347d719c | 1044 | |
Erman Komurcu |
0:4040347d719c | 1045 | /** |
Erman Komurcu |
0:4040347d719c | 1046 | * @brief Gets Packet Length for I2C communication |
Erman Komurcu |
0:4040347d719c | 1047 | * |
Erman Komurcu |
0:4040347d719c | 1048 | * @param[in] pktlen values between 0x00 and 0x7FF |
Erman Komurcu |
0:4040347d719c | 1049 | * |
Erman Komurcu |
0:4040347d719c | 1050 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1051 | */ |
Erman Komurcu |
0:4040347d719c | 1052 | int get_i2c_pktlen(uint16_t* pktlen); |
Erman Komurcu |
0:4040347d719c | 1053 | |
Erman Komurcu |
0:4040347d719c | 1054 | /** |
Erman Komurcu |
0:4040347d719c | 1055 | * @brief Adjust baud rate |
Erman Komurcu |
0:4040347d719c | 1056 | * |
Erman Komurcu |
0:4040347d719c | 1057 | * @param[in] baud_rate preferred baud rate |
Erman Komurcu |
0:4040347d719c | 1058 | * |
Erman Komurcu |
0:4040347d719c | 1059 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1060 | * |
Erman Komurcu |
0:4040347d719c | 1061 | * @description It changes only the values of BCLK_PREDIV and BCLK_POSTDIV |
Erman Komurcu |
0:4040347d719c | 1062 | * Baud_rate = f_clk/((1+BCLK_PREDIV)x2^(1+BCLK_POSTDIV)) |
Erman Komurcu |
0:4040347d719c | 1063 | * where f_clk = f_xtal/XOCLKDIV_ratio |
Erman Komurcu |
0:4040347d719c | 1064 | * Note that to maintain the internal 3.2MHz time base, |
Erman Komurcu |
0:4040347d719c | 1065 | * XOCLKDIV[1:0] (register CFG1, 0x00, bit 4) must be programmed, |
Erman Komurcu |
0:4040347d719c | 1066 | * based on the crystal frequency |
Erman Komurcu |
0:4040347d719c | 1067 | */ |
Erman Komurcu |
0:4040347d719c | 1068 | int adjust_baudrate(float rate); |
Erman Komurcu |
0:4040347d719c | 1069 | |
Erman Komurcu |
0:4040347d719c | 1070 | /** |
Erman Komurcu |
0:4040347d719c | 1071 | * @brief Gets baud rate |
Erman Komurcu |
0:4040347d719c | 1072 | * |
Erman Komurcu |
0:4040347d719c | 1073 | * @returns baud rate. |
Erman Komurcu |
0:4040347d719c | 1074 | * |
Erman Komurcu |
0:4040347d719c | 1075 | */ |
Erman Komurcu |
0:4040347d719c | 1076 | float get_baudrate(); |
Erman Komurcu |
0:4040347d719c | 1077 | |
Erman Komurcu |
0:4040347d719c | 1078 | /** |
Erman Komurcu |
0:4040347d719c | 1079 | * @brief Adjust Manchester Bitrate |
Erman Komurcu |
0:4040347d719c | 1080 | * |
Erman Komurcu |
0:4040347d719c | 1081 | * @param[in] data_rate preferred data rate in (1-50)kbps |
Erman Komurcu |
0:4040347d719c | 1082 | * |
Erman Komurcu |
0:4040347d719c | 1083 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1084 | */ |
Erman Komurcu |
0:4040347d719c | 1085 | int adjust_manchester_bitrate(char rate); |
Erman Komurcu |
0:4040347d719c | 1086 | |
Erman Komurcu |
0:4040347d719c | 1087 | /** |
Erman Komurcu |
0:4040347d719c | 1088 | * @brief Get Manchester Bitrate |
Erman Komurcu |
0:4040347d719c | 1089 | * |
Erman Komurcu |
0:4040347d719c | 1090 | * @returns data rate in (1-50)kbps |
Erman Komurcu |
0:4040347d719c | 1091 | */ |
Erman Komurcu |
0:4040347d719c | 1092 | char get_manchester_bitrate(); |
Erman Komurcu |
0:4040347d719c | 1093 | |
Erman Komurcu |
0:4040347d719c | 1094 | /** |
Erman Komurcu |
0:4040347d719c | 1095 | * @brief Configures the crystal frequency of the chip (Fxtal) |
Erman Komurcu |
0:4040347d719c | 1096 | * |
Erman Komurcu |
0:4040347d719c | 1097 | * @param[in] freq crystal frequency values between 12.8 MHz and 19.2 MHz |
Erman Komurcu |
0:4040347d719c | 1098 | * |
Erman Komurcu |
0:4040347d719c | 1099 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1100 | */ |
Erman Komurcu |
0:4040347d719c | 1101 | int set_crystal_frequency(float freq); |
Erman Komurcu |
0:4040347d719c | 1102 | |
Erman Komurcu |
0:4040347d719c | 1103 | /** |
Erman Komurcu |
0:4040347d719c | 1104 | * @brief Get the crystal frequency of the chip (Fxtal) |
Erman Komurcu |
0:4040347d719c | 1105 | * |
Erman Komurcu |
0:4040347d719c | 1106 | * @returns crystal frequency values between 12.8 MHz and 19.2 MHz |
Erman Komurcu |
0:4040347d719c | 1107 | */ |
Erman Komurcu |
0:4040347d719c | 1108 | float get_crystal_frequency(); |
Erman Komurcu |
0:4040347d719c | 1109 | |
Erman Komurcu |
0:4040347d719c | 1110 | /** |
Erman Komurcu |
0:4040347d719c | 1111 | * @brief Adjust center/carrier frequency of the chip |
Erman Komurcu |
0:4040347d719c | 1112 | * |
Erman Komurcu |
0:4040347d719c | 1113 | * @param[in] freq center/carrier frequency value between 250 MHz and 950 MHz |
Erman Komurcu |
0:4040347d719c | 1114 | * |
Erman Komurcu |
0:4040347d719c | 1115 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1116 | */ |
Erman Komurcu |
0:4040347d719c | 1117 | int set_center_frequency(float freq); |
Erman Komurcu |
0:4040347d719c | 1118 | |
Erman Komurcu |
0:4040347d719c | 1119 | /** |
Erman Komurcu |
0:4040347d719c | 1120 | * @brief Gets center/carrier frequency of the chip |
Erman Komurcu |
0:4040347d719c | 1121 | * |
Erman Komurcu |
0:4040347d719c | 1122 | * @returns center/carrier frequency value between 250 MHz and 950 MHz |
Erman Komurcu |
0:4040347d719c | 1123 | */ |
Erman Komurcu |
0:4040347d719c | 1124 | float get_center_frequency(); |
Erman Komurcu |
0:4040347d719c | 1125 | |
Erman Komurcu |
0:4040347d719c | 1126 | /** |
Erman Komurcu |
0:4040347d719c | 1127 | * @brief set the FSK deviation values (Delta_f) |
Erman Komurcu |
0:4040347d719c | 1128 | * |
Erman Komurcu |
0:4040347d719c | 1129 | * @param[in] deviation deviation value in in kHz baud rate |
Erman Komurcu |
0:4040347d719c | 1130 | * |
Erman Komurcu |
0:4040347d719c | 1131 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1132 | * |
Erman Komurcu |
0:4040347d719c | 1133 | * @description The mark frequency is defined by the space frequency |
Erman Komurcu |
0:4040347d719c | 1134 | * plus a frequency deviation. If frequency shaping is |
Erman Komurcu |
0:4040347d719c | 1135 | * disabled by setting FSKSHAPE = 0 (register CFG1, bit 2), |
Erman Komurcu |
0:4040347d719c | 1136 | * the frequency deviation is defined by DELTAF[6:0] |
Erman Komurcu |
0:4040347d719c | 1137 | * (register PLL6, bits 6:0). |
Erman Komurcu |
0:4040347d719c | 1138 | * DELTAF[6 : 0] = (Delta_f * 8192)f_xtal |
Erman Komurcu |
0:4040347d719c | 1139 | * If frequency shaping is enabled by setting FSKSHAPE = 1 |
Erman Komurcu |
0:4040347d719c | 1140 | * (register CFG1, bit 2), the frequency deviation is defined |
Erman Komurcu |
0:4040347d719c | 1141 | * by DETLAF_SHAPE[3:0] (register PLL7, bits 3:0). |
Erman Komurcu |
0:4040347d719c | 1142 | * DELTAF_SHAPE[3 : 0] = (Delta_f * 8192)/(f_xtal * 10) |
Erman Komurcu |
0:4040347d719c | 1143 | */ |
Erman Komurcu |
0:4040347d719c | 1144 | int adjust_frequency_deviation(float deviation); |
Erman Komurcu |
0:4040347d719c | 1145 | |
Erman Komurcu |
0:4040347d719c | 1146 | /** |
Erman Komurcu |
0:4040347d719c | 1147 | * @brief Send data for selected Preset/I2C/SPI mode |
Erman Komurcu |
0:4040347d719c | 1148 | * |
Erman Komurcu |
0:4040347d719c | 1149 | * @param[in] data data pointer for data to be transferred |
Erman Komurcu |
0:4040347d719c | 1150 | * @param[in] length legth of data to be transferred |
Erman Komurcu |
0:4040347d719c | 1151 | * |
Erman Komurcu |
0:4040347d719c | 1152 | * @returns 0 on success, negative error code on failure. |
Erman Komurcu |
0:4040347d719c | 1153 | */ |
Erman Komurcu |
0:4040347d719c | 1154 | int send_data(uint8_t *data, uint32_t length); |
Erman Komurcu |
0:4040347d719c | 1155 | }; |
Erman Komurcu |
0:4040347d719c | 1156 | |
Erman Komurcu |
0:4040347d719c | 1157 | |
Erman Komurcu |
0:4040347d719c | 1158 | /** MAX41460 Device Class |
Erman Komurcu |
0:4040347d719c | 1159 | * |
Erman Komurcu |
0:4040347d719c | 1160 | * Hold configurations for the MAX41460 |
Erman Komurcu |
0:4040347d719c | 1161 | */ |
Erman Komurcu |
0:4040347d719c | 1162 | class MAX41460 : public MAX4146X <max41460_reg_map_t> |
Erman Komurcu |
0:4040347d719c | 1163 | { |
Erman Komurcu |
0:4040347d719c | 1164 | max41460_reg_map_t regmap; |
Erman Komurcu |
0:4040347d719c | 1165 | public: |
Erman Komurcu |
0:4040347d719c | 1166 | MAX41460(SPI *spi, DigitalOut *cs) : MAX4146X<max41460_reg_map_t>(®map, spi, cs) {} |
Erman Komurcu |
0:4040347d719c | 1167 | |
Erman Komurcu |
0:4040347d719c | 1168 | MAX41460(SPI *spi) : MAX4146X<max41460_reg_map_t>(®map, spi) {} |
Erman Komurcu |
0:4040347d719c | 1169 | |
Erman Komurcu |
0:4040347d719c | 1170 | MAX41460(DigitalOut *cs) : MAX4146X(cs) {} |
Erman Komurcu |
0:4040347d719c | 1171 | |
Erman Komurcu |
0:4040347d719c | 1172 | }; |
Erman Komurcu |
0:4040347d719c | 1173 | |
Erman Komurcu |
0:4040347d719c | 1174 | /** MAX41461 Device Class |
Erman Komurcu |
0:4040347d719c | 1175 | * |
Erman Komurcu |
0:4040347d719c | 1176 | * Hold configurations for the MAX41461 |
Erman Komurcu |
0:4040347d719c | 1177 | */ |
Erman Komurcu |
0:4040347d719c | 1178 | class MAX41461 : public MAX4146X <max41461_2_reg_map_t> |
Erman Komurcu |
0:4040347d719c | 1179 | { |
Erman Komurcu |
0:4040347d719c | 1180 | max41461_2_reg_map_t regmap; |
Erman Komurcu |
0:4040347d719c | 1181 | public: |
Erman Komurcu |
0:4040347d719c | 1182 | MAX41461(I2C *i2c) : MAX4146X<max41461_2_reg_map_t>(®map, i2c) {} |
Erman Komurcu |
0:4040347d719c | 1183 | |
Erman Komurcu |
0:4040347d719c | 1184 | MAX41461(DigitalOut *cs) : MAX4146X(cs) {} |
Erman Komurcu |
0:4040347d719c | 1185 | }; |
Erman Komurcu |
0:4040347d719c | 1186 | |
Erman Komurcu |
0:4040347d719c | 1187 | /** MAX41462 Device Class |
Erman Komurcu |
0:4040347d719c | 1188 | * |
Erman Komurcu |
0:4040347d719c | 1189 | * Hold configurations for the MAX41462 |
Erman Komurcu |
0:4040347d719c | 1190 | */ |
Erman Komurcu |
0:4040347d719c | 1191 | class MAX41462 : public MAX41461 |
Erman Komurcu |
0:4040347d719c | 1192 | { |
Erman Komurcu |
0:4040347d719c | 1193 | public: |
Erman Komurcu |
0:4040347d719c | 1194 | MAX41462(I2C *i2c) : MAX41461(i2c) {} |
Erman Komurcu |
0:4040347d719c | 1195 | |
Erman Komurcu |
0:4040347d719c | 1196 | MAX41462(DigitalOut *cs) : MAX41461(cs) {} |
Erman Komurcu |
0:4040347d719c | 1197 | |
Erman Komurcu |
0:4040347d719c | 1198 | }; |
Erman Komurcu |
0:4040347d719c | 1199 | |
Erman Komurcu |
0:4040347d719c | 1200 | /** MAX41463 Device Class |
Erman Komurcu |
0:4040347d719c | 1201 | * |
Erman Komurcu |
0:4040347d719c | 1202 | * Hold configurations for the MAX41463 |
Erman Komurcu |
0:4040347d719c | 1203 | */ |
Erman Komurcu |
0:4040347d719c | 1204 | class MAX41463 : public MAX4146X <max41463_4_reg_map_t> |
Erman Komurcu |
0:4040347d719c | 1205 | { |
Erman Komurcu |
0:4040347d719c | 1206 | max41463_4_reg_map_t regmap; |
Erman Komurcu |
0:4040347d719c | 1207 | public: |
Erman Komurcu |
0:4040347d719c | 1208 | MAX41463(I2C *i2c) : MAX4146X<max41463_4_reg_map_t>(®map, i2c) {} |
Erman Komurcu |
0:4040347d719c | 1209 | |
Erman Komurcu |
0:4040347d719c | 1210 | MAX41463(DigitalOut *cs) : MAX4146X(cs) {} |
Erman Komurcu |
0:4040347d719c | 1211 | |
Erman Komurcu |
0:4040347d719c | 1212 | }; |
Erman Komurcu |
0:4040347d719c | 1213 | |
Erman Komurcu |
0:4040347d719c | 1214 | /** MAX41464 Device Class |
Erman Komurcu |
0:4040347d719c | 1215 | * |
Erman Komurcu |
0:4040347d719c | 1216 | * Hold configurations for the MAX41464 |
Erman Komurcu |
0:4040347d719c | 1217 | */ |
Erman Komurcu |
0:4040347d719c | 1218 | class MAX41464 : public MAX41463 |
Erman Komurcu |
0:4040347d719c | 1219 | { |
Erman Komurcu |
0:4040347d719c | 1220 | public: |
Erman Komurcu |
0:4040347d719c | 1221 | MAX41464(I2C *i2c) : MAX41463(i2c) {} |
Erman Komurcu |
0:4040347d719c | 1222 | |
Erman Komurcu |
0:4040347d719c | 1223 | MAX41464(DigitalOut *cs) : MAX41463(cs) {} |
Erman Komurcu |
0:4040347d719c | 1224 | |
Erman Komurcu |
0:4040347d719c | 1225 | }; |
Erman Komurcu |
0:4040347d719c | 1226 | |
Erman Komurcu |
0:4040347d719c | 1227 | |
Erman Komurcu |
0:4040347d719c | 1228 | #endif /* MAX4146x_H_ */ |