no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adf5902.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef SRC_ADF5902_H_
35#define SRC_ADF5902_H_
36
37#include <stdint.h>
38#include "no_os_spi.h"
39#include "no_os_gpio.h"
40
41/* Registers Control Bits */
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
60
61/* Register 0 Map */
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)
71
72/* Register 0 Bit Definitions */
73#define ADF5902_POWER_DOWN_LO 0x0
74#define ADF5902_POWER_UP_LO 0x1
75
76#define ADF5902_POWER_DOWN_TX1 0x0
77#define ADF5902_POWER_UP_TX1 0x1
78
79#define ADF5902_POWER_DOWN_TX2 0x0
80#define ADF5902_POWER_UP_TX2 0x1
81
82#define ADF5902_POWER_DOWN_ADC 0x0
83#define ADF5902_POWER_UP_ADC 0x1
84
85#define ADF5902_VCO_NORMAL_OP 0x0
86#define ADF5902_VCO_FULL_CAL 0x1
87
88#define ADF5902_POWER_DOWN_VCO 0x0
89#define ADF5902_POWER_UP_VCO 0x1
90
91#define ADF5902_TX1_NORMAL_OP 0x0
92#define ADF5902_TX1_AMP_CAL 0x1
93
94#define ADF5902_TX2_NORMAL_OP 0x0
95#define ADF5902_TX2_AMP_CAL 0x1
96
97/* Register 1 Map */
98#define ADF5902_REG1_TX_AMP_CAL_REF(x) (((x) & 0xFF) << 5)
99#define ADF5902_REG1_RESERVED (0x7FFBFU << 13)
100
101/* Register 1 Bit Definitions */
102#define ADF5902_TX_AMP_CAL_MIN_REF_CODE 0x00
103#define ADF5902_TX_AMP_CAL_MAX_REF_CODE 0xFF
104
105/* Register 2 Map */
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)
110
111/* Register 2 Bit Definitions */
112#define ADF5902_ADC_MIN_CLK_DIVIDER 0x1
113#define ADF5902_ADC_MAX_CLK_DIVIDER 0x7F
114
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
119
120#define ADF5902_ADC_NORMAL_OP 0x0
121#define ADF5902_START_ADC_CONV 0x1
122
123/* Register 3 Map */
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)
128
129/* Register 3 Bit Definitions */
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
163
164#define ADF5902_IO_LVL_1V8 0x0
165#define ADF5902_IO_LVL_3V3 0x1
166
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
176
177/* Register 4 Map */
178#define ADF5902_REG4_TEST_BUS(x) (((x) & 0x7FFF) << 5)
179#define ADF5902_REG4_RESERVED (0x0 << 16)
180
181/* Register 4 Bit Definitions */
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
187
188/* Register 5 Map */
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)
193
194/* Register 5 Bit Definitions */
195#define ADF5902_MIN_FRAC_MSB_WORD 0x000
196#define ADF5902_MAX_FRAC_MSB_WORD 0xFFF
197
198#define ADF5902_MIN_INT_MSB_WORD 0x000
199#define ADF5902_MAX_INT_MSB_WORD 0xFFF
200
201#define ADF5902_RAMP_ON_DISABLED 0x0
202#define ADF5902_RAMP_ON_ENABLED 0x1
203
204/* Register 6 Map */
205#define ADF5902_REG6_FRAC_LSB_WORD(x) (((x) & 0x1FFF) << 5)
206#define ADF5902_REG6_RESERVED (0x0 << 18)
207
208/* Register 6 Bit Definitions */
209#define ADF5902_MIN_FRAC_LSB_WORD 0x000
210#define ADF5902_MAX_FRAC_LSB_WORD 0x1FFF
211
212/* Register 7 Map */
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))
219
220/* Register 7 Bit Definitions */
221#define ADF5902_MIN_R_DIVIDER 0x01
222#define ADF5902_MAX_R_DIVIDER 0x1F
223
224#define ADF5902_R_DIV_2_DISABLE 0x0
225#define ADF5902_R_DIV_2_ENABLE 0x1
226
227#define ADF5902_REF_DOUBLER_DISABLE 0x0
228#define ADF5902_REF_DOUBLER_ENABLE 0x1
229
230#define ADF5902_MIN_CLK_DIVIDER 0x000
231#define ADF5902_MAX_CLK_DIVIDER 0xFFF
232
233#define ADF5902_MASTER_RESET_DISABLE 0x0
234#define ADF5902_MASTER_RESET_ENABLE 0x1
235
236/* Register 8 Map */
237#define ADF5902_REG8_FREQ_CAL_DIV(x) (((x) & 0x3FF) << 5)
238#define ADF5902_REG8_RESERVED (0x8000 << 15)
239
240/* Register 8 Bit Definitions */
241#define ADF5902_MIN_FREQ_CAL_DIV 0x000
242#define ADF5902_MAX_FREQ_CAL_DIV 0x3FF
243
244/* Register 9 Map */
245#define ADF5902_REG9_RESERVED_CALIB (0x15105C9 << 5)
246#define ADF5902_REG9_RESERVED_NORMAL (0x14005C9 << 5)
247
248/* Register 10 Map */
249#define ADF5902_REG10_RESERVED (0xE99532 << 5)
250
251/* Register 11 Map */
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))
257
258/* Register 11 Bit Definitions */
259#define ADF5902_CNTR_RESET_DISABLE 0x0
260#define ADF5902_CNTR_RESET_ENABLE 0x1
261
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
266
267#define ADF5902_SINGLE_FULL_TRI_DISBLE 0x0
268#define ADF5902_SINGLE_FULL_TRI_ENABLE 0x1
269
270#define ADF5902_SD_RESET_ENABLE 0x0
271#define ADF5902_SD_RESET_DISABLE 0x1
272
273/* Register 12 Map */
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))
277
278/* Register 12 Bit Definition */
279#define ADF5902_CP_TRISTATE_DISABLE 0x0
280#define ADF5902_CP_TRISTATE_ENABLE 0x1
281
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
298
299/* Register 13 Map */
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)
305
306/* Register 13 Bit Definitions */
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
311
312#define ADF5902_MIN_CLK_DIV_2 0x000
313#define ADF5902_MAX_CLK_DIV_2 0xFFF
314
315#define ADF5902_CLK_DIV_OFF 0x0
316#define ADF5902_FREQ_MEASURE 0x2
317#define ADF5902_RAMP_DIV 0x3
318
319#define ADF5902_LE_FROM_PIN 0x0
320#define ADF5902_LE_SYNC_REFIN 0x1
321
322/* Register 14 Map */
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)
329
330/* Register 14 Bit Definitions */
331#define ADF5902_MAX_DEV_WORD 0x7FFF
332#define ADF5902_MIN_DEV_WORD (int16_t)0x8000
333
334#define ADF5902_MAX_DEV_OFFSET 0x9
335#define ADF5902_MIN_DEV_OFFSET 0x0
336
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
341
342#define ADF5902_TX_RAMP_CLK_DIV 0x0
343#define ADF5902_TX_RAMP_TX_DATA_PIN 0x1
344
345#define AD5902_TX_DATA_INV_DISABLE 0x0
346#define AD5902_TX_DATA_INV_ENABLE 0x1
347
348/* Register 15 Map */
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)
352
353/* Register 15 Bit Definition */
354#define ADF5902_MIN_STEP_WORD 0x00000
355#define ADF5902_MAX_STEP_WORD 0xFFFFF
356
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
361
362/* Register 16 Map */
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))
368
369#define ADF5902_MIN_DELAY_START_WRD 0x000
370#define ADF5902_MAX_DELAY_START_WRD 0xFFF
371
372#define ADF5902_RAMP_DEL_DISABLE 0x0
373#define ADF5902_RAMP_DEL_ENABLE 0x1
374
375#define ADF5902_TX_DATA_TRIG_DISABLE 0x0
376#define ADF5902_TX_DATA_TRIG_ENABLE 0x1
377
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
382
383/* Register 17 Map */
384#define ADF5902_REG17_RESERVED (0x0 << 5)
385
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
405
406struct slope {
407 /* Deviation Word */
408 int16_t dev_word;
409 /* Deviation Offset */
410 uint8_t dev_offset;
411 /* Step Word */
412 uint32_t step_word;
413};
414
416 /* SPI Initialization parameters */
418 /* GPIO Chip Enable */
420 /* Reference input frequency */
421 uint64_t ref_in;
422 /* Output frequency of the internal VCO */
423 uint64_t rf_out;
424 /* Reference doubler enable */
426 /* Reference divide by 2 bit */
427 uint8_t ref_div2_en;
428 /* ADC Average value */
429 uint8_t adc_avg;
430 /* Transmitter Amplitude Calibration Reference Code */
432 /* Ramp delay enable */
434 /* TX Data trigger */
435 uint8_t tx_trig_en;
436 /* Delay words number */
438 /* Delay Words */
440 /* Number of deviaton parameters */
441 uint8_t slopes_no;
442 /* Slope structure */
443 struct slope *slopes;
444 /* Tx Data Ramp Clock */
445 uint8_t tx_ramp_clk;
446 /* Tx Data Invert */
448 /* Ramp Status */
449 uint16_t ramp_status;
450 /* Clock divider (CLK1) divider value in Ramp mode */
452 /* 12-bit Clock Divider number */
453 uint8_t clk2_div_no;
454 /* 12-bit Clock Divider */
456 /* LE Select */
457 uint8_t le_sel;
458 /* Clock Divider Mode*/
460 /* Charge Pump current */
461 uint8_t cp_current;
462 /* Charge Pump tristate */
464 /* Ramp Mode */
465 uint8_t ramp_mode;
466};
467
469 /* SPI Descriptor */
471 /* GPIO Chip Enable */
473 /* Reference input frequency*/
474 uint64_t ref_in;
475 /* Output frequency(Hz) of the internal VCO */
476 uint64_t rf_out;
477 /* Phase Frequency Detector */
478 uint64_t f_pfd;
479 /* Divide ration of the binary 5-bit reference counter */
481 /* Reference doubler enable */
483 /* Reference divide by 2 bit */
484 uint8_t ref_div2_en;
485 /* Register 5 Integer word */
486 uint16_t int_div;
487 /* Register 5 MSB FRAC value */
488 uint16_t frac_msb;
489 /* Register 5 LSB FRAC value */
490 uint16_t frac_lsb;
491 /* Frequency calibration divider value */
492 uint16_t freq_cal_div;
493 /* Clock divider (CLK1) divider value */
494 uint16_t clk1_div;
495 /* Clock divider (CLK1) divider value in Ramp mode */
497 /* ADC Clock divider */
498 uint16_t adc_clk_div;
499 /* ADC Average value */
500 uint8_t adc_avg;
501 /* Transmitter Amplitude Calibration Reference Code */
503 /* Ramp delay enable */
505 /* TX Data trigger */
506 uint8_t tx_trig_en;
507 /* Delay words number */
509 /* Delay Words */
510 uint16_t *delay_wd;
511 /* Number of deviaton parameters */
512 uint8_t slopes_no;
513 /* Slope Structure */
514 struct slope *slopes;
515 /* Tx Data Ramp Clock */
516 uint8_t tx_ramp_clk;
517 /* Tx Data Invert */
519 /* Ramp Status */
520 uint16_t ramp_status;
521 /* 12-bit Clock Divider number */
522 uint8_t clk2_div_no;
523 /* 12-bit Clock Divider */
524 uint16_t *clk2_div;
525 /* LE Select */
526 uint8_t le_sel;
527 /* Clock Divider Mode*/
529 /* Charge Pump current */
530 uint8_t cp_current;
531 /* Charge Pump tristate */
533 /* Ramp Mode */
534 uint8_t ramp_mode;
535};
536
538int32_t adf5902_write(struct adf5902_dev *dev, uint8_t reg_addr,
539 uint32_t data);
540
542int32_t adf5902_readback(struct adf5902_dev *dev, uint8_t reg_addr,
543 uint32_t *data);
544
546int32_t adf5902_init(struct adf5902_dev **device,
548
550int32_t adf5902_recalibrate(struct adf5902_dev *dev);
551
553int32_t adf5902_read_temp(struct adf5902_dev *dev, float *temp);
554
555/* ADF5902 Measure Output locked frequency */
556int32_t adf5902f_compute_frequency(struct adf5902_dev *dev, uint64_t *freq);
557
559int32_t adf5902_remove(struct adf5902_dev *dev);
560
561#endif /* SRC_ADF5902_H_ */
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.
Definition adf5902.h:468
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
Definition adf5902.h:415
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
Definition adf5902.h:406
uint8_t dev_offset
Definition adf5902.h:410
uint32_t step_word
Definition adf5902.h:412
int16_t dev_word
Definition adf5902.h:408