no-OS
adf4382.h
Go to the documentation of this file.
1 /***************************************************************************/
34 #include <stdint.h>
35 #include <string.h>
36 #include "no_os_units.h"
37 #include "no_os_util.h"
38 #include "no_os_spi.h"
39 
40 /* ADF4382 REG0000 Map */
41 #define ADF4382_SOFT_RESET_R_MSK NO_OS_BIT(7)
42 #define ADF4382_LSB_FIRST_R_MSK NO_OS_BIT(6)
43 #define ADF4382_ADDRESS_ASC_R_MSK NO_OS_BIT(5)
44 #define ADF4382_SDO_ACTIVE_R_MSK NO_OS_BIT(4)
45 #define ADF4382_SDO_ACTIVE_MSK NO_OS_BIT(3)
46 #define ADF4382_ADDRESS_ASC_MSK NO_OS_BIT(2)
47 #define ADF4382_LSB_FIRST_MSK NO_OS_BIT(1)
48 #define ADF4382_SOFT_RESET_MSK NO_OS_BIT(0)
49 #define ADF4382_RESET_CMD 0x81
50 
51 /* ADF4382 REG0000 NO_OS_BIT Definition */
52 #define ADF4382_SDO_ACTIVE_SPI_3W 0x0
53 #define ADF4382_SDO_ACTIVE_SPI_4W 0x1
54 
55 #define ADF4382_ADDR_ASC_AUTO_DECR 0x0
56 #define ADF4382_ADDR_ASC_AUTO_INCR 0x1
57 
58 #define ADF4382_LSB_FIRST_MSB 0x0
59 #define ADF4382_LSB_FIRST_LSB 0x1
60 
61 #define ADF4382_SOFT_RESET_N_OP 0x0
62 #define ADF4382_SOFT_RESET_EN 0x1
63 
64 /* ADF4382 REG0001 Map */
65 #define ADF4382_SINGLE_INSTR_MSK NO_OS_BIT(7)
66 #define ADF4382_MASTER_RB_CTRL_MSK NO_OS_BIT(5)
67 
68 /* ADF4382 REG0001 NO_OS_BIT Definition */
69 #define ADF4382_SPI_STREAM_EN 0x0
70 #define ADF4382_SPI_STREAM_DIS 0x1
71 
72 #define ADF4382_RB_SLAVE_REG 0x0
73 #define ADF4382_RB_MASTER_REG 0x1
74 
75 /* ADF4382 REG0003 NO_OS_BIT Definition */
76 #define ADF4382_CHIP_TYPE 0x06
77 
78 /* ADF4382 REG0004 NO_OS_BIT Definition */
79 #define ADF4382_PRODUCT_ID_LSB 0x0005
80 
81 /* ADF4382 REG0005 NO_OS_BIT Definition */
82 #define ADF4382_PRODUCT_ID_MSB 0x0005
83 
84 /* ADF4382 REG000A Map */
85 #define ADF4382_SCRATCHPAD_MSK NO_OS_GENMASK(7, 0)
86 
87 /* ADF4382 REG000C NO_OS_BIT Definition */
88 #define ADF4382_VENDOR_ID_LSB 0x56
89 
90 /* ADF4382 REG000D NO_OS_BIT Definition */
91 #define ADF4382_VENDOR_ID_MSB 0x04
92 
93 /* ADF4382 REG000F NO_OS_BIT Definition */
94 #define ADF4382_M_S_TRANSF_NO_OS_BIT_MSK NO_OS_BIT(0)
95 
96 /* ADF4382 REG0010 Map*/
97 #define ADF4382_N_INT_LSB_MSK NO_OS_GENMASK(7, 0)
98 
99 /* ADF4382 REG0011 Map*/
100 #define ADF4382_CLKOUT_DIV_MSK NO_OS_GENMASK(7, 5)
101 #define ADF4382_INV_CLK_OUT_MSK NO_OS_BIT(4)
102 #define ADF4382_N_INT_MSB_MSK NO_OS_GENMASK(3, 0)
103 
104 /* ADF4382 REG0012 Map */
105 #define ADF4382_FRAC1WORD_LSB_MSK NO_OS_GENMASK(7, 0)
106 
107 /* ADF4382 REG0013 Map */
108 #define ADF4382_FRAC1WORD_MID_MSK NO_OS_GENMASK(7, 0)
109 
110 /* ADF4382 REG0014 Map */
111 #define ADF4382_FRAC1WORD_MSB_MSK NO_OS_GENMASK(7, 0)
112 
113 /* ADF4382 REG0015 Map */
114 #define ADF4382_M_VCO_BAND_LSB_MSK NO_OS_BIT(7)
115 #define ADF4382_M_VCO_CORE_MSK NO_OS_BIT(6)
116 #define ADF4382_BIAS_DEC_MODE_MSK NO_OS_GENMASK(5, 3)
117 #define ADF4382_INT_MODE_MSK NO_OS_BIT(2)
118 #define ADF4382_PFD_POL_MSK NO_OS_BIT(1)
119 #define ADF4382_FRAC1WORD_MSB NO_OS_BIT(0)
120 
121 /* ADF4382 REG0016 Map */
122 #define ADF4382_M_VCO_BAND_MSB_MSK NO_OS_GENMASK(7, 0)
123 
124 /* ADF4382 REG0017 Map */
125 #define ADF4382_FRAC2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
126 
127 /* ADF4382 REG0018 Map */
128 #define ADF4382_FRAC2WORD_MID_MSK NO_OS_GENMASK(7, 0)
129 
130 /* ADF4382 REG0019 Map */
131 #define ADF4382_FRAC2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
132 
133 /* ADF4382 REG001A Map */
134 #define ADF4382_MOD2WORD_LSB_MSK NO_OS_GENMASK(7, 0)
135 
136 /* ADF4382 REG001B Map */
137 #define ADF4382_MOD2WORD_MID_MSK NO_OS_GENMASK(7, 0)
138 
139 /* ADF4382 REG001C Map */
140 #define ADF4382_MOD2WORD_MSB_MSK NO_OS_GENMASK(7, 0)
141 
142 /* ADF4382 REG001D Map */
143 #define ADF4382_FINE_BLEED_LSB_MSK NO_OS_GENMASK(7, 0)
144 
145 /* ADF4382 REG001E Map */
146 #define ADF4382_EN_PHASE_RESYNC_MSK NO_OS_BIT(7)
147 #define ADF4382_EN_REF_RST_MSK NO_OS_BIT(6)
148 #define ADF4382_TIMED_SYNC_MSK NO_OS_BIT(5)
149 #define ADF4382_COARSE_BLEED_MSK NO_OS_GENMASK(4, 1)
150 #define ADF4382_FINE_BLEED_MSB_MSK NO_OS_BIT(0)
151 
152 /* ADF4382 REG001F Map */
153 #define ADF4382_SW_SYNC_MSK NO_OS_BIT(7)
154 #define ADF4382_SPARE_1F_MSK NO_OS_BIT(6)
155 #define ADF4382_BLEED_POL_MSK NO_OS_BIT(5)
156 #define ADF4382_EN_BLEED_MSK NO_OS_BIT(4)
157 #define ADF4382_CP_I_MSK NO_OS_GENMASK(3, 0)
158 
159 /* ADF4382 REG0020 Map */
160 #define ADF4382_EN_AUTOCAL_MSK NO_OS_BIT(7)
161 #define ADF4382_EN_RDBLR_MSK NO_OS_BIT(6)
162 #define ADF4382_R_DIV_MSK NO_OS_GENMASK(5, 0)
163 
164 /* ADF4382 REG0021 Map */
165 #define ADF4382_PHASE_WORD_LSB_MSK NO_OS_GENMASK(7, 0)
166 
167 /* ADF4382 REG0022 Map */
168 #define ADF4382_PHASE_WORD_MID_MSK NO_OS_GENMASK(7, 0)
169 
170 /* ADF4382 REG0023 Map */
171 #define ADF4382_PHASE_WORD_MSB_MSK NO_OS_GENMASK(7, 0)
172 
173 /* ADF4382 REG0024 Map */
174 #define ADF4382_SPARE_24_MSK NO_OS_GENMASK(7, 5)
175 #define ADF4382_DCLK_DIV_SEL_MSK NO_OS_BIT(4)
176 #define ADF4382_DNCLK_DIV1_MSK NO_OS_GENMASK(3, 2)
177 #define ADF4382_DCLK_DIV1_MSK NO_OS_GENMASK(1, 0)
178 
179 /* ADF4382 REG0025 Map */
180 #define ADF4382_RESYNC_WAIT_LSB_MSK NO_OS_GENMASK(7, 0)
181 
182 /* ADF4382 REG0026 Map */
183 #define ADF4382_RESYNC_WAIT_MSB_MSK NO_OS_GENMASK(7, 0)
184 
185 /* ADF4382 REG0027 Map */
186 #define ADF4382_CAL_BLEED_FINE_MIN_MSK NO_OS_GENMASK(7, 4)
187 #define ADF4382_BLEED_ADJ_SCALE_MSK NO_OS_GENMASK(3, 0)
188 
189 /* ADF4382 REG0028 Map */
190 #define ADF4382_PH_RESYNC_RB_SEL_MSK NO_OS_BIT(7)
191 #define ADF4382_LSB_P1_MSK NO_OS_BIT(6)
192 #define ADF4382_VAR_MOD_EN_MSK NO_OS_BIT(5)
193 #define ADF4382_DITHER1_SCALE_MSK NO_OS_GENMASK(4, 2)
194 #define ADF4382_EN_DITHER2_MSK NO_OS_BIT(1)
195 #define ADF4382_EN_DITHER1_MSK NO_OS_BIT(0)
196 
197 /* ADF4382 REG0029 Map */
198 #define ADF4382_CLK2_OPWR_MSK NO_OS_GENMASK(7, 4)
199 #define ADF4382_CLK1_OPWR_MSK NO_OS_GENMASK(3, 0)
200 
201 /* ADF4382 REG002A Map */
202 #define ADF4382_FN_DBL_MSK NO_OS_BIT(7)
203 #define ADF4382_PD_NDIV_TL_MSK NO_OS_BIT(6)
204 #define ADF4382_CLKOUT_BST_MSK NO_OS_BIT(5)
205 #define ADF4382_PD_SYNC_MSK NO_OS_BIT(4)
206 #define ADF4382_PD_CLK_MSK NO_OS_BIT(3)
207 #define ADF4382_PD_RDET_MSK NO_OS_BIT(2)
208 #define ADF4382_PD_ADC_MSK NO_OS_BIT(1)
209 #define ADF4382_PD_CALGEN_MSK NO_OS_BIT(0)
210 
211 /* ADF4382 REG002B Map */
212 #define ADF4382_PD_ALL_MSK NO_OS_BIT(7)
213 #define ADF4382_PD_RDIV_TL_MSK NO_OS_BIT(6)
214 #define ADF4382_PD_NDIV_MSK NO_OS_BIT(5)
215 #define ADF4382_PD_VCO_MSK NO_OS_BIT(4)
216 #define ADF4382_PD_LD_MSK NO_OS_BIT(3)
217 #define ADF4382_PD_PFDCP_MSK NO_OS_BIT(2)
218 #define ADF4382_PD_CLKOUT1_MSK NO_OS_BIT(1)
219 #define ADF4382_PD_CLKOUT2_MSK NO_OS_BIT(0)
220 
221 /* ADF4382 REG002C Map */
222 #define ADF4382_LDWIN_PW_MSK NO_OS_GENMASK(7, 5)
223 #define ADF4382_LD_COUNT_OPWR_MSK NO_OS_GENMASK(4, 0)
224 
225 /* ADF4382 REG002D Map */
226 #define ADF4382_EN_DNCLK_MSK NO_OS_BIT(7)
227 #define ADF4382_EN_DRCLK_MSK NO_OS_BIT(6)
228 #define ADF4382_EN_LOL_MSK NO_OS_BIT(5)
229 #define ADF4382_EN_LDWIN_MSK NO_OS_BIT(4)
230 #define ADF4382_PDET_POL_MSK NO_OS_BIT(3)
231 #define ADF4382_RST_LD_MSK NO_OS_BIT(2)
232 #define ADF4382_LD_O_CTRL_MSK NO_OS_GENMASK(1, 0)
233 
234 /* ADF4382 REG002E Map */
235 #define ADF4382_MUXOUT_MSK NO_OS_GENMASK(7, 4)
236 #define ADF4382_ABPW_WD_MSK NO_OS_BIT(3)
237 #define ADF4382_EN_CPTEST_MSK NO_OS_BIT(2)
238 #define ADF4382_CP_DOWN_MSK NO_OS_BIT(1)
239 #define ADF4382_CP_UP_MSK NO_OS_BIT(0)
240 
241 /* ADF4382 REG002F Map*/
242 #define ADF4382_BST_REF_MSK NO_OS_BIT(7)
243 #define ADF4382_FILT_REF_MSK NO_OS_BIT(6)
244 #define ADF4382_RDBLR_DC_MSK NO_OS_GENMASK(5, 0)
245 
246 /* ADF4382 REG0030 Map */
247 #define ADF4382_MUTE_NCLK_MSK NO_OS_BIT(7)
248 #define ADF4382_MUTE_RCLK_MSK NO_OS_BIT(6)
249 #define ADF4382_REF_SEL_MSK NO_OS_BIT(5)
250 #define ADF4382_INV_RDBLR_MSK NO_OS_BIT(4)
251 #define ADF4382_RDBLR_DEL_SEL_MSK NO_OS_GENMASK(3, 0)
252 
253 /* ADF4382 REG0031 Map */
254 #define ADF4382_SYNC_DEL_MSK NO_OS_GENMASK(7, 5)
255 #define ADF4382_RST_SYS_MSK NO_OS_BIT(4)
256 #define ADF4382_EN_ADC_CLK_MSK NO_OS_BIT(3)
257 #define ADF4382_EN_VCAL_MSK NO_OS_BIT(2)
258 #define ADF4382_CAL_CT_SEL_MSK NO_OS_BIT(1)
259 #define ADF4382_DCLK_MODE_MSK NO_OS_BIT(0)
260 
261 /* ADF4382 REG0032 Map */
262 #define ADF4382_SPARE_32_MSK NO_OS_BIT(7)
263 #define ADF4382_BLEED_ADJ_CAL_MSK NO_OS_BIT(6)
264 #define ADF4382_DEL_MODE_MSK NO_OS_BIT(5)
265 #define ADF4382_EN_AUTO_ALIGN_MSK NO_OS_BIT(4)
266 #define ADF4382_PHASE_ADJ_POL_MSK NO_OS_BIT(3)
267 #define ADF4382_EFM3_MODE_MSK NO_OS_GENMASK(2, 0)
268 
269 /* ADF4382 REG0033 Map */
270 #define ADF4382_PHASE_ADJUST_MSK NO_OS_GENMASK(7, 0)
271 
272 /* ADF4382 REG0034 Map */
273 #define ADF4382_PHASE_ADJ_MSK NO_OS_BIT(7)
274 #define ADF4382_DRCLK_DEL_MSK NO_OS_GENMASK(6, 4)
275 #define ADF4382_DNCLK_DEL_MSK NO_OS_GENMASK(3, 1)
276 #define ADF4382_RST_CNTR_MSK NO_OS_BIT(0)
277 
278 /* ADF4382 REG0035 Map */
279 #define ADF4382_SPARE_35_MSK NO_OS_GENMASK(7, 6)
280 #define ADF4382_M_VCO_BIAS_MSK NO_OS_GENMASK(5, 0)
281 
282 /* ADF4382 REG0036 Map */
283 #define ADF4382_CLKODIV_DB_MSK NO_OS_BIT(7)
284 #define ADF4382_DCLK_DIV_DB_MSK NO_OS_BIT(6)
285 #define ADF4382_SPARE_36_MSK NO_OS_GENMASK(5, 2)
286 #define ADF4382_EN_LUT_GEN_MSK NO_OS_BIT(1)
287 #define ADF4382_EN_LUT_CAL_MSK NO_OS_BIT(0)
288 
289 /* ADF4382 REG0037 Map */
290 #define ADF4382_CAL_COUNT_TO_MSK NO_OS_GENMASK(7, 0)
291 
292 /* ADF4382 REG0038 Map */
293 #define ADF4382_CAL_VTUNE_TO_LSB_MSK NO_OS_GENMASK(7, 0)
294 
295 /* ADF4382 REG0039 Map */
296 #define ADF4382_O_VCO_DB_MSK NO_OS_BIT(7)
297 #define ADF4382_CAL_VTUNE_TO_MSB_MSK NO_OS_GENMASK(6, 0)
298 
299 /* ADF4382 REG003A Map */
300 #define ADF4382_CAL_VCO_TO_LSB_MSK NO_OS_GENMASK(7, 0)
301 
302 /* ADF4382 REG003B Map */
303 #define ADF4382_DEL_CTRL_DB_MSK NO_OS_BIT(7)
304 #define ADF4382_CAL_VCO_TO_MSB_MSK NO_OS_GENMASK(6, 0)
305 
306 /* ADF4382 REG003C Map */
307 #define ADF4382_CNTR_DIV_WORD_MSK NO_OS_GENMASK(7, 0)
308 
309 /* ADF4382 REG003D Map */
310 #define ADF4382_SPARE_3D_MSK NO_OS_BIT(7)
311 #define ADF4382_SYNC_SP_DB_MSK NO_OS_BIT(6)
312 #define ADF4382_CMOS_OV_MSK NO_OS_BIT(5)
313 #define ADF4382_READ_MODE_MSK NO_OS_BIT(4)
314 #define ADF4382_CNTR_DIV_WORD_MSB_MSK NO_OS_GENMASK(3, 0)
315 
316 /* ADF4382 REG003E Map */
317 #define ADF4382_ADC_CLK_DIV_MSK NO_OS_GENMASK(7, 0)
318 
319 /* ADF4382 REG003F Map */
320 #define ADF4382_EN_ADC_CNV_MSK NO_OS_BIT(7)
321 #define ADF4382_EN_ADC_VTEST_MSK NO_OS_BIT(6)
322 #define ADF4382_ADC_VTEST_SEL_MSK NO_OS_BIT(5)
323 #define ADF4382_ADC_MUX_SEL_MSK NO_OS_BIT(4)
324 #define ADF4382_ADC_F_CONV_MSK NO_OS_BIT(3)
325 #define ADF4382_ADC_C_CONV_MSK NO_OS_BIT(2)
326 #define ADF4382_EN_ADC_MSK NO_OS_BIT(1)
327 #define ADF4382_SPARE_3F_MSK NO_OS_BIT(0)
328 
329 /* ADF4382 REG0040 Map */
330 #define ADF4382_EXT_DIV_DEC_SEL_MSK NO_OS_BIT(7)
331 #define ADF4382_ADC_CLK_TEST_SEL_MSK NO_OS_BIT(6)
332 #define ADF4382_MUTE_CLKOUT2_MSK NO_OS_GENMASK(5, 3)
333 #define ADF4382_MUTE_CLKOUT1_MSK NO_OS_GENMASK(2, 0)
334 
335 /* ADF4382 REG0041 Map */
336 #define ADF4382_EXT_DIV_MSK NO_OS_GENMASK(7, 5)
337 #define ADF4382_EN_VCO_CAP_TEST_MSK NO_OS_BIT(4)
338 #define ADF4382_EN_CALGEN_CAP_TEST_MSK NO_OS_BIT(3)
339 #define ADF4382_EN_CP_CAP_TEST_MSK NO_OS_BIT(2)
340 #define ADF4382_CAP_TEST_STATE_MSK NO_OS_BIT(1)
341 #define ADF4382_TRANS_LOOP_SEL_MSK NO_OS_BIT(0)
342 
343 /* ADF4382 REG0042 Map */
344 #define ADF4382_NDIV_PWRUP_TIMEOUT_MSK NO_OS_GENMASK(7, 0)
345 
346 /* ADF4382 REG0043 Map */
347 #define ADF4382_CAL_BLEED_FINE_MAX_MSK NO_OS_GENMASK(7, 0)
348 
349 /* ADF4382 REG0044 Map */
350 #define ADF4382_VCAL_ZERO_MSK NO_OS_BIT(7)
351 #define ADF4382_VPTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
352 
353 /* ADF4382 REG0045 Map */
354 #define ADF4382_SPARE_45_MSK NO_OS_BIT(7)
355 #define ADF4382_VCTAT_CALGEN_MSK NO_OS_GENMASK(6, 0)
356 
357 /* ADF4382 REG0046 Map */
358 #define ADF4382_NVMDIN_MSK NO_OS_GENMASK(7, 0)
359 
360 /* ADF4382 REG0047 Map */
361 #define ADF4382_SPARE_47_MSK NO_OS_BIT(7)
362 #define ADF4382_NVMADDR_MSK NO_OS_GENMASK(6, 3)
363 #define ADF4382_NVMNO_OS_BIT_SEL NO_OS_GENMASK(2, 0)
364 
365 /* ADF4382 REG0048 Map */
366 #define ADF4382_TRIM_LATCH_MSK NO_OS_BIT(7)
367 #define ADF4382_NVMTEST_MSK NO_OS_BIT(6)
368 #define ADF4382_NVMPROG_MSK NO_OS_BIT(5)
369 #define ADF4382_NVMRD_MSK NO_OS_BIT(4)
370 #define ADF4382_NVMSTART_MSK NO_OS_BIT(3)
371 #define ADF4382_NVMON_MSK NO_OS_BIT(2)
372 #define ADF4382_MARGIN_MSK NO_OS_GENMASK(1, 0)
373 
374 /* ADF4382 REG0049 Map */
375 #define ADF4382_NVMDOUT_MSK NO_OS_GENMASK(7, 0)
376 
377 /* ADF4382 REG004A Map */
378 #define ADF4382_SCAN_MODE_CODE_MSK NO_OS_GENMASK(7, 0)
379 
380 /* ADF4382 REG004B Map */
381 #define ADF4382_TEMP_OFFSET_MSK NO_OS_GENMASK(7, 0)
382 
383 /* ADF4382 REG004C Map */
384 #define ADF4382_SPARE_4C_MSK NO_OS_GENMASK(7, 6)
385 #define ADF4382_TEMP_SLOPE_MSK NO_OS_GENMASK(5, 0)
386 
387 /* ADF4382 REG004D Map */
388 #define ADF4382_VCO_FSM_TEST_MUX_MSK NO_OS_GENMASK(7, 5)
389 #define ADF4382_SPARE_4D_MSK NO_OS_GENMASK(4, 3)
390 #define ADF4382_O_VCO_BIAS_MSK NO_OS_BIT(2)
391 #define ADF4382_O_VCO_BAND_MSK NO_OS_BIT(1)
392 #define ADF4382_O_VCO_CORE_MSK NO_OS_BIT(0)
393 
394 /* ADF4382 REG004E Map */
395 #define ADF4382_SPARE_4E_MSK NO_OS_GENMASK(7, 5)
396 #define ADF4382_EN_TWO_PASS_CAL_MSK NO_OS_BIT(4)
397 #define ADF4382_TWO_PASS_BAND_START_MSK NO_OS_GENMASK(3, 0)
398 
399 /* ADF4382 REG004F Map */
400 #define ADF4382_LUT_SCALE_MSK NO_OS_GENMASK(7, 0)
401 
402 /* ADF4382 REG0050 Map */
403 #define ADF4382_SPARE0_MSK NO_OS_GENMASK(7, 0)
404 
405 /* ADF4382 REG0051 Map */
406 #define ADF4382_SPARE1_MSK NO_OS_GENMASK(7, 0)
407 
408 /* ADF4382 REG0052 Map */
409 #define ADF4382_SYNC_REF_SPARE_MSK NO_OS_GENMASK(7, 4)
410 #define ADF4382_SYNC_MON_DEL_MSK NO_OS_GENMASK(3, 0)
411 
412 /* ADF4382 REG0053 Map */
413 #define ADF4382_SPARE_53_MSK NO_OS_BIT(7)
414 #define ADF4382_PD_SYNC_MON_MSK NO_OS_BIT(6)
415 #define ADF4382_SYNC_SEL_MSK NO_OS_BIT(5)
416 #define ADF4382_RST_SYNC_MON_MSK NO_OS_BIT(4)
417 #define ADF4382_SYNC_SH_DEL_MSK NO_OS_GENMASK(3, 0)
418 
419 /* ADF4382 REG0054 Map */
420 #define ADF4382_ADC_ST_CNV_MSK NO_OS_BIT(0)
421 
422 /* ADF4382 REG0058 Map */
423 #define ADF4382_LOCKED_MSK NO_OS_BIT(0)
424 
425 #define ADF4382_SPI_3W_CFG(x) (no_os_field_prep(ADF4382_SDO_ACTIVE_MSK, x) | \
426  no_os_field_prep(ADF4382_SDO_ACTIVE_R_MSK, x))
427 #define ADF4382_BLEED_MSB_MSK (ADF4382_COARSE_BLEED_MSK | \
428  ADF4382_FINE_BLEED_MSB_MSK)
429 
430 #define ADF4382_SPI_SCRATCHPAD_TEST 0x5A
431 
432 /* Specifications */
433 #define ADF4382_SPI_WRITE_CMD 0x0
434 #define ADF4382_SPI_READ_CMD 0x8000
435 #define ADF4382_SPI_DUMMY_DATA 0x00
436 #define ADF4382_BUFF_SIZE_BYTES 3
437 #define ADF4382_VCO_FREQ_MIN 11000000000U // 11GHz
438 #define ADF4382_VCO_FREQ_MAX 22000000000U // 22GHz
439 #define ADF4382A_VCO_FREQ_MIN 11500000000U // 11.5GHz
440 #define ADF4382A_VCO_FREQ_MAX 21000000000U // 21GHz
441 #define ADF4382_MOD1WORD 0x2000000U // 2^25
442 #define ADF4382_MOD2WORD_MAX 0xFFFFFFU // 2^24 - 1
443 #define ADF4382_PHASE_RESYNC_MOD2WORD_MAX 0x1FFFFU // 2^17 - 1
444 #define ADF4382_CHANNEL_SPACING_MAX 78125U
445 #define ADF4382_PFD_FREQ_MAX 625000000U // 625MHz
446 #define ADF4382_PFD_FREQ_FRAC_MAX 250000000U // 250MHz
447 #define ADF4382_PFD_FREQ_MIN 5400000U // 5.4MHz
448 #define ADF4382_DCLK_DIV1_0_MAX 160000000U // 160MHz
449 #define ADF4382_DCLK_DIV1_1_MAX 320000000U // 320MHz
450 #define ADF4382_CLKOUT_DIV_REG_VAL_MAX 4
451 #define ADF4382A_CLKOUT_DIV_REG_VAL_MAX 2
452 
453 #define ADF4382_RFOUT_MAX 22000000000U
454 #define ADF4382_RFOUT_MIN 687500000U
455 #define ADF4382A_RFOUT_MAX 21000000000U
456 #define ADF4382A_RFOUT_MIN 2875000000U
457 #define ADF4382_REF_CLK_MAX 5000000000U
458 #define ADF4382_REF_CLK_MIN 10000000
459 #define ADF4382_REF_DIV_MAX 63
460 #define ADF4382_OUT_PWR_MAX 15
461 #define ADF4382_CPI_VAL_MAX 15
462 #define ADF4382_BLEED_WORD_MAX 8191
463 
464 #define ADF4382_PHASE_BLEED_CNST 2044000
465 #define ADF4382_VCO_CAL_CNT 202
466 #define ADF4382_VCO_CAL_VTUNE 124
467 #define ADF4382_VCO_CAL_ALC 250
468 #define ADF4382_POR_DELAY_US 200
469 #define ADF4382_LKD_DELAY_US 500
470 
471 #define MHZ MEGA
472 #define S_TO_NS NANO
473 #define NS_TO_PS KHZ_PER_MHZ
474 
481 };
482 
491  bool cmos_3v3;
492  uint64_t ref_freq_hz;
493  uint64_t freq;
495  uint8_t ref_div;
496  uint8_t cp_i;
497  uint16_t bleed_word;
498  uint8_t ld_count;
500 };
501 
506 struct adf4382_dev {
510  bool cmos_3v3;
511  uint64_t ref_freq_hz;
512  uint64_t freq;
514  uint8_t ref_div;
515  uint8_t cp_i;
516  uint16_t bleed_word;
517  uint8_t ld_count;
518  uint32_t phase_adj;
519  uint64_t vco_max;
520  uint64_t vco_min;
521  uint64_t freq_max;
522  uint64_t freq_min;
524 };
525 
530 struct reg_sequence {
531  uint16_t reg;
532  uint8_t val;
533 };
534 
539 static const struct reg_sequence adf4382_reg_defaults[] = {
540  { 0x000, 0x18 },
541  { 0x00a, 0xA5 },
542  { 0x200, 0x00 },
543  { 0x201, 0x00 },
544  { 0x202, 0x00 },
545  { 0x203, 0x00 },
546  { 0x203, 0x00 },
547  { 0x203, 0x00 },
548  { 0x100, 0x25 },
549  { 0x101, 0x3F },
550  { 0x102, 0x3F },
551  { 0x103, 0x3F },
552  { 0x104, 0x3F },
553  { 0x105, 0x3F },
554  { 0x106, 0x3F },
555  { 0x107, 0x3F },
556  { 0x108, 0x3F },
557  { 0x109, 0x25 },
558  { 0x10A, 0x25 },
559  { 0x10B, 0x3F },
560  { 0x10C, 0x3F },
561  { 0x10D, 0x3F },
562  { 0x10E, 0x3F },
563  { 0x10F, 0x3F },
564  { 0x110, 0x3F },
565  { 0x111, 0x3F },
566  { 0x054, 0x00 },
567  { 0x053, 0x45 },
568  { 0x052, 0x00 },
569  { 0x051, 0x00 },
570  { 0x050, 0x00 },
571  { 0x04f, 0x08 },
572  { 0x04e, 0x06 },
573  { 0x04d, 0x00 },
574  { 0x04c, 0x2B },
575  { 0x04b, 0x5D },
576  { 0x04a, 0x00 },
577  { 0x048, 0x00 },
578  { 0x047, 0x00 },
579  { 0x046, 0x00 },
580  { 0x045, 0x62 },
581  { 0x044, 0x3F },
582  { 0x043, 0xB8 },
583  { 0x042, 0x01 },
584  { 0x041, 0x00 },
585  { 0x040, 0x00 },
586  { 0x03f, 0x82 },
587  { 0x03e, 0x4E },
588  { 0x03c, 0x00 },
589  { 0x03b, 0x00 },
590  { 0x03a, 0xFA },
591  { 0x039, 0x00 },
592  { 0x038, 0x71 },
593  { 0x037, 0x82 },
594  { 0x036, 0xC0 },
595  { 0x035, 0x00 },
596  { 0x034, 0x36 },
597  { 0x033, 0x00 },
598  { 0x032, 0x40 },
599  { 0x031, 0x63 },
600  { 0x030, 0x0F },
601  { 0x02f, 0x3F },
602  { 0x02e, 0x00 },
603  { 0x02d, 0xF1 },
604  { 0x02c, 0x0E },
605  { 0x02b, 0x01 },
606  { 0x02a, 0x30 },
607  { 0x029, 0x09 },
608  { 0x028, 0x00 },
609  { 0x027, 0xF0 },
610  { 0x026, 0x00 },
611  { 0x025, 0x01 },
612  { 0x024, 0x01 },
613  { 0x023, 0x00 },
614  { 0x022, 0x00 },
615  { 0x021, 0x00 },
616  { 0x020, 0xC1 },
617  { 0x01f, 0x0F },
618  { 0x01e, 0x20 },
619  { 0x01d, 0x00 },
620  { 0x01c, 0x00 },
621  { 0x01b, 0x00 },
622  { 0x01a, 0x00 },
623  { 0x019, 0x00 },
624  { 0x018, 0x00 },
625  { 0x017, 0x00 },
626  { 0x016, 0x00 },
627  { 0x015, 0x06 },
628  { 0x014, 0x00 },
629  { 0x013, 0x00 },
630  { 0x012, 0x00 },
631  { 0x011, 0x00 },
632  { 0x010, 0x50 },
633 };
634 
636 int adf4382_spi_write(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t data);
637 
639 int adf4382_spi_read(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t *data);
640 
642 int adf4382_spi_update_bits(struct adf4382_dev *dev, uint16_t reg_addr,
643  uint8_t mask, uint8_t data);
644 
646 int adf4382_reg_dump(struct adf4382_dev *dev);
647 
649 int adf4382_set_ref_clk(struct adf4382_dev *dev, uint64_t val);
650 
652 int adf4382_get_ref_clk(struct adf4382_dev *dev, uint64_t *val);
653 
655 int adf4382_set_en_ref_doubler(struct adf4382_dev *dev, bool en);
656 
658 int adf4382_get_en_ref_doubler(struct adf4382_dev *dev, bool *en);
659 
661 int adf4382_set_ref_div(struct adf4382_dev *dev, int32_t div);
662 
664 int adf4382_get_ref_div(struct adf4382_dev *dev, int32_t *div);
665 
667 int adf4382_set_cp_i(struct adf4382_dev *dev, int32_t reg_val);
668 
670 int adf4382_get_cp_i(struct adf4382_dev *dev, int32_t *reg_val);
671 
673 int adf4382_set_bleed_word(struct adf4382_dev *dev, int32_t word);
674 
676 int adf4382_get_bleed_word(struct adf4382_dev *dev, int32_t *word);
677 
679 int adf4382_set_rfout(struct adf4382_dev *dev, uint64_t val);
680 
682 int adf4382_get_rfout(struct adf4382_dev *dev, uint64_t *val);
683 
685 int adf4382_set_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t pwr);
686 
688 int adf4382_get_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t *pwr);
689 
691 int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en);
692 
694 int adf4382_get_en_chan(struct adf4382_dev *dev, uint8_t ch, bool *en);
695 
697 int adf4382_set_en_sync(struct adf4382_dev *dev, bool en);
698 
700 int adf4382_get_en_sync(struct adf4382_dev *dev, bool *en);
701 
703 int adf4382_set_freq(struct adf4382_dev *dev);
704 
706 int adf4382_set_phase_adjust(struct adf4382_dev *dev, uint32_t phase_ps);
707 
709 int adf4382_set_phase_pol(struct adf4382_dev *dev, bool polarity);
710 
712 int adf4382_get_phase_pol(struct adf4382_dev *dev, bool *polarity);
713 
715 int adf4382_init(struct adf4382_dev **device,
717 
719 int adf4382_remove(struct adf4382_dev *dev);
adf4382_dev::clkout_div_reg_val_max
uint8_t clkout_div_reg_val_max
Definition: adf4382.h:523
ADF4382_FRAC1WORD_MSB_MSK
#define ADF4382_FRAC1WORD_MSB_MSK
Definition: adf4382.h:111
no_os_alloc.h
adf4382_dev_id
adf4382_dev_id
Supported device ids.
Definition: adf4382.h:478
ADF4382_EN_ADC_CLK_MSK
#define ADF4382_EN_ADC_CLK_MSK
Definition: adf4382.h:256
adf4382_set_en_sync
int adf4382_set_en_sync(struct adf4382_dev *dev, bool en)
Set the sync to enable or disable based on the passed parameter. If the parameter is different then 0...
Definition: adf4382.c:515
ADF4382_COARSE_BLEED_MSK
#define ADF4382_COARSE_BLEED_MSK
Definition: adf4382.h:149
ADF4382_RFOUT_MIN
#define ADF4382_RFOUT_MIN
Definition: adf4382.h:454
ADF4382_REF_CLK_MAX
#define ADF4382_REF_CLK_MAX
Definition: adf4382.h:457
ADF4382A_RFOUT_MIN
#define ADF4382A_RFOUT_MIN
Definition: adf4382.h:456
ADF4382_PHASE_RESYNC_MOD2WORD_MAX
#define ADF4382_PHASE_RESYNC_MOD2WORD_MAX
Definition: adf4382.h:443
no_os_spi_write_and_read
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:159
adf4382_dev::cp_i
uint8_t cp_i
Definition: adf4382.h:515
adf4382_init_param::id
enum adf4382_dev_id id
Definition: adf4382.h:499
ADF4382_INT_MODE_MSK
#define ADF4382_INT_MODE_MSK
Definition: adf4382.h:117
adf4382_reg_dump
int adf4382_reg_dump(struct adf4382_dev *dev)
Will output on the terminal the values of all the ADF4382 registers.
Definition: adf4382.c:160
no_os_spi.h
Header file of SPI Interface.
NS_TO_PS
#define NS_TO_PS
Definition: adf4382.h:473
ADF4382_FRAC2WORD_LSB_MSK
#define ADF4382_FRAC2WORD_LSB_MSK
Definition: adf4382.h:125
reg_sequence
ADF4382 register format structure for default values.
Definition: adf4371.c:185
adf4382_init_param::ref_div
uint8_t ref_div
Definition: adf4382.h:495
ADF4382_EN_RDBLR_MSK
#define ADF4382_EN_RDBLR_MSK
Definition: adf4382.h:161
ADF4382_VCO_CAL_ALC
#define ADF4382_VCO_CAL_ALC
Definition: adf4382.h:467
adf4382_get_rfout
int adf4382_get_rfout(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed output frequency.
Definition: adf4382.c:590
adf4382_init_param::ref_freq_hz
uint64_t ref_freq_hz
Definition: adf4382.h:492
ADF4382_CPI_VAL_MAX
#define ADF4382_CPI_VAL_MAX
Definition: adf4382.h:461
adf4382_get_en_sync
int adf4382_get_en_sync(struct adf4382_dev *dev, bool *en)
Gets the value the sync if it is enabled or disable.
Definition: adf4382.c:529
no_os_units.h
Header file of Units.
adf4382_get_en_sync
int adf4382_get_en_sync(struct adf4382_dev *dev, bool *en)
Gets the value the sync if it is enabled or disable.
Definition: adf4382.c:529
adf4382_set_out_power
int adf4382_set_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t pwr)
Set the output power register value of a channel and reset everything over to maximum supported value...
Definition: adf4382.c:414
ADF4382_PHASE_ADJ_POL_MSK
#define ADF4382_PHASE_ADJ_POL_MSK
Definition: adf4382.h:266
pr_err
#define pr_err(fmt, args...)
Definition: no_os_print_log.h:88
adf4382_dev::freq
uint64_t freq
Definition: adf4382.h:512
adf4382_set_rfout
int adf4382_set_rfout(struct adf4382_dev *dev, uint64_t val)
Set the desired output frequency and reset everything over to maximum supported value of 22GHz (21GHz...
Definition: adf4382.c:552
no_os_delay.h
Header file of Delay functions.
adf4382_get_bleed_word
int adf4382_get_bleed_word(struct adf4382_dev *dev, int32_t *word)
Gets the value of the set bleed word.
Definition: adf4382.c:384
adf4382_dev::ref_div
uint8_t ref_div
Definition: adf4382.h:514
ADF4382_DEL_MODE_MSK
#define ADF4382_DEL_MODE_MSK
Definition: adf4382.h:264
adf4382_set_en_chan
int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en)
Set the output channel to enable or disable based on the passed parameter. If the parameter is differ...
Definition: adf4382.c:465
ADF4382_RFOUT_MAX
#define ADF4382_RFOUT_MAX
Definition: adf4382.h:453
adf4382_remove
int adf4382_remove(struct adf4382_dev *dev)
Free resources allocated for ADF4382.
Definition: adf4382.c:1283
pr_info
#define pr_info(fmt, args...)
Definition: no_os_print_log.h:115
ADF4382_FINE_BLEED_LSB_MSK
#define ADF4382_FINE_BLEED_LSB_MSK
Definition: adf4382.h:143
NO_OS_DIV_ROUND_CLOSEST_ULL
#define NO_OS_DIV_ROUND_CLOSEST_ULL(x, y)
Definition: no_os_util.h:56
adf4382_get_cp_i
int adf4382_get_cp_i(struct adf4382_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: adf4382.c:343
ADF4382_FRAC1WORD_LSB_MSK
#define ADF4382_FRAC1WORD_LSB_MSK
Definition: adf4382.h:105
adf4382_dev::vco_min
uint64_t vco_min
Definition: adf4382.h:520
adf4382_set_freq
int adf4382_set_freq(struct adf4382_dev *dev)
Set the output frequency.
Definition: adf4382.c:788
adf4382_init_param::spi_3wire_en
bool spi_3wire_en
Definition: adf4382.h:490
MICROAMPER_PER_AMPER
#define MICROAMPER_PER_AMPER
Definition: no_os_units.h:64
ADF4382_VCO_CAL_VTUNE
#define ADF4382_VCO_CAL_VTUNE
Definition: adf4382.h:466
device
Definition: ad9361_util.h:69
ADF4382_CAL_CT_SEL_MSK
#define ADF4382_CAL_CT_SEL_MSK
Definition: adf4382.h:258
no_os_print_log.h
Print messages helpers.
adf4382_dev::vco_max
uint64_t vco_max
Definition: adf4382.h:519
no_os_div64_u64_rem
uint64_t no_os_div64_u64_rem(uint64_t dividend, uint64_t divisor, uint64_t *remainder)
no_os_calloc
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:54
NO_OS_ARRAY_SIZE
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:49
ADF4382_SPI_SCRATCHPAD_TEST
#define ADF4382_SPI_SCRATCHPAD_TEST
Definition: adf4382.h:430
ID_ADF4382A
@ ID_ADF4382A
Definition: adf4382.h:480
adf4382_init_param
ADF4382 Initialization Parameters structure.
Definition: adf4382.h:487
adf4382_set_bleed_word
int adf4382_set_bleed_word(struct adf4382_dev *dev, int32_t word)
Set the bleed word, which represents the value of the bleed current written to the register space.
Definition: adf4382.c:365
ADF4382_EN_BLEED_MSK
#define ADF4382_EN_BLEED_MSK
Definition: adf4382.h:156
ADF4382_CLK1_OPWR_MSK
#define ADF4382_CLK1_OPWR_MSK
Definition: adf4382.h:199
ADF4382_MOD2WORD_MAX
#define ADF4382_MOD2WORD_MAX
Definition: adf4382.h:442
MHZ
#define MHZ
Definition: adf4382.h:471
ADF4382_VAR_MOD_EN_MSK
#define ADF4382_VAR_MOD_EN_MSK
Definition: adf4382.h:192
adf4382_set_en_sync
int adf4382_set_en_sync(struct adf4382_dev *dev, bool en)
Set the sync to enable or disable based on the passed parameter. If the parameter is different then 0...
Definition: adf4382.c:515
adf4382_get_out_power
int adf4382_get_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t *pwr)
Gets the output power register value.
Definition: adf4382.c:438
ADF4382_REF_CLK_MIN
#define ADF4382_REF_CLK_MIN
Definition: adf4382.h:458
ADF4382_VCO_FREQ_MAX
#define ADF4382_VCO_FREQ_MAX
Definition: adf4382.h:438
ADF4382_FRAC1WORD_MID_MSK
#define ADF4382_FRAC1WORD_MID_MSK
Definition: adf4382.h:108
ADF4382_EN_PHASE_RESYNC_MSK
#define ADF4382_EN_PHASE_RESYNC_MSK
Definition: adf4382.h:146
adf4382_spi_write
int adf4382_spi_write(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADF4382 over SPI.
Definition: adf4382.c:68
adf4382_dev::spi_3wire_en
bool spi_3wire_en
Definition: adf4382.h:509
no_os_field_prep
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
adf4382_set_ref_clk
int adf4382_set_ref_clk(struct adf4382_dev *dev, uint64_t val)
Set the desired reference frequency and reset everything over to maximum supported value of 5GHz to t...
Definition: adf4382.c:201
adf4382_get_ref_div
int adf4382_get_ref_div(struct adf4382_dev *dev, int32_t *div)
Gets the value the reference divider.
Definition: adf4382.c:299
adf4382_set_ref_clk
int adf4382_set_ref_clk(struct adf4382_dev *dev, uint64_t val)
Set the desired reference frequency and reset everything over to maximum supported value of 5GHz to t...
Definition: adf4382.c:201
no_os_error.h
Error codes definition.
ADF4382_FRAC1WORD_MSB
#define ADF4382_FRAC1WORD_MSB
Definition: adf4382.h:119
NO_OS_DIV_ROUND_UP
#define NO_OS_DIV_ROUND_UP(x, y)
Definition: no_os_util.h:52
ADF4382_DCLK_MODE_MSK
#define ADF4382_DCLK_MODE_MSK
Definition: adf4382.h:259
ADF4382_N_INT_LSB_MSK
#define ADF4382_N_INT_LSB_MSK
Definition: adf4382.h:97
ADF4382_OUT_PWR_MAX
#define ADF4382_OUT_PWR_MAX
Definition: adf4382.h:460
adf4382_init_param::cmos_3v3
bool cmos_3v3
Definition: adf4382.h:491
adf4382_dev::phase_adj
uint32_t phase_adj
Definition: adf4382.h:518
adf4382_get_phase_pol
int adf4382_get_phase_pol(struct adf4382_dev *dev, bool *polarity)
Gets the polarity of the phase adjust.
Definition: adf4382.c:1138
ADF4382_LOCKED_MSK
#define ADF4382_LOCKED_MSK
Definition: adf4382.h:423
adf4382_init_param::freq
uint64_t freq
Definition: adf4382.h:493
ADF4382_VCO_CAL_CNT
#define ADF4382_VCO_CAL_CNT
Definition: adf4382.h:465
adf4382_dev
ADF4382 Device Descriptor.
Definition: adf4382.h:506
adf4382_spi_read
int adf4382_spi_read(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADF4382 over SPI.
Definition: adf4382.c:98
ADF4382_FRAC2WORD_MID_MSK
#define ADF4382_FRAC2WORD_MID_MSK
Definition: adf4382.h:128
adf4382_get_ref_div
int adf4382_get_ref_div(struct adf4382_dev *dev, int32_t *div)
Gets the value the reference divider.
Definition: adf4382.c:299
adf4382_get_phase_pol
int adf4382_get_phase_pol(struct adf4382_dev *dev, bool *polarity)
Gets the polarity of the phase adjust.
Definition: adf4382.c:1138
NO_OS_DIV_U64
#define NO_OS_DIV_U64(x, y)
Definition: no_os_util.h:115
ADF4382_PD_SYNC_MSK
#define ADF4382_PD_SYNC_MSK
Definition: adf4382.h:205
adf4382_set_en_chan
int adf4382_set_en_chan(struct adf4382_dev *dev, uint8_t ch, bool en)
Set the output channel to enable or disable based on the passed parameter. If the parameter is differ...
Definition: adf4382.c:465
reg_sequence::val
uint8_t val
Definition: adf4371.c:187
ADF4382_MOD2WORD_LSB_MSK
#define ADF4382_MOD2WORD_LSB_MSK
Definition: adf4382.h:134
adf4382_set_bleed_word
int adf4382_set_bleed_word(struct adf4382_dev *dev, int32_t word)
Set the bleed word, which represents the value of the bleed current written to the register space.
Definition: adf4382.c:365
ADF4382_CLKOUT_DIV_MSK
#define ADF4382_CLKOUT_DIV_MSK
Definition: adf4382.h:100
ADF4382_SPI_READ_CMD
#define ADF4382_SPI_READ_CMD
Definition: adf4382.h:434
adf4382_remove
int adf4382_remove(struct adf4382_dev *dev)
Free resources allocated for ADF4382.
Definition: adf4382.c:1283
ADF4382_REF_DIV_MAX
#define ADF4382_REF_DIV_MAX
Definition: adf4382.h:459
adf4382_set_cp_i
int adf4382_set_cp_i(struct adf4382_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: adf4382.c:322
no_os_spi_desc::bit_order
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:204
ADF4382_DCLK_DIV1_0_MAX
#define ADF4382_DCLK_DIV1_0_MAX
Definition: adf4382.h:448
no_os_spi_desc
Structure holding SPI descriptor.
Definition: no_os_spi.h:192
ADF4382_CP_I_MSK
#define ADF4382_CP_I_MSK
Definition: adf4382.h:157
no_os_clamp
#define no_os_clamp(val, min_val, max_val)
Definition: no_os_util.h:69
adf4382_init_param::ld_count
uint8_t ld_count
Definition: adf4382.h:498
adf4382_dev::ref_doubler_en
bool ref_doubler_en
Definition: adf4382.h:513
ADF4382_VCO_FREQ_MIN
#define ADF4382_VCO_FREQ_MIN
Definition: adf4382.h:437
ADF4382_N_INT_MSB_MSK
#define ADF4382_N_INT_MSB_MSK
Definition: adf4382.h:102
ADF4382A_RFOUT_MAX
#define ADF4382A_RFOUT_MAX
Definition: adf4382.h:455
adf4382_get_en_ref_doubler
int adf4382_get_en_ref_doubler(struct adf4382_dev *dev, bool *en)
Gets the value the doubler if it is enabled or disable and stores it it the dev structure.
Definition: adf4382.c:258
no_os_greatest_common_divisor
uint32_t no_os_greatest_common_divisor(uint32_t a, uint32_t b)
ADF4382_CMOS_OV_MSK
#define ADF4382_CMOS_OV_MSK
Definition: adf4382.h:312
adf4382_set_ref_div
int adf4382_set_ref_div(struct adf4382_dev *dev, int32_t div)
Set the reference divider value and reset everything over to maximum supported value of 63 to the max...
Definition: adf4382.c:280
adf4382_get_en_chan
int adf4382_get_en_chan(struct adf4382_dev *dev, uint8_t ch, bool *en)
Gets the value the output channel if it is enabled or disable.
Definition: adf4382.c:488
ADF4382_POR_DELAY_US
#define ADF4382_POR_DELAY_US
Definition: adf4382.h:468
adf4382_init_param::ref_doubler_en
bool ref_doubler_en
Definition: adf4382.h:494
ADF4382_MOD1WORD
#define ADF4382_MOD1WORD
Definition: adf4382.h:441
adf4382_get_out_power
int adf4382_get_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t *pwr)
Gets the output power register value.
Definition: adf4382.c:438
ADF4382_PHASE_ADJ_MSK
#define ADF4382_PHASE_ADJ_MSK
Definition: adf4382.h:273
ADF4382_FINE_BLEED_MSB_MSK
#define ADF4382_FINE_BLEED_MSB_MSK
Definition: adf4382.h:150
adf4382_init
int adf4382_init(struct adf4382_dev **device, struct adf4382_init_param *init_param)
Initializes the ADF4382.
Definition: adf4382.c:1181
ADF4382A_CLKOUT_DIV_REG_VAL_MAX
#define ADF4382A_CLKOUT_DIV_REG_VAL_MAX
Definition: adf4382.h:451
adf4382_dev::ld_count
uint8_t ld_count
Definition: adf4382.h:517
adf4382_spi_update_bits
int adf4382_spi_update_bits(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Updates the values of the ADF4382 register.
Definition: adf4382.c:136
ADF4382_LKD_DELAY_US
#define ADF4382_LKD_DELAY_US
Definition: adf4382.h:469
adf4382_init_param::cp_i
uint8_t cp_i
Definition: adf4382.h:496
ADF4382A_VCO_FREQ_MAX
#define ADF4382A_VCO_FREQ_MAX
Definition: adf4382.h:440
adf4382_reg_dump
int adf4382_reg_dump(struct adf4382_dev *dev)
Will output on the terminal the values of all the ADF4382 registers.
Definition: adf4382.c:160
ADF4382_DCLK_DIV1_MSK
#define ADF4382_DCLK_DIV1_MSK
Definition: adf4382.h:177
no_os_field_get
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
ADF4382_BUFF_SIZE_BYTES
#define ADF4382_BUFF_SIZE_BYTES
Definition: adf4382.h:436
adf4382_reg_defaults
ADF4382 register initialization.
adf4382_set_phase_adjust
int adf4382_set_phase_adjust(struct adf4382_dev *dev, uint32_t phase_ps)
Set the phase adjustment in pico-seconds. The phase adjust will enable the Bleed current option as we...
Definition: adf4382.c:1054
adf4382_dev::cmos_3v3
bool cmos_3v3
Definition: adf4382.h:510
adf4382_get_rfout
int adf4382_get_rfout(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed output frequency.
Definition: adf4382.c:590
no_os_free
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:69
ADF4382_LDWIN_PW_MSK
#define ADF4382_LDWIN_PW_MSK
Definition: adf4382.h:222
adf4382_get_ref_clk
int adf4382_get_ref_clk(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed reference frequency.
Definition: adf4382.c:223
adf4382_get_bleed_word
int adf4382_get_bleed_word(struct adf4382_dev *dev, int32_t *word)
Gets the value of the set bleed word.
Definition: adf4382.c:384
ADF4382_SPI_DUMMY_DATA
#define ADF4382_SPI_DUMMY_DATA
Definition: adf4382.h:435
no_os_udelay
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:114
gcd
uint32_t gcd(uint32_t x, uint32_t y)
Computes the greatest common divider of two numbers.
Definition: adf4156.c:208
adf4382_set_freq
int adf4382_set_freq(struct adf4382_dev *dev)
Set the output frequency.
Definition: adf4382.c:788
ADF4382_CLKOUT_DIV_REG_VAL_MAX
#define ADF4382_CLKOUT_DIV_REG_VAL_MAX
Definition: adf4382.h:450
ADF4382_BLEED_WORD_MAX
#define ADF4382_BLEED_WORD_MAX
Definition: adf4382.h:462
adf4382_spi_update_bits
int adf4382_spi_update_bits(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Updates the values of the ADF4382 register.
Definition: adf4382.c:136
ADF4382_CLK2_OPWR_MSK
#define ADF4382_CLK2_OPWR_MSK
Definition: adf4382.h:198
ADF4382_DCLK_DIV1_1_MAX
#define ADF4382_DCLK_DIV1_1_MAX
Definition: adf4382.h:449
adf4382_init_param::bleed_word
uint16_t bleed_word
Definition: adf4382.h:497
ADF4382_PD_CLKOUT2_MSK
#define ADF4382_PD_CLKOUT2_MSK
Definition: adf4382.h:219
adf4382.h
Implementation of adf4382 Driver.
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:113
ADF4382_R_DIV_MSK
#define ADF4382_R_DIV_MSK
Definition: adf4382.h:162
adf4382_get_en_chan
int adf4382_get_en_chan(struct adf4382_dev *dev, uint8_t ch, bool *en)
Gets the value the output channel if it is enabled or disable.
Definition: adf4382.c:488
ADF4382_SPI_WRITE_CMD
#define ADF4382_SPI_WRITE_CMD
Definition: adf4382.h:433
adf4382_get_en_ref_doubler
int adf4382_get_en_ref_doubler(struct adf4382_dev *dev, bool *en)
Gets the value the doubler if it is enabled or disable and stores it it the dev structure.
Definition: adf4382.c:258
adf4382_spi_read
int adf4382_spi_read(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADF4382 over SPI.
Definition: adf4382.c:98
adf4382_init_param::spi_init
struct no_os_spi_init_param * spi_init
Definition: adf4382.h:489
adf4382_spi_write
int adf4382_spi_write(struct adf4382_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADF4382 over SPI.
Definition: adf4382.c:68
adf4382_dev::spi_desc
struct no_os_spi_desc * spi_desc
Definition: adf4382.h:508
ADF4382_SPI_3W_CFG
#define ADF4382_SPI_3W_CFG(x)
Definition: adf4382.h:425
no_os_spi_remove
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:116
adf4382_get_ref_clk
int adf4382_get_ref_clk(struct adf4382_dev *dev, uint64_t *val)
Gets the user proposed reference frequency.
Definition: adf4382.c:223
adf4382_set_en_ref_doubler
int adf4382_set_en_ref_doubler(struct adf4382_dev *dev, bool en)
Set the reference doubler to enable or disable based on the passed parameter. If the parameter is dif...
Definition: adf4382.c:241
adf4382_set_phase_pol
int adf4382_set_phase_pol(struct adf4382_dev *dev, bool polarity)
Set the phase polarity. If pol = 0 then it will add the phase value otherwise it will subtract the ph...
Definition: adf4382.c:1122
adf4382_dev::freq_min
uint64_t freq_min
Definition: adf4382.h:522
adf4382_set_phase_pol
int adf4382_set_phase_pol(struct adf4382_dev *dev, bool polarity)
Set the phase polarity. If pol = 0 then it will add the phase value otherwise it will subtract the ph...
Definition: adf4382.c:1122
adf4382_init
int adf4382_init(struct adf4382_dev **dev, struct adf4382_init_param *init_param)
Initializes the ADF4382.
Definition: adf4382.c:1181
ADF4382_FRAC2WORD_MSB_MSK
#define ADF4382_FRAC2WORD_MSB_MSK
Definition: adf4382.h:131
ADF4382_PHASE_BLEED_CNST
#define ADF4382_PHASE_BLEED_CNST
Definition: adf4382.h:464
adf4382_set_out_power
int adf4382_set_out_power(struct adf4382_dev *dev, uint8_t ch, int32_t pwr)
Set the output power register value of a channel and reset everything over to maximum supported value...
Definition: adf4382.c:414
no_os_spi_init
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:52
ADF4382_BLEED_MSB_MSK
#define ADF4382_BLEED_MSB_MSK
Definition: adf4382.h:427
no_os_util.h
Header file of utility functions.
ADF4382_CHANNEL_SPACING_MAX
#define ADF4382_CHANNEL_SPACING_MAX
Definition: adf4382.h:444
ADF4382A_VCO_FREQ_MIN
#define ADF4382A_VCO_FREQ_MIN
Definition: adf4382.h:439
adf4382_set_cp_i
int adf4382_set_cp_i(struct adf4382_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: adf4382.c:322
adf4382_dev::bleed_word
uint16_t bleed_word
Definition: adf4382.h:516
adf4382_set_en_ref_doubler
int adf4382_set_en_ref_doubler(struct adf4382_dev *dev, bool en)
Set the reference doubler to enable or disable based on the passed parameter. If the parameter is dif...
Definition: adf4382.c:241
ID_ADF4382
@ ID_ADF4382
Definition: adf4382.h:479
ADF4382_RESET_CMD
#define ADF4382_RESET_CMD
Definition: adf4382.h:49
reg_sequence::reg
uint16_t reg
Definition: adf4371.c:186
ADF4382_MOD2WORD_MID_MSK
#define ADF4382_MOD2WORD_MID_MSK
Definition: adf4382.h:137
S_TO_NS
#define S_TO_NS
Definition: adf4382.h:472
ADF4382_PD_CLKOUT1_MSK
#define ADF4382_PD_CLKOUT1_MSK
Definition: adf4382.h:218
ADF4382_LD_COUNT_OPWR_MSK
#define ADF4382_LD_COUNT_OPWR_MSK
Definition: adf4382.h:223
no_os_bit_swap_constant_8
#define no_os_bit_swap_constant_8(x)
Definition: no_os_util.h:102
adf4382_set_rfout
int adf4382_set_rfout(struct adf4382_dev *dev, uint64_t val)
Set the desired output frequency and reset everything over to maximum supported value of 22GHz (21GHz...
Definition: adf4382.c:552
adf4382_dev::ref_freq_hz
uint64_t ref_freq_hz
Definition: adf4382.h:511
adf4382_dev::freq_max
uint64_t freq_max
Definition: adf4382.h:521
adf4382_set_phase_adjust
int adf4382_set_phase_adjust(struct adf4382_dev *dev, uint32_t phase_ps)
Set the phase adjustment in pico-seconds. The phase adjust will enable the Bleed current option as we...
Definition: adf4382.c:1054
adf4382_get_cp_i
int adf4382_get_cp_i(struct adf4382_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: adf4382.c:343
NO_OS_DIV_ROUND_CLOSEST
#define NO_OS_DIV_ROUND_CLOSEST(x, y)
Definition: no_os_util.h:54
ADF4382_MOD2WORD_MSB_MSK
#define ADF4382_MOD2WORD_MSB_MSK
Definition: adf4382.h:140
no_os_spi_init_param
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:140
adf4382_set_ref_div
int adf4382_set_ref_div(struct adf4382_dev *dev, int32_t div)
Set the reference divider value and reset everything over to maximum supported value of 63 to the max...
Definition: adf4382.c:280
no_os_div_u64
uint64_t no_os_div_u64(uint64_t dividend, uint32_t divisor)