no-OS
Loading...
Searching...
No Matches
adgs6414d.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef ADGS6414D_H_
34#define ADGS6414D_H_
35
36#include <stdint.h>
37#include <stdbool.h>
38#include "no_os_spi.h"
39
40#define ADGS6414D_NUM_SWITCHES 8
41
42/* ADGS6414D Register Map */
43#define ADGS6414D_REG_SW_DATA 0x01
44#define ADGS6414D_REG_ERR_CONFIG 0x02
45#define ADGS6414D_REG_ERR_FLAGS 0x03
46#define ADGS6414D_REG_BURST_EN 0x05
47#define ADGS6414D_REG_SOFT_RESETB 0x0B
48
49/* SPI Command Format */
50#define ADGS6414D_CMD_WRITE 0x00
51#define ADGS6414D_CMD_READ 0x80
52
53/* Soft Reset Values */
54#define ADGS6414D_SOFT_RESET_VAL1 0xA3
55#define ADGS6414D_SOFT_RESET_VAL2 0x05
56
57/* Error Flags Clear Command */
58#define ADGS6414D_ERR_CLR_CMD_MSB 0x6C
59#define ADGS6414D_ERR_CLR_CMD_LSB 0xA9
60
61/* ERR_CONFIG Register Bits */
62#define ADGS6414D_ERR_CFG_CRC_EN 0x01
63#define ADGS6414D_ERR_CFG_SCLK_EN 0x02
64#define ADGS6414D_ERR_CFG_RW_EN 0x04
65#define ADGS6414D_ERR_CFG_DEFAULT 0x06
66
67/* CRC Polynomial: x^8 + x^2 + x + 1 */
68#define ADGS6414D_CRC8_POLYNOMIAL 0x07
69
70/* ADGS6414D Switch Channels */
71#define ADGS6414D_SW1 0
72#define ADGS6414D_SW2 1
73#define ADGS6414D_SW3 2
74#define ADGS6414D_SW4 3
75#define ADGS6414D_SW5 4
76#define ADGS6414D_SW6 5
77#define ADGS6414D_SW7 6
78#define ADGS6414D_SW8 7
79
86 uint8_t switch_state;
87 bool crc_en;
88 uint8_t err_config;
89};
90
102
103/* SPI write operation. */
104int adgs6414d_spi_write(struct adgs6414d_dev *dev, uint8_t reg_addr,
105 uint8_t data);
106
107/* SPI read operation. */
108int adgs6414d_spi_read(struct adgs6414d_dev *dev, uint8_t reg_addr,
109 uint8_t *data);
110
111/* Read the error flags register. */
112int adgs6414d_get_err_flags(struct adgs6414d_dev *dev, uint8_t *flags);
113
114/* Clear the error flags register. */
116
117/* Enable or disable CRC error detection. */
118int adgs6414d_crc_enable(struct adgs6414d_dev *dev, bool enable);
119
120/* Perform software reset. */
121int adgs6414d_soft_reset(struct adgs6414d_dev *dev);
122
123/* Set switch state for a specific channel. */
124int adgs6414d_set_switch(struct adgs6414d_dev *dev, uint8_t channel,
125 bool state);
126
127/* Get switch state for a specific channel. */
128int adgs6414d_get_switch(struct adgs6414d_dev *dev, uint8_t channel,
129 bool *state);
130
131/* Set multiple switches at once using bitmask. */
132int adgs6414d_set_switches(struct adgs6414d_dev *dev, uint8_t mask);
133
134/* Get all switch states as bitmask. */
135int adgs6414d_get_switches(struct adgs6414d_dev *dev, uint8_t *mask);
136
137/* Initialize the device. */
140
141/* Free the resources allocated by adgs6414d_init(). */
142int adgs6414d_remove(struct adgs6414d_dev *dev);
143
144#endif /* ADGS6414D_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int adgs6414d_crc_enable(struct adgs6414d_dev *dev, bool enable)
Definition adgs6414d.c:129
int adgs6414d_get_switches(struct adgs6414d_dev *dev, uint8_t *mask)
Definition adgs6414d.c:312
int adgs6414d_set_switches(struct adgs6414d_dev *dev, uint8_t mask)
Definition adgs6414d.c:290
int adgs6414d_spi_write(struct adgs6414d_dev *dev, uint8_t reg_addr, uint8_t data)
Definition adgs6414d.c:50
int adgs6414d_remove(struct adgs6414d_dev *dev)
Definition adgs6414d.c:403
int adgs6414d_init(struct adgs6414d_dev **device, struct adgs6414d_init_param *init_param)
Definition adgs6414d.c:335
int adgs6414d_get_switch(struct adgs6414d_dev *dev, uint8_t channel, bool *state)
Definition adgs6414d.c:262
int adgs6414d_get_err_flags(struct adgs6414d_dev *dev, uint8_t *flags)
Definition adgs6414d.c:161
int adgs6414d_set_switch(struct adgs6414d_dev *dev, uint8_t channel, bool state)
Definition adgs6414d.c:230
int adgs6414d_soft_reset(struct adgs6414d_dev *dev)
Definition adgs6414d.c:199
int adgs6414d_spi_read(struct adgs6414d_dev *dev, uint8_t reg_addr, uint8_t *data)
Definition adgs6414d.c:77
int adgs6414d_clear_err_flags(struct adgs6414d_dev *dev)
Definition adgs6414d.c:175
Header file of SPI Interface.
ADGS6414D Device Descriptor.
Definition adgs6414d.h:84
struct no_os_spi_desc * spi_desc
Definition adgs6414d.h:85
uint8_t switch_state
Definition adgs6414d.h:86
bool crc_en
Definition adgs6414d.h:87
uint8_t err_config
Definition adgs6414d.h:88
ADGS6414D Initialization Parameters structure.
Definition adgs6414d.h:95
bool crc_en
Definition adgs6414d.h:98
uint8_t initial_state
Definition adgs6414d.h:97
bool rw_err_en
Definition adgs6414d.h:100
bool sclk_err_en
Definition adgs6414d.h:99
struct no_os_spi_init_param * spi_init
Definition adgs6414d.h:96
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