42#define ADF5902_REG0 0x0
43#define ADF5902_REG1 0x1
44#define ADF5902_REG2 0x2
45#define ADF5902_REG3 0x3
46#define ADF5902_REG4 0x4
47#define ADF5902_REG5 0x5
48#define ADF5902_REG6 0x6
49#define ADF5902_REG7 0x7
50#define ADF5902_REG8 0x8
51#define ADF5902_REG9 0x9
52#define ADF5902_REG10 0xA
53#define ADF5902_REG11 0xB
54#define ADF5902_REG12 0xC
55#define ADF5902_REG13 0xD
56#define ADF5902_REG14 0xE
57#define ADF5902_REG15 0xF
58#define ADF5902_REG16 0x10
59#define ADF5902_REG17 0x11
62#define ADF5902_REG0_PLO(x) (((x) & 0x1) << 5)
63#define ADF5902_REG0_PTX1(x) (((x) & 0x1) << 6)
64#define ADF5902_REG0_PTX2(x) (((x) & 0x1) << 7)
65#define ADF5902_REG0_PADC(x) (((x) & 0x1) << 8)
66#define ADF5902_REG0_VCAL(x) (((x) & 0x1) << 9)
67#define ADF5902_REG0_PVCO(x) (((x) & 0x1) << 10)
68#define ADF5902_REG0_TX1C(x) (((x) & 0x1) << 11)
69#define ADF5902_REG0_TX2C(x) (((x) & 0x1) << 12)
70#define ADF5902_REG0_RESERVED (0x4007FU << 13)
73#define ADF5902_POWER_DOWN_LO 0x0
74#define ADF5902_POWER_UP_LO 0x1
76#define ADF5902_POWER_DOWN_TX1 0x0
77#define ADF5902_POWER_UP_TX1 0x1
79#define ADF5902_POWER_DOWN_TX2 0x0
80#define ADF5902_POWER_UP_TX2 0x1
82#define ADF5902_POWER_DOWN_ADC 0x0
83#define ADF5902_POWER_UP_ADC 0x1
85#define ADF5902_VCO_NORMAL_OP 0x0
86#define ADF5902_VCO_FULL_CAL 0x1
88#define ADF5902_POWER_DOWN_VCO 0x0
89#define ADF5902_POWER_UP_VCO 0x1
91#define ADF5902_TX1_NORMAL_OP 0x0
92#define ADF5902_TX1_AMP_CAL 0x1
94#define ADF5902_TX2_NORMAL_OP 0x0
95#define ADF5902_TX2_AMP_CAL 0x1
98#define ADF5902_REG1_TX_AMP_CAL_REF(x) (((x) & 0xFF) << 5)
99#define ADF5902_REG1_RESERVED (0x7FFBFU << 13)
102#define ADF5902_TX_AMP_CAL_MIN_REF_CODE 0x00
103#define ADF5902_TX_AMP_CAL_MAX_REF_CODE 0xFF
106#define ADF5902_REG2_ADC_CLK_DIV(x) (((x) & 0xFF) << 5)
107#define ADF5902_REG2_ADC_AVG(x) (((x) & 0x3) << 13)
108#define ADF5902_REG2_ADC_START(x) (((x) & 0x1) << 15)
109#define ADF5902_REG2_RESERVED (0x2 << 16)
112#define ADF5902_ADC_MIN_CLK_DIVIDER 0x1
113#define ADF5902_ADC_MAX_CLK_DIVIDER 0x7F
115#define ADF5902_ADC_AVG_1 0x0
116#define ADF5902_ADC_AVG_2 0x1
117#define ADF5902_ADC_AVG_3 0x2
118#define ADF5902_ADC_AVG_4 0x3
120#define ADF5902_ADC_NORMAL_OP 0x0
121#define ADF5902_START_ADC_CONV 0x1
124#define ADF5902_REG3_READBACK_CTRL(x) (((x) & 0x3F) << 5)
125#define ADF5902_REG3_IO_LVL(x) (((x) & 0x1) << 11)
126#define ADF5902_REG3_MUXOUT(x) (((x) & 0xF) << 12)
127#define ADF5902_REG3_RESERVED (0x189 << 16)
130#define ADF5902_REG_RB_NONE 0x0
131#define ADF5902_REG0_RB 0x1
132#define ADF5902_REG1_RB 0x2
133#define ADF5902_REG2_RB 0x3
134#define ADF5902_REG3_RB 0x4
135#define ADF5902_REG4_RB 0x5
136#define ADF5902_REG5_RB 0x6
137#define ADF5902_REG6_RB 0x7
138#define ADF5902_REG7_RB 0x8
139#define ADF5902_REG8_RB 0x9
140#define ADF5902_REG9_RB 0xA
141#define ADF5902_REG10_RB 0xB
142#define ADF5902_REG11_RB 0xC
143#define ADF5902_REG12_RB 0xD
144#define ADF5902_REG13_SEL_0_RB 0xE
145#define ADF5902_REG14_SEL_0_RB 0xF
146#define ADF5902_REG15_SEL_0_RB 0x10
147#define ADF5902_REG16_SEL_0_RB 0x11
148#define ADF5902_REG17_RB 0x12
149#define ADF5902_ADC_RB 0x16
150#define ADF5902_FREQ_RB 0x1A
151#define ADF5902_REG13_SEL_1_RB 0x33
152#define ADF5902_REG14_SEL_1_RB 0x34
153#define ADF5902_REG15_SEL_1_RB 0x35
154#define ADF5902_REG16_SEL_1_RB 0x36
155#define ADF5902_REG13_SEL_2_RB 0x37
156#define ADF5902_REG14_SEL_2_RB 0x38
157#define ADF5902_REG15_SEL_2_RB 0x39
158#define ADF5902_REG16_SEL_2_RB 0x3A
159#define ADF5902_REG13_SEL_3_RB 0x3B
160#define ADF5902_REG14_SEL_3_RB 0x3C
161#define ADF5902_REG15_SEL_3_RB 0x3D
162#define ADF5902_REG16_SEL_3_RB 0x3F
164#define ADF5902_IO_LVL_1V8 0x0
165#define ADF5902_IO_LVL_3V3 0x1
167#define ADF5902_MUXOUT_TRISTATE_OUT 0x0
168#define ADF5902_MUXOUT_LOGIC_HIGH 0x1
169#define ADF5902_MUXOUT_LOGIC_LOW 0x2
170#define ADF5902_MUXOUT_R_DIV_OUT 0x3
171#define ADF5902_MUXOUT_N_DIV_OUT 0x4
172#define ADF5902_MUXOUT_CAL_BUSY 0x7
173#define ADF5902_MUXOUT_R_DIV_OUT_2 0xB
174#define ADF5902_MUXOUT_N_DIV_OUT_2 0xC
175#define ADF5902_MUXOUT_RAMP_STATUS 0xF
178#define ADF5902_REG4_TEST_BUS(x) (((x) & 0x7FFF) << 5)
179#define ADF5902_REG4_RESERVED (0x0 << 16)
182#define ADF5902_TEST_BUS_NONE 0x0000
183#define ADF5902_RAMP_COMPL_TO_MUXOUT 0x00C0
184#define ADF5902_RAMP_DOWN_TO_MUXOUT 0x0100
185#define ADF5902_TEMP_SENS_TO_ATEST 0x0503
186#define ADF5902_TEMP_SENS_TO_ADC 0x0903
189#define ADF5902_REG5_FRAC_MSB_WORD(x) (((x) & 0xFFF) << 5)
190#define ADF5902_REG5_INTEGER_WORD(x) (((x) & 0xFFF) << 17)
191#define ADF5902_REG5_RAMP_ON(x) (((x) & 0x1) << 29)
192#define ADF5902_REG5_RESERVED (0x0 << 30)
195#define ADF5902_MIN_FRAC_MSB_WORD 0x000
196#define ADF5902_MAX_FRAC_MSB_WORD 0xFFF
198#define ADF5902_MIN_INT_MSB_WORD 0x000
199#define ADF5902_MAX_INT_MSB_WORD 0xFFF
201#define ADF5902_RAMP_ON_DISABLED 0x0
202#define ADF5902_RAMP_ON_ENABLED 0x1
205#define ADF5902_REG6_FRAC_LSB_WORD(x) (((x) & 0x1FFF) << 5)
206#define ADF5902_REG6_RESERVED (0x0 << 18)
209#define ADF5902_MIN_FRAC_LSB_WORD 0x000
210#define ADF5902_MAX_FRAC_LSB_WORD 0x1FFF
213#define ADF5902_REG7_R_DIVIDER(x) (((x) & 0x1F) << 5)
214#define ADF5902_REG7_REF_DOUBLER(x) (((x) & 0x1) << 10)
215#define ADF5902_REG7_R_DIV_2(x) (((x) & 0x1) << 11)
216#define ADF5902_REG7_CLK_DIV(x) (((x) & 0xFFF) << 12)
217#define ADF5902_REG7_MASTER_RESET(x) (((x) & 0x1) << 25)
218#define ADF5902_REG7_RESERVED ((0x0 << 26) | (0x1 << 24))
221#define ADF5902_MIN_R_DIVIDER 0x01
222#define ADF5902_MAX_R_DIVIDER 0x1F
224#define ADF5902_R_DIV_2_DISABLE 0x0
225#define ADF5902_R_DIV_2_ENABLE 0x1
227#define ADF5902_REF_DOUBLER_DISABLE 0x0
228#define ADF5902_REF_DOUBLER_ENABLE 0x1
230#define ADF5902_MIN_CLK_DIVIDER 0x000
231#define ADF5902_MAX_CLK_DIVIDER 0xFFF
233#define ADF5902_MASTER_RESET_DISABLE 0x0
234#define ADF5902_MASTER_RESET_ENABLE 0x1
237#define ADF5902_REG8_FREQ_CAL_DIV(x) (((x) & 0x3FF) << 5)
238#define ADF5902_REG8_RESERVED (0x8000 << 15)
241#define ADF5902_MIN_FREQ_CAL_DIV 0x000
242#define ADF5902_MAX_FREQ_CAL_DIV 0x3FF
245#define ADF5902_REG9_RESERVED_CALIB (0x15105C9 << 5)
246#define ADF5902_REG9_RESERVED_NORMAL (0x14005C9 << 5)
249#define ADF5902_REG10_RESERVED (0xE99532 << 5)
252#define ADF5902_REG11_CNTR_RESET(x) (((x) & 0x1) << 5)
253#define ADF5902_REG11_RAMP_MODE(x) (((x) & 0x3) << 7)
254#define ADF5902_REG11_SING_FULL_TRI(x) (((x) & 0x1) << 9)
255#define ADF5902_REG11_SD_RESET(x) (((x) & 0x1) << 11)
256#define ADF5902_REG11_RESERVED ((0x0 << 6) | (0x0 << 10) | (0x0 << 12))
259#define ADF5902_CNTR_RESET_DISABLE 0x0
260#define ADF5902_CNTR_RESET_ENABLE 0x1
262#define ADF5902_CONT_SAWTOOTH 0x0
263#define ADF5902_SAWTOOTH_BURST 0x1
264#define ADF5902_CONTINUOUS_TRIANGULAR 0x2
265#define ADF5902_SINGLE_RAMP_BURST 0x3
267#define ADF5902_SINGLE_FULL_TRI_DISBLE 0x0
268#define ADF5902_SINGLE_FULL_TRI_ENABLE 0x1
270#define ADF5902_SD_RESET_ENABLE 0x0
271#define ADF5902_SD_RESET_DISABLE 0x1
274#define ADF5902_REG12_CP_TRISTATE(x) (((x) & 0x1) << 15)
275#define ADF5902_REG12_CHARGE_PUMP(x) (((x) & 0xF) << 17)
276#define ADF5902_REG12_RESERVED ((0x0 << 5) | (0x1 << 16) | (0x2 << 21))
279#define ADF5902_CP_TRISTATE_DISABLE 0x0
280#define ADF5902_CP_TRISTATE_ENABLE 0x1
282#define ADF5902_CP_CURRENT_280UA 0x0
283#define ADF5902_CP_CURRENT_560UA 0x1
284#define ADF5902_CP_CURRENT_840UA 0x2
285#define ADF5902_CP_CURRENT_1MA12 0x3
286#define ADF5902_CP_CURRENT_1MA40 0x4
287#define ADF5902_CP_CURRENT_1MA68 0x5
288#define ADF5902_CP_CURRENT_1MA96 0x6
289#define ADF5902_CP_CURRENT_2MA24 0x7
290#define ADF5902_CP_CURRENT_2MA52 0x8
291#define ADF5902_CP_CURRENT_2MA80 0x9
292#define ADF5902_CP_CURRENT_3MA08 0xA
293#define ADF5902_CP_CURRENT_3MA36 0xB
294#define ADF5902_CP_CURRENT_3MA64 0xC
295#define ADF5902_CP_CURRENT_3MA92 0xD
296#define ADF5902_CP_CURRENT_4MA20 0xE
297#define ADF5902_CP_CURRENT_4MA48 0xF
300#define ADF5902_REG13_CLK_DIV_SEL(x) (((x) & 0x3) << 5)
301#define ADF5902_REG13_CLK_DIV_2(x) (((x) & 0xFFF) << 7)
302#define ADF5902_REG13_CLK_DIV_MODE(x) (((x) & 0x3) << 19)
303#define ADF5902_REG13_LE_SEL(x) (((x) & 0x1) << 21)
304#define ADF5902_REG13_RESERVED (0x0 << 22)
307#define ADF5902_CLK_DIV_SEL_0 0x0
308#define ADF5902_CLK_DIV_SEL_1 0x1
309#define ADF5902_CLK_DIV_SEL_2 0x2
310#define ADF5902_CLK_DIV_SEL_3 0x3
312#define ADF5902_MIN_CLK_DIV_2 0x000
313#define ADF5902_MAX_CLK_DIV_2 0xFFF
315#define ADF5902_CLK_DIV_OFF 0x0
316#define ADF5902_FREQ_MEASURE 0x2
317#define ADF5902_RAMP_DIV 0x3
319#define ADF5902_LE_FROM_PIN 0x0
320#define ADF5902_LE_SYNC_REFIN 0x1
323#define ADF5902_REG14_DEV_WORD(x) (((x) & 0xFFFF) << 5)
324#define ADF5902_REG14_DEV_OFFSET(x) (((x) & 0xF) << 21)
325#define ADF5902_REG14_DEV_SEL(x) (((x) & 0x3) << 25)
326#define ADF5902_REG14_TX_RAMP_CLK(x) (((x) & 0x1) << 30)
327#define ADF5902_REG14_TX_DATA_INV(x) (((x) & 0x1) << 31)
328#define ADF5902_REG14_RESERVED (0x0 << 27)
331#define ADF5902_MAX_DEV_WORD 0x7FFF
332#define ADF5902_MIN_DEV_WORD (int16_t)0x8000
334#define ADF5902_MAX_DEV_OFFSET 0x9
335#define ADF5902_MIN_DEV_OFFSET 0x0
337#define ADF5902_DEV_SEL_0 0x0
338#define ADF5902_DEV_SEL_1 0x1
339#define ADF5902_DEV_SEL_2 0x2
340#define ADF5902_DEV_SEL_3 0x3
342#define ADF5902_TX_RAMP_CLK_DIV 0x0
343#define ADF5902_TX_RAMP_TX_DATA_PIN 0x1
345#define AD5902_TX_DATA_INV_DISABLE 0x0
346#define AD5902_TX_DATA_INV_ENABLE 0x1
349#define ADF5902_REG15_STEP_WORD(x) (((x) & 0xFFFFF) << 5)
350#define ADF5902_REG15_STEP_SEL(x) (((x) & 0x3) << 25)
351#define ADF5902_REG15_RESERVED (0x0 << 27)
354#define ADF5902_MIN_STEP_WORD 0x00000
355#define ADF5902_MAX_STEP_WORD 0xFFFFF
357#define ADF5902_STEP_SEL_0 0x0
358#define ADF5902_STEP_SEL_1 0x1
359#define ADF5902_STEP_SEL_2 0x2
360#define ADF5902_STEP_SEL_3 0x3
363#define ADF5902_REG16_DEL_START_WORD(x) (((x) & 0xFFF) << 5)
364#define ADF5902_REG16_RAMP_DEL(x) (((x) & 0x1) << 19)
365#define ADF5902_REG16_TX_DATA_TRIG(x) (((x) & 0x1) << 20)
366#define ADF5902_REG16_DEL_SEL(x) (((x) & 0x3) << 23)
367#define ADF5902_REG16_RESERVED ((0x0 << 17) | (0x0 << 21) | (0x1 << 25))
369#define ADF5902_MIN_DELAY_START_WRD 0x000
370#define ADF5902_MAX_DELAY_START_WRD 0xFFF
372#define ADF5902_RAMP_DEL_DISABLE 0x0
373#define ADF5902_RAMP_DEL_ENABLE 0x1
375#define ADF5902_TX_DATA_TRIG_DISABLE 0x0
376#define ADF5902_TX_DATA_TRIG_ENABLE 0x1
378#define ADF5902_DEL_SEL_0 0x0
379#define ADF5902_DEL_SEL_1 0x1
380#define ADF5902_DEL_SEL_2 0x2
381#define ADF5902_DEL_SEL_3 0x3
384#define ADF5902_REG17_RESERVED (0x0 << 5)
387#define ADF5902_MAX_VCO_FREQ 24250000000ull
388#define ADF5902_MIN_VCO_FREQ 24000000000ull
389#define ADF5902_MIN_REFIN_FREQ 10000000
390#define ADF5902_MAX_REFIN_FREQ 260000000
391#define ADF5902_MAX_FREQ_PFD 110000000
392#define ADF5902_MAX_SLOPE_NO 4
393#define ADF5902_MAX_DELAY_WORD_NO 4
394#define ADF5902_MAX_CLK2_DIV_NO 4
395#define ADF5902_VLSB 0.00733f
396#define ADF5902_VOFF 0.699f
397#define ADF5902_VGAIN 0.0064f
398#define ADF5902_SPI_DUMMY_DATA 0x0
399#define ADF5902_FREQ_CAL_DIV_100KHZ 100000
400#define ADF5902_CLK1_DIV_25KHZ 25000
401#define ADF5902_ADC_CLK_DIV_1MHZ 1000000
402#define ADF5902_BUFF_SIZE_BYTES 4
403#define ADF5902_FRAC_MSB_MSK 0xFFF
404#define ADF5902_FRAC_LSB_MSK 0x1FFF
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t adf5902_read_temp(struct adf5902_dev *dev, float *temp)
Free resoulces allocated for ADF5902.
Definition adf5902.c:731
int32_t adf5902f_compute_frequency(struct adf5902_dev *dev, uint64_t *freq)
Measure output locked frequency.
Definition adf5902.c:787
int32_t adf5902_write(struct adf5902_dev *dev, uint8_t reg_addr, uint32_t data)
Writes 4 bytes of data to ADF5902.
Definition adf5902.c:48
#define ADF5902_MAX_CLK2_DIV_NO
Definition adf5902.h:394
int32_t adf5902_readback(struct adf5902_dev *dev, uint8_t reg_addr, uint32_t *data)
Readback data from ADF5902.
Definition adf5902.c:69
int32_t adf5902_init(struct adf5902_dev **device, struct adf5902_init_param *init_param)
Initializes the ADF5902.
Definition adf5902.c:463
#define ADF5902_MAX_DELAY_WORD_NO
Definition adf5902.h:393
int32_t adf5902_remove(struct adf5902_dev *dev)
Free resoulces allocated for ADF5902.
Definition adf5902.c:897
int32_t adf5902_recalibrate(struct adf5902_dev *dev)
Recalibration procedure.
Definition adf5902.c:669
Header file of GPIO Interface.
Header file of SPI Interface.
uint64_t f_pfd
Definition adf5902.h:478
uint16_t * delay_wd
Definition adf5902.h:510
uint64_t rf_out
Definition adf5902.h:476
uint8_t ref_div2_en
Definition adf5902.h:484
struct slope * slopes
Definition adf5902.h:514
uint8_t ref_doubler_en
Definition adf5902.h:482
uint16_t clk1_div
Definition adf5902.h:494
uint8_t ramp_delay_en
Definition adf5902.h:504
uint16_t clk1_div_ramp
Definition adf5902.h:496
uint16_t freq_cal_div
Definition adf5902.h:492
uint16_t frac_lsb
Definition adf5902.h:490
uint8_t clk2_div_no
Definition adf5902.h:522
uint16_t int_div
Definition adf5902.h:486
uint8_t adc_avg
Definition adf5902.h:500
uint8_t tx_trig_en
Definition adf5902.h:506
uint8_t tx_ramp_clk
Definition adf5902.h:516
struct no_os_spi_desc * spi_desc
Definition adf5902.h:470
uint8_t le_sel
Definition adf5902.h:526
uint16_t frac_msb
Definition adf5902.h:488
uint8_t tx_amp_cal_ref
Definition adf5902.h:502
uint8_t slopes_no
Definition adf5902.h:512
uint16_t * clk2_div
Definition adf5902.h:524
uint8_t cp_current
Definition adf5902.h:530
uint16_t ramp_status
Definition adf5902.h:520
struct no_os_gpio_desc * gpio_ce
Definition adf5902.h:472
uint8_t ramp_mode
Definition adf5902.h:534
uint8_t clk_div_mode
Definition adf5902.h:528
uint8_t cp_tristate_en
Definition adf5902.h:532
uint8_t delay_words_no
Definition adf5902.h:508
uint16_t adc_clk_div
Definition adf5902.h:498
uint8_t tx_data_invert
Definition adf5902.h:518
uint64_t ref_in
Definition adf5902.h:474
uint8_t ref_div_factor
Definition adf5902.h:480
uint8_t adc_avg
Definition adf5902.h:429
uint8_t tx_data_invert
Definition adf5902.h:447
uint8_t clk_div_mode
Definition adf5902.h:459
uint8_t ref_div2_en
Definition adf5902.h:427
uint8_t tx_ramp_clk
Definition adf5902.h:445
uint8_t clk2_div_no
Definition adf5902.h:453
uint8_t tx_amp_cal_ref
Definition adf5902.h:431
uint8_t slopes_no
Definition adf5902.h:441
uint64_t ref_in
Definition adf5902.h:421
uint64_t rf_out
Definition adf5902.h:423
uint16_t ramp_status
Definition adf5902.h:449
uint8_t le_sel
Definition adf5902.h:457
uint16_t clk1_div_ramp
Definition adf5902.h:451
uint8_t tx_trig_en
Definition adf5902.h:435
struct no_os_spi_init_param * spi_init
Definition adf5902.h:417
uint8_t ramp_mode
Definition adf5902.h:465
struct slope * slopes
Definition adf5902.h:443
uint8_t cp_current
Definition adf5902.h:461
uint8_t delay_words_no
Definition adf5902.h:437
uint8_t cp_tristate_en
Definition adf5902.h:463
uint16_t clk2_div[ADF5902_MAX_CLK2_DIV_NO]
Definition adf5902.h:455
uint8_t ref_doubler_en
Definition adf5902.h:425
uint8_t ramp_delay_en
Definition adf5902.h:433
uint16_t delay_wd[ADF5902_MAX_DELAY_WORD_NO]
Definition adf5902.h:439
struct no_os_gpio_init_param * gpio_ce_param
Definition adf5902.h:419
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128
uint8_t dev_offset
Definition adf5902.h:410
uint32_t step_word
Definition adf5902.h:412
int16_t dev_word
Definition adf5902.h:408