no-OS
Loading...
Searching...
No Matches
adf4156.h File Reference

Header file of ADF4156 Driver for Microblaze processor. More...

#include <stdint.h>
#include "no_os_gpio.h"
#include "no_os_spi.h"
Include dependency graph for adf4156.h:

Classes

struct  adf4156_platform_data
 
struct  adf4156_state
 
struct  adf4156_dev
 
struct  adf4156_init_param
 

Macros

#define ADF4156_MUXOUT_Z   (0x00 << 27)
 
#define ADF4156_MUXOUT_DVdd   (0x01 << 27)
 
#define ADF4156_MUXOUT_DGND   (0x02 << 27)
 
#define ADF4156_MUXOUT_RDIV   (0x03 << 27)
 
#define ADF4156_MUXOUT_NDIV   (0x04 << 27)
 
#define ADF4156_MUXOUT_ALOCK   (0x05 << 27)
 
#define ADF4156_MUXOUT_DLOCK   (0x06 << 27)
 
#define ADF4156_MUXOUT_SDO   (0x07 << 27)
 
#define ADF4156_MUXOUT_CLKDIV   (0x0A << 27)
 
#define ADF4156_MUXOUT_FLS   (0x0C << 27)
 
#define ADF4156_MUXOUT_RDIV2   (0x0D << 27)
 
#define ADF4156_MUXOUT_NDIV2   (0x0E << 27)
 
#define ADF4156_MUXOUT_RESERVED   (0x0F << 27)
 
#define ADF4156_INT_VAL(x)
 
#define ADF4156_FRAC_VAL(x)
 
#define ADF4156_R0_CTRL   0x00
 
#define ADF4156_PHASE_VAL(x)
 
#define ADF4156_R1_CTRL   0x01
 
#define ADF4156_LOW_NOISE   (0x00 << 29)
 
#define ADF4156_LOW_SPUR   (0x03 << 29)
 
#define ADF4156_CSR_EN(x)
 
#define ADF4156_CURR_SET(x)
 
#define ADF4156_PRESCALER(x)
 
#define ADF4156_RDIV2(x)
 
#define ADF4156_REF_DBL(x)
 
#define ADF4156_R_CNT(x)
 
#define ADF4156_MOD_WORD(x)
 
#define ADF4156_R2_CTRL   0x02
 
#define ADF4156_SIG_DEL_RST(x)
 
#define ADF4156_LDP(x)
 
#define ADF4156_PD_POL(x)
 
#define ADF4156_PD   ((x & 0x1) << 5)
 
#define ADF4156_CP_Z(x)
 
#define ADF4156_CNT_RST(x)
 
#define ADF4156_R3_CTRL   0x03
 
#define ADF4156_CLK_DIV_OFF   (0x00 << 19)
 
#define ADF4156_CLK_FAST_LOCK   (0x01 << 19)
 
#define ADF4156_CLK_RESYNC_EN   (0x02 << 19)
 
#define ADF4156_CLK_DIV_VAL(x)
 
#define ADF4156_R4_CTRL   0x04
 
#define ADF4156_LE_OUT
 
#define ADF4156_LE_LOW
 
#define ADF4156_LE_HIGH
 
#define ADF4156_MUX_OUT
 
#define ADF4156_MUX_LOW
 
#define ADF4156_MUX_HIGH
 
#define ADF4156_CE_OUT
 
#define ADF4156_CE_LOW
 
#define ADF4156_CE_HIGH
 
#define ADF4156_LE2_OUT
 
#define ADF4156_LE2_LOW
 
#define ADF4156_LE2_HIGH
 
#define ADF4156_CE2_OUT
 
#define ADF4156_CE2_LOW
 
#define ADF4156_CE2_HIGH
 
#define ADF4156_MAX_OUT_FREQ   6200 /* MHz */
 
#define ADF4156_MIN_OUT_FREQ   500 /* MHz */
 
#define ADF4156_MAX_FREQ_45_PRESC   3000 /* MHz */
 
