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

Header file for admv1014 Driver. More...

#include <stdint.h>
#include <stdbool.h>
#include "no_os_spi.h"
#include "no_os_util.h"
Include dependency graph for admv1014.h:

Classes

struct  admv1014_init_param
 ADMV1014 Initialization Parameters structure. More...
 
struct  admv1014_dev
 ADMV1014 Device Descriptor. More...
 

Macros

#define ADMV1014_REG_SPI_CONTROL   0x00
 
#define ADMV1014_REG_ALARM   0x01
 
#define ADMV1014_REG_ALARM_MASKS   0x02
 
#define ADMV1014_REG_ENABLE   0x03
 
#define ADMV1014_REG_QUAD   0x04
 
#define ADMV1014_REG_LO_AMP_PHASE_ADJUST1   0x05
 
#define ADMV1014_REG_MIXER   0x07
 
#define ADMV1014_REG_IF_AMP   0x08
 
#define ADMV1014_REG_IF_AMP_BB_AMP   0x09
 
#define ADMV1014_REG_BB_AMP_AGC   0x0A
 
#define ADMV1014_REG_VVA_TEMP_COMP   0x0B
 
#define ADMV1014_PARITY_EN_MSK   NO_OS_BIT(15)
 
#define ADMV1014_SPI_SOFT_RESET_MSK   NO_OS_BIT(14)
 
#define ADMV1014_CHIP_ID_MSK   NO_OS_GENMASK(11, 4)
 
#define ADMV1014_CHIP_ID   0x9
 
#define ADMV1014_REVISION_ID_MSK   NO_OS_GENMASK(3, 0)
 
#define ADMV1014_PARITY_ERROR_MSK   NO_OS_BIT(15)
 
#define ADMV1014_TOO_FEW_ERRORS_MSK   NO_OS_BIT(14)
 
#define ADMV1014_TOO_MANY_ERRORS_MSK   NO_OS_BIT(13)
 
#define ADMV1014_ADDRESS_RANGE_ERROR_MSK   NO_OS_BIT(12)
 
#define ADMV1014_IBIAS_PD_MSK   NO_OS_BIT(14)
 
#define ADMV1014_P1DB_COMPENSATION_MSK   NO_OS_GENMASK(13, 12)
 
#define ADMV1014_IF_AMP_PD_MSK   NO_OS_BIT(11)
 
#define ADMV1014_QUAD_BG_PD_MSK   NO_OS_BIT(9)
 
#define ADMV1014_BB_AMP_PD_MSK   NO_OS_BIT(8)
 
#define ADMV1014_QUAD_IBIAS_PD_MSK   NO_OS_BIT(7)
 
#define ADMV1014_DET_EN_MSK   NO_OS_BIT(6)
 
#define ADMV1014_BG_PD_MSK   NO_OS_BIT(5)
 
#define ADMV1014_QUAD_SE_MODE_MSK   NO_OS_GENMASK(9, 6)
 
#define ADMV1014_QUAD_FILTERS_MSK   NO_OS_GENMASK(3, 0)
 
#define ADMV1014_LOAMP_PH_ADJ_I_FINE_MSK   NO_OS_GENMASK(15, 9)
 
#define ADMV1014_LOAMP_PH_ADJ_Q_FINE_MSK   NO_OS_GENMASK(8, 2)
 
#define ADMV1014_MIXER_VGATE_MSK   NO_OS_GENMASK(15, 9)
 
#define ADMV1014_DET_PROG_MSK   NO_OS_GENMASK(6, 0)
 
#define ADMV1014_IF_AMP_COARSE_GAIN_I_MSK   NO_OS_GENMASK(11, 8)
 
#define ADMV1014_IF_AMP_FINE_GAIN_Q_MSK   NO_OS_GENMASK(7, 4)
 
#define ADMV1014_IF_AMP_FINE_GAIN_I_MSK   NO_OS_GENMASK(3, 0)
 
#define ADMV1014_IF_AMP_COARSE_GAIN_Q_MSK   NO_OS_GENMASK(15, 12)
 
