no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
admv1014.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef ADMV1014_H_
35#define ADMV1014_H_
36
37#include <stdint.h>
38#include <stdbool.h>
39#include "no_os_spi.h"
40#include "no_os_util.h"
41
42/* ADMV1014 Register Map */
43#define ADMV1014_REG_SPI_CONTROL 0x00
44#define ADMV1014_REG_ALARM 0x01
45#define ADMV1014_REG_ALARM_MASKS 0x02
46#define ADMV1014_REG_ENABLE 0x03
47#define ADMV1014_REG_QUAD 0x04
48#define ADMV1014_REG_LO_AMP_PHASE_ADJUST1 0x05
49#define ADMV1014_REG_MIXER 0x07
50#define ADMV1014_REG_IF_AMP 0x08
51#define ADMV1014_REG_IF_AMP_BB_AMP 0x09
52#define ADMV1014_REG_BB_AMP_AGC 0x0A
53#define ADMV1014_REG_VVA_TEMP_COMP 0x0B
54
55/* ADMV1014_REG_SPI_CONTROL Map */
56#define ADMV1014_PARITY_EN_MSK NO_OS_BIT(15)
57#define ADMV1014_SPI_SOFT_RESET_MSK NO_OS_BIT(14)
58#define ADMV1014_CHIP_ID_MSK NO_OS_GENMASK(11, 4)
59#define ADMV1014_CHIP_ID 0x9
60#define ADMV1014_REVISION_ID_MSK NO_OS_GENMASK(3, 0)
61
62/* ADMV1014_REG_ALARM Map */
63#define ADMV1014_PARITY_ERROR_MSK NO_OS_BIT(15)
64#define ADMV1014_TOO_FEW_ERRORS_MSK NO_OS_BIT(14)
65#define ADMV1014_TOO_MANY_ERRORS_MSK NO_OS_BIT(13)
66#define ADMV1014_ADDRESS_RANGE_ERROR_MSK NO_OS_BIT(12)
67
68/* ADMV1014_REG_ENABLE Map */
69#define ADMV1014_IBIAS_PD_MSK NO_OS_BIT(14)
70#define ADMV1014_P1DB_COMPENSATION_MSK NO_OS_GENMASK(13, 12)
71#define ADMV1014_IF_AMP_PD_MSK NO_OS_BIT(11)
72#define ADMV1014_QUAD_BG_PD_MSK NO_OS_BIT(9)
73#define ADMV1014_BB_AMP_PD_MSK NO_OS_BIT(8)
74#define ADMV1014_QUAD_IBIAS_PD_MSK NO_OS_BIT(7)
75#define ADMV1014_DET_EN_MSK NO_OS_BIT(6)
76#define ADMV1014_BG_PD_MSK NO_OS_BIT(5)
77
78/* ADMV1014_REG_QUAD Map */
79#define ADMV1014_QUAD_SE_MODE_MSK NO_OS_GENMASK(9, 6)
80#define ADMV1014_QUAD_FILTERS_MSK NO_OS_GENMASK(3, 0)
81
82/* ADMV1014_REG_LO_AMP_PHASE_ADJUST1 Map */
83#define ADMV1014_LOAMP_PH_ADJ_I_FINE_MSK NO_OS_GENMASK(15, 9)
84#define ADMV1014_LOAMP_PH_ADJ_Q_FINE_MSK NO_OS_GENMASK(8, 2)
85
86/* ADMV1014_REG_MIXER Map */
87#define ADMV1014_MIXER_VGATE_MSK NO_OS_GENMASK(15, 9)
88#define ADMV1014_DET_PROG_MSK NO_OS_GENMASK(6, 0)
89
90/* ADMV1014_REG_IF_AMP Map */
91#define ADMV1014_IF_AMP_COARSE_GAIN_I_MSK NO_OS_GENMASK(11, 8)
92#define ADMV1014_IF_AMP_FINE_GAIN_Q_MSK NO_OS_GENMASK(7, 4)
93#define ADMV1014_IF_AMP_FINE_GAIN_I_MSK NO_OS_GENMASK(3, 0)
94
95/* ADMV1014_REG_IF_AMP_BB_AMP Map */
96#define ADMV1014_IF_AMP_COARSE_GAIN_Q_MSK NO_OS_GENMASK(15, 12)
97#define ADMV1014_BB_AMP_OFFSET_Q_MSK NO_OS_GENMASK(9, 5)
98#define ADMV1014_BB_AMP_OFFSET_I_MSK NO_OS_GENMASK(4, 0)
99
100/* ADMV1014_REG_BB_AMP_AGC Map */
101#define ADMV1014_BB_AMP_REF_GEN_MSK NO_OS_GENMASK(6, 3)
102#define ADMV1014_BB_AMP_GAIN_CTRL_MSK NO_OS_GENMASK(2, 1)
103#define ADMV1014_BB_SWITCH_HIGH_LOW_CM_MSK NO_OS_BIT(0)
104
105/* ADMV1014_REG_VVA_TEMP_COMP Map */
106#define ADMV1014_VVA_TEMP_COMP_MSK NO_OS_GENMASK(15, 0)
107
108/* ADMV1014 Miscellaneous Defines */
109#define ADMV1014_READ NO_OS_BIT(7)
110#define ADMV1014_REG_ADDR_READ_MSK NO_OS_GENMASK(6, 1)
111#define ADMV1014_REG_ADDR_WRITE_MSK NO_OS_GENMASK(22, 17)
112#define ADMV1014_REG_DATA_MSK NO_OS_GENMASK(16, 1)
113#define ADMV1014_NUM_REGULATORS 9
114
115/* Specifications */
116#define ADMV1014_BUFF_SIZE_BYTES 3
117#define ADMV1014_SPI_READ_CMD NO_OS_BIT(7)
118#define ADMV1014_SPI_WRITE_CMD (0 << 7)
119
128
138
149
164
184
205
207int admv1014_spi_write(struct admv1014_dev *dev, uint8_t reg_addr,
208 uint16_t data);
209
210/* ADMV1014 Register Update */
211int admv1014_spi_update_bits(struct admv1014_dev *dev, uint8_t reg_addr,
212 uint16_t mask, uint16_t data);
213
215int admv1014_spi_read(struct admv1014_dev *dev, uint8_t reg_addr,
216 uint16_t *data);
217
219int admv1014_set_det_prog(struct admv1014_dev *dev,
220 enum admv1014_det_prog det_prog);
221
223int admv1014_get_det_prog(struct admv1014_dev *dev,
224 enum admv1014_det_prog *det_prog);
225
227int admv1014_set_bb_amp_gain(struct admv1014_dev *dev, uint8_t gain);
228
230int admv1014_get_bb_amp_gain(struct admv1014_dev *dev, uint8_t *gain);
231
233int admv1014_set_phase(struct admv1014_dev *dev, uint8_t i_phase,
234 uint8_t q_phase);
235
237int admv1014_get_phase(struct admv1014_dev *dev, uint8_t *i_phase,
238 uint8_t *q_phase);
239
241int admv1014_set_if_amp_gain(struct admv1014_dev *dev, uint8_t i_coarse_gain,
242 uint8_t q_coarse_gain, uint8_t i_fine_gain, uint8_t q_fine_gain);
243
245int admv1014_get_if_amp_gain(struct admv1014_dev *dev, uint8_t *i_coarse_gain,
246 uint8_t *q_coarse_gain, uint8_t *i_fine_gain, uint8_t *q_fine_gain);
247
251
253int admv1014_remove(struct admv1014_dev *dev);
254
255#endif /* ADMV1014_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
admv1014_quad_se_mode
Switch Differential/Single-Ended Modes.
Definition admv1014.h:133
@ ADMV1014_SE_MODE_DIFF
Definition admv1014.h:136
@ ADMV1014_SE_MODE_POS
Definition admv1014.h:134
@ ADMV1014_SE_MODE_NEG
Definition admv1014.h:135
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.
Definition admv1014.c:239
int admv1014_set_bb_amp_gain(struct admv1014_dev *dev, uint8_t gain)
Set Baseband Amp Gain.
Definition admv1014.c:163
int admv1014_set_phase(struct admv1014_dev *dev, uint8_t i_phase, uint8_t q_phase)
Set LO Amp Phase.
Definition admv1014.c:197
int admv1014_set_det_prog(struct admv1014_dev *dev, enum admv1014_det_prog det_prog)
Set Digital Rx Detector.
Definition admv1014.c:128
admv1014_det_prog
Digital Rx Detector Program.
Definition admv1014.h:154
@ ADMV1014_DET_PROG_NEG_15_5_DBM_TO_POS_0_5_DBM
Definition admv1014.h:159
@ ADMV1014_DET_PROG_NEG_12_DBM_TO_POS_4DBM
Definition admv1014.h:155
@ ADMV1014_DET_PROG_NEG_13_DBM_TO_POS_3DBM
Definition admv1014.h:156
@ ADMV1014_DET_PROG_NEG_15_DBM_TO_POS_1DBM
Definition admv1014.h:158
@ ADMV1014_DET_PROG_NEG_16_25_DBM_TO_NEG_0_25_DBM
Definition admv1014.h:160
@ ADMV1014_DET_PROG_NEG_14_DBM_TO_POS_2DBM
Definition admv1014.h:157
@ ADMV1014_DET_PROG_NEG_18_DBM_TO_NEG_2DBM
Definition admv1014.h:162
@ ADMV1014_DET_PROG_NEG_17_DBM_TO_NEG_1DBM
Definition admv1014.h:161
int admv1014_get_phase(struct admv1014_dev *dev, uint8_t *i_phase, uint8_t *q_phase)
Get LO Amp Phase.
Definition admv1014.c:214
int admv1014_get_det_prog(struct admv1014_dev *dev, enum admv1014_det_prog *det_prog)
Get Digital Rx Detector.
Definition admv1014.c:142
int admv1014_get_bb_amp_gain(struct admv1014_dev *dev, uint8_t *gain)
Get Baseband Amp Gain.
Definition admv1014.c:176
int admv1014_spi_update_bits(struct admv1014_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Update ADMV1014 register.
Definition admv1014.c:106
int admv1014_remove(struct admv1014_dev *dev)
ADMV1014 Resources Deallocation.
Definition admv1014.c:456
int admv1014_spi_write(struct admv1014_dev *dev, uint8_t reg_addr, uint16_t data)
Writes data to ADMV1014 over SPI.
Definition admv1014.c:51
admv1014_input_mode
Switch Intermediate Frequency or I/Q Mode.
Definition admv1014.h:124
@ ADMV1014_IF_MODE
Definition admv1014.h:126
@ ADMV1014_IQ_MODE
Definition admv1014.h:125
int admv1014_spi_read(struct admv1014_dev *dev, uint8_t reg_addr, uint16_t *data)
Reads data from ADMV1014 over SPI.
Definition admv1014.c:75
int admv1014_init(struct admv1014_dev **device, struct admv1014_init_param *init_param)
Initializes the admv1014.
Definition admv1014.c:359
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.
Definition admv1014.c:269
admv1014_quad_filters
LO Filters BW Selection.
Definition admv1014.h:143
@ ADMV1014_LO_BAND_8_62_TO_10_25_GHZ
Definition admv1014.h:144
@ ADMV1014_LO_BAND_6_6_TO_9_2_GHZ
Definition admv1014.h:145
@ ADMV1014_LO_BAND_5_4_TO_8_GHZ
Definition admv1014.h:146
@ ADMV1014_LO_BAND_5_4_TO_7_GHZ
Definition admv1014.h:147
Header file of SPI Interface.
Header file of utility functions.
ADMV1014 Device Descriptor.
Definition admv1014.h:189
enum admv1014_input_mode input_mode
Definition admv1014.h:195
enum admv1014_quad_se_mode quad_se_mode
Definition admv1014.h:197
unsigned long long lo_in
Definition admv1014.h:193
unsigned int vcm_mv
Definition admv1014.h:201
bool p1db_comp_en
Definition admv1014.h:203
bool det_en
Definition admv1014.h:199
struct no_os_spi_desc * spi_desc
Definition admv1014.h:191
ADMV1014 Initialization Parameters structure.
Definition admv1014.h:168
unsigned long long lo_in
Definition admv1014.h:172
enum admv1014_input_mode input_mode
Definition admv1014.h:174
struct no_os_spi_init_param * spi_init
Definition admv1014.h:170
unsigned int vcm_mv
Definition admv1014.h:180
bool p1db_comp_en
Definition admv1014.h:182
bool det_en
Definition admv1014.h:178
enum admv1014_quad_se_mode quad_se_mode
Definition admv1014.h:176
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