ADISense1000 Version 2.1 code base

Fork of AdiSense1000_V21 by Sean Wilson

Committer:
kevin1990
Date:
Fri Oct 20 15:58:01 2017 +0000
Revision:
7:4dbae381f693
v0.3 release (New Host api)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevin1990 7:4dbae381f693 1 /*!
kevin1990 7:4dbae381f693 2 ******************************************************************************
kevin1990 7:4dbae381f693 3 * @file: adi_sense_config_types.h
kevin1990 7:4dbae381f693 4 * @brief: Type definitions for ADI Sense API.
kevin1990 7:4dbae381f693 5 *-----------------------------------------------------------------------------
kevin1990 7:4dbae381f693 6 */
kevin1990 7:4dbae381f693 7
kevin1990 7:4dbae381f693 8 /*
kevin1990 7:4dbae381f693 9 Copyright (c) 2017 Analog Devices, Inc.
kevin1990 7:4dbae381f693 10
kevin1990 7:4dbae381f693 11 All rights reserved.
kevin1990 7:4dbae381f693 12
kevin1990 7:4dbae381f693 13 Redistribution and use in source and binary forms, with or without modification,
kevin1990 7:4dbae381f693 14 are permitted provided that the following conditions are met:
kevin1990 7:4dbae381f693 15 - Redistributions of source code must retain the above copyright notice,
kevin1990 7:4dbae381f693 16 this list of conditions and the following disclaimer.
kevin1990 7:4dbae381f693 17 - Redistributions in binary form must reproduce the above copyright notice,
kevin1990 7:4dbae381f693 18 this list of conditions and the following disclaimer in the documentation
kevin1990 7:4dbae381f693 19 and/or other materials provided with the distribution.
kevin1990 7:4dbae381f693 20 - Modified versions of the software must be conspicuously marked as such.
kevin1990 7:4dbae381f693 21 - This software is licensed solely and exclusively for use with processors
kevin1990 7:4dbae381f693 22 manufactured by or for Analog Devices, Inc.
kevin1990 7:4dbae381f693 23 - This software may not be combined or merged with other code in any manner
kevin1990 7:4dbae381f693 24 that would cause the software to become subject to terms and conditions
kevin1990 7:4dbae381f693 25 which differ from those listed here.
kevin1990 7:4dbae381f693 26 - Neither the name of Analog Devices, Inc. nor the names of its
kevin1990 7:4dbae381f693 27 contributors may be used to endorse or promote products derived
kevin1990 7:4dbae381f693 28 from this software without specific prior written permission.
kevin1990 7:4dbae381f693 29 - The use of this software may or may not infringe the patent rights of one
kevin1990 7:4dbae381f693 30 or more patent holders. This license does not release you from the
kevin1990 7:4dbae381f693 31 requirement that you obtain separate licenses from these patent holders
kevin1990 7:4dbae381f693 32 to use this software.
kevin1990 7:4dbae381f693 33
kevin1990 7:4dbae381f693 34 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" AND ANY
kevin1990 7:4dbae381f693 35 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
kevin1990 7:4dbae381f693 36 TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
kevin1990 7:4dbae381f693 37 NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
kevin1990 7:4dbae381f693 38 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES
kevin1990 7:4dbae381f693 39 (INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF CLAIMS OF INTELLECTUAL
kevin1990 7:4dbae381f693 40 PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
kevin1990 7:4dbae381f693 41 OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
kevin1990 7:4dbae381f693 42 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
kevin1990 7:4dbae381f693 43 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
kevin1990 7:4dbae381f693 44 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
kevin1990 7:4dbae381f693 45 */
kevin1990 7:4dbae381f693 46
kevin1990 7:4dbae381f693 47 #ifndef __ADI_SENSE_CONFIG_TYPES_H__
kevin1990 7:4dbae381f693 48 #define __ADI_SENSE_CONFIG_TYPES_H__
kevin1990 7:4dbae381f693 49
kevin1990 7:4dbae381f693 50 #include "adi_sense_platform.h"
kevin1990 7:4dbae381f693 51
kevin1990 7:4dbae381f693 52 /*! @addtogroup ADI_Sense_Api ADI Sense Host Library API
kevin1990 7:4dbae381f693 53 * @{
kevin1990 7:4dbae381f693 54 */
kevin1990 7:4dbae381f693 55
kevin1990 7:4dbae381f693 56 #ifdef __cplusplus
kevin1990 7:4dbae381f693 57 extern "C" {
kevin1990 7:4dbae381f693 58 #endif
kevin1990 7:4dbae381f693 59
kevin1990 7:4dbae381f693 60 /*! The maximum number of device instances included in this configuration */
kevin1990 7:4dbae381f693 61 #define ADI_SENSE_MAX_DEVICES 1
kevin1990 7:4dbae381f693 62
kevin1990 7:4dbae381f693 63 /*! A list of supported product identifiers */
kevin1990 7:4dbae381f693 64 typedef enum {
kevin1990 7:4dbae381f693 65 ADI_SENSE_PRODUCT_ID_1000 = 0x0020,
kevin1990 7:4dbae381f693 66 /*!< ADI Sense 1000 */
kevin1990 7:4dbae381f693 67 } ADI_SENSE_PRODUCT_ID;
kevin1990 7:4dbae381f693 68
kevin1990 7:4dbae381f693 69 /*! A list of support product identifiers */
kevin1990 7:4dbae381f693 70 typedef enum {
kevin1990 7:4dbae381f693 71 ADI_SENSE_CONFIG_VERSION_001 = 1,
kevin1990 7:4dbae381f693 72 /*!< ADI Sense configuration version #1 */
kevin1990 7:4dbae381f693 73 } ADI_SENSE_CONFIG_VERSION_ID;
kevin1990 7:4dbae381f693 74
kevin1990 7:4dbae381f693 75 /*! Unique configuration identifier (optional) */
kevin1990 7:4dbae381f693 76 typedef uint32_t ADI_SENSE_CONFIG_ID;
kevin1990 7:4dbae381f693 77
kevin1990 7:4dbae381f693 78 /*! ADI Sense measurement channel identifiers */
kevin1990 7:4dbae381f693 79 typedef enum {
kevin1990 7:4dbae381f693 80 ADI_SENSE_CHANNEL_ID_NONE = -1,
kevin1990 7:4dbae381f693 81 /*!< Used to indicate when no channel is selected (e.g. compensation channel) */
kevin1990 7:4dbae381f693 82
kevin1990 7:4dbae381f693 83 ADI_SENSE_CHANNEL_ID_CJC_0 = 0,
kevin1990 7:4dbae381f693 84 /*!< Cold-Juction Compensation channel #0 */
kevin1990 7:4dbae381f693 85 ADI_SENSE_CHANNEL_ID_CJC_1,
kevin1990 7:4dbae381f693 86 /*!< Cold-Juction Compensation channel #1 */
kevin1990 7:4dbae381f693 87 ADI_SENSE_CHANNEL_ID_SENSOR_0,
kevin1990 7:4dbae381f693 88 /*!< Analog Sensor channel #0 */
kevin1990 7:4dbae381f693 89 ADI_SENSE_CHANNEL_ID_SENSOR_1,
kevin1990 7:4dbae381f693 90 /*!< Analog Sensor channel #1 */
kevin1990 7:4dbae381f693 91 ADI_SENSE_CHANNEL_ID_SENSOR_2,
kevin1990 7:4dbae381f693 92 /*!< Analog Sensor channel #2 */
kevin1990 7:4dbae381f693 93 ADI_SENSE_CHANNEL_ID_SENSOR_3,
kevin1990 7:4dbae381f693 94 /*!< Analog Sensor channel #3 */
kevin1990 7:4dbae381f693 95 ADI_SENSE_CHANNEL_ID_VOLTAGE_0,
kevin1990 7:4dbae381f693 96 /*!< Analog 0-10V Voltage Sensor channel #0 */
kevin1990 7:4dbae381f693 97 ADI_SENSE_CHANNEL_ID_CURRENT_0,
kevin1990 7:4dbae381f693 98 /*!< Analog 4-20mA Current Sensor channel #0 */
kevin1990 7:4dbae381f693 99 ADI_SENSE_CHANNEL_ID_I2C_0,
kevin1990 7:4dbae381f693 100 /*!< Digital I2C Sensor channel #0 */
kevin1990 7:4dbae381f693 101 ADI_SENSE_CHANNEL_ID_I2C_1,
kevin1990 7:4dbae381f693 102 /*!< Digital I2C Sensor channel #1 */
kevin1990 7:4dbae381f693 103 ADI_SENSE_CHANNEL_ID_SPI_0,
kevin1990 7:4dbae381f693 104 /*!< Digital SPI Sensor channel #0 */
kevin1990 7:4dbae381f693 105 ADI_SENSE_CHANNEL_ID_SPI_1,
kevin1990 7:4dbae381f693 106 /*!< Digital SPI Sensor channel #1 */
kevin1990 7:4dbae381f693 107 ADI_SENSE_CHANNEL_ID_SPI_2,
kevin1990 7:4dbae381f693 108 /*!< Digital SPI Sensor channel #2 */
kevin1990 7:4dbae381f693 109
kevin1990 7:4dbae381f693 110 ADI_SENSE_MAX_CHANNELS,
kevin1990 7:4dbae381f693 111 /*!< Maximum number of measurement channels on the ADI Sense */
kevin1990 7:4dbae381f693 112 } ADI_SENSE_CHANNEL_ID;
kevin1990 7:4dbae381f693 113
kevin1990 7:4dbae381f693 114 /*! ADI Sense operating mode options */
kevin1990 7:4dbae381f693 115 typedef enum {
kevin1990 7:4dbae381f693 116 ADI_SENSE_OPERATING_MODE_SINGLECYCLE = 1,
kevin1990 7:4dbae381f693 117 /*!< Executes a single measurement cycle and stops */
kevin1990 7:4dbae381f693 118 ADI_SENSE_OPERATING_MODE_CONTINUOUS,
kevin1990 7:4dbae381f693 119 /*!< Continuously executes measurement cycles */
kevin1990 7:4dbae381f693 120 ADI_SENSE_OPERATING_MODE_MULTICYCLE,
kevin1990 7:4dbae381f693 121 /*!< Executes a burst of measurement cycles, repeated at defined intervals */
kevin1990 7:4dbae381f693 122 } ADI_SENSE_OPERATING_MODE;
kevin1990 7:4dbae381f693 123
kevin1990 7:4dbae381f693 124 /*! ADI Sense data publishing mode options */
kevin1990 7:4dbae381f693 125 typedef enum {
kevin1990 7:4dbae381f693 126 ADI_SENSE_DATA_PUBLISH_PER_CONVERSION = 1,
kevin1990 7:4dbae381f693 127 /*!< The DATAREADY signal is asserted after completion of each conversion
kevin1990 7:4dbae381f693 128 - a single data sample only from the latest completed conversion is stored in this mode */
kevin1990 7:4dbae381f693 129 ADI_SENSE_DATA_PUBLISH_PER_CYCLE,
kevin1990 7:4dbae381f693 130 /*!< The DATAREADY signal is asserted after completion of each measurement cycle
kevin1990 7:4dbae381f693 131 - data samples only from the lastest completed measurement cycle are stored in this mode */
kevin1990 7:4dbae381f693 132 ADI_SENSE_DATA_PUBLISH_PER_MULTICYCLE_BURST,
kevin1990 7:4dbae381f693 133 /*!< The DATAREADY signal is asserted after completion of each burst of measurement cycles
kevin1990 7:4dbae381f693 134 - applicable only when @ref ADI_SENSE_OPERATING_MODE_MULTICYCLE is also selected
kevin1990 7:4dbae381f693 135 - data samples only from the lastest completed burst of measurement cycles are stored in this mode */
kevin1990 7:4dbae381f693 136 } ADI_SENSE_DATA_PUBLISH_MODE;
kevin1990 7:4dbae381f693 137
kevin1990 7:4dbae381f693 138 /*! ADI Sense data power mode options */
kevin1990 7:4dbae381f693 139 typedef enum {
kevin1990 7:4dbae381f693 140 ADI_SENSE_POWER_MODE_LOW = 1,
kevin1990 7:4dbae381f693 141 /*!< Lowest ADC power consumption mode, with lowest conversion rate */
kevin1990 7:4dbae381f693 142 ADI_SENSE_POWER_MODE_MID,
kevin1990 7:4dbae381f693 143 /*!< Medium ADC power consumption mode, with medium conversion rate */
kevin1990 7:4dbae381f693 144 ADI_SENSE_POWER_MODE_FULL,
kevin1990 7:4dbae381f693 145 /*!< Highest ADC power consumption mode, with highest conversion rate */
kevin1990 7:4dbae381f693 146 } ADI_SENSE_POWER_MODE;
kevin1990 7:4dbae381f693 147
kevin1990 7:4dbae381f693 148 /*! ADI Sense unit translation options
kevin1990 7:4dbae381f693 149 *
kevin1990 7:4dbae381f693 150 * Optionally select a translation to be performed on the final measurement
kevin1990 7:4dbae381f693 151 * before publishing
kevin1990 7:4dbae381f693 152 */
kevin1990 7:4dbae381f693 153 typedef enum {
kevin1990 7:4dbae381f693 154 ADI_SENSE_UNIT_TRANSLATION_NONE = 0,
kevin1990 7:4dbae381f693 155 /*!< No translation required */
kevin1990 7:4dbae381f693 156 ADI_SENSE_UNIT_TRANSLATION_CELSIUS_TO_FAHRENHEIT,
kevin1990 7:4dbae381f693 157 /*!< Convert temperature from Celsius to Fahrenheit */
kevin1990 7:4dbae381f693 158 ADI_SENSE_UNIT_TRANSLATION_BAR_TO_PSI,
kevin1990 7:4dbae381f693 159 /*!< Convert pressure from Bar to PSI */
kevin1990 7:4dbae381f693 160 } ADI_SENSE_UNIT_TRANSLATION;
kevin1990 7:4dbae381f693 161
kevin1990 7:4dbae381f693 162 /*! ADI Sense Open-Circuit Detection frequency
kevin1990 7:4dbae381f693 163 *
kevin1990 7:4dbae381f693 164 * Select the per-cycle frequency at which Open-Circuit Detection diagnostic
kevin1990 7:4dbae381f693 165 * checks should be performed
kevin1990 7:4dbae381f693 166 *
kevin1990 7:4dbae381f693 167 * @note OCD checks, when performed, will add a delay to the start of
kevin1990 7:4dbae381f693 168 * the next measurement cycle.
kevin1990 7:4dbae381f693 169 */
kevin1990 7:4dbae381f693 170 typedef enum {
kevin1990 7:4dbae381f693 171 ADI_SENSE_OCD_DISABLED = 0,
kevin1990 7:4dbae381f693 172 /*!< No Open-Circuit Detection is performed */
kevin1990 7:4dbae381f693 173 ADI_SENSE_OCD_PER_CYCLE,
kevin1990 7:4dbae381f693 174 /*!< No Open-Circuit Detection is performed prior to each cycle */
kevin1990 7:4dbae381f693 175 ADI_SENSE_OCD_PER_100_CYCLES,
kevin1990 7:4dbae381f693 176 /*!< No Open-Circuit Detection is performed at intervals of 100 cycles */
kevin1990 7:4dbae381f693 177 ADI_SENSE_OCD_PER_1000_CYCLES,
kevin1990 7:4dbae381f693 178 /*!< No Open-Circuit Detection is performed at intervals of 1000 cycles */
kevin1990 7:4dbae381f693 179 } ADI_SENSE_OCD_FREQUENCY;
kevin1990 7:4dbae381f693 180
kevin1990 7:4dbae381f693 181 /*! ADI Sense analog sensor type options
kevin1990 7:4dbae381f693 182 *
kevin1990 7:4dbae381f693 183 * Select the sensor type that is connected to an ADC analog measurement
kevin1990 7:4dbae381f693 184 * channel.
kevin1990 7:4dbae381f693 185 *
kevin1990 7:4dbae381f693 186 * @note Some channels may only support a subset of the available sensor types
kevin1990 7:4dbae381f693 187 * below.
kevin1990 7:4dbae381f693 188 *
kevin1990 7:4dbae381f693 189 * @note "Custom" sensor types (with a _CUSTOMn suffix) are user-defined and
kevin1990 7:4dbae381f693 190 * require additional configuration parameters and linearisation data to
kevin1990 7:4dbae381f693 191 * be supplied. All other sensor types use pre-defined configuration
kevin1990 7:4dbae381f693 192 * information and linearisation data/equations.
kevin1990 7:4dbae381f693 193 */
kevin1990 7:4dbae381f693 194 typedef enum {
kevin1990 7:4dbae381f693 195 ADI_SENSE_ADC_SENSOR_THERMOCOUPLE_J = 1,
kevin1990 7:4dbae381f693 196 /*!< Standard J-type Thermocouple temperature sensor
kevin1990 7:4dbae381f693 197 *
kevin1990 7:4dbae381f693 198 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 199 */
kevin1990 7:4dbae381f693 200 ADI_SENSE_ADC_SENSOR_THERMOCOUPLE_K,
kevin1990 7:4dbae381f693 201 /*!< Standard K-type Thermocouple temperature sensor
kevin1990 7:4dbae381f693 202 *
kevin1990 7:4dbae381f693 203 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 204 */
kevin1990 7:4dbae381f693 205 ADI_SENSE_ADC_SENSOR_THERMOCOUPLE_T,
kevin1990 7:4dbae381f693 206 /*!< Standard T-type Thermocouple temperature sensor
kevin1990 7:4dbae381f693 207 *
kevin1990 7:4dbae381f693 208 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 209 */
kevin1990 7:4dbae381f693 210 ADI_SENSE_ADC_SENSOR_THERMOCOUPLE_CUSTOM,
kevin1990 7:4dbae381f693 211 /*!< Custom user-defined Thermocouple temperature sensor
kevin1990 7:4dbae381f693 212 *
kevin1990 7:4dbae381f693 213 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 214 */
kevin1990 7:4dbae381f693 215 ADI_SENSE_ADC_SENSOR_RTD_2WIRE_PT100,
kevin1990 7:4dbae381f693 216 /*!< Standard 2-wire PT100 RTD temperature sensor
kevin1990 7:4dbae381f693 217 *
kevin1990 7:4dbae381f693 218 * @note For use with Cold-Juction Compensation and Analog Sensor channels
kevin1990 7:4dbae381f693 219 * only
kevin1990 7:4dbae381f693 220 */
kevin1990 7:4dbae381f693 221 ADI_SENSE_ADC_SENSOR_RTD_2WIRE_PT1000,
kevin1990 7:4dbae381f693 222 /*!< Standard 2-wire PT1000 RTD temperature sensor
kevin1990 7:4dbae381f693 223 *
kevin1990 7:4dbae381f693 224 * @note For use with Cold-Juction Compensation and Analog Sensor channels
kevin1990 7:4dbae381f693 225 * only
kevin1990 7:4dbae381f693 226 */
kevin1990 7:4dbae381f693 227 ADI_SENSE_ADC_SENSOR_RTD_2WIRE_CUSTOM,
kevin1990 7:4dbae381f693 228 /*!< Custom user-defined 2-wire RTD temperature sensor
kevin1990 7:4dbae381f693 229 *
kevin1990 7:4dbae381f693 230 * @note For use with Cold-Juction Compensation and Analog Sensor channels
kevin1990 7:4dbae381f693 231 * only
kevin1990 7:4dbae381f693 232 */
kevin1990 7:4dbae381f693 233 ADI_SENSE_ADC_SENSOR_RTD_3WIRE_PT100,
kevin1990 7:4dbae381f693 234 /*!< Standard 3-wire PT100 RTD temperature sensor
kevin1990 7:4dbae381f693 235 *
kevin1990 7:4dbae381f693 236 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 237 */
kevin1990 7:4dbae381f693 238 ADI_SENSE_ADC_SENSOR_RTD_3WIRE_PT1000,
kevin1990 7:4dbae381f693 239 /*!< Standard 3-wire PT1000 RTD temperature sensor
kevin1990 7:4dbae381f693 240 *
kevin1990 7:4dbae381f693 241 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 242 */
kevin1990 7:4dbae381f693 243 ADI_SENSE_ADC_SENSOR_RTD_3WIRE_CUSTOM,
kevin1990 7:4dbae381f693 244 /*!< Custom user-defined 3-wire RTD temperature sensor
kevin1990 7:4dbae381f693 245 *
kevin1990 7:4dbae381f693 246 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 247 */
kevin1990 7:4dbae381f693 248 ADI_SENSE_ADC_SENSOR_RTD_4WIRE_PT100,
kevin1990 7:4dbae381f693 249 /*!< Standard 4-wire PT100 RTD temperature sensor
kevin1990 7:4dbae381f693 250 *
kevin1990 7:4dbae381f693 251 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 252 */
kevin1990 7:4dbae381f693 253 ADI_SENSE_ADC_SENSOR_RTD_4WIRE_PT1000,
kevin1990 7:4dbae381f693 254 /*!< Standard 4-wire PT1000 RTD temperature sensor
kevin1990 7:4dbae381f693 255 *
kevin1990 7:4dbae381f693 256 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 257 */
kevin1990 7:4dbae381f693 258 ADI_SENSE_ADC_SENSOR_RTD_4WIRE_CUSTOM,
kevin1990 7:4dbae381f693 259 /*!< Custom user-defined 4-wire RTD temperature sensor
kevin1990 7:4dbae381f693 260 *
kevin1990 7:4dbae381f693 261 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 262 */
kevin1990 7:4dbae381f693 263 ADI_SENSE_ADC_SENSOR_BRIDGE_4WIRE_TRANSDUCER,
kevin1990 7:4dbae381f693 264 /*!< Standard 4-wire Bridge Transducer sensor
kevin1990 7:4dbae381f693 265 *
kevin1990 7:4dbae381f693 266 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 267 */
kevin1990 7:4dbae381f693 268 ADI_SENSE_ADC_SENSOR_BRIDGE_4WIRE_CUSTOM,
kevin1990 7:4dbae381f693 269 /*!< Custom user-defined 4-wire Bridge Transducer sensor
kevin1990 7:4dbae381f693 270 *
kevin1990 7:4dbae381f693 271 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 272 */
kevin1990 7:4dbae381f693 273 ADI_SENSE_ADC_SENSOR_BRIDGE_6WIRE_TRANSDUCER,
kevin1990 7:4dbae381f693 274 /*!< Standard 6-wire Bridge Transducer sensor
kevin1990 7:4dbae381f693 275 *
kevin1990 7:4dbae381f693 276 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 277 */
kevin1990 7:4dbae381f693 278 ADI_SENSE_ADC_SENSOR_BRIDGE_6WIRE_CUSTOM,
kevin1990 7:4dbae381f693 279 /*!< Custom user-defined 6-wire Bridge Transducer sensor
kevin1990 7:4dbae381f693 280 *
kevin1990 7:4dbae381f693 281 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 282 */
kevin1990 7:4dbae381f693 283 ADI_SENSE_ADC_SENSOR_THERMISTOR_10K_NTC,
kevin1990 7:4dbae381f693 284 /*!< Standard 10kOhm NTC Thermistor temperature sensor
kevin1990 7:4dbae381f693 285 *
kevin1990 7:4dbae381f693 286 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 287 */
kevin1990 7:4dbae381f693 288 ADI_SENSE_ADC_SENSOR_THERMISTOR_CUSTOM,
kevin1990 7:4dbae381f693 289 /*!< Custom user-defined Thermistor temperator sensor
kevin1990 7:4dbae381f693 290 *
kevin1990 7:4dbae381f693 291 * @note For use with Analog Sensor channels only
kevin1990 7:4dbae381f693 292 */
kevin1990 7:4dbae381f693 293 ADI_SENSE_ADC_SENSOR_VOLTAGE_PRESSURE_1,
kevin1990 7:4dbae381f693 294 /*!< Honeywell Pressure voltage sensor (HSCMRNN1.6BAAA3)
kevin1990 7:4dbae381f693 295 *
kevin1990 7:4dbae381f693 296 * @note For use with Analog 0-10V Voltage Sensor channels only
kevin1990 7:4dbae381f693 297 */
kevin1990 7:4dbae381f693 298 ADI_SENSE_ADC_SENSOR_VOLTAGE_PRESSURE_2,
kevin1990 7:4dbae381f693 299 /*!< Amphenol Pressure voltage sensor (NPA-300B-015A)
kevin1990 7:4dbae381f693 300 *
kevin1990 7:4dbae381f693 301 * @note For use with Analog 0-10V Voltage Sensor channels only
kevin1990 7:4dbae381f693 302 */
kevin1990 7:4dbae381f693 303 ADI_SENSE_ADC_SENSOR_VOLTAGE_PRESSURE_CUSTOM,
kevin1990 7:4dbae381f693 304 /*!< Custom user-defined 0-10V voltage sensor
kevin1990 7:4dbae381f693 305 *
kevin1990 7:4dbae381f693 306 * @note For use with Analog 0-10V Voltage Sensor channels only
kevin1990 7:4dbae381f693 307 */
kevin1990 7:4dbae381f693 308 ADI_SENSE_ADC_SENSOR_CURRENT_PRESSURE_1,
kevin1990 7:4dbae381f693 309 /*!< Honeywell Pressure current sensor (PX2CN2XX100PACH)
kevin1990 7:4dbae381f693 310 *
kevin1990 7:4dbae381f693 311 * @note For use with Analog 4-20mA Current Sensor channels only
kevin1990 7:4dbae381f693 312 */
kevin1990 7:4dbae381f693 313 ADI_SENSE_ADC_SENSOR_CURRENT_PRESSURE_CUSTOM,
kevin1990 7:4dbae381f693 314 /*!< Custom user-defined 4-20mA current sensor
kevin1990 7:4dbae381f693 315 *
kevin1990 7:4dbae381f693 316 * @note For use with Analog 4-20mA Current Sensor channels only
kevin1990 7:4dbae381f693 317 */
kevin1990 7:4dbae381f693 318 } ADI_SENSE_ADC_SENSOR_TYPE;
kevin1990 7:4dbae381f693 319
kevin1990 7:4dbae381f693 320 /*! ADI Sense analog input signal amplification gain options
kevin1990 7:4dbae381f693 321 *
kevin1990 7:4dbae381f693 322 * @note applicable only to ADC analog sensor channels
kevin1990 7:4dbae381f693 323 */
kevin1990 7:4dbae381f693 324 typedef enum {
kevin1990 7:4dbae381f693 325 ADI_SENSE_ADC_GAIN_1X = 0,
kevin1990 7:4dbae381f693 326 /*!< no amplification gain */
kevin1990 7:4dbae381f693 327 ADI_SENSE_ADC_GAIN_2X,
kevin1990 7:4dbae381f693 328 /*!< x2 amplification gain */
kevin1990 7:4dbae381f693 329 ADI_SENSE_ADC_GAIN_4X,
kevin1990 7:4dbae381f693 330 /*!< x4 amplification gain */
kevin1990 7:4dbae381f693 331 ADI_SENSE_ADC_GAIN_8X,
kevin1990 7:4dbae381f693 332 /*!< x8 amplification gain */
kevin1990 7:4dbae381f693 333 ADI_SENSE_ADC_GAIN_16X,
kevin1990 7:4dbae381f693 334 /*!< x16 amplification gain */
kevin1990 7:4dbae381f693 335 ADI_SENSE_ADC_GAIN_32X,
kevin1990 7:4dbae381f693 336 /*!< x32 amplification gain */
kevin1990 7:4dbae381f693 337 ADI_SENSE_ADC_GAIN_64X,
kevin1990 7:4dbae381f693 338 /*!< x64 amplification gain */
kevin1990 7:4dbae381f693 339 ADI_SENSE_ADC_GAIN_128X,
kevin1990 7:4dbae381f693 340 /*!< x128 amplification gain */
kevin1990 7:4dbae381f693 341 } ADI_SENSE_ADC_GAIN;
kevin1990 7:4dbae381f693 342
kevin1990 7:4dbae381f693 343 /*! ADI Sense analog sensor excitation current output level options
kevin1990 7:4dbae381f693 344 *
kevin1990 7:4dbae381f693 345 * @note applicable only to ADC analog sensor channels, and
kevin1990 7:4dbae381f693 346 * specific sensor types
kevin1990 7:4dbae381f693 347 */
kevin1990 7:4dbae381f693 348 typedef enum {
kevin1990 7:4dbae381f693 349 ADI_SENSE_ADC_CURRENT_LEVEL_NONE = 0,
kevin1990 7:4dbae381f693 350 /*!< Excitation current disabled */
kevin1990 7:4dbae381f693 351 ADI_SENSE_ADC_CURRENT_LEVEL_50uA,
kevin1990 7:4dbae381f693 352 /*!< 50uA excitation current enabled */
kevin1990 7:4dbae381f693 353 ADI_SENSE_ADC_CURRENT_LEVEL_100uA,
kevin1990 7:4dbae381f693 354 /*!< 100uA excitation current enabled */
kevin1990 7:4dbae381f693 355 ADI_SENSE_ADC_CURRENT_LEVEL_250uA,
kevin1990 7:4dbae381f693 356 /*!< 250uA excitation current enabled */
kevin1990 7:4dbae381f693 357 ADI_SENSE_ADC_CURRENT_LEVEL_500uA,
kevin1990 7:4dbae381f693 358 /*!< 500uA excitation current enabled */
kevin1990 7:4dbae381f693 359 ADI_SENSE_ADC_CURRENT_LEVEL_750uA,
kevin1990 7:4dbae381f693 360 /*!< 750uA excitation current enabled */
kevin1990 7:4dbae381f693 361 ADI_SENSE_ADC_CURRENT_LEVEL_1000uA,
kevin1990 7:4dbae381f693 362 /*!< 1mA excitation current enabled */
kevin1990 7:4dbae381f693 363 } ADI_SENSE_ADC_CURRENT_LEVEL;
kevin1990 7:4dbae381f693 364
kevin1990 7:4dbae381f693 365 /*! ADI Sense analog sensor excitation current pin options
kevin1990 7:4dbae381f693 366 *
kevin1990 7:4dbae381f693 367 * @note applicable only to ADC analog sensor channels, and
kevin1990 7:4dbae381f693 368 * specific sensor types
kevin1990 7:4dbae381f693 369 */
kevin1990 7:4dbae381f693 370 typedef enum {
kevin1990 7:4dbae381f693 371 ADI_SENSE_ADC_CURRENT_SOURCE_DEFAULT = 0,
kevin1990 7:4dbae381f693 372 /*!< Excitation current output on default pin(s) (e.g. IOUT0) */
kevin1990 7:4dbae381f693 373 ADI_SENSE_ADC_CURRENT_SOURCE_SWAP_STATIC,
kevin1990 7:4dbae381f693 374 /*!< Excitation current output pin assignments are swapped from defaults.
kevin1990 7:4dbae381f693 375 * @note this option is typically used only with 3-wire RTD sensors
kevin1990 7:4dbae381f693 376 */
kevin1990 7:4dbae381f693 377 ADI_SENSE_ADC_CURRENT_SOURCE_SWAP_DYNAMIC,
kevin1990 7:4dbae381f693 378 /*!< Excitation current output on default output pins initially, then swapped
kevin1990 7:4dbae381f693 379 * for a second measurement
kevin1990 7:4dbae381f693 380 * @note this option is typically used only with 3-wire RTD sensors
kevin1990 7:4dbae381f693 381 */
kevin1990 7:4dbae381f693 382 } ADI_SENSE_ADC_CURRENT_SOURCE;
kevin1990 7:4dbae381f693 383
kevin1990 7:4dbae381f693 384 /*! ADI Sense analog reference selection options
kevin1990 7:4dbae381f693 385 *
kevin1990 7:4dbae381f693 386 * @note applicable only to ADC analog sensor channels, and
kevin1990 7:4dbae381f693 387 * specific sensor types
kevin1990 7:4dbae381f693 388 */
kevin1990 7:4dbae381f693 389 typedef enum {
kevin1990 7:4dbae381f693 390 ADI_SENSE_ADC_REFERENCE_NONE = 0,
kevin1990 7:4dbae381f693 391 /*!< No reference is selected */
kevin1990 7:4dbae381f693 392
kevin1990 7:4dbae381f693 393 ADI_SENSE_ADC_REFERENCE_RESISTOR_INTERNAL_1,
kevin1990 7:4dbae381f693 394 /*!< Internal reference resistor #1 (4320 ohms) is selected */
kevin1990 7:4dbae381f693 395 ADI_SENSE_ADC_REFERENCE_RESISTOR_INTERNAL_2,
kevin1990 7:4dbae381f693 396 /*!< Internal reference resistor #2 (10000 ohms) is selected */
kevin1990 7:4dbae381f693 397 ADI_SENSE_ADC_REFERENCE_VOLTAGE_INTERNAL,
kevin1990 7:4dbae381f693 398 /*!< Internal ADC voltage reference (2.5V) is selected */
kevin1990 7:4dbae381f693 399 ADI_SENSE_ADC_REFERENCE_VOLTAGE_AVDD,
kevin1990 7:4dbae381f693 400 /*!< Analag Supply Voltage AVDD reference (typically 3.3V) is selected */
kevin1990 7:4dbae381f693 401
kevin1990 7:4dbae381f693 402 ADI_SENSE_ADC_REFERENCE_RESISTOR_EXTERNAL_1,
kevin1990 7:4dbae381f693 403 /*!< External user-supplied reference resistor #1 is selected
kevin1990 7:4dbae381f693 404 *
kevin1990 7:4dbae381f693 405 * @note reference resistor value @ref externalRef1Value must be specified
kevin1990 7:4dbae381f693 406 * (see @ref ADI_SENSE_MEASUREMENT_CONFIG) */
kevin1990 7:4dbae381f693 407 ADI_SENSE_ADC_REFERENCE_RESISTOR_EXTERNAL_2,
kevin1990 7:4dbae381f693 408 /*!< External user-supplied reference resistor #2 is selected
kevin1990 7:4dbae381f693 409 *
kevin1990 7:4dbae381f693 410 * @note reference resistor value @ref externalRef2Value must be specified
kevin1990 7:4dbae381f693 411 * (see @ref ADI_SENSE_MEASUREMENT_CONFIG) */
kevin1990 7:4dbae381f693 412 ADI_SENSE_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
kevin1990 7:4dbae381f693 413 /*!< External user-supplied reference voltage #1 is selected
kevin1990 7:4dbae381f693 414 *
kevin1990 7:4dbae381f693 415 * @note reference voltage value @ref externalRef1Value must be specified
kevin1990 7:4dbae381f693 416 * (see @ref ADI_SENSE_MEASUREMENT_CONFIG) */
kevin1990 7:4dbae381f693 417 ADI_SENSE_ADC_REFERENCE_VOLTAGE_EXTERNAL_2,
kevin1990 7:4dbae381f693 418 /*!< External user-supplied reference voltage #2 is selected
kevin1990 7:4dbae381f693 419 *
kevin1990 7:4dbae381f693 420 * @note reference voltage value @ref externalRef2Value must be specified
kevin1990 7:4dbae381f693 421 * (see @ref ADI_SENSE_MEASUREMENT_CONFIG) */
kevin1990 7:4dbae381f693 422 } ADI_SENSE_ADC_REFERENCE_TYPE;
kevin1990 7:4dbae381f693 423
kevin1990 7:4dbae381f693 424 /*! ADI Sense analog filter selection options
kevin1990 7:4dbae381f693 425 *
kevin1990 7:4dbae381f693 426 * @note applicable only to ADC analog sensor channels
kevin1990 7:4dbae381f693 427 */
kevin1990 7:4dbae381f693 428 typedef enum {
kevin1990 7:4dbae381f693 429 ADI_SENSE_ADC_FILTER_SINC4 = 1,
kevin1990 7:4dbae381f693 430 /*!< SINC4 filter
kevin1990 7:4dbae381f693 431 *
kevin1990 7:4dbae381f693 432 * @note The number of input samples to be averaged by the filter
kevin1990 7:4dbae381f693 433 * must be specified by @ref fs (see @ref ADI_SENSE_ADC_FILTER_CONFIG)
kevin1990 7:4dbae381f693 434 * The fs value affects the output sample rate and settling times
kevin1990 7:4dbae381f693 435 * of the ADC */
kevin1990 7:4dbae381f693 436 ADI_SENSE_ADC_FILTER_FIR_20SPS,
kevin1990 7:4dbae381f693 437 /*!< FIR post filter, producing a 20sps output sample rate */
kevin1990 7:4dbae381f693 438 ADI_SENSE_ADC_FILTER_FIR_25SPS,
kevin1990 7:4dbae381f693 439 /*!< FIR post filter, producing a 25sps output sample rate */
kevin1990 7:4dbae381f693 440 } ADI_SENSE_ADC_FILTER_TYPE;
kevin1990 7:4dbae381f693 441
kevin1990 7:4dbae381f693 442 /*! ADI Sense I2C digital sensor type options
kevin1990 7:4dbae381f693 443 *
kevin1990 7:4dbae381f693 444 * Select the sensor type that is connected to an I2C digital measurement
kevin1990 7:4dbae381f693 445 * channel.
kevin1990 7:4dbae381f693 446 *
kevin1990 7:4dbae381f693 447 * @note "Custom" sensor types (with a _CUSTOMn suffix) are user-defined and
kevin1990 7:4dbae381f693 448 * require additional configuration parameters and linearisation data to
kevin1990 7:4dbae381f693 449 * be supplied. All other sensor types use pre-defined configuration
kevin1990 7:4dbae381f693 450 * information and linearisation data/equations.
kevin1990 7:4dbae381f693 451 */
kevin1990 7:4dbae381f693 452 typedef enum {
kevin1990 7:4dbae381f693 453 ADI_SENSE_I2C_SENSOR_HUMIDITY_HONEYWELL_HIH = 1,
kevin1990 7:4dbae381f693 454 /*!< Honeywell HiH9000-series humidity sensor
kevin1990 7:4dbae381f693 455 *
kevin1990 7:4dbae381f693 456 * @note For use with I2C Digital Sensor channels only
kevin1990 7:4dbae381f693 457 */
kevin1990 7:4dbae381f693 458 ADI_SENSE_I2C_SENSOR_HUMIDITY_SENSIRION_SHT35,
kevin1990 7:4dbae381f693 459 /*!< Sensirion SHT35-DIS-B humidity sensor
kevin1990 7:4dbae381f693 460 *
kevin1990 7:4dbae381f693 461 * @note For use with I2C Digital Sensor channels only
kevin1990 7:4dbae381f693 462 */
kevin1990 7:4dbae381f693 463 ADI_SENSE_I2C_SENSOR_CUSTOM,
kevin1990 7:4dbae381f693 464 /*!< Custom user-defined I2C digital sensor
kevin1990 7:4dbae381f693 465 *
kevin1990 7:4dbae381f693 466 * @note For use with I2C Digital Sensor channels only
kevin1990 7:4dbae381f693 467 */
kevin1990 7:4dbae381f693 468 } ADI_SENSE_I2C_SENSOR_TYPE;
kevin1990 7:4dbae381f693 469
kevin1990 7:4dbae381f693 470 /*! ADI Sense SPI digital sensor type options
kevin1990 7:4dbae381f693 471 *
kevin1990 7:4dbae381f693 472 * Select the sensor type that is connected to an SPI digital measurement
kevin1990 7:4dbae381f693 473 * channel.
kevin1990 7:4dbae381f693 474 *
kevin1990 7:4dbae381f693 475 * @note "Custom" sensor types (with a _CUSTOMn suffix) are user-defined and
kevin1990 7:4dbae381f693 476 * require additional configuration parameters and linearisation data to
kevin1990 7:4dbae381f693 477 * be supplied. All other sensor types use pre-defined configuration
kevin1990 7:4dbae381f693 478 * information and linearisation data/equations.
kevin1990 7:4dbae381f693 479 */
kevin1990 7:4dbae381f693 480 typedef enum {
kevin1990 7:4dbae381f693 481 ADI_SENSE_SPI_SENSOR_PRESSURE_HONEYWELL_HSCDRN1 = 1,
kevin1990 7:4dbae381f693 482 /*!< Honeywell HSCDRNN1.6BASA3 pressure sensor
kevin1990 7:4dbae381f693 483 *
kevin1990 7:4dbae381f693 484 * @note For use with SPI Digital Sensor channels only
kevin1990 7:4dbae381f693 485 */
kevin1990 7:4dbae381f693 486 ADI_SENSE_SPI_SENSOR_PRESSURE_ADI_ADXL362,
kevin1990 7:4dbae381f693 487 /*!< Analog Devices ADxL362 3-axis accelerometer sensor
kevin1990 7:4dbae381f693 488 *
kevin1990 7:4dbae381f693 489 * @note For use with SPI Digital Sensor channels only
kevin1990 7:4dbae381f693 490 *
kevin1990 7:4dbae381f693 491 * @note This sensor requires the use of 3 SPI Digital Sensor channels, with
kevin1990 7:4dbae381f693 492 * the sensor measurements from the X/Y/Z axes each output on a
kevin1990 7:4dbae381f693 493 * seperate dedicated channel (SPI#0/SPI#1/SPI#2, respectively)
kevin1990 7:4dbae381f693 494 */
kevin1990 7:4dbae381f693 495 ADI_SENSE_SPI_SENSOR_CUSTOM,
kevin1990 7:4dbae381f693 496 /*!< Custom user-defined SPI digital sensor
kevin1990 7:4dbae381f693 497 *
kevin1990 7:4dbae381f693 498 * @note For use with SPI Digital Sensor channels only
kevin1990 7:4dbae381f693 499 */
kevin1990 7:4dbae381f693 500 } ADI_SENSE_SPI_SENSOR_TYPE;
kevin1990 7:4dbae381f693 501
kevin1990 7:4dbae381f693 502 /*! ADI Sense Power Configuration options */
kevin1990 7:4dbae381f693 503 typedef struct {
kevin1990 7:4dbae381f693 504 ADI_SENSE_POWER_MODE powerMode;
kevin1990 7:4dbae381f693 505 /*!< Power mode selection */
kevin1990 7:4dbae381f693 506 float32_t supplyVoltage;
kevin1990 7:4dbae381f693 507 /*!< AVDD analog supply voltage (e.g. 3.3V)*/
kevin1990 7:4dbae381f693 508 } ADI_SENSE_POWER_CONFIG;
kevin1990 7:4dbae381f693 509
kevin1990 7:4dbae381f693 510 /*! ADI Sense Multi-Cycle Configuration options
kevin1990 7:4dbae381f693 511 *
kevin1990 7:4dbae381f693 512 * @note required only when ADI_SENSE_OPERATING_MODE_MULTICYCLE is selected
kevin1990 7:4dbae381f693 513 * as the operatingMode (@ref ADI_SENSE_MEASUREMENT_CONFIG)
kevin1990 7:4dbae381f693 514 */
kevin1990 7:4dbae381f693 515 typedef struct {
kevin1990 7:4dbae381f693 516 uint32_t cyclesPerBurst;
kevin1990 7:4dbae381f693 517 /*!< Number of cycles to complete for a single burst */
kevin1990 7:4dbae381f693 518 uint32_t burstInterval;
kevin1990 7:4dbae381f693 519 /*!< Interval, in seconds, between each successive burst of cycles */
kevin1990 7:4dbae381f693 520 } ADI_SENSE_MULTICYCLE_CONFIG;
kevin1990 7:4dbae381f693 521
kevin1990 7:4dbae381f693 522 /*! ADI Sense Measurement Configuration options */
kevin1990 7:4dbae381f693 523 typedef struct {
kevin1990 7:4dbae381f693 524 ADI_SENSE_OPERATING_MODE operatingMode;
kevin1990 7:4dbae381f693 525 /*!< Operating mode - specifies how measurement cycles are scheduled */
kevin1990 7:4dbae381f693 526 ADI_SENSE_DATA_PUBLISH_MODE dataPublishMode;
kevin1990 7:4dbae381f693 527 /*!< Data publish mode - specifies how output samples are stored and
kevin1990 7:4dbae381f693 528 * published
kevin1990 7:4dbae381f693 529 */
kevin1990 7:4dbae381f693 530 ADI_SENSE_MULTICYCLE_CONFIG multiCycleConfig;
kevin1990 7:4dbae381f693 531 /*!< Multi-Cycle configuration - specifies how bursts of measurement cycles
kevin1990 7:4dbae381f693 532 * are scheduled. Applicable only when operatingMode is
kevin1990 7:4dbae381f693 533 * ADI_SENSE_OPERATING_MODE_MULTICYCLE
kevin1990 7:4dbae381f693 534 */
kevin1990 7:4dbae381f693 535 uint32_t cycleInterval;
kevin1990 7:4dbae381f693 536 /*!< Cycle interval - specifies the time interval between the start of each
kevin1990 7:4dbae381f693 537 * successive measurement cycle. Applicable only when operatingMode is
kevin1990 7:4dbae381f693 538 * not ADI_SENSE_OPERATING_MODE_SINGLECYCLE
kevin1990 7:4dbae381f693 539 */
kevin1990 7:4dbae381f693 540 float32_t externalRef1Value;
kevin1990 7:4dbae381f693 541 /*!< Resistance/voltage value connected to external reference input #1.
kevin1990 7:4dbae381f693 542 * Applicable only if the selected reference type is
kevin1990 7:4dbae381f693 543 * ADI_SENSE_ADC_REFERENCE_RESISTOR_EXTERNAL_1 or
kevin1990 7:4dbae381f693 544 * ADI_SENSE_ADC_REFERENCE_VOLTAGE_EXTERNAL_1
kevin1990 7:4dbae381f693 545 * (see @ref ADI_SENSE_ADC_REFERENCE_TYPE)
kevin1990 7:4dbae381f693 546 */
kevin1990 7:4dbae381f693 547 float32_t externalRef2Value;
kevin1990 7:4dbae381f693 548 /*!< Resistance/voltage value connected to external reference input #2.
kevin1990 7:4dbae381f693 549 * Applicable only if the selected reference type is
kevin1990 7:4dbae381f693 550 * ADI_SENSE_ADC_REFERENCE_RESISTOR_EXTERNAL_2 or
kevin1990 7:4dbae381f693 551 * ADI_SENSE_ADC_REFERENCE_VOLTAGE_EXTERNAL_2
kevin1990 7:4dbae381f693 552 * (see @ref ADI_SENSE_ADC_REFERENCE_TYPE)
kevin1990 7:4dbae381f693 553 */
kevin1990 7:4dbae381f693 554 } ADI_SENSE_MEASUREMENT_CONFIG;
kevin1990 7:4dbae381f693 555
kevin1990 7:4dbae381f693 556 /*! ADI Sense ADC Excitation Current output configuration
kevin1990 7:4dbae381f693 557 *
kevin1990 7:4dbae381f693 558 * @note applicable only to ADC analog sensor channels, and
kevin1990 7:4dbae381f693 559 * specific sensor types
kevin1990 7:4dbae381f693 560 */
kevin1990 7:4dbae381f693 561 typedef struct {
kevin1990 7:4dbae381f693 562 ADI_SENSE_ADC_CURRENT_LEVEL outputLevel;
kevin1990 7:4dbae381f693 563 /*!< Excitation current output level */
kevin1990 7:4dbae381f693 564 ADI_SENSE_ADC_CURRENT_SOURCE sourceOption;
kevin1990 7:4dbae381f693 565 /*!< Excitation current output source options */
kevin1990 7:4dbae381f693 566 } ADI_SENSE_ADC_CURRENT_CONFIG;
kevin1990 7:4dbae381f693 567
kevin1990 7:4dbae381f693 568 /*! ADI Sense ADC Filter configuration
kevin1990 7:4dbae381f693 569 *
kevin1990 7:4dbae381f693 570 * @note applicable only to ADC analog sensor channels
kevin1990 7:4dbae381f693 571 */
kevin1990 7:4dbae381f693 572 typedef struct {
kevin1990 7:4dbae381f693 573 ADI_SENSE_ADC_FILTER_TYPE type;
kevin1990 7:4dbae381f693 574 /*!< Filter type selection */
kevin1990 7:4dbae381f693 575 uint32_t fs;
kevin1990 7:4dbae381f693 576 /*!< Number of input samples to accumulate and average in the filter.
kevin1990 7:4dbae381f693 577 * Applicable only when type is ADI_SENSE_ADC_FILTER_SINC4 */
kevin1990 7:4dbae381f693 578 } ADI_SENSE_ADC_FILTER_CONFIG;
kevin1990 7:4dbae381f693 579
kevin1990 7:4dbae381f693 580 /*! ADI Sense ADC Referemce configuration
kevin1990 7:4dbae381f693 581 *
kevin1990 7:4dbae381f693 582 * @note applicable only to ADC analog sensor channels
kevin1990 7:4dbae381f693 583 */
kevin1990 7:4dbae381f693 584 typedef struct {
kevin1990 7:4dbae381f693 585 ADI_SENSE_ADC_REFERENCE_TYPE type;
kevin1990 7:4dbae381f693 586 /*!< Filter type selection */
kevin1990 7:4dbae381f693 587 bool_t disableBuffer;
kevin1990 7:4dbae381f693 588 /*!< Option to disable internal ADC reference buffer */
kevin1990 7:4dbae381f693 589 } ADI_SENSE_ADC_REFERENCE_CONFIG;
kevin1990 7:4dbae381f693 590
kevin1990 7:4dbae381f693 591 /*! ADI Sense ADC analog channel configuration details
kevin1990 7:4dbae381f693 592 *
kevin1990 7:4dbae381f693 593 * @note applicable only to ADC analog sensor channels
kevin1990 7:4dbae381f693 594 */
kevin1990 7:4dbae381f693 595 typedef struct {
kevin1990 7:4dbae381f693 596 ADI_SENSE_ADC_SENSOR_TYPE sensor;
kevin1990 7:4dbae381f693 597 /*!< Sensor type selection */
kevin1990 7:4dbae381f693 598 ADI_SENSE_ADC_GAIN gain;
kevin1990 7:4dbae381f693 599 /*!< ADC Gain selection */
kevin1990 7:4dbae381f693 600 ADI_SENSE_ADC_CURRENT_CONFIG current;
kevin1990 7:4dbae381f693 601 /*!< ADC Excitation Current configuration */
kevin1990 7:4dbae381f693 602 ADI_SENSE_ADC_FILTER_CONFIG filter;
kevin1990 7:4dbae381f693 603 /*!< ADC Filter configuration */
kevin1990 7:4dbae381f693 604 ADI_SENSE_ADC_REFERENCE_CONFIG reference;
kevin1990 7:4dbae381f693 605 /*!< ADC Reference configuration */
kevin1990 7:4dbae381f693 606 bool_t enableVbias;
kevin1990 7:4dbae381f693 607 /*!< Option to enable internal ADC voltage bias */
kevin1990 7:4dbae381f693 608 } ADI_SENSE_ADC_CHANNEL_CONFIG;
kevin1990 7:4dbae381f693 609
kevin1990 7:4dbae381f693 610 /*! ADI Sense I2C digital channel configuration details
kevin1990 7:4dbae381f693 611 *
kevin1990 7:4dbae381f693 612 * @note applicable only to I2C digital sensor channels
kevin1990 7:4dbae381f693 613 */
kevin1990 7:4dbae381f693 614 typedef struct {
kevin1990 7:4dbae381f693 615 ADI_SENSE_I2C_SENSOR_TYPE sensor;
kevin1990 7:4dbae381f693 616 /*!< Sensor type selection */
kevin1990 7:4dbae381f693 617 uint32_t deviceAddress;
kevin1990 7:4dbae381f693 618 /*!< I2C device address (7-bit) */
kevin1990 7:4dbae381f693 619 } ADI_SENSE_I2C_CHANNEL_CONFIG;
kevin1990 7:4dbae381f693 620
kevin1990 7:4dbae381f693 621 /*! ADI Sense SPI digital channel configuration details
kevin1990 7:4dbae381f693 622 *
kevin1990 7:4dbae381f693 623 * @note applicable only to SPI digital sensor channels
kevin1990 7:4dbae381f693 624 */
kevin1990 7:4dbae381f693 625 typedef struct {
kevin1990 7:4dbae381f693 626 ADI_SENSE_SPI_SENSOR_TYPE sensor;
kevin1990 7:4dbae381f693 627 /*!< Sensor type selection */
kevin1990 7:4dbae381f693 628 } ADI_SENSE_SPI_CHANNEL_CONFIG;
kevin1990 7:4dbae381f693 629
kevin1990 7:4dbae381f693 630 /*! ADI Sense Measurement Channel configuration details */
kevin1990 7:4dbae381f693 631 typedef struct {
kevin1990 7:4dbae381f693 632 bool_t enableChannel;
kevin1990 7:4dbae381f693 633 /*!< Option to enable this channel. If set to false, all other fields
kevin1990 7:4dbae381f693 634 * are ignored and this channel will be omitted from measurement cycles
kevin1990 7:4dbae381f693 635 */
kevin1990 7:4dbae381f693 636 bool_t disablePublishing;
kevin1990 7:4dbae381f693 637 /*!< Option to disable publishing of data samples from this channel. The
kevin1990 7:4dbae381f693 638 * channel may still be included in measurement cycles, but data samples
kevin1990 7:4dbae381f693 639 * obtained from this channel will not be published. This is typically
kevin1990 7:4dbae381f693 640 * used for channels which are required only as a compensation reference
kevin1990 7:4dbae381f693 641 * for another channel (e.g. Cold-Junction Compensation channels).
kevin1990 7:4dbae381f693 642 */
kevin1990 7:4dbae381f693 643 ADI_SENSE_CHANNEL_ID compensationChannel;
kevin1990 7:4dbae381f693 644 /*!< Optional compensation channel. Set to ADI_SENSE_CHANNEL_ID_NONE if not
kevin1990 7:4dbae381f693 645 * required. Typically used for thermocouple sensors that require a
kevin1990 7:4dbae381f693 646 * separate measurement of the "cold-junction" temperature, which can be
kevin1990 7:4dbae381f693 647 * be provided by an RTD temperature sensor connected on a separate
kevin1990 7:4dbae381f693 648 * "compensation channel" */
kevin1990 7:4dbae381f693 649 ADI_SENSE_UNIT_TRANSLATION unitTranslation;
kevin1990 7:4dbae381f693 650 /*!< Optional translation from one measurement unit to another, to be
kevin1990 7:4dbae381f693 651 * performed on each processed sample prior to publishing. Set to
kevin1990 7:4dbae381f693 652 * ADI_SENSE_UNIT_TRANSLATION_NONE if not required.
kevin1990 7:4dbae381f693 653 */
kevin1990 7:4dbae381f693 654 float32_t measurementMinValue;
kevin1990 7:4dbae381f693 655 /*!< Optional minimum threshold value for each processed sample, to be
kevin1990 7:4dbae381f693 656 * checked prior to publishing. A channel ALERT condition is raised
kevin1990 7:4dbae381f693 657 * if the processed value is lower than this threshold. Set to NaN
kevin1990 7:4dbae381f693 658 * if not required.
kevin1990 7:4dbae381f693 659 */
kevin1990 7:4dbae381f693 660 float32_t measurementMaxValue;
kevin1990 7:4dbae381f693 661 /*!< Optional maximum threshold value for each processed sample, to be
kevin1990 7:4dbae381f693 662 * checked prior to publishing. A channel ALERT condition is raised
kevin1990 7:4dbae381f693 663 * if the processed value is higher than this threshold. Set to NaN
kevin1990 7:4dbae381f693 664 * if not required.
kevin1990 7:4dbae381f693 665 */
kevin1990 7:4dbae381f693 666 uint32_t measurementsPerCycle;
kevin1990 7:4dbae381f693 667 /*!< The number of measurements to obtain from this channel within each
kevin1990 7:4dbae381f693 668 * cycle. Each enabled channel is measured in turn, until the number of
kevin1990 7:4dbae381f693 669 * measurements requested for the channel has been reached. A different
kevin1990 7:4dbae381f693 670 * number of measurements-per-cycle may be specified for each channel.
kevin1990 7:4dbae381f693 671 */
kevin1990 7:4dbae381f693 672 uint32_t extraSettlingTime;
kevin1990 7:4dbae381f693 673 /*!< A minimum settling time is applied internally for each channel, based
kevin1990 7:4dbae381f693 674 * on the sensor type. However, additional settling time (microseconds)
kevin1990 7:4dbae381f693 675 * can optionally be specified. Set to 0 if not required.
kevin1990 7:4dbae381f693 676 */
kevin1990 7:4dbae381f693 677 union {
kevin1990 7:4dbae381f693 678 ADI_SENSE_ADC_CHANNEL_CONFIG adcChannelConfig;
kevin1990 7:4dbae381f693 679 /*!< ADC channel configuration - applicable only to ADC channels */
kevin1990 7:4dbae381f693 680 ADI_SENSE_I2C_CHANNEL_CONFIG i2cChannelConfig;
kevin1990 7:4dbae381f693 681 /*!< I2C channel configuration - applicable only to I2C channels */
kevin1990 7:4dbae381f693 682 ADI_SENSE_SPI_CHANNEL_CONFIG spiChannelConfig;
kevin1990 7:4dbae381f693 683 /*!< SPI channel configuration - applicable only to SPI channels */
kevin1990 7:4dbae381f693 684 };
kevin1990 7:4dbae381f693 685 /*!< Only one of adcChannelConfig, i2cChannelConfig, or spiChannelConfig is
kevin1990 7:4dbae381f693 686 * required, depending on the channel designation (analog, I2C or SPI)
kevin1990 7:4dbae381f693 687 */
kevin1990 7:4dbae381f693 688 } ADI_SENSE_CHANNEL_CONFIG;
kevin1990 7:4dbae381f693 689
kevin1990 7:4dbae381f693 690 /*! ADI Sense Diagnostics configuration details */
kevin1990 7:4dbae381f693 691 typedef struct {
kevin1990 7:4dbae381f693 692 bool_t enableGlobalDiag;
kevin1990 7:4dbae381f693 693 /*!< Option to enable system-level diagnostic checks
kevin1990 7:4dbae381f693 694 * (e.g. communication and data integrity, power supply health, etc.)
kevin1990 7:4dbae381f693 695 */
kevin1990 7:4dbae381f693 696 bool_t enableMeasurementDiag;
kevin1990 7:4dbae381f693 697 /*!< Option to enable channel-specific measurement-level diagnostic checks
kevin1990 7:4dbae381f693 698 * (e.g. range detection, timeouts, reference detection, etc.)
kevin1990 7:4dbae381f693 699 */
kevin1990 7:4dbae381f693 700 ADI_SENSE_OCD_FREQUENCY openCircuitDetectionFreq;
kevin1990 7:4dbae381f693 701 /*!< Option to enable Open-Circuit Detection at a selected cycle interval */
kevin1990 7:4dbae381f693 702 } ADI_SENSE_DIAGNOSTICS_CONFIG;
kevin1990 7:4dbae381f693 703
kevin1990 7:4dbae381f693 704 /*! ADI Sense Device configuration details */
kevin1990 7:4dbae381f693 705 typedef struct {
kevin1990 7:4dbae381f693 706 ADI_SENSE_PRODUCT_ID productId;
kevin1990 7:4dbae381f693 707 /*!< Identify the product type for which this configuration is valid */
kevin1990 7:4dbae381f693 708 ADI_SENSE_POWER_CONFIG power;
kevin1990 7:4dbae381f693 709 /*!< Power configuration details */
kevin1990 7:4dbae381f693 710 ADI_SENSE_MEASUREMENT_CONFIG measurement;
kevin1990 7:4dbae381f693 711 /*!< Measurement configuration details */
kevin1990 7:4dbae381f693 712 ADI_SENSE_DIAGNOSTICS_CONFIG diagnostics;
kevin1990 7:4dbae381f693 713 /*!< Diagnostics configuration details */
kevin1990 7:4dbae381f693 714 ADI_SENSE_CHANNEL_CONFIG channels[ADI_SENSE_MAX_CHANNELS];
kevin1990 7:4dbae381f693 715 /*!< Channel-specific configuration details */
kevin1990 7:4dbae381f693 716 } ADI_SENSE_DEVICE_CONFIG;
kevin1990 7:4dbae381f693 717
kevin1990 7:4dbae381f693 718 /*! ADI Sense global configuration details
kevin1990 7:4dbae381f693 719 *
kevin1990 7:4dbae381f693 720 * @note This may encapsulate configuration details for multiple ADI Sense
kevin1990 7:4dbae381f693 721 * device instances, but currently only a single instance is supported
kevin1990 7:4dbae381f693 722 */
kevin1990 7:4dbae381f693 723 typedef struct {
kevin1990 7:4dbae381f693 724 ADI_SENSE_CONFIG_ID configId;
kevin1990 7:4dbae381f693 725 /*!< Optional unique identifier for this configuration */
kevin1990 7:4dbae381f693 726 ADI_SENSE_CONFIG_VERSION_ID versionId;
kevin1990 7:4dbae381f693 727 /*!< Identifies the schema version for this configuration */
kevin1990 7:4dbae381f693 728 uint32_t numDevices;
kevin1990 7:4dbae381f693 729 /*!< The number of valid device configurations (currently limited to 1) */
kevin1990 7:4dbae381f693 730 ADI_SENSE_DEVICE_CONFIG devices[ADI_SENSE_MAX_DEVICES];
kevin1990 7:4dbae381f693 731 /*!< An array of device configurations, with the number of valid elements
kevin1990 7:4dbae381f693 732 * specified by @ref numDevices
kevin1990 7:4dbae381f693 733 */
kevin1990 7:4dbae381f693 734 } ADI_SENSE_CONFIG;
kevin1990 7:4dbae381f693 735
kevin1990 7:4dbae381f693 736 #ifdef __cplusplus
kevin1990 7:4dbae381f693 737 }
kevin1990 7:4dbae381f693 738 #endif
kevin1990 7:4dbae381f693 739
kevin1990 7:4dbae381f693 740 /*!
kevin1990 7:4dbae381f693 741 * @}
kevin1990 7:4dbae381f693 742 */
kevin1990 7:4dbae381f693 743
kevin1990 7:4dbae381f693 744 #endif /* __ADI_SENSE_CONFIG_TYPES_H__ */
kevin1990 7:4dbae381f693 745