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