#define ADMV1014_BB_AMP_OFFSET_Q_MSK   NO_OS_GENMASK(9, 5)
 
#define ADMV1014_BB_AMP_OFFSET_I_MSK   NO_OS_GENMASK(4, 0)
 
#define ADMV1014_BB_AMP_REF_GEN_MSK   NO_OS_GENMASK(6, 3)
 
#define ADMV1014_BB_AMP_GAIN_CTRL_MSK   NO_OS_GENMASK(2, 1)
 
#define ADMV1014_BB_SWITCH_HIGH_LOW_CM_MSK   NO_OS_BIT(0)
 
#define ADMV1014_VVA_TEMP_COMP_MSK   NO_OS_GENMASK(15, 0)
 
#define ADMV1014_READ   NO_OS_BIT(7)
 
#define ADMV1014_REG_ADDR_READ_MSK   NO_OS_GENMASK(6, 1)
 
#define ADMV1014_REG_ADDR_WRITE_MSK   NO_OS_GENMASK(22, 17)
 
#define ADMV1014_REG_DATA_MSK   NO_OS_GENMASK(16, 1)
 
#define ADMV1014_NUM_REGULATORS   9
 
#define ADMV1014_BUFF_SIZE_BYTES   3
 
#define ADMV1014_SPI_READ_CMD   NO_OS_BIT(7)
 
#define ADMV1014_SPI_WRITE_CMD   (0 << 7)
 

Enumerations

enum  admv1014_input_mode {
  ADMV1014_IQ_MODE ,
  ADMV1014_IF_MODE
}
 Switch Intermediate Frequency or I/Q Mode. More...
 
enum  admv1014_quad_se_mode {
  ADMV1014_SE_MODE_POS = 6 ,
  ADMV1014_SE_MODE_NEG = 9 ,
  ADMV1014_SE_MODE_DIFF = 12
}
 Switch Differential/Single-Ended Modes. More...
 
enum  admv1014_quad_filters {
  ADMV1014_LO_BAND_8_62_TO_10_25_GHZ = 0 ,
  ADMV1014_LO_BAND_6_6_TO_9_2_GHZ = 5 ,
  ADMV1014_LO_BAND_5_4_TO_8_GHZ = 10 ,
  ADMV1014_LO_BAND_5_4_TO_7_GHZ = 15
}
 LO Filters BW Selection. More...
 
enum  admv1014_det_prog {
  ADMV1014_DET_PROG_NEG_12_DBM_TO_POS_4DBM = 0 ,
  ADMV1014_DET_PROG_NEG_13_DBM_TO_POS_3DBM = 1 ,
  ADMV1014_DET_PROG_NEG_14_DBM_TO_POS_2DBM = 2 ,
  ADMV1014_DET_PROG_NEG_15_DBM_TO_POS_1DBM = 4 ,
  ADMV1014_DET_PROG_NEG_15_5_DBM_TO_POS_0_5_DBM = 8 ,
  ADMV1014_DET_PROG_NEG_16_25_DBM_TO_NEG_0_25_DBM = 16 ,
  ADMV1014_DET_PROG_NEG_17_DBM_TO_NEG_1DBM = 32 ,
  ADMV1014_DET_PROG_NEG_18_DBM_TO_NEG_2DBM = 64
}
 Digital Rx Detector Program. More...
 

Functions

int admv1014_spi_write (struct admv1014_dev *dev, uint8_t reg_addr, uint16_t data)
 Writes data to ADMV1014 over SPI.
 
