no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adf5611.h
Go to the documentation of this file.
1/***************************************************************************/
33#include <stdint.h>
34#include <string.h>
35#include "no_os_util.h"
36#include "no_os_spi.h"
37
38/* ADF5611 REG0000 Map */
39#define ADF5611_SOFT_REST_R_MSK NO_OS_BIT(7)
40#define ADF5611_LSB_FIRST_R_MSK NO_OS_BIT(6)
41#define ADF5611_ADDRESS_ASC_R_MSK NO_OS_BIT(5)
42#define ADF5611_SDO_ACTIVE_R_MSK NO_OS_BIT(4)
43#define ADF5611_SDO_ACTIVE_MSK NO_OS_BIT(3)
44#define ADF5611_ADDRESS_ASC_MSK NO_OS_BIT(2)
45#define ADF5611_LSB_FIRST_MSK NO_OS_BIT(1)
46#define ADF5611_SOFT_RESET_MSK NO_OS_BIT(0)
47#define ADF5611_RESET_CMD 0x81
48
49/* ADF5611 REG0000 NO_OS_BIT DEFINITION */
50#define ADF5611_SDO_ACTIVE_SPI_3WIRE 0x0
51#define ADF5611_SDO_ACTIVE_SPI_4WIRE 0x1
52
53#define ADF5611_ADDRESS_ASC_AUTO_DECR 0x0
54#define ADF5611_ADDRESS_ASC_AUTO_INCR 0x1
55
56#define ADF5611_LSB_FIRST_MSB 0x0
57#define ADF5611_LSB_FIRST_LSB 0x1
58
59#define ADF5611_SOFT_RESET_NORMAL_OP 0x0
60#define ADF5611_SOFT_RESET_EN 0x1
61
62/* ADF5611 REG0001 MAP */
63#define ADF5611_SINGLE_INSTR_MSK NO_OS_BIT(7)
64#define ADF5611_MASTER_READBACK_CTRL_MSK NO_OS_BIT(5)
65
66/* ADF5611 REG0001 NO_OS_BIT DEFINITION */
67#define ADF5611_SPI_STREAM_EN 0x0
68#define ADF5611_SPI_STREAM_DIS 0x1
69
70#define ADF5611_RB_SLAVE_REG 0x0
71#define ADF5611_RB_MASTER_REG 0x1
72
73/* ADF5611 REG0003 NO_OS_BIT DEFINITION */
74#define ADF5611_CHIP_TYPE 0x06
75
76/* ADF5611 REG0004 NO_OS_BIT DEFINITION */
77#define ADF5611_PRODUCT_ID_LSB 0x0005
78
79/* ADF5611 REG0005 NO_OS_BIT DEFINITION */
80#define ADF5611_PRODUCT_ID_MSB 0x0005
81
82/* ADF5611 REG000A Map */
83#define ADF5611_SCRATCHPAD_MSK NO_OS_GENMASK(7, 0)
84
85/* ADF5611 REG000C NO_OS_BIT DEFINITION */
86#define ADF5611_VENDOR_ID_LSB 0x56
87
88/* ADF5611 REG000D NO_OS_BIT DEFINITION */
89#define ADF5611_VENDOR_ID_MSB 0x04
90
91/* ADF5611 REG0010 MAP*/
92#define ADF5611_N_INT_LSB_MSK NO_OS_GENMASK(7, 0)
93
94/* ADF5611 REG0011 MAP*/
95#define ADF5611_N_INT_MID_MSK NO_OS_GENMASK(7, 0)
96
97/* ADF5611 REG0012 MAP */
98#define ADF5611_FRAC1WORD_LSB_MSK NO_OS_GENMASK(7, 4)
99#define ADF5611_N_INT_MSB_MSK NO_OS_GENMASK(3, 0)
100
101/* ADF5611 REG0013 MAP */
102#define ADF5611_FRAC1WORD_MID_MSK NO_OS_GENMASK(7, 0)
103
104/* ADF5611 REG0014 MAP */
105#define ADF5611_FRAC1WORD_MID_MSB_MSK NO_OS_GENMASK(7, 0)
106
107/* ADF5611 REG0015 MAP */
108#define ADF5611_M_VCO_BIAS_MSK NO_OS_GENMASK(7, 5)
109#define ADF5611_FRAC1WORD_MSB_MSK NO_OS_GENMASK(4, 0)
110
111/* ADF5611 REG0016 MAP */
112#define ADF5611_M_VCO_BAND_MSK NO_OS_GENMASK(7, 1)
113#define ADF5611_M_VCO_CORE_MSK NO_OS_BIT(0)
114
115/* ADF5611 REG0016 NO_OS_BIT DEFINITION */
116#define ADF5611_VCO_0_HIGHEST_FREQUENCY 0x0
117#define ADF5611_VCO_1_LOWEST_FREQUENCY 0x1
118
119/* ADF5611 REG0017 MAP */
120#define ADF5611_FRAC2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
121
122/* ADF5611 REG0018 MAP */
123#define ADF5611_FRAC2WORD_MID_MSK NO_OS_GENMASK(7, 0)
124
125/* ADF5611 REG0019 MAP */
126#define ADF5611_FRAC2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
127
128/* ADF5611 REG001A MAP */
129#define ADF5611_MOD2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
130
131/* ADF5611 REG001B MAP */
132#define ADF5611_MOD2WORD_MID_MSK NO_OS_GENMASK(7, 0)
133
134/* ADF5611 REG001C MAP */
135#define ADF5611_MOD2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
136
137/* ADF5611 REG001D MAP */
138#define ADF5611_BLEED_I_MSK NO_OS_GENMASK(7, 0)
139
140/* ADF5611 REG001E MAP */
141#define ADF5611_EN_AUTOCAL_MSK NO_OS_BIT(7)
142#define ADF5611_EN_BLEED_MSK NO_OS_BIT(6)
143#define ADF5611_EN_DCLK_MODE_MSK NO_OS_BIT(5)
144#define ADF5611_EN_DNCLK_MSK NO_OS_BIT(4)
145#define ADF5611_DNCLK_DIV1_MSK NO_OS_GENMASK(3, 2)
146#define ADF5611_PFD_POL_MSK NO_OS_BIT(1)
147#define ADF5611_BLEED_POL_MSK NO_OS_BIT(0)
148
149/* ADF5611 REG001E NO_OS_BIT DEFINITION */
150#define ADF5611_VCO_CALIBRATION_DIS 0x0
151#define ADF5611_VCO_CALIBRATION_EN 0x1
152
153#define ADF5611_BLEED_CURRENT_DIS 0x0
154#define ADF5611_BLEED_CURRENT_EN 0x1
155
156#define ADF5611_FREQUENCY_REDUCTION_DIS 0x0
157#define ADF5611_FREQUENCY_REDUCTION_EN 0x1
158
159#define ADF5611_DIV_NCLK_OFF 0x0
160#define ADF5611_DIV_NCLK_ON 0x1
161
162#define ADF5611_CURRENT_SINK 0x0
163#define ADF5611_CURRENT_SOURCE 0x1
164
165/* ADF5611 REG001F MAP */
166#define ADF5611_R_DIV_LSB_MSK NO_OS_GENMASK(7, 0)
167
168/* ADF5611 REG0020 MAP */
169#define ADF5611_R_DIV_MSB_MSK NO_OS_GENMASK(5, 0)
170
171
172/* ADF5611 REG0021 MAP */
173#define ADF5611_INTMODE_EN_MSK NO_OS_BIT(6)
174#define ADF5611_RST_RDIV_MSK NO_OS_BIT(5)
175#define ADF5611_EN_RCNTR_MSK NO_OS_BIT(4)
176#define ADF5611_CP_I_MSK NO_OS_GENMASK(3, 0)
177
178/* ADF5611 REG0021 NO_OS_BIT DEFINITION */
179#define ADF5611_FRAC_MODE 0x0
180#define ADF5611_INTEGER_MODE 0x1
181
182/* ADF5611 REG0022 MAP */
183#define ADF5611_RFOUT_DIV_MSK NO_OS_GENMASK(7, 5)
184#define ADF5611_RFOUT_PWR_MSK NO_OS_GENMASK(4, 3)
185#define ADF5611_DIV_PWR_MSK NO_OS_GENMASK(1, 0)
186
187/* ADF5611 REG0023 MAP*/
188#define ADF5611_PHASE_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
189
190/* ADF5611 REG0024 MAP*/
191#define ADF5611_PHASE_WORD_MID_MSK NO_OS_GENMASK(7, 0)
192
193/* ADF5611 REG0025 MAP*/
194#define ADF5611_PHASE_WORD_MSB_MSK NO_OS_GENMASK(7, 0)
195
196/* ADF5611 REG0026 MAP */
197#define ADF5611_LSB_P1_MSK NO_OS_BIT(6)
198#define ADF5611_VAR_MOD_EN_MSK NO_OS_BIT(5)
199#define ADF5611_DITHER1_SCALE_MSK NO_OS_GENMASK(4, 2)
200#define ADF5611_EN_DITHER2_MSK NO_OS_BIT(1)
201#define ADF5611_EN_DITHER1_MSK NO_OS_BIT(0)
202
203/* ADF5611 REG0027 MAP */
204#define ADF5611_PD_ALL_MSK NO_OS_BIT(7)
205#define ADF5611_PD_RDIV_MSK NO_OS_BIT(6)
206#define ADF5611_PD_NDIV_MSK NO_OS_BIT(5)
207#define ADF5611_PD_VCO_MSK NO_OS_BIT(4)
208#define ADF5611_PD_LD_MSK NO_OS_BIT(3)
209#define ADF5611_PD_PFDCP_MSK NO_OS_BIT(2)
210#define ADF5611_PD_ADC_MSK NO_OS_BIT(1)
211#define ADF5611_PD_CALGEN_MSK NO_OS_BIT(0)
212
213/* ADF5611 REG0028 MAP */
214#define ADF5611_PD_PFDNCLK_MSK NO_OS_BIT(1)
215#define ADF5611_PD_ODIV_MSK NO_OS_BIT(0)
216
217/* ADF5611 REG0029 MAP */
218#define ADF5611_LDWIN_PW_MSK NO_OS_GENMASK(7, 5)
219#define ADF5611_LD_COUNT_MSK NO_OS_GENMASK(4, 0)
220
221/* ADF5611 REG002A MAP*/
222#define ADF5611_EN_CP_IBX_MSK NO_OS_GENMASK(7, 6)
223#define ADF5611_EN_LOL_MSK NO_OS_BIT(5)
224#define ADF5611_EN_LDWIN_MSK NO_OS_BIT(4)
225#define ADF5611_SPARE_2A_MSK NO_OS_BIT(3)
226#define ADF5611_RST_LD_MSK NO_OS_BIT(2)
227#define ADF5611_ABPW_WD_MSK NO_OS_BIT(1)
228#define ADF5611_RST_CNTR_MSK NO_OS_BIT(0)
229
230/* ADF5611 REG002B MAP */
231#define ADF5611_MUXOUT_MSK NO_OS_GENMASK(7, 4)
232#define ADF5611_EN_MUXOUT_MSK NO_OS_BIT(3)
233#define ADF5611_EN_CPTEST_MSK NO_OS_BIT(2)
234#define ADF5611_CP_DOWN_MSK NO_OS_BIT(1)
235#define ADF5611_CP_UP_MSK NO_OS_BIT(0)
236
237/* ADF5611 REG002C MAP */
238#define ADF5611_CLKODIV_DB_MSK NO_OS_BIT(7)
239#define ADF5611_DCLK_DIV_DB_MSK NO_OS_BIT(6)
240#define ADF5611_SPARE_2C_MSK NO_OS_BIT(5)
241#define ADF5611_RST_SYS_MSK NO_OS_BIT(4)
242#define ADF5611_EN_ADC_CLK_MSK NO_OS_BIT(3)
243#define ADF5611_EN_VCAL_MSK NO_OS_BIT(2)
244#define ADF5611_CAL_CT_SEL_MSK NO_OS_BIT(1)
245#define ADF5611_EN_NOTCH_MSK NO_OS_BIT(0)
246
247/* ADF5611 REG002D Map */
248#define ADF5611_VCO_FSM_TEST_MUX_MSK NO_OS_GENMASK(7, 5)
249#define ADF5611_SPARE_2D_MSK NO_OS_GENMASK(4, 3)
250#define ADF5611_O_VCO_BIAS_MSK NO_OS_BIT(2)
251#define ADF5611_O_VCO_BAND_MSK NO_OS_BIT(1)
252#define ADF5611_O_VCO_CORE_MSK NO_OS_BIT(0)
253
254
255/* ADF5611 REG002F MAP */
256#define ADF5611_CAL_COUNT_TO_MSK NO_OS_GENMASK(7, 0)
257
258/* ADF5611 REG0030 MAP */
259#define ADF5611_CAL_VTUNE_TO_LSB_MSK NO_OS_GENMASK(7, 0)
260
261/* ADF5611 REG0031 MAP */
262#define ADF5611_0_VCO_DB_MSK NO_OS_BIT(7)
263#define ADF5611_CAL_VTUNE_TO_MSB_MSK NO_OS_GENMASK(6, 0)
264
265/* ADF5611 REG0032 MAP */
266#define ADF5611_CAL_VCO_TO_LSB_MSK NO_OS_GENMASK(7, 0)
267
268/* ADF5611 REG0033 MAP */
269#define ADF5611_DEL_CTRL_DB_MSK NO_OS_BIT(7)
270#define ADF5611_CAL_VCO_TO_MSB_MSK NO_OS_GENMASK(6, 0)
271
272/* ADF5611 REG0034 MAP */
273#define ADF5611_CNTR_DIV_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
274
275/* ADF5611 REG0035 MAP */
276#define ADF5611_SPARE_35_MSK NO_OS_GENMASK(7, 6)
277#define ADF5611_CMOS_OV_MSK NO_OS_BIT(5)
278#define ADF5611_CMOS_OV(x) no_os_field_prep(ADF5611_CMOS_OV_MSK, x)
279#define ADF5611_READ_MODE_MSK NO_OS_BIT(4)
280#define ADF5611_CNTR_DIV_WORD_MSB_MSK NO_OS_GENMASK(3, 0)
281
282/* ADF5611 REG0036 MAP */
283#define ADF5611_ADC_CLK_DIV_MSK NO_OS_GENMASK(7, 0)
284
285/* ADF5611 REG0037 MAP */
286#define ADF5611_EN_ADC_CNV_MSK NO_OS_BIT(7)
287#define ADF5611_EN_ADC_VTEST_MSK NO_OS_BIT(6)
288#define ADF5611_ADC_VTEST_SEL_MSK NO_OS_BIT(5)
289#define ADF5611_ADC_MUX_SEL_MSK NO_OS_BIT(4)
290#define ADF5611_ADC_F_CONV_MSK NO_OS_BIT(3)
291#define ADF5611_ADC_C_CONV_MSK NO_OS_BIT(2)
292#define ADF5611_EN_ADC_MSK NO_OS_BIT(1)
293#define ADF5611_ADC_CLK_TEST_SEL_MSK NO_OS_BIT(0)
294
295/* ADF5611 REG0038 MAP */
296#define ADF5611_SPARE_38_MSK NO_OS_BIT(7)
297#define ADF5611_VPTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
298
299/* ADF5611 REG0039 MAP */
300#define ADF5611_SPARE_39_MSK NO_OS_BIT(7)
301#define ADF5611_VCTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
302
303/* ADF5611 REG003A MAP */
304#define ADF5611_NVMDIN_MSK NO_OS_GENMASK(7, 0)
305
306/* ADF5611 REG003B MAP */
307#define ADF5611_SPARE_3B_MSK NO_OS_BIT(7)
308#define ADF5611_NVMADDR_MSK NO_OS_GENMASK(6, 3)
309#define ADF5611_NVMNO_OS_BIT_SEL_MSK NO_OS_GENMASK(2, 0)
310
311/* ADF5611 REG003C MAP */
312#define ADF5611_TRIM_LATCH_MSK NO_OS_BIT(7)
313#define ADF5611_NVMTEST_MSK NO_OS_BIT(6)
314#define ADF5611_NVMPROG_MSK NO_OS_BIT(5)
315#define ADF5611_NVMRD_MSK NO_OS_BIT(4)
316#define ADF5611_NVMSTART_MSK NO_OS_BIT(3)
317#define ADF5611_NVMON_MSK NO_OS_BIT(2)
318#define ADF5611_MARGIN_MSK NO_OS_GENMASK(1, 0)
319
320/* ADF5611 REG003D MAP */
321#define ADF5611_NVMDOUT_MSK NO_OS_GENMASK(7, 0)
322
323/* ADF5611 REG003E MAP */
324#define ADF5611_SCAN_MODE_CODE_MSK NO_OS_GENMASK(7, 0)
325
326/* ADF5611 REG003F MAP */
327#define ADF5611_TEMP_OFFSET_MSK NO_OS_GENMASK(7, 0)
328
329/* ADF5611 REG0040 MAP */
330#define ADF5611_SPARE_40_MSK NO_OS_GENMASK(7, 6)
331#define ADF5611_TEMP_SLOPE_MSK NO_OS_GENMASK(5, 0)
332
333/* ADF5611 REG0044 MAP */
334#define ADF5611_ADC_ST_CNV_MSK NO_OS_BIT(0)
335
336/* ADF5611 REG0048 MAP */
337#define ADF5611_ADC_BUSY_MSK NO_OS_BIT(2)
338#define ADF5611_FSM_BUSY_MSK NO_OS_BIT(1)
339#define ADF5611_LOCKED_MSK NO_OS_BIT(0)
340
341/* ADF5611 REG0100 MAP*/
342#define ADF5611_CORE0_BIAS_TABLE_1_MSK NO_OS_GENMASK(5, 3)
343#define ADF5611_CORE0_BIAS_TABLE_0_MSK NO_OS_GENMASK(2, 0)
344
345/* ADF5611 REG0101 MAP*/
346#define ADF5611_CORE0_BIAS_TABLE_3_MSK NO_OS_GENMASK(5, 3)
347#define ADF5611_CORE0_BIAS_TABLE_2_MSK NO_OS_GENMASK(2, 0)
348
349/* ADF5611 REG0102 MAP*/
350#define ADF5611_CORE0_BIAS_TABLE_5_MSK NO_OS_GENMASK(5, 3)
351#define ADF5611_CORE0_BIAS_TABLE_4_MSK NO_OS_GENMASK(2, 0)
352
353/* ADF5611 REG0103 MAP*/
354#define ADF5611_CORE0_BIAS_TABLE_7_MSK NO_OS_GENMASK(5, 3)
355#define ADF5611_CORE0_BIAS_TABLE_6_MSK NO_OS_GENMASK(2, 0)
356
357/* ADF5611 REG0104 MAP*/
358#define ADF5611_CORE1_BIAS_TABLE_1_MSK NO_OS_GENMASK(5, 3)
359#define ADF5611_CORE1_BIAS_TABLE_0_MSK NO_OS_GENMASK(2, 0)
360
361/* ADF5611 REG0105 MAP*/
362#define ADF5611_CORE1_BIAS_TABLE_3_MSK NO_OS_GENMASK(5, 3)
363#define ADF5611_CORE1_BIAS_TABLE_2_MSK NO_OS_GENMASK(2, 0)
364
365/* ADF5611 REG0106 MAP*/
366#define ADF5611_CORE1_BIAS_TABLE_5_MSK NO_OS_GENMASK(5, 3)
367#define ADF5611_CORE1_BIAS_TABLE_4_MSK NO_OS_GENMASK(2, 0)
368
369/* ADF5611 REG0107 MAP*/
370#define ADF5611_CORE1_BIAS_TABLE_7_MSK NO_OS_GENMASK(5, 3)
371#define ADF5611_CORE1_BIAS_TABLE_6_MSK NO_OS_GENMASK(2, 0)
372
373
374#define ADF5611_SPI_4W_CFG(x) (no_os_field_prep(ADF5611_SDO_ACTIVE_MSK, x) | \
375 no_os_field_prep(ADF5611_SDO_ACTIVE_R_MSK, x))
376
377#define ADF5611_SPI_SCRATCHPAD_TEST 0x2A
378
379/* ADF5611 SPECIFICATIONS */
380#define ADF5611_SPI_WRITE_CMD 0x0
381#define ADF5611_SPI_READ_CMD 0x8000
382#define ADF5611_SPI_DUMMY_DATA 0x00
383#define ADF5611_BUFF_SIZE_BYTES 3
384#define ADF5611_VCO_FREQ_MIN 3650000000U // 3.65MHz
385#define ADF5611_VCO_FREQ_MAX 7300000000U // 7.3MHz
386#define ADF5611_MOD1WORD 0x2000000U // 2^25
387#define ADF5611_MOD2WORD_MAX 0xFFFFFFU // 2^24 - 1
388#define ADF5611_CHANNEL_SPACING_MAX 78125U
389#define ADF5611_CPI_VAL_MAX 15
390#define ADF5611_REF_DIV_MAX 16383
391#define ADF5611_BLEED_TIME_CONST 4
392#define ADF5611_BLEED_CURRENT 3125
393#define ADF5611_RFOUT_PWR_MAX 3
394#define ADF5611_RFOUTDIV_PWR_MAX ADF5611_RFOUT_PWR_MAX
395#define ADF5611_RFOUTDIV_DIV_MAX 7U
396#define ADF5611_POR_DELAY_US 200
397#define ADF5611_LKD_DELAY_US 500
398#define ADF5611_RFOUT_MAX 14600000000U //14.6GHz
399#define ADF5611_RFOUT_MIN 7300000000U //7.3GHz
400#define ADF5611_REF_CLK_MAX 300000000000U //300MHz
401#define ADF5611_REF_CLK_MIN 50000000U //50MHz
402#define ADF5611_OUTPUT_DOUBLER 0x2U
403#define ADF5611_PFD_FREQ_MAX 100000000U //100MHz
404#define ADF5612_RFOUT_MAX 8500000000U //8.5GHz
405#define ADF5612_RFOUT_MIN 7300000000U //7.3GHz
406#define ADF5612_VCO_FREQ_MAX 7300000000U //7.3GHz
407#define KHZ 1000
408#define MHZ KHZ * KHZ
409#define GHZ KHZ * KHZ * KHZ
410#define s_TO_ns 1000000000U
411#define ns_TO_ps 1000
412#define uA_TO_A 1000000
413
421
441
453 uint64_t ref_clk_freq;
455 uint64_t rfout_freq;
456 uint32_t ref_div;
457 uint8_t cp_i;
458 uint16_t bleed_word;
459 uint8_t ld_count;
461 uint64_t freq_max;
462 uint64_t freq_min;
463 uint64_t vco_max;
464 uint64_t vco_min;
465};
466
471struct reg_sequence {
472 uint16_t reg;
473 uint8_t val;
474};
475
480static const struct reg_sequence adf5611_reg_defaults[] = {
481 { 0x0000, 0x18 },
482 { 0x001F, 0x02 },
483 { 0x0020, 0x00 },
484 { 0x001E, 0xE2 },
485 { 0x002C, 0x08 },
486 { 0x001F, 0xF3 },
487 { 0x0104, 0x24 },
488 { 0x0105, 0x24 },
489 { 0x0106, 0x24 },
490 { 0x0107, 0x24 },
491 { 0x0040, 0x2B },
492 { 0x003F, 0x5D },
493 { 0x0039, 0x22 },
494 { 0x0038, 0x4E },
495 { 0x0037, 0x82 },
496 { 0x0036, 0x3E },
497 { 0x0035, 0x00 },
498 { 0x0033, 0x00 },
499 { 0x0032, 0x64 },
500 { 0x0031, 0x00 },
501 { 0x0030, 0x32 },
502 { 0x002F, 0x19 },
503 { 0x002D, 0x00 },
504 { 0x002C, 0x08 },
505 { 0x002B, 0x00 },
506 { 0x002A, 0x70 },
507 { 0x0029, 0x2C },
508 { 0x0028, 0x01 },
509 { 0x0027, 0x00 },
510 { 0x0026, 0x00 },
511 { 0x0025, 0x7f },
512 { 0x0024, 0xff },
513 { 0x0023, 0xff },
514 { 0x0022, 0x18 },
515 { 0x0021, 0x5f },
516 { 0x0020, 0x00 },
517 { 0x001F, 0x02 },
518 { 0x001E, 0x92 },
519 { 0x001D, 0x11 },
520 { 0x001C, 0x00 },
521 { 0x001B, 0x00 },
522 { 0x001A, 0x01 },
523 { 0x0019, 0x00 },
524 { 0x0018, 0x00 },
525 { 0x0017, 0x00 },
526 { 0x0016, 0x00 },
527 { 0x0015, 0x00 },
528 { 0x0014, 0x00 },
529 { 0x0013, 0x00 },
530 { 0x0012, 0x00 },
531 { 0x0010, 0x78 },
532};
533
535int adf5611_spi_write(struct adf5611_dev *dev, uint16_t reg_addr, uint8_t data);
536
538int adf5611_spi_read(struct adf5611_dev *dev, uint16_t reg_addr, uint8_t *data);
539
541int adf5611_spi_update_bits(struct adf5611_dev *dev, uint16_t reg_addr,
542 uint8_t mask, uint8_t data);
543
545int adf5611_set_ref_clk(struct adf5611_dev *dev, uint64_t val);
546
548int adf5611_get_ref_clk(struct adf5611_dev *dev, uint64_t *val);
549
551int adf5611_set_ref_div(struct adf5611_dev *dev, int32_t div);
552
554int adf5611_get_ref_div(struct adf5611_dev *dev, int32_t *div);
555
557int adf5611_set_cp_i(struct adf5611_dev *dev, int32_t reg_val);
558
560int adf5611_get_cp_i(struct adf5611_dev *dev, int32_t *reg_val);
561
563int adf5611_set_output_power(struct adf5611_dev *dev, int8_t pwr);
564
566int adf5611_get_output_power(struct adf5611_dev *dev, int8_t *pwr);
567
569int adf5611_set_rfoutdiv_power(struct adf5611_dev *dev, int32_t pwr);
570
572int adf5611_get_rfoutdiv_power(struct adf5611_dev *dev, int32_t *pwr);
573
575int adf5611_set_rfoutdiv_divider(struct adf5611_dev *dev, uint8_t div_val);
576
578int adf5611_get_rfoutdiv_divider(struct adf5611_dev *dev, int8_t *div);
579
581int adf5611_set_en_rfoutdiv(struct adf5611_dev *dev, bool en);
582
584int adf5611_get_en_rfoutdiv(struct adf5611_dev *dev, bool *en);
585
587int adf5611_set_rfout(struct adf5611_dev *dev, uint64_t val);
588
590int adf5611_get_rfout(struct adf5611_dev *dev, uint64_t *val);
591
593int adf5611_set_freq(struct adf5611_dev *dev);
594
596int adf5611_init(struct adf5611_dev **device,
598
600int adf5611_remove(struct adf5611_dev *dev);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int adf5611_get_en_rfoutdiv(struct adf5611_dev *dev, bool *en)
Gets the value of rfoutdiv output block if enable or disable.
Definition adf5611.c:432
int adf5611_set_output_power(struct adf5611_dev *dev, int8_t pwr)
Set the rfoutput power register value and reset everything over to maximum supported value of 3 to th...
Definition adf5611.c:297
int adf5611_remove(struct adf5611_dev *dev)
Free resources allocated for ADF5611.
Definition adf5611.c:962
int adf5611_set_ref_div(struct adf5611_dev *dev, int32_t div)
Set the reference divider value and reset everything over to maximum supported value of 60 to the max...
Definition adf5611.c:194
int adf5611_get_rfoutdiv_power(struct adf5611_dev *dev, int32_t *pwr)
Gets the rfoutdiv power register value.
Definition adf5611.c:352
int adf5611_get_ref_clk(struct adf5611_dev *dev, uint64_t *val)
Gets the user proposed reference frequency.
Definition adf5611.c:178
int adf5611_set_ref_clk(struct adf5611_dev *dev, uint64_t val)
Set the desired reference frequency and reset everything over to maximum supported value of 300MHz to...
Definition adf5611.c:156
int adf5611_set_freq(struct adf5611_dev *dev)
Set the output frequency.
Definition adf5611.c:661
adf5611_device_id
Supported device ids.
Definition adf5611.h:417
@ ID_ADF5612
Definition adf5611.h:419
@ ID_ADF5611
Definition adf5611.h:418
int adf5611_spi_read(struct adf5611_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADF5611 over SPI.
Definition adf5611.c:94
int adf5611_get_ref_div(struct adf5611_dev *dev, int32_t *div)
Gets the value the reference divider.
Definition adf5611.c:213
int adf5611_set_rfout(struct adf5611_dev *dev, uint64_t val)
Set the desired output frequency and reset everything over to maximum supported value of 14....
Definition adf5611.c:481
int adf5611_set_en_rfoutdiv(struct adf5611_dev *dev, bool en)
Sets the rfoutdiv output block to enable or disable. 1 means the block is powered down else block is ...
Definition adf5611.c:418
int adf5611_set_cp_i(struct adf5611_dev *dev, int32_t reg_val)
Set the charge pump value which will be written to the register. The value will be between 0 and 15 o...
Definition adf5611.c:243
int adf5611_get_cp_i(struct adf5611_dev *dev, int32_t *reg_val)
Gets the charge pump value from the register. The value will be between 0 and 15 on 8 bits....
Definition adf5611.c:261
int adf5611_set_rfoutdiv_divider(struct adf5611_dev *dev, uint8_t div_val)
Set the rfoutdiv frequency divider register value and reset everything over to maximum supported valu...
Definition adf5611.c:374
int adf5611_spi_write(struct adf5611_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADF5611 over SPI.
Definition adf5611.c:67
int adf5611_init(struct adf5611_dev **device, struct adf5611_init_param *init_param)
Initialize the ADF5611.
Definition adf5611.c:877
int adf5611_get_output_power(struct adf5611_dev *dev, int8_t *pwr)
Gets the rfoutput power register value.
Definition adf5611.c:314
int adf5611_set_rfoutdiv_power(struct adf5611_dev *dev, int32_t pwr)
Set the rfoutdiv power register value and reset everything over to maximum supported value of 3 to th...
Definition adf5611.c:335
int adf5611_get_rfoutdiv_divider(struct adf5611_dev *dev, int8_t *div)
Gets the rfoutdiv divider register value.
Definition adf5611.c:395
int adf5611_spi_update_bits(struct adf5611_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Updates the values of the ADF5611 register.
Definition adf5611.c:129
int adf5611_get_rfout(struct adf5611_dev *dev, uint64_t *val)
Gets the user proposed output frequency.
Definition adf5611.c:500
Header file of SPI Interface.
Header file of utility functions.
ADF5611 Device Descriptor.
Definition adf5611.h:446
uint8_t rfoutdiv_div
Definition adf5611.h:460
uint64_t freq_max
Definition adf5611.h:461
uint8_t ld_count
Definition adf5611.h:459
uint16_t bleed_word
Definition adf5611.h:458
uint8_t cp_i
Definition adf5611.h:457
uint64_t vco_min
Definition adf5611.h:464
struct no_os_spi_desc * spi_desc
Definition adf5611.h:448
uint64_t vco_max
Definition adf5611.h:463
bool cmos_3v3
Definition adf5611.h:451
uint64_t ref_clk_freq
Definition adf5611.h:453
bool spi4wire
Definition adf5611.h:450
uint64_t rfout_freq
Definition adf5611.h:455
uint64_t freq_min
Definition adf5611.h:462
uint32_t ref_div
Definition adf5611.h:456
ADF5611 Inintialization Parameters Structure.
Definition adf5611.h:426
enum adf5611_device_id id
Definition adf5611.h:439
uint16_t bleed_word
Definition adf5611.h:436
uint8_t rfoutdiv_div
Definition adf5611.h:438
uint8_t cp_i
Definition adf5611.h:435
struct no_os_spi_init_param * spi_init
Definition adf5611.h:428
uint8_t ld_count
Definition adf5611.h:437
uint64_t ref_clk_freq
Definition adf5611.h:432
uint8_t ref_div
Definition adf5611.h:434
bool spi4wire
Definition adf5611.h:430
bool cmos_3v3
Definition adf5611.h:431
uint64_t rfout_freq
Definition adf5611.h:433
ADF5611 register initialization.
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
ADF4382 register format structure for default values.
Definition adf4371.c:179
uint8_t val
Definition adf4371.c:181
uint16_t reg
Definition adf4371.c:180