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
50#define ADF5611_SDO_ACTIVE_SPI_3WIRE 0x0
51#define ADF5611_SDO_ACTIVE_SPI_4WIRE 0x1
53#define ADF5611_ADDRESS_ASC_AUTO_DECR 0x0
54#define ADF5611_ADDRESS_ASC_AUTO_INCR 0x1
56#define ADF5611_LSB_FIRST_MSB 0x0
57#define ADF5611_LSB_FIRST_LSB 0x1
59#define ADF5611_SOFT_RESET_NORMAL_OP 0x0
60#define ADF5611_SOFT_RESET_EN 0x1
63#define ADF5611_SINGLE_INSTR_MSK NO_OS_BIT(7)
64#define ADF5611_MASTER_READBACK_CTRL_MSK NO_OS_BIT(5)
67#define ADF5611_SPI_STREAM_EN 0x0
68#define ADF5611_SPI_STREAM_DIS 0x1
70#define ADF5611_RB_SLAVE_REG 0x0
71#define ADF5611_RB_MASTER_REG 0x1
74#define ADF5611_CHIP_TYPE 0x06
77#define ADF5611_PRODUCT_ID_LSB 0x0005
80#define ADF5611_PRODUCT_ID_MSB 0x0005
83#define ADF5611_SCRATCHPAD_MSK NO_OS_GENMASK(7, 0)
86#define ADF5611_VENDOR_ID_LSB 0x56
89#define ADF5611_VENDOR_ID_MSB 0x04
92#define ADF5611_N_INT_LSB_MSK NO_OS_GENMASK(7, 0)
95#define ADF5611_N_INT_MID_MSK NO_OS_GENMASK(7, 0)
98#define ADF5611_FRAC1WORD_LSB_MSK NO_OS_GENMASK(7, 4)
99#define ADF5611_N_INT_MSB_MSK NO_OS_GENMASK(3, 0)
102#define ADF5611_FRAC1WORD_MID_MSK NO_OS_GENMASK(7, 0)
105#define ADF5611_FRAC1WORD_MID_MSB_MSK NO_OS_GENMASK(7, 0)
108#define ADF5611_M_VCO_BIAS_MSK NO_OS_GENMASK(7, 5)
109#define ADF5611_FRAC1WORD_MSB_MSK NO_OS_GENMASK(4, 0)
112#define ADF5611_M_VCO_BAND_MSK NO_OS_GENMASK(7, 1)
113#define ADF5611_M_VCO_CORE_MSK NO_OS_BIT(0)
116#define ADF5611_VCO_0_HIGHEST_FREQUENCY 0x0
117#define ADF5611_VCO_1_LOWEST_FREQUENCY 0x1
120#define ADF5611_FRAC2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
123#define ADF5611_FRAC2WORD_MID_MSK NO_OS_GENMASK(7, 0)
126#define ADF5611_FRAC2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
129#define ADF5611_MOD2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
132#define ADF5611_MOD2WORD_MID_MSK NO_OS_GENMASK(7, 0)
135#define ADF5611_MOD2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
138#define ADF5611_BLEED_I_MSK NO_OS_GENMASK(7, 0)
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)
150#define ADF5611_VCO_CALIBRATION_DIS 0x0
151#define ADF5611_VCO_CALIBRATION_EN 0x1
153#define ADF5611_BLEED_CURRENT_DIS 0x0
154#define ADF5611_BLEED_CURRENT_EN 0x1
156#define ADF5611_FREQUENCY_REDUCTION_DIS 0x0
157#define ADF5611_FREQUENCY_REDUCTION_EN 0x1
159#define ADF5611_DIV_NCLK_OFF 0x0
160#define ADF5611_DIV_NCLK_ON 0x1
162#define ADF5611_CURRENT_SINK 0x0
163#define ADF5611_CURRENT_SOURCE 0x1
166#define ADF5611_R_DIV_LSB_MSK NO_OS_GENMASK(7, 0)
169#define ADF5611_R_DIV_MSB_MSK NO_OS_GENMASK(5, 0)
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)
179#define ADF5611_FRAC_MODE 0x0
180#define ADF5611_INTEGER_MODE 0x1
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)
188#define ADF5611_PHASE_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
191#define ADF5611_PHASE_WORD_MID_MSK NO_OS_GENMASK(7, 0)
194#define ADF5611_PHASE_WORD_MSB_MSK NO_OS_GENMASK(7, 0)
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)
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)
214#define ADF5611_PD_PFDNCLK_MSK NO_OS_BIT(1)
215#define ADF5611_PD_ODIV_MSK NO_OS_BIT(0)
218#define ADF5611_LDWIN_PW_MSK NO_OS_GENMASK(7, 5)
219#define ADF5611_LD_COUNT_MSK NO_OS_GENMASK(4, 0)
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)
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)
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)
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)
256#define ADF5611_CAL_COUNT_TO_MSK NO_OS_GENMASK(7, 0)
259#define ADF5611_CAL_VTUNE_TO_LSB_MSK NO_OS_GENMASK(7, 0)
262#define ADF5611_0_VCO_DB_MSK NO_OS_BIT(7)
263#define ADF5611_CAL_VTUNE_TO_MSB_MSK NO_OS_GENMASK(6, 0)
266#define ADF5611_CAL_VCO_TO_LSB_MSK NO_OS_GENMASK(7, 0)
269#define ADF5611_DEL_CTRL_DB_MSK NO_OS_BIT(7)
270#define ADF5611_CAL_VCO_TO_MSB_MSK NO_OS_GENMASK(6, 0)
273#define ADF5611_CNTR_DIV_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
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)
283#define ADF5611_ADC_CLK_DIV_MSK NO_OS_GENMASK(7, 0)
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)
296#define ADF5611_SPARE_38_MSK NO_OS_BIT(7)
297#define ADF5611_VPTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
300#define ADF5611_SPARE_39_MSK NO_OS_BIT(7)
301#define ADF5611_VCTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
304#define ADF5611_NVMDIN_MSK NO_OS_GENMASK(7, 0)
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)
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)
321#define ADF5611_NVMDOUT_MSK NO_OS_GENMASK(7, 0)
324#define ADF5611_SCAN_MODE_CODE_MSK NO_OS_GENMASK(7, 0)
327#define ADF5611_TEMP_OFFSET_MSK NO_OS_GENMASK(7, 0)
330#define ADF5611_SPARE_40_MSK NO_OS_GENMASK(7, 6)
331#define ADF5611_TEMP_SLOPE_MSK NO_OS_GENMASK(5, 0)
334#define ADF5611_ADC_ST_CNV_MSK NO_OS_BIT(0)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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))
374#define ADF5611_SPI_4W_CFG(x) (no_os_field_prep(ADF5611_SDO_ACTIVE_MSK, x) | \ …
377#define ADF5611_SPI_SCRATCHPAD_TEST 0x2A
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
385#define ADF5611_VCO_FREQ_MAX 7300000000U
386#define ADF5611_MOD1WORD 0x2000000U
387#define ADF5611_MOD2WORD_MAX 0xFFFFFFU
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
399#define ADF5611_RFOUT_MIN 7300000000U
400#define ADF5611_REF_CLK_MAX 300000000000U
401#define ADF5611_REF_CLK_MIN 50000000U
402#define ADF5611_OUTPUT_DOUBLER 0x2U
403#define ADF5611_PFD_FREQ_MAX 100000000U
404#define ADF5612_RFOUT_MAX 8500000000U
405#define ADF5612_RFOUT_MIN 7300000000U
406#define ADF5612_VCO_FREQ_MAX 7300000000U
409#define GHZ KHZ * KHZ * KHZ
410#define s_TO_ns 1000000000U
412#define uA_TO_A 1000000
542 uint8_t mask, uint8_t data);
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