ISM RF transmitter library for MAX4146X family devices

Library for MAX41460, MAX41461, MAX41462, MAX41463, MAX41464 RF Transmitter ICs.

Committer:
Ibrahim Tilki
Date:
Thu Jan 13 13:27:54 2022 +0300
Revision:
2:80969d8f6d2b
Parent:
1:ccf0e1d28860
change crystal freq range, remove unused block from send_data

Who changed what in which revision?

UserRevisionLine numberNew 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 MAX41460_REGS_H_
Erman Komurcu 0:4040347d719c 37 #define MAX41460_REGS_H_
Erman Komurcu 0:4040347d719c 38
Erman Komurcu 0:4040347d719c 39 /**
Erman Komurcu 0:4040347d719c 40 * @brief CFG1 (0x00)
Erman Komurcu 0:4040347d719c 41 *
Erman Komurcu 0:4040347d719c 42 */
Erman Komurcu 0:4040347d719c 43 typedef union {
Erman Komurcu 0:4040347d719c 44 unsigned char raw;
Erman Komurcu 0:4040347d719c 45 struct {
Erman Komurcu 0:4040347d719c 46 unsigned char modmode : 1; /**< Configures modulator mode */
Erman Komurcu 0:4040347d719c 47 unsigned char sync : 1; /**< Controls if clock output acts as an input.
Erman Komurcu 0:4040347d719c 48  When an input, it will sample the DATA pin. */
Erman Komurcu 0:4040347d719c 49 unsigned char fskshape : 1; /**< Sets the state of FSK Gaussian Shaping */
Erman Komurcu 0:4040347d719c 50 unsigned char : 1;
Erman Komurcu 0:4040347d719c 51 unsigned char xoclkdiv : 2; /**< XO clock division ratio for digital block */
Erman Komurcu 0:4040347d719c 52 unsigned char xoclkdelay : 2; /**< Start delay before enabling XO clock to digital block */
Erman Komurcu 0:4040347d719c 53 } bits;
Erman Komurcu 0:4040347d719c 54 } max41460_reg_cfg1_t;
Erman Komurcu 0:4040347d719c 55
Erman Komurcu 0:4040347d719c 56 /**
Erman Komurcu 0:4040347d719c 57 * @brief CFG2 (0x01)
Erman Komurcu 0:4040347d719c 58 *
Erman Komurcu 0:4040347d719c 59 */
Erman Komurcu 0:4040347d719c 60 typedef union {
Erman Komurcu 0:4040347d719c 61 unsigned char raw;
Erman Komurcu 0:4040347d719c 62 struct {
Erman Komurcu 0:4040347d719c 63 unsigned char bclk_postdiv : 3; /**< Select the Baud Clock Post Division Ratio.
Erman Komurcu 0:4040347d719c 64 Valid values are from 1 to 5. */
Erman Komurcu 0:4040347d719c 65 unsigned char : 3;
Erman Komurcu 0:4040347d719c 66 unsigned char clkout_delay : 2; /**< Selects the delay when CLKOUT starts toggling upon
Erman Komurcu 0:4040347d719c 67 exiting SHUTDOWN mode, in divided XO clock cycles */
Erman Komurcu 0:4040347d719c 68 } bits;
Erman Komurcu 0:4040347d719c 69 } max41460_reg_cfg2_t;
Erman Komurcu 0:4040347d719c 70
Erman Komurcu 0:4040347d719c 71 /**
Erman Komurcu 0:4040347d719c 72 * @brief CFG3 (0x02)
Erman Komurcu 0:4040347d719c 73 *
Erman Komurcu 0:4040347d719c 74 */
Erman Komurcu 0:4040347d719c 75 typedef union {
Erman Komurcu 0:4040347d719c 76 unsigned char raw;
Erman Komurcu 0:4040347d719c 77 struct {
Erman Komurcu 0:4040347d719c 78 unsigned char bclk_prediv : 8;
Erman Komurcu 0:4040347d719c 79 } bits;
Erman Komurcu 0:4040347d719c 80 } max41460_reg_cfg3_t;
Erman Komurcu 0:4040347d719c 81
Erman Komurcu 0:4040347d719c 82 /**
Erman Komurcu 0:4040347d719c 83 * @brief CFG4 (0x03)
Erman Komurcu 0:4040347d719c 84 *
Erman Komurcu 0:4040347d719c 85 */
Erman Komurcu 0:4040347d719c 86 typedef union {
Erman Komurcu 0:4040347d719c 87 unsigned char raw;
Erman Komurcu 0:4040347d719c 88 struct {
Erman Komurcu 0:4040347d719c 89 unsigned char pwdn_mode : 2; /**< Power Down Mode Select */
Erman Komurcu 0:4040347d719c 90 unsigned char : 6;
Erman Komurcu 0:4040347d719c 91 } bits;
Erman Komurcu 0:4040347d719c 92 } max41460_reg_cfg4_t;
Erman Komurcu 0:4040347d719c 93
Erman Komurcu 0:4040347d719c 94 /**
Erman Komurcu 0:4040347d719c 95 * @brief CFG5 (0x04)
Erman Komurcu 0:4040347d719c 96 *
Erman Komurcu 0:4040347d719c 97 */
Erman Komurcu 0:4040347d719c 98 typedef union {
Erman Komurcu 0:4040347d719c 99 unsigned char raw;
Erman Komurcu 0:4040347d719c 100 struct {
Erman Komurcu 0:4040347d719c 101 unsigned char tstep : 6; /**< Controls GFSK shaping. See Digital FSK Modulation section. */
Erman Komurcu 0:4040347d719c 102 unsigned char : 2;
Erman Komurcu 0:4040347d719c 103 } bits;
Erman Komurcu 0:4040347d719c 104 } max41460_reg_cfg5_t;
Erman Komurcu 0:4040347d719c 105
Erman Komurcu 0:4040347d719c 106 /**
Erman Komurcu 0:4040347d719c 107 * @brief SHDN (0x05)
Erman Komurcu 0:4040347d719c 108 *
Erman Komurcu 0:4040347d719c 109 */
Erman Komurcu 0:4040347d719c 110 typedef union {
Erman Komurcu 0:4040347d719c 111 unsigned char raw;
Erman Komurcu 0:4040347d719c 112 struct {
Erman Komurcu 0:4040347d719c 113 unsigned char pa_boost : 1; /**< Enables a boost in PA output power for frequencies above 850MHz.
Erman Komurcu 0:4040347d719c 114 This requires a different PA match compared to normal operation. */
Erman Komurcu 0:4040347d719c 115 unsigned char en_ldo : 1; /**< Write to 0 binary.Register based enable control for main 1.8V LDO.
Erman Komurcu 0:4040347d719c 116 This register bit is an input to an "OR" gate.
Erman Komurcu 0:4040347d719c 117 The other input to the "OR" gate is the internally generated
Erman Komurcu 0:4040347d719c 118 functional signal for LDO enable. */
Erman Komurcu 0:4040347d719c 119 unsigned char dis_ldo_func_en : 1; /**< Write to 1 binary.Active low disable signal for functional path
Erman Komurcu 0:4040347d719c 120 generated LDO enable signal. This register bit is an input to an
Erman Komurcu 0:4040347d719c 121 "AND" gate. The other input to the "AND" gate is the internally
Erman Komurcu 0:4040347d719c 122 generated functional signal for LDO enable. */
Erman Komurcu 0:4040347d719c 123 unsigned char : 5;
Erman Komurcu 0:4040347d719c 124 } bits;
Erman Komurcu 0:4040347d719c 125 } max41460_reg_shdn_t;
Erman Komurcu 0:4040347d719c 126
Erman Komurcu 0:4040347d719c 127 /**
Erman Komurcu 0:4040347d719c 128 * @brief PA1 (0x06)
Erman Komurcu 0:4040347d719c 129 *
Erman Komurcu 0:4040347d719c 130 */
Erman Komurcu 0:4040347d719c 131 typedef union {
Erman Komurcu 0:4040347d719c 132 unsigned char raw;
Erman Komurcu 0:4040347d719c 133 struct {
Erman Komurcu 0:4040347d719c 134 unsigned char papwr : 3; /**< Controls the PA output power by enabling parallel drivers. */
Erman Komurcu 0:4040347d719c 135 unsigned char : 2;
Erman Komurcu 0:4040347d719c 136 unsigned char pabias : 3; /**< Write to 100 binary.Adjusts cascode bias for PA.
Erman Komurcu 0:4040347d719c 137 Enumerations are a percentage of VDD */
Erman Komurcu 0:4040347d719c 138 } bits;
Erman Komurcu 0:4040347d719c 139 } max41460_reg_pa1_t;
Erman Komurcu 0:4040347d719c 140
Erman Komurcu 0:4040347d719c 141 /**
Erman Komurcu 0:4040347d719c 142 * @brief PA2 (0x07)
Erman Komurcu 0:4040347d719c 143 *
Erman Komurcu 0:4040347d719c 144 */
Erman Komurcu 0:4040347d719c 145 typedef union {
Erman Komurcu 0:4040347d719c 146 unsigned char raw;
Erman Komurcu 0:4040347d719c 147 struct {
Erman Komurcu 0:4040347d719c 148 unsigned char pacap : 5; /**< Controls shunt capacitance on PA output in fF. */
Erman Komurcu 0:4040347d719c 149 unsigned char pacapbias : 3; /**< Write to 100 binary.Adjusts the amount of capacitance
Erman Komurcu 0:4040347d719c 150 on PA Cascode decoupling cap. */
Erman Komurcu 0:4040347d719c 151 } bits;
Erman Komurcu 0:4040347d719c 152 } max41460_reg_pa2_t;
Erman Komurcu 0:4040347d719c 153
Erman Komurcu 0:4040347d719c 154 /**
Erman Komurcu 0:4040347d719c 155 * @brief PLL1 (0x08)
Erman Komurcu 0:4040347d719c 156 *
Erman Komurcu 0:4040347d719c 157 */
Erman Komurcu 0:4040347d719c 158 typedef union {
Erman Komurcu 0:4040347d719c 159 unsigned char raw;
Erman Komurcu 0:4040347d719c 160 struct {
Erman Komurcu 0:4040347d719c 161 unsigned char lomode : 1; /**< Sets LO generation. For lower power, choose LOWCURRENT.
Erman Komurcu 0:4040347d719c 162 For higher performance, choose LOWNOISE. */
Erman Komurcu 0:4040347d719c 163 unsigned char lodiv : 2;
Erman Komurcu 0:4040347d719c 164 unsigned char loopbw : 2; /**< Write to 00 binary.Sets PLL loop bandwidth. */
Erman Komurcu 0:4040347d719c 165 unsigned char fracmode : 1; /**< Sets PLL between fractional-N and integer-N mode. */
Erman Komurcu 0:4040347d719c 166 unsigned char cplin : 2; /**< Sets the level of charge pump offset current for fractional N mode to
Erman Komurcu 0:4040347d719c 167 improve close in phase noise. Set to DISABLED for integer N mode. */
Erman Komurcu 0:4040347d719c 168 } bits;
Erman Komurcu 0:4040347d719c 169 } max41460_reg_pll1_t;
Erman Komurcu 0:4040347d719c 170
Erman Komurcu 0:4040347d719c 171 /**
Erman Komurcu 0:4040347d719c 172 * @brief PLL2 (0x09)
Erman Komurcu 0:4040347d719c 173 *
Erman Komurcu 0:4040347d719c 174 */
Erman Komurcu 0:4040347d719c 175 typedef union {
Erman Komurcu 0:4040347d719c 176 unsigned char raw;
Erman Komurcu 0:4040347d719c 177 struct {
Erman Komurcu 0:4040347d719c 178 unsigned char cpval : 2; /**< Sets Charge Pump Current */
Erman Komurcu 0:4040347d719c 179 unsigned char : 4;
Erman Komurcu 0:4040347d719c 180 unsigned char lcvco_fast_start : 1; /**< Write to 0 binary.Enables fast start of LC VCO
Erman Komurcu 0:4040347d719c 181 because of bias filtering */
Erman Komurcu 0:4040347d719c 182 unsigned char lcvco_pwr : 1; /**< Write to 0 binary.Controls power in LC VCO */
Erman Komurcu 0:4040347d719c 183 } bits;
Erman Komurcu 0:4040347d719c 184 } max41460_reg_pll2_t;
Erman Komurcu 0:4040347d719c 185
Erman Komurcu 0:4040347d719c 186 /**
Erman Komurcu 0:4040347d719c 187 * @brief CFG6 (0x0A)
Erman Komurcu 0:4040347d719c 188 *
Erman Komurcu 0:4040347d719c 189 */
Erman Komurcu 0:4040347d719c 190 typedef union {
Erman Komurcu 0:4040347d719c 191 unsigned char raw;
Erman Komurcu 0:4040347d719c 192 struct {
Erman Komurcu 0:4040347d719c 193 unsigned char fourwire1 : 1; /**< Four wire readback on CLKOUT pin mode */
Erman Komurcu 0:4040347d719c 194 unsigned char spi_txen1 : 1; /**< Transmission enable */
Erman Komurcu 0:4040347d719c 195 unsigned char i2c_txen1 : 1; /**< Write to 0 binary */
Erman Komurcu 0:4040347d719c 196 unsigned char : 5;
Erman Komurcu 0:4040347d719c 197 } bits;
Erman Komurcu 0:4040347d719c 198 } max41460_reg_cfg6_t;
Erman Komurcu 0:4040347d719c 199
Erman Komurcu 0:4040347d719c 200 /**
Erman Komurcu 0:4040347d719c 201 * @brief PLL3 (0x0B)
Erman Komurcu 0:4040347d719c 202 *
Erman Komurcu 0:4040347d719c 203 */
Erman Komurcu 0:4040347d719c 204 typedef union {
Erman Komurcu 0:4040347d719c 205 unsigned char raw;
Erman Komurcu 0:4040347d719c 206 struct {
Erman Komurcu 0:4040347d719c 207 unsigned char freq_23_to_16 : 8; /**< FREQ value to PLL. LO frequency= FREQ<23:0>2^16*fXTAL */
Erman Komurcu 0:4040347d719c 208 } bits;
Erman Komurcu 0:4040347d719c 209 } max41460_reg_pll3_t;
Erman Komurcu 0:4040347d719c 210
Erman Komurcu 0:4040347d719c 211 /**
Erman Komurcu 0:4040347d719c 212 * @brief PLL4 (0x0C)
Erman Komurcu 0:4040347d719c 213 *
Erman Komurcu 0:4040347d719c 214 */
Erman Komurcu 0:4040347d719c 215 typedef union {
Erman Komurcu 0:4040347d719c 216 unsigned char raw;
Erman Komurcu 0:4040347d719c 217 struct {
Erman Komurcu 0:4040347d719c 218 unsigned char freq_15_to_8 : 8; /**< FREQ value to PLL */
Erman Komurcu 0:4040347d719c 219 } bits;
Erman Komurcu 0:4040347d719c 220 } max41460_reg_pll4_t;
Erman Komurcu 0:4040347d719c 221
Erman Komurcu 0:4040347d719c 222 /**
Erman Komurcu 0:4040347d719c 223 * @brief PLL5 (0x0D)
Erman Komurcu 0:4040347d719c 224 *
Erman Komurcu 0:4040347d719c 225 */
Erman Komurcu 0:4040347d719c 226 typedef union {
Erman Komurcu 0:4040347d719c 227 unsigned char raw;
Erman Komurcu 0:4040347d719c 228 struct {
Erman Komurcu 0:4040347d719c 229 unsigned char freq_7_to_0 : 8; /**< FREQ value to PLL */
Erman Komurcu 0:4040347d719c 230 } bits;
Erman Komurcu 0:4040347d719c 231 } max41460_reg_pll5_t;
Erman Komurcu 0:4040347d719c 232
Erman Komurcu 0:4040347d719c 233 /**
Erman Komurcu 0:4040347d719c 234 * @brief PLL6 (0x0E)
Erman Komurcu 0:4040347d719c 235 *
Erman Komurcu 0:4040347d719c 236 */
Erman Komurcu 0:4040347d719c 237 typedef union {
Erman Komurcu 0:4040347d719c 238 unsigned char raw;
Erman Komurcu 0:4040347d719c 239 struct {
Erman Komurcu 0:4040347d719c 240 unsigned char deltaf : 7; /**< For FSK mode, MODMODE=1 and FSKSHAPE=0, sets the frequency deviation from
Erman Komurcu 0:4040347d719c 241 the space frequency for the mark frequency. fDELTA = DELTAF[6:0]*fXTAL/8192 */
Erman Komurcu 0:4040347d719c 242 unsigned char : 1;
Erman Komurcu 0:4040347d719c 243 } bits;
Erman Komurcu 0:4040347d719c 244 } max41460_reg_pll6_t;
Erman Komurcu 0:4040347d719c 245
Erman Komurcu 0:4040347d719c 246 /**
Erman Komurcu 0:4040347d719c 247 * @brief PLL7 (0x0F)
Erman Komurcu 0:4040347d719c 248 *
Erman Komurcu 0:4040347d719c 249 */
Erman Komurcu 0:4040347d719c 250 typedef union {
Erman Komurcu 0:4040347d719c 251 unsigned char raw;
Erman Komurcu 0:4040347d719c 252 struct {
Erman Komurcu 0:4040347d719c 253 unsigned char deltaf_shape : 4; /**< For FSK mode, MODMODE = 1 and FSKSHAPE = 1, sets the frequency deviation
Erman Komurcu 0:4040347d719c 254 from the space frequency for the mark frequency.
Erman Komurcu 0:4040347d719c 255 fDELTA = DELTAF_SHAPE[3:0] * fXTAL / 81920 */
Erman Komurcu 0:4040347d719c 256 unsigned char : 4;
Erman Komurcu 0:4040347d719c 257 } bits;
Erman Komurcu 0:4040347d719c 258 } max41460_reg_pll7_t;
Erman Komurcu 0:4040347d719c 259
Erman Komurcu 0:4040347d719c 260 /**
Erman Komurcu 0:4040347d719c 261 * @brief CFG7 (0x10)
Erman Komurcu 0:4040347d719c 262 *
Erman Komurcu 0:4040347d719c 263 */
Erman Komurcu 0:4040347d719c 264 typedef union {
Erman Komurcu 0:4040347d719c 265 unsigned char raw;
Erman Komurcu 0:4040347d719c 266 struct {
Erman Komurcu 0:4040347d719c 267 unsigned char fourwire2 : 1; /**< Four wire readback on CLKOUT pin mode. Aliased address for FOURWIRE1 */
Erman Komurcu 0:4040347d719c 268 unsigned char spi_txen2 : 1; /**< 0x00 Transmission disabled, 0x01 Transmission enabled */
Erman Komurcu 0:4040347d719c 269 unsigned char i2c_txen2 : 1;
Erman Komurcu 0:4040347d719c 270 unsigned char : 5;
Erman Komurcu 0:4040347d719c 271 } bits;
Erman Komurcu 0:4040347d719c 272 } max41460_reg_cfg7_t;
Erman Komurcu 0:4040347d719c 273
Erman Komurcu 0:4040347d719c 274 /**
Erman Komurcu 0:4040347d719c 275 * @brief I2C1 (0x11)
Erman Komurcu 0:4040347d719c 276 *
Erman Komurcu 0:4040347d719c 277 */
Erman Komurcu 0:4040347d719c 278 typedef union {
Erman Komurcu 0:4040347d719c 279 unsigned char raw;
Erman Komurcu 0:4040347d719c 280 struct {
Erman Komurcu 0:4040347d719c 281 unsigned char pktlen_14_to_8 : 7; /**< Packet Length */
Erman Komurcu 0:4040347d719c 282 unsigned char pktlen_mode : 1; /**< Packet Length Mode */
Erman Komurcu 0:4040347d719c 283 } bits;
Erman Komurcu 0:4040347d719c 284 } max41460_reg_i2c1_t;
Erman Komurcu 0:4040347d719c 285
Erman Komurcu 0:4040347d719c 286 /**
Erman Komurcu 0:4040347d719c 287 * @brief I2C2 (0x12)
Erman Komurcu 0:4040347d719c 288 *
Erman Komurcu 0:4040347d719c 289 */
Erman Komurcu 0:4040347d719c 290 typedef union {
Erman Komurcu 0:4040347d719c 291 unsigned char raw;
Erman Komurcu 0:4040347d719c 292 struct {
Erman Komurcu 0:4040347d719c 293 unsigned char pktlen_7_to_0 : 8; /**< Packet Length */
Erman Komurcu 0:4040347d719c 294 } bits;
Erman Komurcu 0:4040347d719c 295 } max41460_reg_i2c2_t;
Erman Komurcu 0:4040347d719c 296
Erman Komurcu 0:4040347d719c 297 /**
Erman Komurcu 0:4040347d719c 298 * @brief I2C3 (0x13)
Erman Komurcu 0:4040347d719c 299 *
Erman Komurcu 0:4040347d719c 300 */
Erman Komurcu 0:4040347d719c 301 typedef union {
Erman Komurcu 0:4040347d719c 302 unsigned char raw;
Erman Komurcu 0:4040347d719c 303 struct {
Erman Komurcu 0:4040347d719c 304 unsigned char i2c_tx_data : 8;
Erman Komurcu 0:4040347d719c 305 } bits;
Erman Komurcu 0:4040347d719c 306 } max41460_reg_i2c3_t;
Erman Komurcu 0:4040347d719c 307
Erman Komurcu 0:4040347d719c 308 /**
Erman Komurcu 0:4040347d719c 309 * @brief I2C4 (0x14)
Erman Komurcu 0:4040347d719c 310 *
Erman Komurcu 0:4040347d719c 311 */
Erman Komurcu 0:4040347d719c 312 typedef union {
Erman Komurcu 0:4040347d719c 313 unsigned char raw;
Erman Komurcu 0:4040347d719c 314 struct {
Erman Komurcu 0:4040347d719c 315 unsigned char tx_pktlen_14_to_8 : 7; /**< Provides status information of bits transmitted
Erman Komurcu 0:4040347d719c 316 for the current packet */
Erman Komurcu 0:4040347d719c 317 unsigned char pktcomplete : 1; /**< Indicates if Packet transmission is completed */
Erman Komurcu 0:4040347d719c 318 } bits;
Erman Komurcu 0:4040347d719c 319 } max41460_reg_i2c4_t;
Erman Komurcu 0:4040347d719c 320
Erman Komurcu 0:4040347d719c 321 /**
Erman Komurcu 0:4040347d719c 322 * @brief I2C5 (0x15)
Erman Komurcu 0:4040347d719c 323 *
Erman Komurcu 0:4040347d719c 324 */
Erman Komurcu 0:4040347d719c 325 typedef union {
Erman Komurcu 0:4040347d719c 326 unsigned char raw;
Erman Komurcu 0:4040347d719c 327 struct {
Erman Komurcu 0:4040347d719c 328 unsigned char tx_pktlen_7_to_0 : 8; /**< Provides status information of bits transmitted
Erman Komurcu 0:4040347d719c 329 for the current packet */
Erman Komurcu 0:4040347d719c 330 } bits;
Erman Komurcu 0:4040347d719c 331 } max41460_reg_i2c5_t;
Erman Komurcu 0:4040347d719c 332
Erman Komurcu 0:4040347d719c 333 /**
Erman Komurcu 0:4040347d719c 334 * @brief I2C6 (0x16)
Erman Komurcu 0:4040347d719c 335 *
Erman Komurcu 0:4040347d719c 336 */
Erman Komurcu 0:4040347d719c 337 typedef union {
Erman Komurcu 0:4040347d719c 338 unsigned char raw;
Erman Komurcu 0:4040347d719c 339 struct {
Erman Komurcu 0:4040347d719c 340 unsigned char fifo_words : 3; /**< This field captures the number of locations currently filled in FIFO.
Erman Komurcu 0:4040347d719c 341 Each location corresponds to 8-bit data word */
Erman Komurcu 0:4040347d719c 342 unsigned char : 1;
Erman Komurcu 0:4040347d719c 343 unsigned char fifo_full : 1; /**< FIFO Full Status */
Erman Komurcu 0:4040347d719c 344 unsigned char fifo_empty : 1; /**< FIFO Empty Status */
Erman Komurcu 0:4040347d719c 345 unsigned char oflow : 1; /**< FIFO Overflow status */
Erman Komurcu 0:4040347d719c 346 unsigned char uflow : 1; /**< FIFO Underflow status */
Erman Komurcu 0:4040347d719c 347 } bits;
Erman Komurcu 0:4040347d719c 348 } max41460_reg_i2c6_t;
Erman Komurcu 0:4040347d719c 349
Erman Komurcu 0:4040347d719c 350 /**
Erman Komurcu 0:4040347d719c 351 * @brief CFG8 (0x17)
Erman Komurcu 0:4040347d719c 352 *
Erman Komurcu 0:4040347d719c 353 */
Erman Komurcu 0:4040347d719c 354 typedef union {
Erman Komurcu 0:4040347d719c 355 unsigned char raw;
Erman Komurcu 0:4040347d719c 356 struct {
Erman Komurcu 0:4040347d719c 357 unsigned char softreset : 1; /**< Places DUT into software reset. */
Erman Komurcu 0:4040347d719c 358 unsigned char : 7;
Erman Komurcu 0:4040347d719c 359 } bits;
Erman Komurcu 0:4040347d719c 360 } max41460_reg_cfg8_t;
Erman Komurcu 0:4040347d719c 361
Erman Komurcu 0:4040347d719c 362 /**
Erman Komurcu 0:4040347d719c 363 * @brief CFG9 (0x18)
Erman Komurcu 0:4040347d719c 364 *
Erman Komurcu 0:4040347d719c 365 */
Erman Komurcu 0:4040347d719c 366 typedef union {
Erman Komurcu 0:4040347d719c 367 unsigned char raw;
Erman Komurcu 0:4040347d719c 368 struct {
Erman Komurcu 0:4040347d719c 369 unsigned char xoen : 1; /**< Write to 0 binary.XO Enable register for test purpose */
Erman Komurcu 0:4040347d719c 370 unsigned char pllen : 1; /**< Write to 0 binary.PLL Enable register for test purpose */
Erman Komurcu 0:4040347d719c 371 unsigned char paen : 1; /**< Write to 0 binary.PA Enable register for test purpose */
Erman Komurcu 0:4040347d719c 372 unsigned char test_ana : 5; /**< Write to 0_0000 binary.Test modes for analog block */
Erman Komurcu 0:4040347d719c 373 } bits;
Erman Komurcu 0:4040347d719c 374 } max41460_reg_cfg9_t;
Erman Komurcu 0:4040347d719c 375
Erman Komurcu 0:4040347d719c 376 /**
Erman Komurcu 0:4040347d719c 377 * @brief ADDL1 (0x19)
Erman Komurcu 0:4040347d719c 378 *
Erman Komurcu 0:4040347d719c 379 */
Erman Komurcu 0:4040347d719c 380 typedef union {
Erman Komurcu 0:4040347d719c 381 unsigned char raw;
Erman Komurcu 0:4040347d719c 382 struct {
Erman Komurcu 0:4040347d719c 383 unsigned char ring_bias : 2; /**< Write to 00 binary.Controls the current mirror ratio in Ring Oscillator
Erman Komurcu 0:4040347d719c 384 control. For lower frequencies, the number can be reduced
Erman Komurcu 0:4040347d719c 385 for slightly better phase noise. */
Erman Komurcu 0:4040347d719c 386 unsigned char ring_trim : 2; /**< Write to 00 binary. Adjusts the current control value
Erman Komurcu 0:4040347d719c 387 for ring oscillator. */
Erman Komurcu 0:4040347d719c 388 unsigned char bias_trim : 2; /**< Write to 00 binary. Adjusts bias current for PLL block. */
Erman Komurcu 0:4040347d719c 389 unsigned char xtal_gm : 2; /**< Write to 00 binary. Controls crystal oscillator GM current
Erman Komurcu 0:4040347d719c 390 for startup time control */
Erman Komurcu 0:4040347d719c 391 } bits;
Erman Komurcu 0:4040347d719c 392 } max41460_reg_addl1_t;
Erman Komurcu 0:4040347d719c 393
Erman Komurcu 0:4040347d719c 394 /**
Erman Komurcu 0:4040347d719c 395 * @brief ADDL2 (0x1A)
Erman Komurcu 0:4040347d719c 396 *
Erman Komurcu 0:4040347d719c 397 */
Erman Komurcu 0:4040347d719c 398 typedef union {
Erman Komurcu 0:4040347d719c 399 unsigned char raw;
Erman Komurcu 0:4040347d719c 400 struct {
Erman Komurcu 0:4040347d719c 401 unsigned char addlctrl2 : 7; /**< Write to 000_0000 binary. Additional control fields for future use */
Erman Komurcu 0:4040347d719c 402 unsigned char scl_stretch_dly : 1; /**< Write to 1 binary. I2C SCL Stretch Release delay enable */
Erman Komurcu 0:4040347d719c 403 } bits;
Erman Komurcu 0:4040347d719c 404 } max41460_reg_addl2_t;
Erman Komurcu 0:4040347d719c 405
Erman Komurcu 0:4040347d719c 406 /**
Erman Komurcu 0:4040347d719c 407 * @brief Register Set
Erman Komurcu 0:4040347d719c 408 *
Erman Komurcu 0:4040347d719c 409 */
Erman Komurcu 0:4040347d719c 410 typedef struct {
Erman Komurcu 0:4040347d719c 411 max41460_reg_cfg1_t reg_cfg1;
Erman Komurcu 0:4040347d719c 412 max41460_reg_cfg2_t reg_cfg2;
Erman Komurcu 0:4040347d719c 413 max41460_reg_cfg3_t reg_cfg3;
Erman Komurcu 0:4040347d719c 414 max41460_reg_cfg4_t reg_cfg4;
Erman Komurcu 0:4040347d719c 415 max41460_reg_cfg5_t reg_cfg5;
Erman Komurcu 0:4040347d719c 416 max41460_reg_shdn_t reg_shdn;
Erman Komurcu 0:4040347d719c 417 max41460_reg_pa1_t reg_pa1;
Erman Komurcu 0:4040347d719c 418 max41460_reg_pa2_t reg_pa2;
Erman Komurcu 0:4040347d719c 419 max41460_reg_pll1_t reg_pll1;
Erman Komurcu 0:4040347d719c 420 max41460_reg_pll2_t reg_pll2;
Erman Komurcu 0:4040347d719c 421 max41460_reg_cfg6_t reg_cfg6;
Erman Komurcu 0:4040347d719c 422 max41460_reg_pll3_t reg_pll3;
Erman Komurcu 0:4040347d719c 423 max41460_reg_pll4_t reg_pll4;
Erman Komurcu 0:4040347d719c 424 max41460_reg_pll5_t reg_pll5;
Erman Komurcu 0:4040347d719c 425 max41460_reg_pll6_t reg_pll6;
Erman Komurcu 0:4040347d719c 426 max41460_reg_pll7_t reg_pll7;
Erman Komurcu 0:4040347d719c 427 max41460_reg_cfg7_t reg_cfg7;
Erman Komurcu 0:4040347d719c 428 max41460_reg_i2c1_t reg_i2c1;
Erman Komurcu 0:4040347d719c 429 max41460_reg_i2c2_t reg_i2c2;
Erman Komurcu 0:4040347d719c 430 max41460_reg_i2c3_t reg_i2c3;
Erman Komurcu 0:4040347d719c 431 max41460_reg_i2c4_t reg_i2c4;
Erman Komurcu 0:4040347d719c 432 max41460_reg_i2c5_t reg_i2c5;
Erman Komurcu 0:4040347d719c 433 max41460_reg_i2c6_t reg_i2c6;
Erman Komurcu 0:4040347d719c 434 max41460_reg_cfg8_t reg_cfg8;
Erman Komurcu 0:4040347d719c 435 max41460_reg_cfg9_t reg_cfg9;
Erman Komurcu 0:4040347d719c 436 max41460_reg_addl1_t reg_addl1;
Erman Komurcu 0:4040347d719c 437 max41460_reg_addl2_t reg_addl2;
Erman Komurcu 0:4040347d719c 438 } max41460_reg_map_t;
Erman Komurcu 0:4040347d719c 439
Erman Komurcu 0:4040347d719c 440 #endif /* MAX41460_REGS_H_ */