no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
admv1013.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef ADMV1013_H_
35#define ADMV1013_H_
36
37#include <stdint.h>
38#include <stdbool.h>
39#include "no_os_spi.h"
40#include "no_os_util.h"
41
42/* ADMV1013 Register Map */
43#define ADMV1013_REG_SPI_CONTROL 0x00
44#define ADMV1013_REG_ALARM 0x01
45#define ADMV1013_REG_ALARM_MASKS 0x02
46#define ADMV1013_REG_ENABLE 0x03
47#define ADMV1013_REG_LO_AMP_I 0x05
48#define ADMV1013_REG_LO_AMP_Q 0x06
49#define ADMV1013_REG_OFFSET_ADJUST_I 0x07
50#define ADMV1013_REG_OFFSET_ADJUST_Q 0x08
51#define ADMV1013_REG_QUAD 0x09
52#define ADMV1013_REG_VVA_TEMP_COMP 0x0A
53
54/* ADMV1013_REG_SPI_CONTROL Map */
55#define ADMV1013_PARITY_EN_MSK NO_OS_BIT(15)
56#define ADMV1013_SPI_SOFT_RESET_MSK NO_OS_BIT(14)
57#define ADMV1013_CHIP_ID_MSK NO_OS_GENMASK(11, 4)
58#define ADMV1013_CHIP_ID 0xA
59#define ADMV1013_REVISION_ID_MSK NO_OS_GENMASK(3, 0)
60
61/* ADMV1013_REG_ALARM Map */
62#define ADMV1013_PARITY_ERROR_MSK NO_OS_BIT(15)
63#define ADMV1013_TOO_FEW_ERRORS_MSK NO_OS_BIT(14)
64#define ADMV1013_TOO_MANY_ERRORS_MSK NO_OS_BIT(13)
65#define ADMV1013_ADDRESS_RANGE_ERROR_MSK NO_OS_BIT(12)
66
67/* ADMV1013_REG_ENABLE Map */
68#define ADMV1013_VGA_PD_MSK NO_OS_BIT(15)
69#define ADMV1013_MIXER_PD_MSK NO_OS_BIT(14)
70#define ADMV1013_QUAD_PD_MSK NO_OS_GENMASK(13, 11)
71#define ADMV1013_BG_PD_MSK NO_OS_BIT(10)
72#define ADMV1013_MIXER_IF_EN_MSK NO_OS_BIT(7)
73#define ADMV1013_DET_EN_MSK NO_OS_BIT(5)
74
75/* ADMV1013_REG_LO_AMP Map */
76#define ADMV1013_LOAMP_PH_ADJ_FINE_MSK NO_OS_GENMASK(13, 7)
77#define ADMV1013_MIXER_VGATE_MSK NO_OS_GENMASK(6, 0)
78
79/* ADMV1013_REG_OFFSET_ADJUST Map */
80#define ADMV1013_MIXER_OFF_ADJ_P_MSK NO_OS_GENMASK(15, 9)
81#define ADMV1013_MIXER_OFF_ADJ_N_MSK NO_OS_GENMASK(8, 2)
82
83/* ADMV1013_REG_QUAD Map */
84#define ADMV1013_QUAD_SE_MODE_MSK NO_OS_GENMASK(9, 6)
85#define ADMV1013_QUAD_FILTERS_MSK NO_OS_GENMASK(3, 0)
86
87/* ADMV1013_REG_VVA_TEMP_COMP Map */
88#define ADMV1013_VVA_TEMP_COMP_MSK NO_OS_GENMASK(15, 0)
89
90/* Specifications */
91#define ADMV1013_BUFF_SIZE_BYTES 3
92#define ADMV1013_SPI_READ_CMD NO_OS_BIT(7)
93#define ADMV1013_SPI_WRITE_CMD (0 << 7)
94
103
113
124
143
162
164int admv1013_spi_write(struct admv1013_dev *dev, uint8_t reg_addr,
165 uint16_t data);
166
167/* ADMV1013 Register Update */
168int admv1013_spi_update_bits(struct admv1013_dev *dev, uint8_t reg_addr,
169 uint16_t mask, uint16_t data);
170
172int admv1013_spi_read(struct admv1013_dev *dev, uint8_t reg_addr,
173 uint16_t *data);
174
176int admv1013_set_iq_phase(struct admv1013_dev *dev, uint8_t i_phase,
177 uint8_t q_phase);
178
180int admv1013_get_iq_phase(struct admv1013_dev *dev, uint8_t *i_phase,
181 uint8_t *q_phase);
182
184int admv1013_set_iq_offset(struct admv1013_dev *dev, uint8_t i_offset_p,
185 uint8_t i_offset_n, uint8_t q_offset_p,
186 uint8_t q_offset_n);
187
189int admv1013_get_iq_offset(struct admv1013_dev *dev, uint8_t *i_offset_p,
190 uint8_t *i_offset_n, uint8_t *q_offset_p,
191 uint8_t *q_offset_n);
192
196
198int admv1013_remove(struct admv1013_dev *dev);
199
200#endif /* ADMV1013_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int admv1013_init(struct admv1013_dev **device, struct admv1013_init_param *init_param)
Initializes the admv1013.
Definition admv1013.c:290
admv1013_input_mode
Switch Intermediate Frequency or I/Q Mode.
Definition admv1013.h:99
@ ADMV1013_IF_MODE
Definition admv1013.h:101
@ ADMV1013_IQ_MODE
Definition admv1013.h:100
int admv1013_spi_write(struct admv1013_dev *dev, uint8_t reg_addr, uint16_t data)
Writes data to ADMV1013 over SPI.
Definition admv1013.c:49
admv1013_quad_se_mode
Switch Differential/Single-Ended Modes.
Definition admv1013.h:108
@ ADMV1013_SE_MODE_DIFF
Definition admv1013.h:111
@ ADMV1013_SE_MODE_POS
Definition admv1013.h:109
@ ADMV1013_SE_MODE_NEG
Definition admv1013.h:110
int admv1013_set_iq_offset(struct admv1013_dev *dev, uint8_t i_offset_p, uint8_t i_offset_n, uint8_t q_offset_p, uint8_t q_offset_n)
Set I/Q Offset Accuracy.
Definition admv1013.c:230
int admv1013_get_iq_phase(struct admv1013_dev *dev, uint8_t *i_phase, uint8_t *q_phase)
Get I/Q Phase Accuracy.
Definition admv1013.c:200
int admv1013_get_iq_offset(struct admv1013_dev *dev, uint8_t *i_offset_p, uint8_t *i_offset_n, uint8_t *q_offset_p, uint8_t *q_offset_n)
Get I/Q Offset Accuracy.
Definition admv1013.c:260
int admv1013_spi_read(struct admv1013_dev *dev, uint8_t reg_addr, uint16_t *data)
Reads data from ADMV1013 over SPI.
Definition admv1013.c:73
int admv1013_remove(struct admv1013_dev *dev)
ADMV1013 Resources Deallocation.
Definition admv1013.c:378
int admv1013_spi_update_bits(struct admv1013_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Update ADMV1013 register.
Definition admv1013.c:104
int admv1013_set_iq_phase(struct admv1013_dev *dev, uint8_t i_phase, uint8_t q_phase)
Set I/Q Phase Accuracy.
Definition admv1013.c:174
admv1013_quad_filters
LO Filters BW Selection.
Definition admv1013.h:118
@ ADMV1013_LO_BAND_8_62_TO_10_25_GHZ
Definition admv1013.h:119
@ ADMV1013_LO_BAND_6_6_TO_9_2_GHZ
Definition admv1013.h:120
@ ADMV1013_LO_BAND_5_4_TO_7_GHZ
Definition admv1013.h:122
@ ADMV1013_LO_BAND_5_4_TO_8_GHZ
Definition admv1013.h:121
Header file of SPI Interface.
Header file of utility functions.
ADMV1013 Device Descriptor.
Definition admv1013.h:148
enum admv1013_quad_se_mode quad_se_mode
Definition admv1013.h:156
bool det_en
Definition admv1013.h:158
enum admv1013_input_mode input_mode
Definition admv1013.h:154
unsigned int vcm_uv
Definition admv1013.h:160
unsigned long long lo_in
Definition admv1013.h:152
struct no_os_spi_desc * spi_desc
Definition admv1013.h:150
ADMV1013 Initialization Parameters structure.
Definition admv1013.h:129
enum admv1013_quad_se_mode quad_se_mode
Definition admv1013.h:137
enum admv1013_input_mode input_mode
Definition admv1013.h:135
struct no_os_spi_init_param * spi_init
Definition admv1013.h:131
bool det_en
Definition admv1013.h:139
unsigned int vcm_uv
Definition admv1013.h:141
unsigned long long lo_in
Definition admv1013.h:133
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