no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ad713x.h
Go to the documentation of this file.
1/***************************************************************************/
34
35/*
36 * Supported parts:
37 * - AD7134;
38 * - AD4134.
39 */
40
41#ifndef SRC_AD713X_H_
42#define SRC_AD713X_H_
43
44#include <stdbool.h>
45#include <stdio.h>
46#include "no_os_spi.h"
47#include "no_os_gpio.h"
48#include "no_os_util.h"
49
50/*
51 * AD713X registers definition
52 */
53#define AD713X_REG_INTERFACE_CONFIG_A 0x00
54#define AD713X_REG_INTERFACE_CONFIG_B 0x01
55#define AD713X_REG_DEVICE_CONFIG 0x02
56#define AD713X_REG_CHIP_TYPE 0x03
57#define AD713X_REG_PRODUCT_ID_LSB 0x04
58#define AD713X_REG_PRODUCT_ID_MSB 0x05
59#define AD713X_REG_CHIP_GRADE 0x06
60#define AD713X_REG_CHIP_INDEX 0x07
61#define AD713X_REG_SCTATCH_PAD 0x0A
62#define AD713X_REG_SPI_REVISION 0x0B
63#define AD713X_REG_VENDOR_ID_LSB 0x0C
64#define AD713X_REG_VENDOR_ID_MSB 0x0D
65#define AD713X_REG_STREAM_MODE 0x0E
66#define AD713X_REG_TRANSFER_REGISTER 0x0F
67#define AD713X_REG_DEVICE_CONFIG1 0x10
68#define AD713X_REG_DATA_PACKET_CONFIG 0x11
69#define AD713X_REG_DIGITAL_INTERFACE_CONFIG 0x12
70#define AD713X_REG_POWER_DOWN_CONTROL 0x13
71#define AD713X_REG_AIN_RANGE_SELECT 0x14
72#define AD713X_REG_DEVICE_STATUS 0x15
73#define AD713X_REG_ODR_VAL_INT_LSB 0x16
74#define AD713X_REG_ODR_VAL_INT_MID 0x17
75#define AD713X_REG_ODR_VAL_INT_MSB 0x18
76#define AD713X_REG_ODR_VAL_FLT_LSB 0x19
77#define AD713X_REG_ODR_VAL_FLT_MID0 0x1A
78#define AD713X_REG_ODR_VAL_FLT_MID1 0x1B
79#define AD713X_REG_ODR_VAL_FLT_MSB 0x1C
80#define AD713X_REG_CHANNEL_ODR_SELECT 0x1D
81#define AD713X_REG_CHAN_DIG_FILTER_SEL 0x1E
82#define AD713X_REG_FIR_BW_SEL 0x1F
83#define AD713X_REG_GPIO_DIR_CTRL 0x20
84#define AD713X_REG_GPIO_DATA 0x21
85#define AD713X_REG_ERROR_PIN_SRC_CONTROL 0x22
86#define AD713X_REG_ERROR_PIN_CONTROL 0x23
87#define AD713X_REG_VCMBUF_CTRL 0x24
88#define AD713X_REG_DIAGNOSTIC_CONTROL 0x25
89#define AD713X_REG_MPC_CONFIG 0x26
90#define AD713X_REG_CH0_GAIN_LSB 0x27
91#define AD713X_REG_CH0_GAIN_MID 0x28
92#define AD713X_REG_CH0_GAIN_MSB 0x29
93#define AD713X_REG_CH0_OFFSET_LSB 0x2A
94#define AD713X_REG_CH0_OFFSET_MID 0x2B
95#define AD713X_REG_CH0_OFFSET_MSB 0x2C
96#define AD713X_REG_CH1_GAIN_LSB 0x2D
97#define AD713X_REG_CH1_GAIN_MID 0x2E
98#define AD713X_REG_CH1_GAIN_MSB 0x2F
99#define AD713X_REG_CH1_OFFSET_LSB 0x30
100#define AD713X_REG_CH1_OFFSET_MID 0x31
101#define AD713X_REG_CH1_OFFSET_MSB 0x32
102#define AD713X_REG_CH2_GAIN_LSB 0x33
103#define AD713X_REG_CH2_GAIN_MID 0x34
104#define AD713X_REG_CH2_GAIN_MSB 0x35
105#define AD713X_REG_CH2_OFFSET_LSB 0x36
106#define AD713X_REG_CH2_OFFSET_MID 0x37
107#define AD713X_REG_CH2_OFFSET_MSB 0x38
108#define AD713X_REG_CH3_GAIN_LSB 0x39
109#define AD713X_REG_CH3_GAIN_MID 0x3A
110#define AD713X_REG_CH3_GAIN_MSB 0x3B
111#define AD713X_REG_CH3_OFFSET_LSB 0x3C
112#define AD713X_REG_CH3_OFFSET_MID 0x3D
113#define AD713X_REG_CH3_OFFSET_MSB 0x3E
114#define AD713X_REG_MCLK_COUNTER 0x3F
115#define AD713X_REG_DIG_FILTER_OFUF 0x40
116#define AD713X_REG_DIG_FILTER_SETTLED 0x41
117#define AD713X_REG_INTERNAL_ERROR 0x42
118#define AD713X_REG_POWER_OV_ERROR_1 0x43
119#define AD713X_REG_POWER_UV_ERROR_1 0x44
120#define AD713X_REG_POWER_OV_ERROR_2 0x45
121#define AD713X_REG_POWER_UV_ERROR_2 0x46
122#define AD713X_REG_SPI_ERROR 0x47
123#define AD713X_REG_AIN_OR_ERROR 0x48
124#define AD713X_REG_AVDD5_VALUE 0x49
125#define AD713X_REG_DVDD5_VALUE 0x4A
126#define AD713X_REG_VREF_VALUE 0x4B
127#define AD713X_REG_LDOIN_VALUE 0x4C
128#define AD713X_REG_AVDD1V8_VALUE 0x4D
129#define AD713X_REG_DVDD1V8_VALUE 0x4E
130#define AD713X_REG_CLKVDD_VALUE 0x4F
131#define AD713X_REG_IOVDD_VALUE 0x50
132#define AD713X_REG_TEMPERATURE_DATA 0x51
133
134/*
135 * AD713X_REG_INTERFACE_CONFIG_A
136 */
137#define AD713X_INT_CONFIG_A_SOFT_RESET_MSK NO_OS_BIT(7)
138#define AD713X_INT_CONFIG_A_ADDR_ASC_BIT_MSK NO_OS_BIT(5)
139#define AD713X_INT_CONFIG_A_SDO_ACTIVE_BIT_MSK NO_OS_BIT(4)
140#define AD713X_INT_CONFIG_A_SOFT_RESET_MIRR_MSK NO_OS_BIT(0)
141#define AD713X_INT_CONFIG_A_ADDR_ASC_MIRR_MSK NO_OS_BIT(2)
142#define AD713X_INT_CONFIG_A_SDO_ACTIVE_MIRR_MSK NO_OS_BIT(3)
143
144/*
145 * AD713X_REG_INTERFACE_CONFIG_B
146 */
147#define AD713X_INT_CONFIG_B_SINGLE_INSTR_MSK NO_OS_BIT(7)
148#define AD713X_INT_CONFIG_B_M_S_RD_CTRL_MSK NO_OS_BIT(5)
149#define AD713X_INT_CONFIG_B_DIG_IF_RST_MSK NO_OS_BIT(1)
150
151/*
152 * AD713X_REG_DEVICE_CONFIG
153 */
154#define AD713X_DEV_CONFIG_OP_IN_PROGRESS_MSK NO_OS_BIT(5)
155#define AD713X_DEV_CONFIG_NO_CHIP_ERR_MSK NO_OS_BIT(4)
156#define AD713X_DEV_CONFIG_PWR_MODE_MSK NO_OS_BIT(0)
157
158/*
159 * AD713X_REG_CHIP_TYPE
160 */
161#define AD713X_CHIP_TYPE_BITS_MSK NO_OS_GENMASK(7, 0)
162#define AD713X_CHIP_TYPE_BITS_MODE(x) (((x) & 0xFF) << 0)
163#define AD713X_CHIP_TYPE 0x07
164
165/*
166 * AD713X_REG_PRODUCT_ID_LSB
167 */
168#define AD713X_PRODUCT_ID_LSB_BITS_MSK NO_OS_GENMASK(7, 0)
169#define AD713X_PRODUCT_ID_LSB_BITS_MODE(x) (((x) & 0xFF) << 0)
170
171/*
172 * AD713X_REG_PRODUCT_ID_MSB
173 */
174#define AD713X_PRODUCT_ID_MSB_BITS_MSK NO_OS_GENMASK(7, 0)
175#define AD713X_PRODUCT_ID_MSB_BITS_MODE(x) (((x) & 0xFF) << 0)
176
177/*
178 * AD713X_REG_CHIP_GRADE
179 */
180#define AD713X_CHIP_GRADE_PROD_GRADE_BITS_MSK NO_OS_GENMASK(7, 4)
181#define AD713X_CHIP_GRADE_PROD_GRADE_BITS_MODE(x) (((x) & 0x0F) << 4)
182#define AD713X_CHIP_GRADE_DEV_VERSION_BITS_MSK NO_OS_GENMASK(3, 0)
183#define AD713X_CHIP_GRADE_DEV_VERSION_BITS_MODE(x) (((x) & 0x0F) << 0)
184
185/*
186 * AD713X_REG_CHIP_INDEX
187 */
188#define AD713X_SILICON_REV_ID_BITS_MSK NO_OS_GENMASK(7, 0)
189#define AD713X_SILICON_REV_ID_BITS_MODE(x) (((x) & 0xFF) << 0)
190
191/*
192 * AD713X_REG_SCRATCH_PAD
193 */
194#define AD713X_SCRATCH_PAD_BITS_MSK NO_OS_GENMASK(7, 0)
195#define AD713X_SCRATCH_PAD_BITS_MODE(x) (((x) & 0xFF) << 0)
196
197/*
198 * AD713X_REG_SPI_REVISION
199 */
200#define AD713X_SPI_REVISION_BITS_MSK NO_OS_GENMASK(7, 0)
201#define AD713X_SPI_REVISION_BITS_MODE(x) (((x) & 0xFF) << 0)
202
203/*
204 * AD713X_REG_VENDOR_ID_LSB
205 */
206#define AD713X_VENDOR_ID_LSB_BITS_MSK NO_OS_GENMASK(7, 0)
207#define AD713X_VENDOR_ID_LSB_BITS_MODE(x) (((x) & 0xFF) << 0)
208
209/*
210 * AD713X_REG_VENDOR_ID_MSB
211 */
212#define AD713X_VENDOR_ID_MSB_BITS_MSK NO_OS_GENMASK(7, 0)
213#define AD713X_VENDOR_ID_MSB_BITS_MODE(x) (((x) & 0xFF) << 0)
214
215/*
216 * AD713X_REG_STREAM_MODE
217 */
218#define AD713X_STREAM_MODE_BITS_MSK NO_OS_GENMASK(7, 0)
219#define AD713X_STREAM_MODE_BITS_MODE(x) (((x) & 0xFF) << 0)
220
221/*
222 * AD713X_REG_TRANSFER_REGISTER
223 */
224#define AD713X_TRANSFER_MASTER_SLAVE_TX_BIT_MSK NO_OS_BIT(0)
225
226/*
227 * AD713X_REG_DEVICE_CONFIG1
228 */
229#define AD713X_DEV_CONFIG1_MPC_MAGPHA_EN_MSK NO_OS_BIT(6)
230#define AD713X_DEV_CONFIG1_MPC_MAG_EN_MSK NO_OS_BIT(5)
231#define AD713X_DEV_CONFIG1_AA_MODE_MSK NO_OS_BIT(4)
232#define AD713X_DEV_CONFIG1_SDO_PIN_SRC_SEL_MSK NO_OS_BIT(2)
233#define AD713X_DEV_CONFIG1_REF_GAIN_CORR_EN_MSK NO_OS_BIT(1)
234#define AD713X_DEV_CONFIG1_CLKOUT_EN_MSK NO_OS_BIT(0)
235
236/*
237 * AD713X_REG_DATA_PACKET_CONFIG
238 */
239#define AD713X_DATA_PACKET_CONFIG_CRC_POLY_RST_MSK NO_OS_BIT(7)
240#define AD713X_DATA_PACKET_CONFIG_FRAME_MSK NO_OS_GENMASK(6, 4)
241#define AD713X_DATA_PACKET_CONFIG_FRAME_MODE(x) (((x) & 0x7) << 4)
242#define AD713X_DATA_PACKET_CONFIG_DCLK_FREQ_MSK NO_OS_GENMASK(3, 0)
243#define AD713X_DATA_PACKET_CONFIG_DCLK_FREQ_MODE(x) (((x) & 0xF) << 0)
244
245/*
246 * AD713X_REG_DIGITAL_INTERFACE_CONFIG
247 */
248#define AD713X_DIG_INT_CONFIG_DAISY_CHAIN_NUM_MSK NO_OS_GENMASK(7, 4)
249#define AD713X_DIG_INT_CONFIG_DAISY_CHAIN_NUM_MODE(x) (((x) & 0xF) << 4)
250#define AD713X_DIG_INT_CONFIG_AVG_SEL_MSK NO_OS_GENMASK(3, 2)
251#define AD713X_DIG_INT_CONFIG_AVG_SEL_MODE(x) (((x) & 0x3) << 2)
252#define AD713X_DIG_INT_CONFIG_FORMAT_MSK NO_OS_GENMASK(1, 0)
253#define AD713X_DIG_INT_CONFIG_FORMAT_MODE(x) (((x) & 0x3) << 0)
254
255/*
256 * AD713X_REG_POWER_DOWN_CONTROL
257 */
258#define AD713X_PWRDN_CTRL_PWRDN_CH_MSK(ch) NO_OS_BIT(ch)
259#define AD713X_PWRDN_CTRL_PWRDN_AUXADC_MSK NO_OS_BIT(2)
260#define AD713X_PWRDN_CTRL_PWRDN_LDO_MSK NO_OS_BIT(1)
261#define AD713X_PWRDN_CTRL_PWRDN_SLEEP_MODE_EN_MSK NO_OS_BIT(0)
262
263/*
264 * AD713X_REG_AIN_RANGE_SELECT
265 */
266#define AD713X_AIN_RANGE_SEL_CH_MSK(ch) NO_OS_BIT(ch)
267
268/*
269 * AD713X_REG_DEVICE_STATUS
270 */
271#define AD713X_DEV_STAT_DCLKMODE_MSK NO_OS_BIT(5)
272#define AD713X_DEV_STAT_DCLKIO_MSK NO_OS_BIT(4)
273#define AD713X_DEV_STAT_MODE_MSK NO_OS_BIT(3)
274#define AD713X_DEV_STAT_CLKSEL_MSK NO_OS_BIT(2)
275#define AD713X_DEV_STAT_FUSE_ECC_MSK NO_OS_BIT(1)
276#define AD713X_DEV_STAT_PLL_LOCK_MSK NO_OS_BIT(0)
277
278/*
279 * AD713X_REG_ODR_VAL_INT_LSB
280 */
281#define AD713X_ODR_VAL_INT_LSB_MSK NO_OS_GENMASK(7, 0)
282#define AD713X_ODR_VAL_INT_LSB_MODE(x) (((x) & 0xFF) << 0)
283
284/*
285 * AD713X_REG_ODR_VAL_INT_MID
286 */
287#define AD713X_ODR_VAL_INT_MID_MSK NO_OS_GENMASK(7, 0)
288#define AD713X_ODR_VAL_INT_MID_MODE(x) (((x) & 0xFF) << 0)
289
290/*
291 * AD713X_REG_ODR_VAL_INT_MSB
292 */
293#define AD713X_ODR_VAL_INT_MSB_MSK NO_OS_GENMASK(7, 0)
294#define AD713X_ODR_VAL_INT_MSB_MODE(x) (((x) & 0xFF) << 0)
295
296/*
297 * AD713X_REG_ODR_VAL_FLT_LSB
298 */
299#define AD713X_ODR_VAL_FLT_LSB_MSK NO_OS_GENMASK(7, 0)
300#define AD713X_ODR_VAL_FLT_LSB_MODE(x) (((x) & 0xFF) << 0)
301
302/*
303 * AD713X_REG_ODR_VAL_FLT_MID0
304 */
305#define AD713X_ODR_VAL_FLT_MID0_MSK NO_OS_GENMASK(7, 0)
306#define AD713X_ODR_VAL_FLT_MID0_MODE(x) (((x) & 0xFF) << 0)
307
308/*
309 * AD713X_REG_ODR_VAL_FLT_MID1
310 */
311#define AD713X_ODR_VAL_FLT_MID1_MSK NO_OS_GENMASK(7, 0)
312#define AD713X_ODR_VAL_FLT_MID1_MODE(x) (((x) & 0xFF) << 0)
313
314/*
315 * AD713X_REG_ODR_VAL_FLT_MSB
316 */
317#define AD713X_ODR_VAL_FLT_MSB_MSK NO_OS_GENMASK(7, 0)
318#define AD713X_ODR_VAL_FLT_MSB_MODE(x) (((x) & 0xFF) << 0)
319
320/*
321 * AD713X_REG_CHANNEL_ODR_SELECT
322 */
323#define AD713X_ODR_RATE_SEL_CH_MSK(ch) (NO_OS_GENMASK(1, 0) << (2 * ch))
324#define AD713X_ODR_RATE_SEL_CH_MODE(x, ch) (((x) & 0x3) << (2 * ch))
325
326/*
327 * AD713X_REG_CHAN_DIG_FILTER_SEL
328 */
329#define AD713X_DIGFILTER_SEL_CH_MSK(ch) (NO_OS_GENMASK(1, 0) << (2 * ch))
330#define AD713X_DIGFILTER_SEL_CH_MODE(x, ch) (((x) & 0x3) << (2 * ch))
331
332/*
333 * AD713X_REG_FIR_BW_SEL
334 */
335#define AD713X_FIR_BW_SEL_CH_MSK(ch) NO_OS_BIT(ch)
336
337/*
338 * AD713X_REG_GPIO_DIR_CTRL
339 */
340#define AD713X_GPIO_IO_CTRL_MSK NO_OS_GENMASK(7, 0)
341#define AD713X_GPIO_IO_CTRL_MODE(x) (((x) & 0xFF) << 0)
342
343/*
344 * AD713X_REG_GPIO_DATA
345 */
346#define AD713X_GPIO_DATA_MSK NO_OS_GENMASK(7, 0)
347#define AD713X_GPIO_DATA_MODE(x) (((x) & 0xFF) << 0)
348
349/*
350 * AD713X_REG_ERROR_PIN_SRC_CONTROL
351 */
352#define AD713X_ERR_PIN_EN_OR_AIN_MSK NO_OS_BIT(5)
353#define AD713X_ERR_PIN_EN_INTERNAL_MSK NO_OS_BIT(4)
354#define AD713X_ERR_PIN_EN_SPI_MSK NO_OS_BIT(3)
355#define AD713X_ERR_PIN_EN_LDO_XOSC_MSK NO_OS_BIT(2)
356#define AD713X_ERR_PIN_EN_TEMP_MSK NO_OS_BIT(1)
357#define AD713X_ERR_PIN_EN_PWR_MSK NO_OS_BIT(0)
358
359/*
360 * AD713X_REG_ERROR_PIN_CONTROL
361 */
362#define AD713X_ERR_PIN_IN_STATUS_MSK NO_OS_BIT(2)
363#define AD713X_ERR_PIN_IN_EN_MSK NO_OS_BIT(1)
364#define AD713X_ERR_PIN_OUT_EN_MSK NO_OS_BIT(0)
365
366/*
367 * AD713X_REG_VCMBUF_CTRL
368 */
369#define AD713X_VCMBUF_CTRL_PWRDN_MSK NO_OS_BIT(6)
370#define AD713X_VCMBUF_CTRL_REF_DIV_SEL_MSK NO_OS_GENMASK(5, 1)
371#define AD713X_VCMBUF_CTRL_REF_DIV_SEL_MODE(x) (((x) & 0x1F) << 1)
372#define AD713X_VCMBUF_CTRL_REF_SEL_MSK NO_OS_BIT(0)
373
374/*
375 * AD713X_REG_DIAGNOSTIC_CONTROL
376 */
377#define AD713X_DIAGCTRL_ERR_OR_AIN_EN_MSK NO_OS_BIT(5)
378#define AD713X_DIAGCTRL_ERR_PWR_MON_EN_MSK NO_OS_BIT(4)
379#define AD713X_DIAGCTRL_MCLK_CNT_EN_MSK NO_OS_BIT(3)
380#define AD713X_DIAGCTRL_ERR_SPI_CRC_EN_MSK NO_OS_BIT(2)
381#define AD713X_DIAGCTRL_ERR_MM_CRC_EN_MSK NO_OS_BIT(1)
382#define AD713X_DIAGCTRL_FUSE_CRC_CHECK_MSK NO_OS_BIT(0)
383
384/*
385 * AD713X_REG_MPC_CONFIG
386 */
387#define AD713X_MPC_CLKDEL_EN_CH_MSK(ch) (NO_OS_GENMASK(1, 0) << (2 * ch))
388#define AD713X_MPC_CLKDEL_EN_CH_MODE(x, ch) (((x) & 0x3) << (2 * ch))
389
390/*
391 * AD713X_REG_CHx_GAIN_LSB
392 */
393#define AD713X_CH_GAIN_LSB_MSK NO_OS_GENMASK(7, 0)
394#define AD713X_CH_GAIN_LSB_MODE(x) (((x) & 0xFF) << 0)
395
396/*
397 * AD713X_REG_CHx_GAIN_MID
398 */
399#define AD713X_CH_GAIN_MID_MSK NO_OS_GENMASK(7, 0)
400#define AD713X_CH_GAIN_MID_MODE(x) (((x) & 0xFF) << 0)
401
402/*
403 * AD713X_REG_CHx_GAIN_MSB
404 */
405#define AD713X_CH_GAIN_CAL_SEL_MSK NO_OS_BIT(4)
406#define AD713X_CH_GAIN_MSB_MSK NO_OS_GENMASK(3, 0)
407#define AD713X_CH_GAIN_MSB_MODE(x) (((x) & 0xF) << 0)
408
409/*
410 * AD713X_REG_CHx_OFFSET_LSB
411 */
412#define AD713X_CH_OFFSET_LSB_MSK NO_OS_GENMASK(7, 0)
413#define AD713X_CH_OFFSET_LSB_MODE(x) (((x) & 0xFF) << 0)
414
415/*
416 * AD713X_REG_CHx_OFFSET_MID
417 */
418#define AD713X_CH_OFFSET_MID_MSK NO_OS_GENMASK(7, 0)
419#define AD713X_CH_OFFSET_MID_MODE(x) (((x) & 0xFF) << 0)
420
421/*
422 * AD713X_REG_CHx_OFFSET_MSB
423 */
424#define AD713X_CH_OFFSET_CAL_EN_MSK NO_OS_BIT(7)
425#define AD713X_CH_OFFSET_MSB_MSK NO_OS_GENMASK(6, 0)
426#define AD713X_CH_OFFSET_MSB_MODE(x) (((x) & 0x7F) << 0)
427
428/*
429 * AD713X_REG_MCLK_COUNTER
430 */
431#define AD713X_MCLK_COUNT_MSK NO_OS_GENMASK(7, 0)
432#define AD713X_MCLK_COUNT_MODE(x) (((x) & 0xFF) << 0)
433
434/*
435 * AD713X_REG_DIG_FILTER_OFUF
436 */
437#define AD713X_DIGFILTER_ERR_OFUF_CH_MSK(ch) NO_OS_BIT(ch)
438
439/*
440 * AD713X_REG_DIG_FILTER_SETTLED
441 */
442#define AD713X_DIGFILTER_CH_SETTLED_MSK(ch) NO_OS_BIT(ch)
443
444/*
445 * AD713X_REG_INTERNAL_ERROR
446 */
447#define AD713X_INT_ERR_NO_CLOCK_MSK NO_OS_BIT(5)
448#define AD713X_INT_ERR_TEMP_MSK NO_OS_BIT(4)
449#define AD713X_INT_ERR_DCLK_MSK NO_OS_BIT(3)
450#define AD713X_INT_ERR_FUSE_CRC_MSK NO_OS_BIT(2)
451#define AD713X_INT_ERR_ASRC_MSK NO_OS_BIT(1)
452#define AD713X_INT_ERR_MM_CRC_MSK NO_OS_BIT(0)
453
454/*
455 * AD713X_REG_POWER_OV_ERROR_1
456 */
457#define AD713X_POWER_ERR_OV_IOVDD_MSK NO_OS_BIT(3)
458#define AD713X_POWER_ERR_OV_CLKVDD_MSK NO_OS_BIT(2)
459#define AD713X_POWER_ERR_OV_DVDD1V8_MSK NO_OS_BIT(1)
460#define AD713X_POWER_ERR_OV_AVDD1V8_MSK NO_OS_BIT(0)
461
462/*
463 * AD713X_REG_POWER_UV_ERROR_1
464 */
465#define AD713X_POWER_ERR_UV_IOVDD_MSK NO_OS_BIT(3)
466#define AD713X_POWER_ERR_UV_CLKVDD_MSK NO_OS_BIT(2)
467#define AD713X_POWER_ERR_UV_DVDD1V8_MSK NO_OS_BIT(1)
468#define AD713X_POWER_ERR_UV_AVDD1V8_MSK NO_OS_BIT(0)
469
470/*
471 * AD713X_REG_POWER_OV_ERROR_2
472 */
473#define AD713X_POWER_ERR_OV_VREF_MSK NO_OS_BIT(3)
474#define AD713X_POWER_ERR_OV_LDOIN_MSK NO_OS_BIT(2)
475#define AD713X_POWER_ERR_OV_DVDD5_MSK NO_OS_BIT(1)
476#define AD713X_POWER_ERR_OV_AVDD5_MSK NO_OS_BIT(0)
477
478/*
479 * AD713X_REG_POWER_UV_ERROR_2
480 */
481#define AD713X_POWER_ERR_UV_VREF_MSK NO_OS_BIT(3)
482#define AD713X_POWER_ERR_UV_LDOIN_MSK NO_OS_BIT(2)
483#define AD713X_POWER_ERR_UV_DVDD5_MSK NO_OS_BIT(1)
484#define AD713X_POWER_ERR_UV_AVDD5_MSK NO_OS_BIT(0)
485
486/*
487 * AD713X_REG_SPI_ERROR
488 */
489#define AD713X_SPI_ERROR_CRC_MSK NO_OS_BIT(3)
490#define AD713X_SPI_ERROR_SCLK_CNT_MSK NO_OS_BIT(2)
491#define AD713X_SPI_ERROR_WRITE_MSK NO_OS_BIT(1)
492#define AD713X_SPI_ERROR_READ_MSK NO_OS_BIT(0)
493
494/*
495 * AD713X_REG_AIN_OR_ERROR
496 */
497#define AD713X_ERR_OR_AIN_MSK(ch) NO_OS_BIT(ch)
498
499/*
500 * AD713X_REG_AVDD5_VALUE
501 */
502#define AD713X_AVDD5_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
503#define AD713X_AVDD5_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
504
505/*
506 * AD713X_REG_DVDD5_VALUE
507 */
508#define AD713X_DVDD5_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
509#define AD713X_DVDD5_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
510
511/*
512 * AD713X_REG_VREF_VALUE
513 */
514#define AD713X_VREF_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
515#define AD713X_VREF_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
516
517/*
518 * AD713X_REG_LDOIN_VALUE
519 */
520#define AD713X_LDOIN_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
521#define AD713X_LDOIN_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
522
523/*
524 * AD713X_REG_AVDD1V8_VALUE
525 */
526#define AD713X_AVDD1V8_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
527#define AD713X_AVDD1V8_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
528
529/*
530 * AD713X_REG_DVDD1V8_VALUE
531 */
532#define AD713X_DVDD1V8_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
533#define AD713X_DVDD1V8_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
534
535/*
536 * AD713X_REG_CLKVDD_VALUE
537 */
538#define AD713X_CLKVDD_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
539#define AD713X_CLKVDD_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
540
541/*
542 * AD713X_REG_IOVDD_VALUE
543 */
544#define AD713X_IOVDD_VALUE_PIN_MSK NO_OS_GENMASK(7, 0)
545#define AD713X_IOVDD_VALUE_PIN_MODE(x) (((x) & 0xFF) << 0)
546
547/*
548 * AD713X_REG_TEMPERATURE_DATA
549 */
550#define AD713X_TEMP_DATA_MSK NO_OS_GENMASK(7, 0)
551#define AD713X_TEMP_DATA_MODE(x) (((x) & 0xFF) << 0)
552
553#define AD713X_REG_READ(x) ((1 << 7) | (x & 0x7F))
554
565
576
591
604
619
634
651
664
693
734
736int32_t ad713x_spi_reg_read(struct ad713x_dev *dev, uint8_t reg_addr,
737 uint8_t *reg_data);
738
740int32_t ad713x_spi_reg_write(struct ad713x_dev *dev, uint8_t reg_addr,
741 uint8_t reg_data);
742
744int32_t ad713x_spi_write_mask(struct ad713x_dev *dev, uint8_t reg_addr,
745 uint32_t mask, uint8_t data);
746
748int32_t ad713x_set_power_mode(struct ad713x_dev *dev,
750
752int32_t ad713x_set_out_data_frame(struct ad713x_dev *dev,
753 enum ad713x_adc_data_len adc_data_len,
754 enum ad713x_crc_header crc_header);
755
757int32_t ad713x_dout_format_config(struct ad713x_dev *dev,
758 enum ad713x_doutx_format format);
759
762int32_t ad713x_mag_phase_clk_delay(struct ad713x_dev *dev, bool clk_delay_en);
763
765int32_t ad713x_dig_filter_sel_ch(struct ad713x_dev *dev,
766 enum ad713x_dig_filter_sel filter, enum ad713x_channels ch);
767
769int32_t ad713x_clkout_output_en(struct ad713x_dev *dev, bool enable);
770
772int32_t ad713x_ref_gain_correction_en(struct ad713x_dev *dev, bool enable);
773
775int32_t ad713x_wideband_bw_sel(struct ad713x_dev *dev,
776 enum ad713x_channels ch, uint8_t wb_opt);
777
779int32_t ad713x_init(struct ad713x_dev **device,
781
783int32_t ad713x_remove(struct ad713x_dev *dev);
784
786int32_t ad713x_spi_reg_dump(struct ad713x_dev *dev);
787
789int32_t ad713x_channel_sync(struct ad713x_dev *dev);
790
791#endif /* SRC_AD713X_H_ */
ad713x_dig_filter_sel
AD713x list of input filters.
Definition ad713x.h:624
@ FIR
Definition ad713x.h:626
@ SINC3_50_60_REJ
Definition ad713x.h:632
@ SINC6
Definition ad713x.h:628
@ SINC3
Definition ad713x.h:630
int32_t ad713x_mag_phase_clk_delay(struct ad713x_dev *dev, bool clk_delay_en)
Magnitude and phase matching calibration clock delay enable for all channels at 2 clock delay....
Definition ad713x.c:243
ad713x_crc_header
AD713x possible data CRC header choices.
Definition ad713x.h:596
@ NO_CRC
Definition ad713x.h:598
@ CRC_6
Definition ad713x.h:600
@ CRC_8
Definition ad713x.h:602
int32_t ad713x_spi_reg_dump(struct ad713x_dev *dev)
Print all registers values for the AD4134 device. Register map has gaps, reg dump function specific f...
Definition ad713x.c:652
int32_t ad713x_spi_write_mask(struct ad713x_dev *dev, uint8_t reg_addr, uint32_t mask, uint8_t data)
SPI write to device using a mask.
Definition ad713x.c:137
int32_t ad713x_set_power_mode(struct ad713x_dev *dev, enum ad713x_power_mode mode)
Device power mode control.
Definition ad713x.c:162
ad713x_supported_dev_ids
ID of devices supported by the driver.
Definition ad713x.h:559
@ ID_AD7136
Definition ad713x.h:562
@ ID_AD4134
Definition ad713x.h:563
@ ID_AD7132
Definition ad713x.h:560
@ ID_AD7134
Definition ad713x.h:561
int32_t ad713x_channel_sync(struct ad713x_dev *dev)
Multidevice synchronization between channels on different devices.
Definition ad713x.c:293
int32_t ad713x_spi_reg_write(struct ad713x_dev *dev, uint8_t reg_addr, uint8_t reg_data)
Write to device.
Definition ad713x.c:117
ad713x_adc_data_len
AD713x possible number of bits per data sample.
Definition ad713x.h:581
@ ADC_24_BIT_DATA
Definition ad713x.h:585
@ ADC_16_BIT_DATA
Definition ad713x.h:583
@ ADC_32_BIT_DATA
Definition ad713x.h:587
@ INVALID
Definition ad713x.h:589
int32_t ad713x_wideband_bw_sel(struct ad713x_dev *dev, enum ad713x_channels ch, uint8_t wb_opt)
Select the wideband filter bandwidth for a channel. The option is relative to ODR,...
Definition ad713x.c:375
int32_t ad713x_dig_filter_sel_ch(struct ad713x_dev *dev, enum ad713x_dig_filter_sel filter, enum ad713x_channels ch)
Digital filter type selection for each channel.
Definition ad713x.c:326
ad713x_power_mode
AD713x power modes.
Definition ad713x.h:570
@ LOW_POWER
Definition ad713x.h:572
@ HIGH_POWER
Definition ad713x.h:574
ad713x_channels
AD713x list of channels.
Definition ad713x.h:639
@ CH1
Definition ad713x.h:643
@ CH0
Definition ad713x.h:641
@ AD713X_CH_MAX
Definition ad713x.h:649
@ CH3
Definition ad713x.h:647
@ CH2
Definition ad713x.h:645
ad713x_doutx_format
AD713x list for possible output modes.
Definition ad713x.h:609
@ DUAL_CH_DC
Definition ad713x.h:613
@ QUAD_CH_PO
Definition ad713x.h:615
@ CH_AVG_MODE
Definition ad713x.h:617
@ SINGLE_CH_DC
Definition ad713x.h:611
int32_t ad713x_spi_reg_read(struct ad713x_dev *dev, uint8_t reg_addr, uint8_t *reg_data)
Read from device.
Definition ad713x.c:92
int32_t ad713x_set_out_data_frame(struct ad713x_dev *dev, enum ad713x_adc_data_len adc_data_len, enum ad713x_crc_header crc_header)
ADC conversion data output frame control.
Definition ad713x.c:189
int32_t ad713x_dout_format_config(struct ad713x_dev *dev, enum ad713x_doutx_format format)
DOUTx output format configuration.
Definition ad713x.c:223
int32_t ad713x_init(struct ad713x_dev **device, struct ad713x_init_param *init_param)
Initialize the device.
Definition ad713x.c:539
int32_t ad713x_ref_gain_correction_en(struct ad713x_dev *dev, bool enable)
Enable/Disable reference gain correction.
Definition ad713x.c:356
ad717x_mpc_clkdel
AD713x list of clock delays.
Definition ad713x.h:656
@ DELAY_2_CLOCKS
Definition ad713x.h:662
@ DELAY_NONE
Definition ad713x.h:658
@ DELAY_1_CLOCKS
Definition ad713x.h:660
int32_t ad713x_remove(struct ad713x_dev *dev)
Free the resources allocated by ad713x_init().
Definition ad713x.c:626
int32_t ad713x_clkout_output_en(struct ad713x_dev *dev, bool enable)
Enable/Disable CLKOUT output.
Definition ad713x.c:342
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
AD713x driver handler structure.
Definition ad713x.h:669
struct no_os_gpio_desc * gpio_resetn
Definition ad713x.h:679
struct no_os_gpio_desc * gpio_mode
Definition ad713x.h:673
struct no_os_gpio_desc * gpio_dclkio
Definition ad713x.h:677
enum ad713x_supported_dev_ids dev_id
Definition ad713x.h:685
struct no_os_gpio_desc * gpio_dclkmode
Definition ad713x.h:675
enum ad713x_adc_data_len adc_data_len
Definition ad713x.h:687
enum ad713x_crc_header crc_header
Definition ad713x.h:689
bool mode_master_nslave
Definition ad713x.h:691
struct no_os_gpio_desc * gpio_pnd
Definition ad713x.h:681
struct no_os_spi_desc * spi_desc
Definition ad713x.h:671
struct no_os_spi_desc * gpio_cs_sync
Definition ad713x.h:683
AD713x driver initialization structure.
Definition ad713x.h:698
struct no_os_gpio_init_param * gpio_dclkio
Definition ad713x.h:706
enum ad713x_supported_dev_ids dev_id
Definition ad713x.h:722
struct no_os_spi_init_param spi_init_prm
Definition ad713x.h:700
enum ad713x_doutx_format format
Definition ad713x.h:727
enum ad713x_adc_data_len adc_data_len
Definition ad713x.h:724
bool dclkio_out_nin
Definition ad713x.h:718
bool pnd
Definition ad713x.h:720
bool clk_delay_en
Definition ad713x.h:729
struct no_os_spi_desc * spi_common_dev
Definition ad713x.h:732
bool dclkmode_free_ngated
Definition ad713x.h:716
struct no_os_gpio_init_param * gpio_mode
Definition ad713x.h:702
struct no_os_gpio_init_param * gpio_cs_sync
Definition ad713x.h:712
struct no_os_gpio_init_param * gpio_dclkmode
Definition ad713x.h:704
struct no_os_gpio_init_param * gpio_pnd
Definition ad713x.h:710
struct no_os_gpio_init_param * gpio_resetn
Definition ad713x.h:708
enum ad713x_crc_header crc_header
Definition ad713x.h:726
bool mode_master_nslave
Definition ad713x.h:714
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
enum no_os_spi_mode mode
Definition no_os_spi.h:190
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128