ISM RF transmitter library for MAX4146X family devices
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_ */ |