#define ADF4156_MAX_FREQ_PFD   32000000 /* Hz */
 
#define ADF4156_MAX_FREQ_REFIN   250000000 /* Hz */
 
#define ADF4156_MIN_FREQ_REFIN   10000000 /* Hz */
 
#define ADF4156_MAX_MODULUS   4095 /* (2^12)-1 */
 
#define ADF4156_MAX_R_CNT   32
 
#define ADF4156_MAX_REG_VAL   0x1FFFFFFF
 
#define ADF4156_REG0   0
 
#define ADF4156_REG1   1
 
#define ADF4156_REG2   2
 
#define ADF4156_REG3   3
 
#define ADF4156_REG4   4
 

Functions

int8_t adf4156_init (struct adf4156_dev **device, struct adf4156_init_param init_param)
 Initialize the SPI communication with the device.
 
int32_t adf4156_remove (struct adf4156_dev *dev)
 Free the resources allocated by adf4156_init().
 
int8_t adf4156_set (struct adf4156_dev *dev, uint32_t value)
 Transmits 32 bits on SPI.
 
int32_t adf4156_tune_r_cnt (struct adf4156_dev *dev, int32_t r_cnt)
 Increases the R counter value until the PFD frequency is smaller than ADF4351_MAX_FREQ_PFD.
 
uint32_t gcd (uint32_t x, uint32_t y)
 Computes the greatest common divider of two numbers.
 
double adf4156_set_freq (struct adf4156_dev *dev, double freq)
 Sets the ADF4156 output frequency.
 

Detailed Description

Header file of ADF4156 Driver for Microblaze processor.

Author
Lucian Sin (Lucia.nosp@m.n.Si.nosp@m.n@ana.nosp@m.log..nosp@m.com)

