no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
admv8818.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef ADMV8818_H_
35#define ADMV8818_H_
36
37/******************************************************************************/
38#include <stdint.h>
39#include "no_os_spi.h"
40#include "no_os_util.h"
41
42/* ADMV8818 Register Map */
43#define ADMV8818_REG_SPI_CONFIG_A 0x0
44#define ADMV8818_REG_SPI_CONFIG_B 0x1
45#define ADMV8818_REG_CHIPTYPE 0x3
46#define ADMV8818_REG_PRODUCT_ID_L 0x4
47#define ADMV8818_REG_PRODUCT_ID_H 0x5
48#define ADMV8818_REG_FAST_LATCH_POINTER 0x10
49#define ADMV8818_REG_FAST_LATCH_STOP 0x11
50#define ADMV8818_REG_FAST_LATCH_START 0x12
51#define ADMV8818_REG_FAST_LATCH_DIRECTION 0x13
52#define ADMV8818_REG_FAST_LATCH_STATE 0x14
53#define ADMV8818_REG_WR0_SW 0x20
54#define ADMV8818_REG_WR0_FILTER 0x21
55#define ADMV8818_REG_WR1_SW 0x22
56#define ADMV8818_REG_WR1_FILTER 0x23
57#define ADMV8818_REG_WR2_SW 0x24
58#define ADMV8818_REG_WR2_FILTER 0x25
59#define ADMV8818_REG_WR3_SW 0x26
60#define ADMV8818_REG_WR3_FILTER 0x27
61#define ADMV8818_REG_WR4_SW 0x28
62#define ADMV8818_REG_WR4_FILTER 0x29
63#define ADMV8818_REG_LUT0_SW 0x100
64#define ADMV8818_REG_LUT0_FILTER 0x101
65#define ADMV8818_REG_LUT127_SW 0x1FE
66#define ADMV8818_REG_LUT127_FILTER 0x1FF
67
68/* ADMV8818_REG_SPI_CONFIG_A Map */
69#define ADMV8818_SOFTRESET_N_MSK NO_OS_BIT(7)
70#define ADMV8818_LSB_FIRST_N_MSK NO_OS_BIT(6)
71#define ADMV8818_ENDIAN_N_MSK NO_OS_BIT(5)
72#define ADMV8818_SDOACTIVE_N_MSK NO_OS_BIT(4)
73#define ADMV8818_SDOACTIVE_MSK NO_OS_BIT(3)
74#define ADMV8818_ENDIAN_MSK NO_OS_BIT(2)
75#define ADMV8818_LSBFIRST_MSK NO_OS_BIT(1)
76#define ADMV8818_SOFTRESET_MSK NO_OS_BIT(0)
77
78/* ADMV8818_REG_SPI_CONFIG_B Map */
79#define ADMV8818_SINGLE_INSTRUCTION_MSK NO_OS_BIT(7)
80#define ADMV8818_CSB_STALL_MSK NO_OS_BIT(6)
81#define ADMV8818_MASTER_SLAVE_RB_MSK NO_OS_BIT(5)
82#define ADMV8818_MASTER_SLAVE_TRANSFER_MSK NO_OS_BIT(0)
83
84/* ADMV8818_REG_WR0_SW Map */
85#define ADMV8818_SW_IN_SET_WR0_MSK NO_OS_BIT(7)
86#define ADMV8818_SW_OUT_SET_WR0_MSK NO_OS_BIT(6)
87#define ADMV8818_SW_IN_WR0_MSK NO_OS_GENMASK(5, 3)
88#define ADMV8818_SW_OUT_WR0_MSK NO_OS_GENMASK(2, 0)
89
90/* ADMV8818_REG_WR0_FILTER Map */
91#define ADMV8818_HPF_WR0_MSK NO_OS_GENMASK(7, 4)
92#define ADMV8818_LPF_WR0_MSK NO_OS_GENMASK(3, 0)
93
94/* Specifications */
95#define ADMV8818_BUFF_SIZE_BYTES 3
96#define ADMV8818_CHIP_ID NO_OS_BIT(0)
97#define ADMV8818_SPI_READ_CMD NO_OS_BIT(7)
98
107
116 unsigned long long rf_in;
117 /* Filter Mode */
119};
120
129 unsigned long long rf_in;
130 /* Filter Mode */
132};
133
135int admv8818_spi_write(struct admv8818_dev *dev, uint16_t reg_addr,
136 uint8_t data);
137
138/* ADMV8818 Register Update */
139int admv8818_spi_update_bits(struct admv8818_dev *dev, uint16_t reg_addr,
140 uint8_t mask, uint8_t data);
141
143int admv8818_spi_read(struct admv8818_dev *dev, uint16_t reg_addr,
144 uint8_t *data);
145
147int admv8818_hpf_select(struct admv8818_dev *dev, unsigned long long freq);
148
150int admv8818_read_hpf_freq(struct admv8818_dev *dev, unsigned long long *freq);
151
153int admv8818_lpf_select(struct admv8818_dev *dev, unsigned long long freq);
154
156int admv8818_read_lpf_freq(struct admv8818_dev *dev, unsigned long long *freq);
157
159int admv8818_rfin_select(struct admv8818_dev *dev);
160
164
166int admv8818_remove(struct admv8818_dev *dev);
167
168#endif /* ADMV8818_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int admv8818_spi_write(struct admv8818_dev *dev, uint16_t reg_addr, uint8_t data)
Writes data to ADMV8818 over SPI.
Definition admv8818.c:61
int admv8818_spi_update_bits(struct admv8818_dev *dev, uint16_t reg_addr, uint8_t mask, uint8_t data)
Update ADMV8818 register.
Definition admv8818.c:109
int admv8818_lpf_select(struct admv8818_dev *dev, unsigned long long freq)
Set the LPF Frequency.
Definition admv8818.c:227
int admv8818_spi_read(struct admv8818_dev *dev, uint16_t reg_addr, uint8_t *data)
Reads data from ADMV8818 over SPI.
Definition admv8818.c:81
int admv8818_read_hpf_freq(struct admv8818_dev *dev, unsigned long long *freq)
Get the HPF Frequency.
Definition admv8818.c:191
int admv8818_rfin_select(struct admv8818_dev *dev)
Set the RF Input Band Select.
Definition admv8818.c:313
admv8818_filter_mode
Filter Modes of the ADMV8818.
Definition admv8818.h:103
@ ADMV8818_AUTO
Definition admv8818.h:104
@ ADMV8818_MANUAL
Definition admv8818.h:105
int admv8818_hpf_select(struct admv8818_dev *dev, unsigned long long freq)
Set the HPF Frequency.
Definition admv8818.c:131
int admv8818_remove(struct admv8818_dev *dev)
ADMV8818 Resources Deallocation.
Definition admv8818.c:400
int admv8818_init(struct admv8818_dev **device, struct admv8818_init_param *init_param)
Initializes the admv8818.
Definition admv8818.c:330
int admv8818_read_lpf_freq(struct admv8818_dev *dev, unsigned long long *freq)
Get the HPF Frequency.
Definition admv8818.c:278
Header file of SPI Interface.
Header file of utility functions.
ADMV8818 Device Descriptor.
Definition admv8818.h:125
struct no_os_spi_desc * spi_desc
Definition admv8818.h:127
enum admv8818_filter_mode mode
Definition admv8818.h:131
unsigned long long rf_in
Definition admv8818.h:129
ADMV8818 Initialization Parameters structure.
Definition admv8818.h:112
struct no_os_spi_init_param * spi_init
Definition admv8818.h:114
unsigned long long rf_in
Definition admv8818.h:116
enum admv8818_filter_mode mode
Definition admv8818.h:118
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