no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adgs1408.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef ADGS1408_H_
34#define ADGS1408_H_
35
36#include <stdint.h>
37#include "no_os_spi.h"
38
39#define ADGS1408_REG_SW_DATA 0x01
40#define ADGS1408_REG_ERR_CONFIG 0x02
41#define ADGS1408_REG_ERR_FLAGS 0x03
42#define ADGS1408_REG_BURST_EN 0x05
43#define ADGS1408_REG_ROUND_ROBIN_EN 0x06
44#define ADGS1408_REG_RROBIN_CHANNEL_CONFIG 0x07
45#define ADGS1408_REG_CNV_EDGE_SEL 0x09
46#define ADGS1408_REG_SOFT_RESETB 0x0B
47
48/* ADGS1408_REG_SW_DATA for ADGS1408 */
49#define ADGS1408_SW1_EN 0x01
50#define ADGS1408_SW2_EN 0x03
51#define ADGS1408_SW3_EN 0x05
52#define ADGS1408_SW4_EN 0x07
53#define ADGS1408_SW5_EN 0x09
54#define ADGS1408_SW6_EN 0x0B
55#define ADGS1408_SW7_EN 0x0D
56#define ADGS1408_SW8_EN 0x0F
57
58/* ADGS1408_REG_SW_DATA for ADGS1409 */
59#define ADGS1409_SW1_EN 0x01
60#define ADGS1409_SW2_EN 0x03
61#define ADGS1409_SW3_EN 0x05
62#define ADGS1409_SW4_EN 0x07
63
64/* ADGS1408_REG_ERR_CONFIG */
65#define ADGS1408_RW_ERR_EN (1 << 2)
66#define ADGS1408_SCLK_ERR_EN (1 << 1)
67#define ADGS1408_CRC_ERR_EN (1 << 0)
68
69/* ADGS1408_REG_ERR_FLAGS */
70#define ADGS1408_RW_ERR_FLAG (1 << 2)
71#define ADGS1408_SCLK_ERR_FLAG (1 << 1)
72#define ADGS1408_CRC_ERR_FLAG (1 << 0)
73#define ADGS1408_CLR_1 0x6C
74#define ADGS1408_CLR_2 0xA9
75
76/* ADGS1408_REG_BURST_EN */
77#define ADGS1408_BURST_MODE_EN (1 << 0)
78
79/* ADGS1408_REG_ROUND_ROBIN_EN */
80#define ADGS1408_ROUND_ROBIN_EN (1 << 0)
81
82/* ADGS1408_REG_RROBIN_CHANNEL_CONFIG for ADGS1408 */
83#define ADGS1408_RROBIN_SW1(x) (((x) & 0x1) << 0)
84#define ADGS1408_RROBIN_SW2(x) (((x) & 0x1) << 1)
85#define ADGS1408_RROBIN_SW3(x) (((x) & 0x1) << 2)
86#define ADGS1408_RROBIN_SW4(x) (((x) & 0x1) << 3)
87#define ADGS1408_RROBIN_SW5(x) (((x) & 0x1) << 4)
88#define ADGS1408_RROBIN_SW6(x) (((x) & 0x1) << 5)
89#define ADGS1408_RROBIN_SW7(x) (((x) & 0x1) << 6)
90#define ADGS1408_RROBIN_SW8(x) (((x) & 0x1) << 7)
91
92/* ADGS1408_REG_RROBIN_CHANNEL_CONFIG for ADGS1409 */
93#define ADGS1408_RROBIN_SW1(x) (((x) & 0x1) << 0)
94#define ADGS1408_RROBIN_SW2(x) (((x) & 0x1) << 1)
95#define ADGS1408_RROBIN_SW3(x) (((x) & 0x1) << 2)
96#define ADGS1408_RROBIN_SW4(x) (((x) & 0x1) << 3)
97
98/* ADGS1408_REG_CNV_EDGE_SEL */
99#define ADGS1408_CNV_EDGE_RISING (1 << 0)
100
101/* ADGS1408_REG_SOFT_RESETB */
102#define ADGS1408_SOFT_RESETB(x) (((x) & 0xFF) << 0)
103#define ADGS1408_RESET_1 0xA3
104#define ADGS1408_RESET_2 0x05
105
106#define ADGS1408_DAISY_CHAIN_1 0x25
107#define ADGS1408_DAISY_CHAIN_2 0x00
108
109/* ADGS1408 exit Round Robin*/
110#define ADGS1408_RROBIN_EXIT_1 0xA3
111#define ADGS1408_RROBIN_EXIT_2 0x18
112#define ADGS1408_RROBIN_EXIT_3 0xE3
113#define ADGS1408_RROBIN_EXIT_4 0xB4
114
115#define ADGS1408_ALIGNMENT 0x25
116
117#define ADGS1408_CRC8_POLY 0x07
118
123
128
139
151
163
164/* Compute CRC8 checksum. */
165uint8_t adgs1408_compute_crc8(uint8_t *data,
166 uint8_t data_size);
167/* SPI register read from device. */
168int32_t adgs1408_spi_reg_read(struct adgs1408_dev *dev,
169 uint8_t reg_addr,
170 uint8_t *reg_data);
171/* SPI register write to device. */
172int32_t adgs1408_spi_reg_write(struct adgs1408_dev *dev,
173 uint8_t reg_addr,
174 uint8_t reg_data);
175/* SPI register read from device using a mask. */
177 uint8_t reg_addr,
178 uint8_t mask,
179 uint8_t *data);
180/* SPI internal register write to device using a mask. */
181int32_t adgs1408_spi_reg_write_mask(struct adgs1408_dev *dev,
182 uint8_t reg_addr,
183 uint8_t mask,
184 uint8_t data);
185/* Do a software reset. */
186int32_t adgs1408_do_soft_reset(struct adgs1408_dev *dev);
187/* Clear the Error Flags Register. */
188int32_t adgs1408_clear_err_flags(struct adgs1408_dev *dev);
189/* Enter Daisy-Chain Mode. */
190int32_t adgs1408_enter_daisy_chain(struct adgs1408_dev *dev);
191/* Send Daisy-Chain commands. */
193 uint8_t *cmds,
194 uint8_t cmds_size);
195/* Enter round robin mode. */
196int32_t adgs1408_enter_round_robin(struct adgs1408_dev *dev);
197/* Configure Round Robin Mode. */
199 uint8_t cnv_polarity);
200/* Exit Round Robin Mode. */
201int32_t adgs1408_exit_round_robin(struct adgs1408_dev *dev);
202/* Initialize the device. */
203int32_t adgs1408_init(struct adgs1408_dev **device,
205/* Free the resources allocated by adgs1408_init(). */
206int32_t adgs1408_remove(struct adgs1408_dev *dev);
207#endif // ADGS1408_H_
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int32_t adgs1408_spi_reg_write(struct adgs1408_dev *dev, uint8_t reg_addr, uint8_t reg_data)
Definition adgs1408.c:128
int32_t adgs1408_enter_daisy_chain(struct adgs1408_dev *dev)
Definition adgs1408.c:247
uint8_t adgs1408_compute_crc8(uint8_t *data, uint8_t data_size)
Definition adgs1408.c:47
int32_t adgs1408_clear_err_flags(struct adgs1408_dev *dev)
Definition adgs1408.c:220
int32_t adgs1408_do_soft_reset(struct adgs1408_dev *dev)
Definition adgs1408.c:194
int32_t adgs1408_spi_reg_read(struct adgs1408_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
Definition adgs1408.c:76
int32_t adgs1408_spi_reg_write_mask(struct adgs1408_dev *dev, uint8_t reg_addr, uint8_t mask, uint8_t data)
Definition adgs1408.c:166
int32_t adgs1408_remove(struct adgs1408_dev *dev)
Free the resources allocated by adgs1408_init().
Definition adgs1408.c:442
int32_t adgs1408_init(struct adgs1408_dev **device, struct adgs1408_init_param init_param)
Definition adgs1408.c:380
int32_t adgs1408_enter_round_robin(struct adgs1408_dev *dev)
Definition adgs1408.c:291
int32_t adgs1408_send_daisy_chain_cmds(struct adgs1408_dev *dev, uint8_t *cmds, uint8_t cmds_size)
Definition adgs1408.c:271
int32_t adgs1408_spi_reg_read_mask(struct adgs1408_dev *dev, uint8_t reg_addr, uint8_t mask, uint8_t *data)
int32_t adgs1408_exit_round_robin(struct adgs1408_dev *dev)
Definition adgs1408.c:355
int32_t adgs1408_configure_round_robin(struct adgs1408_dev *dev, uint8_t cnv_polarity)
Definition adgs1408.c:314
adgs1408_state
Definition adgs1408.h:124
@ ADGS1408_ENABLE
Definition adgs1408.h:125
@ ADGS1408_DISABLE
Definition adgs1408.h:126
adgs1408_type
Definition adgs1408.h:119
@ ID_ADGS1409
Definition adgs1408.h:121
@ ID_ADGS1408
Definition adgs1408.h:120
Header file of SPI Interface.
Definition adgs1408.h:140
enum adgs1408_state round_robin_en
Definition adgs1408.h:147
struct adgs1408_rrobin_config rrobin_sw_config
Definition adgs1408.h:148
enum adgs1408_state crc_en
Definition adgs1408.h:144
struct no_os_spi_desc * spi_desc
Definition adgs1408.h:142
enum adgs1408_state daisy_chain_en
Definition adgs1408.h:146
enum adgs1408_state burst_mode_en
Definition adgs1408.h:145
enum adgs1408_type act_device
Definition adgs1408.h:149
Definition adgs1408.h:152
enum adgs1408_state daisy_chain_en
Definition adgs1408.h:158
struct adgs1408_rrobin_config rrobin_sw_config
Definition adgs1408.h:160
enum adgs1408_state crc_en
Definition adgs1408.h:156
enum adgs1408_state round_robin_en
Definition adgs1408.h:159
enum adgs1408_type act_device
Definition adgs1408.h:161
enum adgs1408_state burst_mode_en
Definition adgs1408.h:157
struct no_os_spi_init_param spi_init
Definition adgs1408.h:154
Definition adgs1408.h:129
bool rrobin_sw7
Definition adgs1408.h:136
bool rrobin_sw6
Definition adgs1408.h:135
bool rrobin_sw8
Definition adgs1408.h:137
bool rrobin_sw5
Definition adgs1408.h:134
bool rrobin_sw2
Definition adgs1408.h:131
bool rrobin_sw4
Definition adgs1408.h:133
bool rrobin_sw3
Definition adgs1408.h:132
bool rrobin_sw1
Definition adgs1408.h:130
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