Copyright 2013(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ ADF4156_CE2_HIGH

#define ADF4156_CE2_HIGH
Value:
no_os_gpio_set_value(dev->gpio_ce2, \
int32_t no_os_gpio_set_value(struct no_os_gpio_desc *desc, uint8_t value)
Set the value of the specified GPIO.
Definition no_os_gpio.c:170
@ NO_OS_GPIO_HIGH
Definition no_os_gpio.h:82

◆ ADF4156_CE2_LOW

#define ADF4156_CE2_LOW
Value:
no_os_gpio_set_value(dev->gpio_ce2, \
@ NO_OS_GPIO_LOW
Definition no_os_gpio.h:80

◆ ADF4156_CE2_OUT

#define ADF4156_CE2_OUT
Value:
no_os_gpio_direction_output(dev->gpio_ce2, \
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition no_os_gpio.c:120

◆ ADF4156_CE_HIGH

#define ADF4156_CE_HIGH
Value:

◆ ADF4156_CE_LOW

#define ADF4156_CE_LOW
Value:

◆ ADF4156_CE_OUT

#define ADF4156_CE_OUT
Value:

◆ ADF4156_CLK_DIV_OFF

#define ADF4156_CLK_DIV_OFF   (0x00 << 19)

◆ ADF4156_CLK_DIV_VAL

#define ADF4156_CLK_DIV_VAL ( x)
Value:
((x & 0xFFF) << 7)

◆ ADF4156_CLK_FAST_LOCK

#define ADF4156_CLK_FAST_LOCK   (0x01 << 19)

◆ ADF4156_CLK_RESYNC_EN

#define ADF4156_CLK_RESYNC_EN   (0x02 << 19)

◆ ADF4156_CNT_RST

#define ADF4156_CNT_RST ( x)
Value:
((x & 0x1) << 3)

◆ ADF4156_CP_Z

#define ADF4156_CP_Z ( x)
Value:
((x & 0x1) << 4)

◆ ADF4156_CSR_EN

#define ADF4156_CSR_EN ( x)
Value:
((x & 0x1) << 28)

◆ ADF4156_CURR_SET

#define ADF4156_CURR_SET ( x)
Value:
((x & 0xF) << 24)

◆ ADF4156_FRAC_VAL

#define ADF4156_FRAC_VAL ( x)
Value:
((x & 0xFFF) << 3)

◆ ADF4156_INT_VAL

#define ADF4156_INT_VAL ( x)
Value:
((x & 0xFFF) << 15)

◆ ADF4156_LDP

#define ADF4156_LDP ( x)
Value:
((x & 0x1) << 7)

◆ ADF4156_LE2_HIGH

#define ADF4156_LE2_HIGH
Value:

◆ ADF4156_LE2_LOW

#define ADF4156_LE2_LOW
Value:

◆ ADF4156_LE2_OUT

#define ADF4156_LE2_OUT
Value:

◆ ADF4156_LE_HIGH

#define ADF4156_LE_HIGH
Value:

◆ ADF4156_LE_LOW

#define ADF4156_LE_LOW
Value:

◆ ADF4156_LE_OUT

#define ADF4156_LE_OUT
Value:

◆ ADF4156_LOW_NOISE

#define ADF4156_LOW_NOISE   (0x00 << 29)

◆ ADF4156_LOW_SPUR

#define ADF4156_LOW_SPUR   (0x03 << 29)

◆ ADF4156_MAX_FREQ_45_PRESC

#define ADF4156_MAX_FREQ_45_PRESC   3000 /* MHz */

◆ ADF4156_MAX_FREQ_PFD

#define ADF4156_MAX_FREQ_PFD   32000000 /* Hz */

◆ ADF4156_MAX_FREQ_REFIN

#define ADF4156_MAX_FREQ_REFIN   250000000 /* Hz */

◆ ADF4156_MAX_MODULUS

#define ADF4156_MAX_MODULUS   4095 /* (2^12)-1 */

◆ ADF4156_MAX_OUT_FREQ

#define ADF4156_MAX_OUT_FREQ   6200 /* MHz */

◆ ADF4156_MAX_R_CNT

#define ADF4156_MAX_R_CNT   32

◆ ADF4156_MAX_REG_VAL

#define ADF4156_MAX_REG_VAL   0x1FFFFFFF

◆ ADF4156_MIN_FREQ_REFIN

#define ADF4156_MIN_FREQ_REFIN   10000000 /* Hz */

◆ ADF4156_MIN_OUT_FREQ

#define ADF4156_MIN_OUT_FREQ   500 /* MHz */

◆ ADF4156_MOD_WORD

#define ADF4156_MOD_WORD ( x)
Value:
((x & 0xFFF) << 3)

◆ ADF4156_MUX_HIGH

#define ADF4156_MUX_HIGH
Value:

◆ ADF4156_MUX_LOW

#define ADF4156_MUX_LOW
Value:

◆ ADF4156_MUX_OUT

#define ADF4156_MUX_OUT
Value:

◆ ADF4156_MUXOUT_ALOCK

#define ADF4156_MUXOUT_ALOCK   (0x05 << 27)

◆ ADF4156_MUXOUT_CLKDIV

#define ADF4156_MUXOUT_CLKDIV   (0x0A << 27)

◆ ADF4156_MUXOUT_DGND

#define ADF4156_MUXOUT_DGND   (0x02 << 27)

◆ ADF4156_MUXOUT_DLOCK

#define ADF4156_MUXOUT_DLOCK   (0x06 << 27)

◆ ADF4156_MUXOUT_DVdd

#define ADF4156_MUXOUT_DVdd   (0x01 << 27)

◆ ADF4156_MUXOUT_FLS

#define ADF4156_MUXOUT_FLS   (0x0C << 27)

◆ ADF4156_MUXOUT_NDIV

#define ADF4156_MUXOUT_NDIV   (0x04 << 27)

◆ ADF4156_MUXOUT_NDIV2

#define ADF4156_MUXOUT_NDIV2   (0x0E << 27)

◆ ADF4156_MUXOUT_RDIV

#define ADF4156_MUXOUT_RDIV   (0x03 << 27)

◆ ADF4156_MUXOUT_RDIV2

#define ADF4156_MUXOUT_RDIV2   (0x0D << 27)

◆ ADF4156_MUXOUT_RESERVED

#define ADF4156_MUXOUT_RESERVED   (0x0F << 27)

◆ ADF4156_MUXOUT_SDO

#define ADF4156_MUXOUT_SDO   (0x07 << 27)

◆ ADF4156_MUXOUT_Z

#define ADF4156_MUXOUT_Z   (0x00 << 27)

◆ ADF4156_PD

#define ADF4156_PD   ((x & 0x1) << 5)

◆ ADF4156_PD_POL

#define ADF4156_PD_POL ( x)
Value:
((x & 0x1) << 6)

◆ ADF4156_PHASE_VAL

#define ADF4156_PHASE_VAL ( x)
Value:
((x & 0xFFF) << 3)

◆ ADF4156_PRESCALER

#define ADF4156_PRESCALER ( x)
Value:
((x & 0x1) << 22)

◆ ADF4156_R0_CTRL

#define ADF4156_R0_CTRL   0x00

◆ ADF4156_R1_CTRL

#define ADF4156_R1_CTRL   0x01

◆ ADF4156_R2_CTRL

#define ADF4156_R2_CTRL   0x02

◆ ADF4156_R3_CTRL

#define ADF4156_R3_CTRL   0x03

◆ ADF4156_R4_CTRL

#define ADF4156_R4_CTRL   0x04

◆ ADF4156_R_CNT

#define ADF4156_R_CNT ( x)
Value:
((x & 0x1F) << 15)

◆ ADF4156_RDIV2

#define ADF4156_RDIV2 ( x)
Value:
((x & 0x1) << 21)

◆ ADF4156_REF_DBL

#define ADF4156_REF_DBL ( x)
Value:
((x & 0x1) << 20)

◆ ADF4156_REG0

#define ADF4156_REG0   0

◆ ADF4156_REG1

#define ADF4156_REG1   1

◆ ADF4156_REG2

#define ADF4156_REG2   2

◆ ADF4156_REG3

#define ADF4156_REG3   3

◆ ADF4156_REG4

#define ADF4156_REG4   4

◆ ADF4156_SIG_DEL_RST

#define ADF4156_SIG_DEL_RST ( x)
Value:
((x & 0x1) << 14)

Function Documentation

◆ adf4156_init()

int8_t adf4156_init ( struct adf4156_dev ** device,
struct adf4156_init_param init_param )

Initialize the SPI communication with the device.

Parameters
device- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
status - Result of the initialization procedure. Example: 0 - if initialization was successful; -1 - if initialization was unsuccessful.

◆ adf4156_remove()

int32_t adf4156_remove ( struct adf4156_dev * dev)

Free the resources allocated by adf4156_init().

Parameters
dev- The device structure.
Returns
0 in case of success, negative error code otherwise.

◆ adf4156_set()

int8_t adf4156_set ( struct adf4156_dev * dev,
uint32_t value )

Transmits 32 bits on SPI.

Parameters
dev- The device structure.
value- Data which will be transmitted.

◆ adf4156_set_freq()

double adf4156_set_freq ( struct adf4156_dev * dev,
double freq )

Sets the ADF4156 output frequency.

Parameters
dev- The device structure.
freq- The desired frequency value.
Returns
calculatedFrequency - The actual frequency value that was set.

◆ adf4156_tune_r_cnt()

int32_t adf4156_tune_r_cnt ( struct adf4156_dev * dev,
int32_t r_cnt )

Increases the R counter value until the PFD frequency is smaller than ADF4351_MAX_FREQ_PFD.

Parameters
dev- The device structure.
r_cnt- Initial r_cnt value.
Returns
Final r_cnt value.

◆ gcd()

uint32_t gcd ( uint32_t x,
uint32_t y )

Computes the greatest common divider of two numbers.

Returns
Returns the gcd.