int admv1014_spi_update_bits (struct admv1014_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
 Update ADMV1014 register.
 
int admv1014_spi_read (struct admv1014_dev *dev, uint8_t reg_addr, uint16_t *data)
 Reads data from ADMV1014 over SPI.
 
int admv1014_set_det_prog (struct admv1014_dev *dev, enum admv1014_det_prog det_prog)
 Set Digital Rx Detector.
 
int admv1014_get_det_prog (struct admv1014_dev *dev, enum admv1014_det_prog *det_prog)
 Get Digital Rx Detector.
 
int admv1014_set_bb_amp_gain (struct admv1014_dev *dev, uint8_t gain)
 Set Baseband Amp Gain.
 
int admv1014_get_bb_amp_gain (struct admv1014_dev *dev, uint8_t *gain)
 Get Baseband Amp Gain.
 
int admv1014_set_phase (struct admv1014_dev *dev, uint8_t i_phase, uint8_t q_phase)
 Set LO Amp Phase.
 
int admv1014_get_phase (struct admv1014_dev *dev, uint8_t *i_phase, uint8_t *q_phase)
 Get LO Amp Phase.
 
int admv1014_set_if_amp_gain (struct admv1014_dev *dev, uint8_t i_coarse_gain, uint8_t q_coarse_gain, uint8_t i_fine_gain, uint8_t q_fine_gain)
 Set IF Amp Gain.
 
int admv1014_get_if_amp_gain (struct admv1014_dev *dev, uint8_t *i_coarse_gain, uint8_t *q_coarse_gain, uint8_t *i_fine_gain, uint8_t *q_fine_gain)
 Get IF Amp Gain.
 
int admv1014_init (struct admv1014_dev **device, struct admv1014_init_param *init_param)
 Initializes the admv1014.
 
int admv1014_remove (struct admv1014_dev *dev)
 ADMV1014 Resources Deallocation.
 

Detailed Description

Header file for admv1014 Driver.

Author
Antoniu Miclaus (anton.nosp@m.iu.m.nosp@m.iclau.nosp@m.s@an.nosp@m.alog..nosp@m.com)

Copyright 2022(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ ADMV1014_ADDRESS_RANGE_ERROR_MSK

#define ADMV1014_ADDRESS_RANGE_ERROR_MSK   NO_OS_BIT(12)

◆ ADMV1014_BB_AMP_GAIN_CTRL_MSK

#define ADMV1014_BB_AMP_GAIN_CTRL_MSK   NO_OS_GENMASK(2, 1)

◆ ADMV1014_BB_AMP_OFFSET_I_MSK

#define ADMV1014_BB_AMP_OFFSET_I_MSK   NO_OS_GENMASK(4, 0)

◆ ADMV1014_BB_AMP_OFFSET_Q_MSK

#define ADMV1014_BB_AMP_OFFSET_Q_MSK   NO_OS_GENMASK(9, 5)

◆ ADMV1014_BB_AMP_PD_MSK

#define ADMV1014_BB_AMP_PD_MSK   NO_OS_BIT(8)

◆ ADMV1014_BB_AMP_REF_GEN_MSK

#define ADMV1014_BB_AMP_REF_GEN_MSK   NO_OS_GENMASK(6, 3)

◆ ADMV1014_BB_SWITCH_HIGH_LOW_CM_MSK

#define ADMV1014_BB_SWITCH_HIGH_LOW_CM_MSK   NO_OS_BIT(0)

◆ ADMV1014_BG_PD_MSK

#define ADMV1014_BG_PD_MSK   NO_OS_BIT(5)

◆ ADMV1014_BUFF_SIZE_BYTES

#define ADMV1014_BUFF_SIZE_BYTES   3

◆ ADMV1014_CHIP_ID

#define ADMV1014_CHIP_ID   0x9

◆ ADMV1014_CHIP_ID_MSK

#define ADMV1014_CHIP_ID_MSK   NO_OS_GENMASK(11, 4)

◆ ADMV1014_DET_EN_MSK

#define ADMV1014_DET_EN_MSK   NO_OS_BIT(6)

◆ ADMV1014_DET_PROG_MSK

#define ADMV1014_DET_PROG_MSK   NO_OS_GENMASK(6, 0)

◆ ADMV1014_IBIAS_PD_MSK

#define ADMV1014_IBIAS_PD_MSK   NO_OS_BIT(14)

◆ ADMV1014_IF_AMP_COARSE_GAIN_I_MSK

#define ADMV1014_IF_AMP_COARSE_GAIN_I_MSK   NO_OS_GENMASK(11, 8)

◆ ADMV1014_IF_AMP_COARSE_GAIN_Q_MSK

#define ADMV1014_IF_AMP_COARSE_GAIN_Q_MSK   NO_OS_GENMASK(15, 12)

◆ ADMV1014_IF_AMP_FINE_GAIN_I_MSK

#define ADMV1014_IF_AMP_FINE_GAIN_I_MSK   NO_OS_GENMASK(3, 0)

◆ ADMV1014_IF_AMP_FINE_GAIN_Q_MSK

#define ADMV1014_IF_AMP_FINE_GAIN_Q_MSK   NO_OS_GENMASK(7, 4)

◆ ADMV1014_IF_AMP_PD_MSK

#define ADMV1014_IF_AMP_PD_MSK   NO_OS_BIT(11)

◆ ADMV1014_LOAMP_PH_ADJ_I_FINE_MSK

#define ADMV1014_LOAMP_PH_ADJ_I_FINE_MSK   NO_OS_GENMASK(15, 9)

◆ ADMV1014_LOAMP_PH_ADJ_Q_FINE_MSK

#define ADMV1014_LOAMP_PH_ADJ_Q_FINE_MSK   NO_OS_GENMASK(8, 2)

◆ ADMV1014_MIXER_VGATE_MSK

#define ADMV1014_MIXER_VGATE_MSK   NO_OS_GENMASK(15, 9)

◆ ADMV1014_NUM_REGULATORS

#define ADMV1014_NUM_REGULATORS   9

◆ ADMV1014_P1DB_COMPENSATION_MSK

#define ADMV1014_P1DB_COMPENSATION_MSK   NO_OS_GENMASK(13, 12)

◆ ADMV1014_PARITY_EN_MSK

#define ADMV1014_PARITY_EN_MSK   NO_OS_BIT(15)

◆ ADMV1014_PARITY_ERROR_MSK

#define ADMV1014_PARITY_ERROR_MSK   NO_OS_BIT(15)

◆ ADMV1014_QUAD_BG_PD_MSK

#define ADMV1014_QUAD_BG_PD_MSK   NO_OS_BIT(9)

◆ ADMV1014_QUAD_FILTERS_MSK

#define ADMV1014_QUAD_FILTERS_MSK   NO_OS_GENMASK(3, 0)

◆ ADMV1014_QUAD_IBIAS_PD_MSK

#define ADMV1014_QUAD_IBIAS_PD_MSK   NO_OS_BIT(7)

◆ ADMV1014_QUAD_SE_MODE_MSK

#define ADMV1014_QUAD_SE_MODE_MSK   NO_OS_GENMASK(9, 6)

◆ ADMV1014_READ

#define ADMV1014_READ   NO_OS_BIT(7)

◆ ADMV1014_REG_ADDR_READ_MSK

#define ADMV1014_REG_ADDR_READ_MSK   NO_OS_GENMASK(6, 1)

◆ ADMV1014_REG_ADDR_WRITE_MSK

#define ADMV1014_REG_ADDR_WRITE_MSK   NO_OS_GENMASK(22, 17)

◆ ADMV1014_REG_ALARM

#define ADMV1014_REG_ALARM   0x01

◆ ADMV1014_REG_ALARM_MASKS

#define ADMV1014_REG_ALARM_MASKS   0x02

◆ ADMV1014_REG_BB_AMP_AGC

#define ADMV1014_REG_BB_AMP_AGC   0x0A

◆ ADMV1014_REG_DATA_MSK

#define ADMV1014_REG_DATA_MSK   NO_OS_GENMASK(16, 1)

◆ ADMV1014_REG_ENABLE

#define ADMV1014_REG_ENABLE   0x03

◆ ADMV1014_REG_IF_AMP

#define ADMV1014_REG_IF_AMP   0x08

◆ ADMV1014_REG_IF_AMP_BB_AMP

#define ADMV1014_REG_IF_AMP_BB_AMP   0x09

◆ ADMV1014_REG_LO_AMP_PHASE_ADJUST1

#define ADMV1014_REG_LO_AMP_PHASE_ADJUST1   0x05

◆ ADMV1014_REG_MIXER

#define ADMV1014_REG_MIXER   0x07

◆ ADMV1014_REG_QUAD

#define ADMV1014_REG_QUAD   0x04

◆ ADMV1014_REG_SPI_CONTROL

#define ADMV1014_REG_SPI_CONTROL   0x00

◆ ADMV1014_REG_VVA_TEMP_COMP

#define ADMV1014_REG_VVA_TEMP_COMP   0x0B

◆ ADMV1014_REVISION_ID_MSK

#define ADMV1014_REVISION_ID_MSK   NO_OS_GENMASK(3, 0)

◆ ADMV1014_SPI_READ_CMD

#define ADMV1014_SPI_READ_CMD   NO_OS_BIT(7)

◆ ADMV1014_SPI_SOFT_RESET_MSK

#define ADMV1014_SPI_SOFT_RESET_MSK   NO_OS_BIT(14)

◆ ADMV1014_SPI_WRITE_CMD

#define ADMV1014_SPI_WRITE_CMD   (0 << 7)

◆ ADMV1014_TOO_FEW_ERRORS_MSK

#define ADMV1014_TOO_FEW_ERRORS_MSK   NO_OS_BIT(14)

◆ ADMV1014_TOO_MANY_ERRORS_MSK

#define ADMV1014_TOO_MANY_ERRORS_MSK   NO_OS_BIT(13)

◆ ADMV1014_VVA_TEMP_COMP_MSK

#define ADMV1014_VVA_TEMP_COMP_MSK   NO_OS_GENMASK(15, 0)

Enumeration Type Documentation

◆ admv1014_det_prog

Digital Rx Detector Program.

Enumerator
ADMV1014_DET_PROG_NEG_12_DBM_TO_POS_4DBM 
ADMV1014_DET_PROG_NEG_13_DBM_TO_POS_3DBM 
ADMV1014_DET_PROG_NEG_14_DBM_TO_POS_2DBM 
ADMV1014_DET_PROG_NEG_15_DBM_TO_POS_1DBM 
ADMV1014_DET_PROG_NEG_15_5_DBM_TO_POS_0_5_DBM 
ADMV1014_DET_PROG_NEG_16_25_DBM_TO_NEG_0_25_DBM 
ADMV1014_DET_PROG_NEG_17_DBM_TO_NEG_1DBM 
ADMV1014_DET_PROG_NEG_18_DBM_TO_NEG_2DBM 

◆ admv1014_input_mode

Switch Intermediate Frequency or I/Q Mode.

Enumerator
ADMV1014_IQ_MODE 
ADMV1014_IF_MODE 

◆ admv1014_quad_filters

LO Filters BW Selection.

Enumerator
ADMV1014_LO_BAND_8_62_TO_10_25_GHZ 
ADMV1014_LO_BAND_6_6_TO_9_2_GHZ 
ADMV1014_LO_BAND_5_4_TO_8_GHZ 
ADMV1014_LO_BAND_5_4_TO_7_GHZ 

◆ admv1014_quad_se_mode

Switch Differential/Single-Ended Modes.

Enumerator
ADMV1014_SE_MODE_POS 
ADMV1014_SE_MODE_NEG 
ADMV1014_SE_MODE_DIFF 

Function Documentation

◆ admv1014_get_bb_amp_gain()

int admv1014_get_bb_amp_gain ( struct admv1014_dev * dev,
uint8_t * gain )

Get Baseband Amp Gain.

Get Baseband Amp Gain

Parameters
dev- The device structure.
gain- Digital Rx Detector gain.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_get_det_prog()

int admv1014_get_det_prog ( struct admv1014_dev * dev,
enum admv1014_det_prog * det_prog )

Get Digital Rx Detector.

Get Digital Rx Detector

Parameters
dev- The device structure.
det_prog- Digital Rx Detector gain.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_get_if_amp_gain()

int admv1014_get_if_amp_gain ( struct admv1014_dev * dev,
uint8_t * i_coarse_gain,
uint8_t * q_coarse_gain,
uint8_t * i_fine_gain,
uint8_t * q_fine_gain )

Get IF Amp Gain.

Get IF Amp Gain

Parameters
dev- The device structure.
i_coarse_gain- The I coarse gain value.
q_coarse_gain- The I coarse gain value.
i_fine_gain- The Q fine gain value.
q_fine_gain- The Q fine gain value.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_get_phase()

int admv1014_get_phase ( struct admv1014_dev * dev,
uint8_t * i_phase,
uint8_t * q_phase )

Get LO Amp Phase.

Get LO Amp Phase

Parameters
dev- The device structure.
i_phase- The I phase adjust value.
q_phase- The Q phase adjust value.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_init()

int admv1014_init ( struct admv1014_dev ** device,
struct admv1014_init_param * init_param )

Initializes the admv1014.

ADMV1014 Initialization

Parameters
device- The device structure.
init_param- The structure containing the device initial parameters.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_remove()

int admv1014_remove ( struct admv1014_dev * dev)

ADMV1014 Resources Deallocation.

ADMV1014 Resources Deallocation

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

◆ admv1014_set_bb_amp_gain()

int admv1014_set_bb_amp_gain ( struct admv1014_dev * dev,
uint8_t gain )

Set Baseband Amp Gain.

Set Baseband Amp Gain

Parameters
dev- The device structure.
gain- Digital Rx Detector gain.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_set_det_prog()

int admv1014_set_det_prog ( struct admv1014_dev * dev,
enum admv1014_det_prog det_prog )

Set Digital Rx Detector.

Set Digital Rx Detector

Parameters
dev- The device structure.
det_prog- Digital Rx Detector gain.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_set_if_amp_gain()

int admv1014_set_if_amp_gain ( struct admv1014_dev * dev,
uint8_t i_coarse_gain,
uint8_t q_coarse_gain,
uint8_t i_fine_gain,
uint8_t q_fine_gain )

Set IF Amp Gain.

Set IF Amp Gain

Parameters
dev- The device structure.
i_coarse_gain- The I coarse gain value.
q_coarse_gain- The I coarse gain value.
i_fine_gain- The Q fine gain value.
q_fine_gain- The Q fine gain value.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_set_phase()

int admv1014_set_phase ( struct admv1014_dev * dev,
uint8_t i_phase,
uint8_t q_phase )

Set LO Amp Phase.

Set LO Amp Phase

Parameters
dev- The device structure.
i_phase- The I phase adjust value.
q_phase- The Q phase adjust value.
Returns
Returns 0 in case of success or negative error code.

◆ admv1014_spi_read()

int admv1014_spi_read ( struct admv1014_dev * dev,
uint8_t reg_addr,
uint16_t * data )

Reads data from ADMV1014 over SPI.

ADMV1014 SPI Read

Parameters
dev- The device structure.
reg_addr- The register address.
data- Data read from the device.
Returns
Returns 0 in case of success or negative error code otherwise.

◆ admv1014_spi_update_bits()

int admv1014_spi_update_bits ( struct admv1014_dev * dev,
uint8_t reg_addr,
uint16_t mask,
uint16_t data )

Update ADMV1014 register.

Parameters
dev- The device structure.
reg_addr- The register address.
mask- Mask for specific register bits to be updated.
data- Data written to the device (requires prior bit shifting).
Returns
Returns 0 in case of success or negative error code otherwise.

◆ admv1014_spi_write()

int admv1014_spi_write ( struct admv1014_dev * dev,
uint8_t reg_addr,
uint16_t data )

Writes data to ADMV1014 over SPI.

ADMV1014 SPI write

Parameters
dev- The device structure.
reg_addr- The register address.
data- Data value to write.
Returns
Returns 0 in case of success or negative error code otherwise.