AD4130 Mbed IIO Firmware
Dependencies: tempsensors sdp_k1_sdram
app/ad413x.h@2:871d585d96ee, 2022-07-15 (annotated)
- Committer:
- MPhalke@MPHALKE-L02.ad.analog.com
- Date:
- Fri Jul 15 17:47:44 2022 +0530
- Revision:
- 2:871d585d96ee
AD4130 firmware - initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 1 | /***************************************************************************//** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 2 | * @file ad413x.h |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 3 | * @brief Header file of AD413X Driver. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 4 | * @author Andrei Porumb (andrei.porumb@analog.com) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 5 | ******************************************************************************** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 6 | * Copyright 2022(c) Analog Devices, Inc. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 7 | * |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 8 | * All rights reserved. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 9 | * |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 10 | * Redistribution and use in source and binary forms, with or without |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 11 | * modification, are permitted provided that the following conditions are met: |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 12 | * - Redistributions of source code must retain the above copyright |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 13 | * notice, this list of conditions and the following disclaimer. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 14 | * - Redistributions in binary form must reproduce the above copyright |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 15 | * notice, this list of conditions and the following disclaimer in |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 16 | * the documentation and/or other materials provided with the |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 17 | * distribution. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 18 | * - Neither the name of Analog Devices, Inc. nor the names of its |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 19 | * contributors may be used to endorse or promote products derived |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 20 | * from this software without specific prior written permission. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 21 | * - The use of this software may or may not infringe the patent rights |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 22 | * of one or more patent holders. This license does not release you |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 23 | * from the requirement that you obtain separate licenses from these |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 24 | * patent holders to use this software. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 25 | * - Use of the software either in source or binary form, must be run |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 26 | * on or directly connected to an Analog Devices Inc. component. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 27 | * |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 28 | * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 29 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 30 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 31 | * IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 32 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 33 | * LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 34 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 35 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 36 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 37 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 38 | *******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 39 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 40 | #ifndef AD413X_H_ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 41 | #define AD413X_H_ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 42 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 43 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 44 | /***************************** Include Files **********************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 45 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 46 | #include <stdint.h> |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 47 | #include "no_os_delay.h" |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 48 | #include "no_os_gpio.h" |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 49 | #include "no_os_spi.h" |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 50 | #include "no_os_irq.h" |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 51 | #include "no_os_util.h" |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 52 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 53 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 54 | /********************** Macros and Constants Definitions **********************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 55 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 56 | #define AD413X_CMD_WR_COM_REG(x) (0x00 | ((x) & 0x3F)) // Write to Register x |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 57 | #define AD413X_CMD_RD_COM_REG(x) (0x40 | ((x) & 0x3F)) // Read from Register x |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 58 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 59 | /*************************** ADC Register Lengths *****************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 60 | #define AD413X_R1B (1 << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 61 | #define AD413X_R2B (2 << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 62 | #define AD413X_R3B (3 << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 63 | #define AD413X_TRANSF_LEN(x) (((x) >> 8) & 0xFF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 64 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 65 | /***************************** ADC Register Map *******************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 66 | #define AD413X_REG_STATUS (AD413X_R1B | 0x0) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 67 | #define AD413X_REG_ADC_CTRL (AD413X_R2B | 0x1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 68 | #define AD413X_REG_DATA (AD413X_R3B | 0x2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 69 | #define AD413X_REG_IO_CTRL (AD413X_R2B | 0x3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 70 | #define AD413X_REG_VBIAS_CTRL (AD413X_R2B | 0x4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 71 | #define AD413X_REG_ID (AD413X_R1B | 0x5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 72 | #define AD413X_REG_ERROR (AD413X_R2B | 0x6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 73 | #define AD413X_REG_ERROR_EN (AD413X_R2B | 0x7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 74 | #define AD413X_REG_MCLK_CNT (AD413X_R1B | 0x8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 75 | #define AD413X_REG_CHN(x) (AD413X_R3B | (0x09U + (x))) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 76 | #define AD413X_REG_CONFIG(x) (AD413X_R2B | (0x19U + (x))) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 77 | #define AD413X_REG_FILTER(x) (AD413X_R3B | (0x21U + (x))) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 78 | #define AD413X_REG_OFFSET(x) (AD413X_R3B | (0x29U + (x))) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 79 | #define AD413X_REG_GAIN(x) (AD413X_R3B | (0x31U + (x))) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 80 | #define AD413X_REG_MISC (AD413X_R2B | 0x39) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 81 | #define AD413X_REG_FIFO_CTRL (AD413X_R3B | 0x3A) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 82 | #define AD413X_REG_FIFO_STS (AD413X_R1B | 0x3B) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 83 | #define AD413X_REG_FIFO_THRSHLD (AD413X_R3B | 0x3C) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 84 | #define AD413X_REG_FIFO_DATA (AD413X_R3B | 0x3D) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 85 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 86 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 87 | /* ADC_CONTROL Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 88 | #define AD413X_ADC_BIPOLAR NO_OS_BIT(14) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 89 | #define AD413X_ADC_REF_VAL NO_OS_BIT(13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 90 | #define AD413X_ADC_DOUT_DIS_DEL NO_OS_BIT(12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 91 | #define AD413X_ADC_CONT_READ NO_OS_BIT(11) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 92 | #define AD413X_ADC_DATA_STATUS NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 93 | #define AD413X_ADC_CSB_EN NO_OS_BIT(9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 94 | #define AD413X_ADC_REF_EN NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 95 | #define AD413X_ADC_DUTY_CYC_RATIO NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 96 | #define AD413X_ADC_MODE(x) (((x) & 0xF) << 2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 97 | #define AD413X_ADC_CNTRL_MCLK(x) ((x) & 0x3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 98 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 99 | /* IO_CONTROL Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 100 | #define AD413X_SYNCB_CLEAR NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 101 | #define AD413X_INT_PIN_SEL(x) (((x) & 0x3) << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 102 | #define AD413X_GPO_DATA_P4 NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 103 | #define AD413X_GPO_DATA_P3 NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 104 | #define AD413X_GPO_DATA_P2 NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 105 | #define AD413X_GPO_DATA_P1 NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 106 | #define AD413X_GPO_CTRL_P4 NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 107 | #define AD413X_GPO_CTRL_P3 NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 108 | #define AD413X_GPO_CTRL_P2 NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 109 | #define AD413X_GPO_CTRL_P1 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 110 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 111 | /* VBIAS_CTRL Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 112 | #define AD413X_VBIAS_15 NO_OS_BIT(15) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 113 | #define AD413X_VBIAS_14 NO_OS_BIT(14) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 114 | #define AD413X_VBIAS_13 NO_OS_BIT(13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 115 | #define AD413X_VBIAS_12 NO_OS_BIT(12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 116 | #define AD413X_VBIAS_11 NO_OS_BIT(11) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 117 | #define AD413X_VBIAS_10 NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 118 | #define AD413X_VBIAS_9 NO_OS_BIT(9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 119 | #define AD413X_VBIAS_8 NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 120 | #define AD413X_VBIAS_7 NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 121 | #define AD413X_VBIAS_6 NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 122 | #define AD413X_VBIAS_5 NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 123 | #define AD413X_VBIAS_4 NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 124 | #define AD413X_VBIAS_3 NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 125 | #define AD413X_VBIAS_2 NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 126 | #define AD413X_VBIAS_1 NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 127 | #define AD413X_VBIAS_0 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 128 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 129 | /* ERROR Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 130 | #define AD413X_AINP_OV_UV_ERR NO_OS_BIT(11) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 131 | #define AD413X_AINM_OV_UV_ERR NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 132 | #define AD413X_REF_OV_UV_ERR NO_OS_BIT(9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 133 | #define AD413X_REF_DETECT_ERR NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 134 | #define AD413X_ADC_ERR NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 135 | #define AD413X_SPI_IGNORE_ERR NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 136 | #define AD413X_SPI_SCLK_CNT_ERR NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 137 | #define AD413X_SPI_READ_ERR NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 138 | #define AD413X_SPI_WRITE_ERR NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 139 | #define AD413X_SPI_CRC_ERR NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 140 | #define AD413X_MM_CRC_ERR NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 141 | #define AD413X_ROM_CRC_ERR 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 142 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 143 | /* ERROR_EN Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 144 | #define AD413X_MCLK_CNT_EN NO_OS_BIT(12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 145 | #define AD413X_AINP_OV_UV_ERR_EN NO_OS_BIT(11) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 146 | #define AD413X_AINM_OV_UV_ERR_EN NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 147 | #define AD413X_REF_OV_UV_ERR_EN NO_OS_BIT(9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 148 | #define AD413X_REF_DETECT_ERR_EN NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 149 | #define AD413X_ADC_ERR_EN NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 150 | #define AD413X_SPI_IGNORE_ERR_EN NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 151 | #define AD413X_SPI_SCLK_CNT_ERR_EN NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 152 | #define AD413X_SPI_READ_ERR_EN NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 153 | #define AD413X_SPI_WRITE_ERR_EN NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 154 | #define AD413X_SPI_CRC_ERR_EN NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 155 | #define AD413X_MM_CRC_ERR_EN NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 156 | #define AD413X_ROM_CRC_ERR_EN 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 157 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 158 | /* CHANNEL_M Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 159 | #define AD413X_ENABLE_M NO_OS_BIT(23) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 160 | #define AD413X_SETUP_M(x) (((x) & 0x7) << 20) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 161 | #define AD413X_PDSW_M NO_OS_BIT(19) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 162 | #define AD413X_THRES_EN_M NO_OS_BIT(18) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 163 | #define AD413X_AINP_M(x) (((x) & 0x1F) << 13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 164 | #define AD413X_AINM_M(x) (((x) & 0x1F) << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 165 | #define AD413X_I_OUT1_CH_M(x) (((x) & 0xF) << 4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 166 | #define AD413X_I_OUT0_CH_M(x) ((x) & 0xF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 167 | #define AD413X_I_OUT_CH_MSK NO_OS_GENMASK(7,0) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 168 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 169 | /* CONFIG_N Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 170 | #define AD413X_I_OUT1_N(x) (((x) & 0x7) << 13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 171 | #define AD413X_I_OUT0_N(x) (((x) & 0x7) << 10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 172 | #define AD413X_I_OUT_MSK NO_OS_GENMASK(15,10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 173 | #define AD413X_BURNOUT_N(x) (((x) & 0x3) << 8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 174 | #define AD413X_REF_BUF_MSK NO_OS_GENMASK(7,6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 175 | #define AD413X_REF_BUFP_N NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 176 | #define AD413X_REF_BUFM_N NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 177 | #define AD413X_REF_SEL_N(x) (((x) & 0x3) << 4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 178 | #define AD413X_PGA_N(x) (((x) & 0x7) << 1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 179 | #define AD413X_PGA_BYP_N 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 180 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 181 | /* FILTER_N Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 182 | #define AD413X_SETTLE_N(x) (((x) & 0x7) << 21) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 183 | #define AD413X_REPEAT_N(x) (((x) & 0x1F) << 16) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 184 | #define AD413X_FILTER_MODE_N(x) (((x) & 0xF) << 12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 185 | #define AD413X_FS_N(x) ((x) & 0x7FF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 186 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 187 | /* OFFSET_N Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 188 | #define AD413X_OFFSET_N(x) ((x) & 0xFFFFFF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 189 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 190 | /* GAIN_N Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 191 | #define AD413X_GAIN_N(x) ((x) & 0xFFFFFF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 192 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 193 | /* MISC Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 194 | #define AD413X_BYPASS_OSC NO_OS_BIT(15) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 195 | #define AD413X_PD_ALDO NO_OS_BIT(14) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 196 | #define AD413X_CAL_RANGE_X2 NO_OS_BIT(13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 197 | #define AD413X_RESERVED(x) (((x) & 0xF) << 9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 198 | #define AD413X_STBY_CTRL_MSK NO_OS_GENMASK(8,0) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 199 | #define AD413X_STBY_OUT_EN NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 200 | #define AD413X_STBY_DIAGNOSTICS_EN NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 201 | #define AD413X_STBY_GPO_EN NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 202 | #define AD413X_STBY_PDSW_EN NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 203 | #define AD413X_STBY_BURNOUT_EN NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 204 | #define AD413X_STBY_VBIAS_EN NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 205 | #define AD413X_STBY_IEXC_EN NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 206 | #define AD413X_STBY_REFHOL_EN NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 207 | #define AD413X_STBY_INTREF_EN 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 208 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 209 | /* FIFO_CONTROL Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 210 | #define AD413X_ADD_FIFO_STATUS NO_OS_BIT(19) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 211 | #define AD413X_ADD_FIFO_HEADER NO_OS_BIT(18) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 212 | #define AD413X_FIFO_MODE(x) (((x) & 0x3) << 16) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 213 | #define AD413X_FIFO_WRITE_ERR_INT_EN NO_OS_BIT(14) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 214 | #define AD413X_FIFO_READ_ERR_INT_EN NO_OS_BIT(13) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 215 | #define AD413X_THRES_HIGH_INT_EN NO_OS_BIT(12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 216 | #define AD413X_THRES_LOW_INT_EN NO_OS_BIT(11) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 217 | #define AD413X_OVERRUN_INT_EN NO_OS_BIT(10) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 218 | #define AD413X_WATERMARK_INT_EN NO_OS_BIT(9) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 219 | #define AD413X_EMPTY_INT_EN NO_OS_BIT(8) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 220 | #define AD413X_WATERMARK(x) ((x) & 0xFF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 221 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 222 | /* FIFO_STATUS Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 223 | #define AD413X_MASTER_ERR NO_OS_BIT(7) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 224 | #define AD413X_FIFO_WRITE_ERR NO_OS_BIT(6) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 225 | #define AD413X_FIFO_READ_ERR NO_OS_BIT(5) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 226 | #define AD413X_THRES_HIGH_FLAG NO_OS_BIT(4) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 227 | #define AD413X_THRES_LOW_FLAG NO_OS_BIT(3) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 228 | #define AD413X_OVERRUN_FLAG NO_OS_BIT(2) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 229 | #define AD413X_WATERMARK_FLAG NO_OS_BIT(1) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 230 | #define AD413X_EMPTY_FLAG 0x01 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 231 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 232 | /* FIFO_THRESHOLD Register */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 233 | #define AD413X_THRES_HIGH_VAL(x) (((x) & 0xFFF) << 12) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 234 | #define AD413X_THRES_LOW_VAL(x) ((x) & 0xFFF) |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 235 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 236 | /* 8-bits wide checksum generated using the polynomial */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 237 | #define AD413X_CRC8_POLY 0x07 // x^8 + x^2 + x^1 + x^0 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 238 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 239 | #define ENABLE 1U |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 240 | #define DISABLE 0U |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 241 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 242 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 243 | /*************************** Types Declarations *******************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 244 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 245 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 246 | * @enum ad413x_input |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 247 | * @brief ADC input sources for each channel. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 248 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 249 | enum ad413x_input { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 250 | AD413X_AIN0, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 251 | AD413X_AIN1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 252 | AD413X_AIN2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 253 | AD413X_AIN3, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 254 | AD413X_AIN4, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 255 | AD413X_AIN5, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 256 | AD413X_AIN6, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 257 | AD413X_AIN7, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 258 | AD413X_AIN8, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 259 | AD413X_AIN9, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 260 | AD413X_AIN10, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 261 | AD413X_AIN11, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 262 | AD413X_AIN12, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 263 | AD413X_AIN13, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 264 | AD413X_AIN14, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 265 | AD413X_AIN15, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 266 | AD413X_TEMP, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 267 | AD413X_AVSS, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 268 | AD413X_INT_REF, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 269 | AD413X_DGND, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 270 | AD413X_AVDD_AVSS_6P, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 271 | AD413X_AVDD_AVSS_6M, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 272 | AD413X_IOVDD_DGND_6P, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 273 | AD413X_IOVDD_DGND_6M, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 274 | AD413X_ALDO_AVSS_6P, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 275 | AD413X_ALDO_AVSS_6M, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 276 | AD413X_DLDO_DGND_6P, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 277 | AD413X_DLDO_DGND_6M, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 278 | AD413X_V_MV_P, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 279 | AD413X_V_MV_M, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 280 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 281 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 282 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 283 | * @enum ad413x_preset_nb |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 284 | * @brief Preset number. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 285 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 286 | enum ad413x_preset_nb { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 287 | AD413X_PRESET_0, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 288 | AD413X_PRESET_1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 289 | AD413X_PRESET_2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 290 | AD413X_PRESET_3, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 291 | AD413X_PRESET_4, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 292 | AD413X_PRESET_5, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 293 | AD413X_PRESET_6, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 294 | AD413X_PRESET_7 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 295 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 296 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 297 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 298 | * @enum ad413x_mclk_sel |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 299 | * @brief Master clock options. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 300 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 301 | enum ad413x_mclk_sel { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 302 | AD413X_INT_76_8_KHZ_OUT_OFF, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 303 | AD413X_INT_76_8_KHZ_OUT_ON, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 304 | AD413X_EXT_76_8KHZ, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 305 | AD413X_EXT_153_6_KHZ_DIV_2 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 306 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 307 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 308 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 309 | * @enum ad413x_adc_mode |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 310 | * @brief ADC conversion modes. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 311 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 312 | enum ad413x_adc_mode { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 313 | AD413X_CONTINOUS_CONV_MODE = 0, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 314 | AD413X_SINGLE_CONV_MODE = 1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 315 | AD413X_STANDBY_MODE = 2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 316 | AD413X_PW_DOWN_MODE = 3, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 317 | AD413X_IDLE_MODE = 4, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 318 | AD413X_INT_OFFSET_CAL = 5, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 319 | AD413X_INT_GAIN_CAL = 6, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 320 | AD413X_SYS_OFFSET_CAL = 7, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 321 | AD413X_SYS_GAIN_CAL = 8, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 322 | AD413X_DUTY_CYCLING_MODE = 9, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 323 | AD413X_SINGLE_CONV_SYNC_IDLE_MODE = 10, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 324 | AD413X_DUTY_CYCLING_SYNC_STBY_MODE = 11 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 325 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 326 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 327 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 328 | * @struct ad413x_ref_buf |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 329 | * @brief ADC reference buffer selection. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 330 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 331 | struct ad413x_ref_buf { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 332 | bool ref_buf_p_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 333 | bool ref_buf_m_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 334 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 335 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 336 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 337 | * @enum ad413x_ref_sel |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 338 | * @brief ADC reference selection. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 339 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 340 | enum ad413x_ref_sel { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 341 | AD413X_REFIN1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 342 | AD413X_REFIN2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 343 | AD413X_REFOUT_AVSS, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 344 | AD413X_AVDD_AVSS |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 345 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 346 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 347 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 348 | * @enum ad413x_int_ref |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 349 | * @brief Internal reference selection. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 350 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 351 | enum ad413x_int_ref { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 352 | AD413X_INTREF_DISABLED, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 353 | AD413X_INTREF_2_5V, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 354 | AD413X_INTREF_1_25V |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 355 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 356 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 357 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 358 | * @enum ad413x_filter |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 359 | * @brief Filter types. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 360 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 361 | enum ad413x_filter { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 362 | AD413X_SYNC4_STANDALONE, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 363 | AD413X_SYNC4_SYNC1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 364 | AD413X_SYNC3_STANDALONE, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 365 | AD413X_SYNC3_REJ60, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 366 | AD413X_SYNC3_SYNC1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 367 | AD413X_SYNC3_PF1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 368 | AD413X_SYNC3_PF2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 369 | AD413X_SYNC3_PF3, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 370 | AD413X_SYNC3_PF4 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 371 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 372 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 373 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 374 | * @enum ad413x_gain |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 375 | * @brief Gain options. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 376 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 377 | enum ad413x_gain { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 378 | AD413X_GAIN_1, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 379 | AD413X_GAIN_2, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 380 | AD413X_GAIN_4, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 381 | AD413X_GAIN_8, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 382 | AD413X_GAIN_16, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 383 | AD413X_GAIN_32, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 384 | AD413X_GAIN_64, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 385 | AD413X_GAIN_128, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 386 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 387 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 388 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 389 | * @enum ad413x_chip_id |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 390 | * @brief Chip IDs. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 391 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 392 | enum ad413x_chip_id { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 393 | /* TBD */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 394 | AD4130_8 = 0x00 |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 395 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 396 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 397 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 398 | * @enum ad413x_settle_time |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 399 | * @brief Channel settle time. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 400 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 401 | enum ad413x_settle_time { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 402 | AD413X_32_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 403 | AD413X_64_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 404 | AD413X_128_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 405 | AD413X_256_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 406 | AD413X_512_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 407 | AD413X_1024_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 408 | AD413X_2048_MCLK, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 409 | AD413X_4096_MCLK |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 410 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 411 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 412 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 413 | * @enum ad413x_exc_current |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 414 | * @brief Excitation current value |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 415 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 416 | enum ad413x_exc_current { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 417 | AD413X_EXC_OFF, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 418 | AD413X_EXC_10UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 419 | AD413X_EXC_20UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 420 | AD413X_EXC_50UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 421 | AD413X_EXC_100UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 422 | AD413X_EXC_150UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 423 | AD413X_EXC_200UA, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 424 | AD413X_EXC_100NA |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 425 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 426 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 427 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 428 | * @struct ad413x_standby_ctrl |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 429 | * @brief Standby control flags |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 430 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 431 | struct ad413x_standby_ctrl { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 432 | bool standby_int_ref_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 433 | bool standby_ref_holder_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 434 | bool standby_iexc_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 435 | bool standby_vbias_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 436 | bool standby_burnout_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 437 | bool standby_pdsw_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 438 | bool standby_gpio_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 439 | bool standby_diagn_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 440 | bool standby_output_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 441 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 442 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 443 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 444 | * @struct ad413x_preset |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 445 | * @brief Preset setting. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 446 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 447 | struct ad413x_preset { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 448 | struct ad413x_ref_buf ref_buf; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 449 | enum ad413x_ref_sel ref_sel; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 450 | enum ad413x_gain gain; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 451 | enum ad413x_filter filter; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 452 | /* By default, settle time = 32MCLK */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 453 | enum ad413x_settle_time s_time; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 454 | enum ad413x_exc_current iout0_exc_current; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 455 | enum ad413x_exc_current iout1_exc_current; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 456 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 457 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 458 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 459 | * @struct ad413x_channel |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 460 | * @brief Channel setting. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 461 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 462 | struct ad413x_channel { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 463 | enum ad413x_preset_nb preset; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 464 | uint8_t enable; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 465 | enum ad413x_input ain_p; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 466 | enum ad413x_input ain_m; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 467 | enum ad413x_input iout0_exc_input; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 468 | enum ad413x_input iout1_exc_input; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 469 | bool pdsw_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 470 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 471 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 472 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 473 | * @struct ad413x_dev |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 474 | * @brief Device structure. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 475 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 476 | struct ad413x_dev { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 477 | /* SPI */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 478 | struct no_os_spi_desc *spi_dev; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 479 | /* GPIO - used to know when conversion is rdy */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 480 | struct no_os_irq_ctrl_desc *irq_desc; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 481 | uint32_t rdy_pin; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 482 | /* Device Settings */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 483 | struct ad413x_preset preset[8]; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 484 | struct ad413x_channel ch[16]; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 485 | enum ad413x_chip_id chip_id; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 486 | enum ad413x_mclk_sel mclk; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 487 | enum ad413x_adc_mode op_mode; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 488 | uint8_t bipolar; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 489 | enum ad413x_int_ref int_ref; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 490 | uint16_t v_bias; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 491 | struct ad413x_standby_ctrl standby_ctrl; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 492 | uint8_t data_stat; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 493 | uint8_t spi_crc_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 494 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 495 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 496 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 497 | * @struct ad413x_init_param |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 498 | * @brief Initial parameter structure. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 499 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 500 | struct ad413x_init_param { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 501 | /* SPI */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 502 | struct no_os_spi_init_param *spi_init; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 503 | /* GPIO - used to know when conversion is rdy */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 504 | struct no_os_irq_ctrl_desc *irq_desc; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 505 | uint32_t rdy_pin; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 506 | /* Device Settings */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 507 | struct ad413x_preset preset[8]; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 508 | struct ad413x_channel ch[16]; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 509 | enum ad413x_chip_id chip_id; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 510 | enum ad413x_mclk_sel mclk; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 511 | uint8_t bipolar; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 512 | enum ad413x_int_ref int_ref; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 513 | uint16_t v_bias; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 514 | struct ad413x_standby_ctrl standby_ctrl; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 515 | uint8_t data_stat; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 516 | uint8_t spi_crc_en; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 517 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 518 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 519 | /** |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 520 | * @struct ad413x_callback_ctx |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 521 | * @brief Callback structure. |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 522 | */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 523 | struct ad413x_callback_ctx { |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 524 | struct ad413x_dev *dev; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 525 | int32_t *buffer; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 526 | int32_t buffer_size; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 527 | }; |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 528 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 529 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 530 | /************************ Functions Declarations ******************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 531 | /******************************************************************************/ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 532 | /* SPI write to device using a mask. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 533 | int32_t ad413x_reg_write_msk(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 534 | uint32_t reg_addr, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 535 | uint32_t data, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 536 | uint32_t mask); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 537 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 538 | /* Set the mode of the ADC. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 539 | int32_t ad413x_set_adc_mode(struct ad413x_dev *dev, enum ad413x_adc_mode mode); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 540 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 541 | /* Set the internal reference. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 542 | int32_t ad413x_set_int_ref(struct ad413x_dev *dev, enum ad413x_int_ref int_ref); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 543 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 544 | /* Enable/disable DATA_STAT. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 545 | int32_t ad413x_data_stat_en(struct ad413x_dev *dev, uint8_t enable); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 546 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 547 | /* Set the gain. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 548 | int32_t ad413x_set_gain(struct ad413x_dev *dev, enum ad413x_gain gain, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 549 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 550 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 551 | /* Set the reference. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 552 | int32_t ad413x_set_ref(struct ad413x_dev *dev, enum ad413x_ref_sel ref, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 553 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 554 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 555 | /* Set the reference buffers */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 556 | int32_t ad413x_set_ref_buf(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 557 | struct ad413x_ref_buf ref_buf, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 558 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 559 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 560 | /* Set the filter */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 561 | int32_t ad413x_set_filter(struct ad413x_dev *dev, enum ad413x_filter filter, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 562 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 563 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 564 | /* Set settle time */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 565 | int32_t ad413x_set_settle_time(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 566 | enum ad413x_settle_time s_time, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 567 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 568 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 569 | /* Set excitation currents */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 570 | int32_t ad413x_set_exc_current(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 571 | enum ad413x_exc_current iout0_exc, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 572 | enum ad413x_exc_current iout1_exc, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 573 | enum ad413x_preset_nb reg_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 574 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 575 | /* Set excitation source pins */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 576 | int32_t ad413x_ch_exc_input(struct ad413x_dev *dev, uint8_t ch_nb, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 577 | enum ad413x_input iout0_exc_inp, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 578 | enum ad413x_input iout1_exc_inp); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 579 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 580 | /* Set channel preset */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 581 | int32_t ad413x_set_ch_preset(struct ad413x_dev *dev, uint8_t ch_nb, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 582 | enum ad413x_preset_nb preset_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 583 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 584 | /* Enable channel */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 585 | int32_t ad413x_ch_en(struct ad413x_dev *dev, uint8_t ch_nb, uint8_t enable); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 586 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 587 | /* Enable PDSW */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 588 | int32_t ad413x_pdsw_en(struct ad413x_dev *dev, uint8_t ch_nb, bool pdsw_en); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 589 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 590 | /* Set output VBIAS */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 591 | int32_t ad413x_set_v_bias(struct ad413x_dev *dev, uint16_t v_bias_val); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 592 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 593 | /* Set standby control flags */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 594 | int32_t ad413x_set_standby_ctrl(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 595 | struct ad413x_standby_ctrl standby_ctrl); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 596 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 597 | /* Set ADC master clock mode. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 598 | int32_t ad413x_set_mclk(struct ad413x_dev *dev, enum ad413x_mclk_sel clk); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 599 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 600 | /* Do a SPI software reset. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 601 | int32_t ad413x_do_soft_reset(struct ad413x_dev *dev); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 602 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 603 | /* SPI internal register write to device. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 604 | int32_t ad413x_reg_write(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 605 | uint32_t reg_addr, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 606 | uint32_t reg_data); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 607 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 608 | /* SPI internal register read from device. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 609 | int32_t ad413x_reg_read(struct ad413x_dev *dev, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 610 | uint32_t reg_addr, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 611 | uint32_t *reg_data); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 612 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 613 | /* Fills buffer with data read from each active channel */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 614 | int32_t ad413x_single_conv(struct ad413x_dev *dev, uint32_t *buffer, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 615 | uint8_t ch_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 616 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 617 | /* Fills buffer with data from continuous conv mode from each active channel */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 618 | int32_t ad413x_continuous_conv(struct ad413x_dev *dev, uint32_t *buffer, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 619 | uint8_t ch_nb, uint32_t sample_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 620 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 621 | /* Set adc bipolar/unipolar coding. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 622 | int32_t ad413x_adc_bipolar(struct ad413x_dev *dev, uint8_t enable); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 623 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 624 | /* Store presets for adc channels */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 625 | int32_t ad413x_preset_store(struct ad413x_dev *dev, struct ad413x_preset preset, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 626 | enum ad413x_preset_nb preset_nb); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 627 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 628 | /* Initialize the device. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 629 | int32_t ad413x_init(struct ad413x_dev **device, |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 630 | struct ad413x_init_param init_param); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 631 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 632 | /* Remove the device. */ |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 633 | int32_t ad413x_remove(struct ad413x_dev *dev); |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 634 | |
MPhalke@MPHALKE-L02.ad.analog.com | 2:871d585d96ee | 635 | #endif // AD413X_H_ |