no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adf4350.h
Go to the documentation of this file.
1/***************************************************************************/
34#ifndef __ADF4350_H__
35#define __ADF4350_H__
36
37#include <stdint.h>
38#include "no_os_spi.h"
39
40/* Channels */
41#define ADF4350_RX_CHANNEL 0
42#define ADF4350_TX_CHANNEL 1
43
44/* Registers */
45#define ADF4350_REG0 0
46#define ADF4350_REG1 1
47#define ADF4350_REG2 2
48#define ADF4350_REG3 3
49#define ADF4350_REG4 4
50#define ADF4350_REG5 5
51
52/* REG0 Bit Definitions */
53#define ADF4350_REG0_FRACT(x) (((x) & 0xFFF) << 3)
54#define ADF4350_REG0_INT(x) (((x) & 0xFFFF) << 15)
55
56/* REG1 Bit Definitions */
57#define ADF4350_REG1_MOD(x) (((x) & 0xFFF) << 3)
58#define ADF4350_REG1_PHASE(x) (((x) & 0xFFF) << 15)
59#define ADF4350_REG1_PRESCALER (1 << 27)
60
61/* REG2 Bit Definitions */
62#define ADF4350_REG2_COUNTER_RESET_EN (1 << 3)
63#define ADF4350_REG2_CP_THREESTATE_EN (1 << 4)
64#define ADF4350_REG2_POWER_DOWN_EN (1 << 5)
65#define ADF4350_REG2_PD_POLARITY_POS (1 << 6)
66#define ADF4350_REG2_LDP_6ns (1 << 7)
67#define ADF4350_REG2_LDP_10ns (0 << 7)
68#define ADF4350_REG2_LDF_FRACT_N (0 << 8)
69#define ADF4350_REG2_LDF_INT_N (1 << 8)
70#define ADF4350_REG2_CHARGE_PUMP_CURR_uA(x) (((((x)-312) / 312) & 0xF) << 9)
71#define ADF4350_REG2_DOUBLE_BUFF_EN (1 << 13)
72#define ADF4350_REG2_10BIT_R_CNT(x) ((x) << 14)
73#define ADF4350_REG2_RDIV2_EN (1 << 24)
74#define ADF4350_REG2_RMULT2_EN (1 << 25)
75#define ADF4350_REG2_MUXOUT(x) ((x) << 26)
76#define ADF4350_REG2_NOISE_MODE(x) (((x) & 0x3) << 29)
77
78/* REG3 Bit Definitions */
79#define ADF4350_REG3_12BIT_CLKDIV(x) ((x) << 3)
80#define ADF4350_REG3_12BIT_CLKDIV_MODE(x) ((x) << 16)
81#define ADF4350_REG3_12BIT_CSR_EN (1 << 18)
82#define ADF4351_REG3_CHARGE_CANCELLATION_EN (1 << 21)
83#define ADF4351_REG3_ANTI_BACKLASH_3ns_EN (1 << 22)
84#define ADF4351_REG3_BAND_SEL_CLOCK_MODE_HIGH (1 << 23)
85
86/* REG4 Bit Definitions */
87#define ADF4350_REG4_OUTPUT_PWR(x) ((x) << 3)
88#define ADF4350_REG4_RF_OUT_EN (1 << 5)
89#define ADF4350_REG4_AUX_OUTPUT_PWR(x) ((x) << 6)
90#define ADF4350_REG4_AUX_OUTPUT_EN (1 << 8)
91#define ADF4350_REG4_AUX_OUTPUT_FUND (1 << 9)
92#define ADF4350_REG4_AUX_OUTPUT_DIV (0 << 9)
93#define ADF4350_REG4_MUTE_TILL_LOCK_EN (1 << 10)
94#define ADF4350_REG4_VCO_PWRDOWN_EN (1 << 11)
95#define ADF4350_REG4_8BIT_BAND_SEL_CLKDIV(x) ((x) << 12)
96#define ADF4350_REG4_RF_DIV_SEL(x) ((x) << 20)
97#define ADF4350_REG4_FEEDBACK_DIVIDED (0 << 23)
98#define ADF4350_REG4_FEEDBACK_FUND (1 << 23)
99
100/* REG5 Bit Definitions */
101#define ADF4350_REG5_LD_PIN_MODE_LOW (0 << 22)
102#define ADF4350_REG5_LD_PIN_MODE_DIGITAL (1 << 22)
103#define ADF4350_REG5_LD_PIN_MODE_HIGH (3 << 22)
104
105/* Specifications */
106#define ADF4350_MAX_OUT_FREQ 4400000000ULL /* Hz */
107#define ADF4350_MIN_OUT_FREQ 34375000 /* Hz */
108#define ADF4350_MIN_VCO_FREQ 2200000000ULL /* Hz */
109#define ADF4350_MAX_FREQ_45_PRESC 3000000000ULL /* Hz */
110#define ADF4350_MAX_FREQ_PFD 32000000 /* Hz */
111#define ADF4350_MAX_BANDSEL_CLK 125000 /* Hz */
112#define ADF4350_MAX_FREQ_REFIN 250000000 /* Hz */
113#define ADF4350_MAX_MODULUS 4095
114#define ADF4350_MAX_R_CNT 1023
115
117 uint32_t clkin;
120
121 uint16_t ref_div_factor; /* 10-bit R counter */
123 uint8_t ref_div2_en;
124
129};
130
166
167typedef struct {
170 uint32_t clkin;
171 uint32_t chspc; /* Channel Spacing */
172 uint32_t fpfd; /* Phase Frequency Detector */
173 uint32_t min_out_freq;
174 uint32_t r0_fract;
175 uint32_t r0_int;
176 uint32_t r1_mod;
178 uint32_t regs[6];
179 uint32_t regs_hw[6];
180 uint32_t val;
182
187int32_t adf4350_write(adf4350_dev *dev,
188 uint32_t data);
191 int64_t Hz);
194 int32_t Hz);
197 int64_t Hz);
200 int32_t pwd);
201
202#endif // __ADF4350_H__
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t adf4350_out_altvoltage0_powerdown(adf4350_dev *dev, int32_t pwd)
Powers down the PLL.
Definition adf4350.c:416
int64_t adf4350_out_altvoltage0_refin_frequency(adf4350_dev *dev, int64_t Hz)
Sets PLL 0 REFin frequency in Hz.
Definition adf4350.c:396
int32_t adf4350_setup(adf4350_dev **device, adf4350_init_param init_param)
Initializes the ADF4350.
Definition adf4350.c:270
int64_t adf4350_out_altvoltage0_frequency(adf4350_dev *dev, int64_t Hz)
Stores PLL 0 frequency in Hz.
Definition adf4350.c:364
int32_t adf4350_write(adf4350_dev *dev, uint32_t data)
Writes 4 bytes of data to ADF4350.
Definition adf4350.c:48
int32_t adf4350_out_altvoltage0_frequency_resolution(adf4350_dev *dev, int32_t Hz)
Stores PLL 0 frequency resolution/channel spacing in Hz.
Definition adf4350.c:378
Header file of SPI Interface.
Definition adf4350.h:167
uint32_t r0_int
Definition adf4350.h:175
uint32_t fpfd
Definition adf4350.h:172
uint32_t min_out_freq
Definition adf4350.h:173
struct no_os_spi_desc * spi_desc
Definition adf4350.h:168
uint32_t val
Definition adf4350.h:180
struct adf4350_platform_data * pdata
Definition adf4350.h:169
uint32_t regs_hw[6]
Definition adf4350.h:179
uint32_t clkin
Definition adf4350.h:170
uint32_t r1_mod
Definition adf4350.h:176
uint32_t regs[6]
Definition adf4350.h:178
uint32_t r0_fract
Definition adf4350.h:174
uint32_t r4_rf_div_sel
Definition adf4350.h:177
uint32_t chspc
Definition adf4350.h:171
Definition adf4350.h:131
uint8_t lock_detect_precision_6ns_enable
Definition adf4350.h:145
uint32_t clk_divider_mode
Definition adf4350.h:157
uint8_t phase_detector_polarity_positive_enable
Definition adf4350.h:144
uint8_t low_spur_mode_enable
Definition adf4350.h:149
uint8_t charge_cancellation_enable
Definition adf4350.h:153
uint8_t aux_output_fundamental_enable
Definition adf4350.h:161
uint32_t clkin
Definition adf4350.h:136
uint8_t cycle_slip_reduction_enable
Definition adf4350.h:152
uint32_t muxout_select
Definition adf4350.h:148
uint32_t reference_div_factor
Definition adf4350.h:139
uint32_t channel_spacing
Definition adf4350.h:137
uint8_t mute_till_lock_enable
Definition adf4350.h:162
uint32_t clk_divider_12bit
Definition adf4350.h:156
struct no_os_spi_init_param spi_init
Definition adf4350.h:133
uint8_t reference_div2_enable
Definition adf4350.h:141
uint8_t reference_doubler_enable
Definition adf4350.h:140
uint8_t aux_output_enable
Definition adf4350.h:160
uint32_t output_power
Definition adf4350.h:163
uint8_t anti_backlash_3ns_enable
Definition adf4350.h:154
uint32_t charge_pump_current
Definition adf4350.h:147
uint8_t lock_detect_function_integer_n_enable
Definition adf4350.h:146
uint32_t aux_output_power
Definition adf4350.h:164
uint32_t power_up_frequency
Definition adf4350.h:138
uint8_t band_select_clock_mode_high_enable
Definition adf4350.h:155
Definition adf4350.h:116
uint32_t r2_user_settings
Definition adf4350.h:125
uint32_t r3_user_settings
Definition adf4350.h:126
uint16_t ref_div_factor
Definition adf4350.h:121
uint64_t power_up_frequency
Definition adf4350.h:119
uint32_t channel_spacing
Definition adf4350.h:118
uint32_t r4_user_settings
Definition adf4350.h:127
uint8_t ref_doubler_en
Definition adf4350.h:122
uint32_t clkin
Definition adf4350.h:117
uint8_t ref_div2_en
Definition adf4350.h:123
int32_t gpio_lock_detect
Definition adf4350.h:128
Definition ad9361_util.h:63
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128