Diaz George / Mbed OS EV-PRO-MW1001
Committer:
diazdgeorge
Date:
Tue Nov 05 12:45:48 2019 +0000
Revision:
31:38f9097982c7
Parent:
18:cbf514cce921
added latest configuration parameters support

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vkadaba 5:0728bde67bdb 1 /*
Vkadaba 6:9d393a9677f4 2 Copyright 2019 (c) Analog Devices, Inc.
Vkadaba 5:0728bde67bdb 3
Vkadaba 5:0728bde67bdb 4 All rights reserved.
Vkadaba 5:0728bde67bdb 5
Vkadaba 5:0728bde67bdb 6 Redistribution and use in source and binary forms, with or without
Vkadaba 5:0728bde67bdb 7 modification, are permitted provided that the following conditions are met:
Vkadaba 5:0728bde67bdb 8 - Redistributions of source code must retain the above copyright
Vkadaba 5:0728bde67bdb 9 notice, this list of conditions and the following disclaimer.
Vkadaba 5:0728bde67bdb 10 - Redistributions in binary form must reproduce the above copyright
Vkadaba 5:0728bde67bdb 11 notice, this list of conditions and the following disclaimer in
Vkadaba 5:0728bde67bdb 12 the documentation and/or other materials provided with the
Vkadaba 5:0728bde67bdb 13 distribution.
Vkadaba 5:0728bde67bdb 14 - Neither the name of Analog Devices, Inc. nor the names of its
Vkadaba 5:0728bde67bdb 15 contributors may be used to endorse or promote products derived
Vkadaba 5:0728bde67bdb 16 from this software without specific prior written permission.
Vkadaba 5:0728bde67bdb 17 - The use of this software may or may not infringe the patent rights
Vkadaba 5:0728bde67bdb 18 of one or more patent holders. This license does not release you
Vkadaba 5:0728bde67bdb 19 from the requirement that you obtain separate licenses from these
Vkadaba 5:0728bde67bdb 20 patent holders to use this software.
Vkadaba 5:0728bde67bdb 21 - Use of the software either in source or binary form, must be run
Vkadaba 5:0728bde67bdb 22 on or directly connected to an Analog Devices Inc. component.
Vkadaba 5:0728bde67bdb 23
Vkadaba 5:0728bde67bdb 24 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
Vkadaba 5:0728bde67bdb 25 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
Vkadaba 5:0728bde67bdb 26 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
Vkadaba 5:0728bde67bdb 27 IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
Vkadaba 5:0728bde67bdb 28 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Vkadaba 5:0728bde67bdb 29 LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
Vkadaba 5:0728bde67bdb 30 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Vkadaba 5:0728bde67bdb 31 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Vkadaba 5:0728bde67bdb 32 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Vkadaba 5:0728bde67bdb 33 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Vkadaba 5:0728bde67bdb 34 */
Vkadaba 5:0728bde67bdb 35
Vkadaba 5:0728bde67bdb 36 /*!
Vkadaba 5:0728bde67bdb 37 ******************************************************************************
Vkadaba 5:0728bde67bdb 38 * @file: admw1001_config.h
Vkadaba 5:0728bde67bdb 39 * @brief: Configuration type definitions for ADMW1001.
Vkadaba 5:0728bde67bdb 40 *-----------------------------------------------------------------------------
Vkadaba 5:0728bde67bdb 41 */
Vkadaba 5:0728bde67bdb 42
Vkadaba 5:0728bde67bdb 43 #ifndef __ADMW1001_CONFIG_H__
Vkadaba 5:0728bde67bdb 44 #define __ADMW1001_CONFIG_H__
Vkadaba 5:0728bde67bdb 45
Vkadaba 5:0728bde67bdb 46 #include "admw_platform.h"
Vkadaba 5:0728bde67bdb 47 #include "admw1001_sensor_types.h"
Vkadaba 5:0728bde67bdb 48
Vkadaba 5:0728bde67bdb 49 /*! @addtogroup ADMW1001_Api
Vkadaba 5:0728bde67bdb 50 * @{
Vkadaba 5:0728bde67bdb 51 */
Vkadaba 5:0728bde67bdb 52
Vkadaba 5:0728bde67bdb 53 #ifdef __cplusplus
Vkadaba 5:0728bde67bdb 54 extern "C" {
Vkadaba 5:0728bde67bdb 55 #endif
Vkadaba 5:0728bde67bdb 56
Vkadaba 5:0728bde67bdb 57 /*! Maximum length allowed for a digital sensor command */
Vkadaba 5:0728bde67bdb 58 #define ADMW1001_SENSOR_COMMAND_MAX_LENGTH 7
Vkadaba 5:0728bde67bdb 59
Vkadaba 5:0728bde67bdb 60 /*! ADMW1001 channel priority options */
Vkadaba 8:2f2775c34640 61 typedef enum
Vkadaba 8:2f2775c34640 62 {
Vkadaba 5:0728bde67bdb 63 ADMW1001_CHANNEL_PRIORITY_0 = 0,
Vkadaba 5:0728bde67bdb 64 ADMW1001_CHANNEL_PRIORITY_1,
Vkadaba 5:0728bde67bdb 65 ADMW1001_CHANNEL_PRIORITY_2,
Vkadaba 5:0728bde67bdb 66 ADMW1001_CHANNEL_PRIORITY_3,
Vkadaba 5:0728bde67bdb 67 ADMW1001_CHANNEL_PRIORITY_4,
Vkadaba 5:0728bde67bdb 68 ADMW1001_CHANNEL_PRIORITY_5,
Vkadaba 5:0728bde67bdb 69 ADMW1001_CHANNEL_PRIORITY_6,
Vkadaba 5:0728bde67bdb 70 ADMW1001_CHANNEL_PRIORITY_7,
Vkadaba 5:0728bde67bdb 71 ADMW1001_CHANNEL_PRIORITY_8,
Vkadaba 5:0728bde67bdb 72 ADMW1001_CHANNEL_PRIORITY_9,
Vkadaba 5:0728bde67bdb 73 ADMW1001_CHANNEL_PRIORITY_10,
Vkadaba 5:0728bde67bdb 74 ADMW1001_CHANNEL_PRIORITY_11,
Vkadaba 5:0728bde67bdb 75 ADMW1001_CHANNEL_PRIORITY_12,
Vkadaba 5:0728bde67bdb 76
Vkadaba 5:0728bde67bdb 77 ADMW1001_CHANNEL_PRIORITY_HIGHEST = ADMW1001_CHANNEL_PRIORITY_0,
Vkadaba 8:2f2775c34640 78 ADMW1001_CHANNEL_PRIORITY_LOWEST = ADMW1001_CHANNEL_PRIORITY_12,
Vkadaba 8:2f2775c34640 79
Vkadaba 8:2f2775c34640 80 } ADMW1001_CHANNEL_PRIORITY;
Vkadaba 5:0728bde67bdb 81
Vkadaba 5:0728bde67bdb 82 /*! ADMW1001 operating mode options */
Vkadaba 8:2f2775c34640 83 typedef enum
Vkadaba 8:2f2775c34640 84 {
Vkadaba 5:0728bde67bdb 85 ADMW1001_OPERATING_MODE_SINGLECYCLE = 0,
Vkadaba 5:0728bde67bdb 86 /*!< Executes a single measurement cycle and stops */
Vkadaba 5:0728bde67bdb 87 ADMW1001_OPERATING_MODE_CONTINUOUS,
Vkadaba 5:0728bde67bdb 88 /*!< Continuously executes measurement cycles */
Vkadaba 5:0728bde67bdb 89 ADMW1001_OPERATING_MODE_MULTICYCLE,
Vkadaba 5:0728bde67bdb 90 /*!< Executes a burst of measurement cycles, repeated at defined intervals */
Vkadaba 8:2f2775c34640 91
Vkadaba 8:2f2775c34640 92 } ADMW1001_OPERATING_MODE;
Vkadaba 5:0728bde67bdb 93
Vkadaba 5:0728bde67bdb 94 /*! ADMW1001 data ready mode options */
Vkadaba 8:2f2775c34640 95 typedef enum
Vkadaba 8:2f2775c34640 96 {
Vkadaba 5:0728bde67bdb 97 ADMW1001_DATAREADY_PER_CONVERSION = 0,
Vkadaba 5:0728bde67bdb 98 /*!< The DATAREADY signal is asserted after completion of each conversion
Vkadaba 5:0728bde67bdb 99 * - a single data sample only from the latest completed conversion is
Vkadaba 5:0728bde67bdb 100 * stored in this mode
Vkadaba 5:0728bde67bdb 101 */
Vkadaba 5:0728bde67bdb 102 ADMW1001_DATAREADY_PER_CYCLE,
Vkadaba 5:0728bde67bdb 103 /*!< The DATAREADY signal is asserted after completion of each measurement
Vkadaba 5:0728bde67bdb 104 * cycle
Vkadaba 5:0728bde67bdb 105 * - data samples only from the lastest completed measurement cycle are
Vkadaba 5:0728bde67bdb 106 * stored in this mode
Vkadaba 5:0728bde67bdb 107 */
Vkadaba 8:2f2775c34640 108 ADMW1001_DATAREADY_PER_FIFO_FILL,
Vkadaba 8:2f2775c34640 109 /*!< The DATAREADY signal is asserted after each fill of the data FIFO
Vkadaba 8:2f2775c34640 110 * - applicable only when @ref ADMW1001_OPERATING_MODE_CONTINUOUS or
Vkadaba 8:2f2775c34640 111 * @ref ADMW1001_OPERATING_MODE_MULTICYCLE is also selected
Vkadaba 5:0728bde67bdb 112 */
Vkadaba 8:2f2775c34640 113
Vkadaba 8:2f2775c34640 114 } ADMW1001_DATAREADY_MODE;
Vkadaba 5:0728bde67bdb 115
Vkadaba 5:0728bde67bdb 116 /*! ADMW1001 power mode options */
Vkadaba 8:2f2775c34640 117 typedef enum
Vkadaba 8:2f2775c34640 118 {
Vkadaba 6:9d393a9677f4 119 ADMW1001_POWER_MODE_HIBERNATION = 0,
Vkadaba 6:9d393a9677f4 120 /*!< module has entede hibernation mode. All analog circuitry is disabled. All peripherals disabled apart from the Wake-up pin functionality. */
Vkadaba 6:9d393a9677f4 121 ADMW1001_POWER_MODE_ACTIVE,
Vkadaba 6:9d393a9677f4 122 /*!< Part is fully powered up and either cycling through a sequence or awaiting a configuration */
Vkadaba 5:0728bde67bdb 123
Vkadaba 8:2f2775c34640 124 } ADMW1001_POWER_MODE;
Vkadaba 8:2f2775c34640 125
Vkadaba 5:0728bde67bdb 126 /*! ADMW1001 measurement analog filter settling options */
Vkadaba 5:0728bde67bdb 127 typedef enum
Vkadaba 5:0728bde67bdb 128 {
Vkadaba 5:0728bde67bdb 129 ADMW1001_FILTER_SETTLING_ALWAYS = 0,
Vkadaba 5:0728bde67bdb 130 /*!< Allow full settling time to elapse between every measurement from an analog sensor */
Vkadaba 6:9d393a9677f4 131 ADMW1001_FILTER_SETTLING_FAST,
Vkadaba 5:0728bde67bdb 132 /*!< Skip settling time between consecutive measurements from an analog sensor */
Vkadaba 8:2f2775c34640 133
Vkadaba 8:2f2775c34640 134 } ADMW1001_FILTER_SETTLING;
Vkadaba 5:0728bde67bdb 135
Vkadaba 5:0728bde67bdb 136 /*! ADMW1001 measurement unit options
Vkadaba 5:0728bde67bdb 137 *
Vkadaba 5:0728bde67bdb 138 * Optionally select a measurement unit for final conversion results.
Vkadaba 5:0728bde67bdb 139 * Currently applicable only to specific temperature sensor types.
Vkadaba 5:0728bde67bdb 140 */
Vkadaba 8:2f2775c34640 141 typedef enum
Vkadaba 8:2f2775c34640 142 {
Vkadaba 5:0728bde67bdb 143 ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED = 0,
Vkadaba 5:0728bde67bdb 144 /*!< No measurement unit specified */
Vkadaba 5:0728bde67bdb 145 ADMW1001_MEASUREMENT_UNIT_CELSIUS,
Vkadaba 5:0728bde67bdb 146 /*!< Celsius temperature unit - applicable to temperature sensors only */
Vkadaba 5:0728bde67bdb 147 ADMW1001_MEASUREMENT_UNIT_FAHRENHEIT,
Vkadaba 5:0728bde67bdb 148 /*!< Fahrenheit temperature unit - applicable to temperature sensors only */
Vkadaba 8:2f2775c34640 149
Vkadaba 8:2f2775c34640 150 } ADMW1001_MEASUREMENT_UNIT;
Vkadaba 5:0728bde67bdb 151
Vkadaba 5:0728bde67bdb 152 /*! ADMW1001 Open-Sensor Diagnostics frequency
Vkadaba 5:0728bde67bdb 153 *
Vkadaba 5:0728bde67bdb 154 * Select the per-cycle frequency at which open-sensor diagnostic
Vkadaba 5:0728bde67bdb 155 * checks should be performed. Open-sensor diagnostic checks typically require
Vkadaba 5:0728bde67bdb 156 * specific or time-consuming processing which cannot be executed while a
Vkadaba 5:0728bde67bdb 157 * measurement cycle is running.
Vkadaba 5:0728bde67bdb 158 *
Vkadaba 5:0728bde67bdb 159 * @note Open-sensor diagnostic checks, when performed, will add a delay to the
Vkadaba 5:0728bde67bdb 160 * start of the next measurement cycle.
Vkadaba 5:0728bde67bdb 161 */
Vkadaba 8:2f2775c34640 162 typedef enum
Vkadaba 8:2f2775c34640 163 {
Vkadaba 5:0728bde67bdb 164 ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED = 0,
Vkadaba 5:0728bde67bdb 165 /*!< No Open-Sensor Detection is performed */
Vkadaba 5:0728bde67bdb 166 ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE,
Vkadaba 5:0728bde67bdb 167 /*!< No Open-Sensor Detection is performed prior to each cycle */
Vkadaba 5:0728bde67bdb 168 ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_100_CYCLES,
Vkadaba 5:0728bde67bdb 169 /*!< No Open-Sensor Detection is performed at intervals of 100 cycles */
Vkadaba 5:0728bde67bdb 170 ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_1000_CYCLES,
Vkadaba 6:9d393a9677f4 171 /*!< No Open-Sensor Detection is performed at intervals of 1001 cycles */
Vkadaba 8:2f2775c34640 172
Vkadaba 8:2f2775c34640 173 } ADMW1001_OPEN_SENSOR_DIAGNOSTICS;
Vkadaba 5:0728bde67bdb 174
diazdgeorge 31:38f9097982c7 175 typedef enum
diazdgeorge 31:38f9097982c7 176 {
diazdgeorge 31:38f9097982c7 177 ADMW1001_BUFFER_BYPASSS_DISABLED = 0,
diazdgeorge 31:38f9097982c7 178 /*!< Buffer Bypass Disabled */
diazdgeorge 31:38f9097982c7 179 ADMW1001_BUFFER_BYPASSS_ENABLED,
diazdgeorge 31:38f9097982c7 180 /*!< Buffer Bypass Enabled */
diazdgeorge 31:38f9097982c7 181
diazdgeorge 31:38f9097982c7 182 } ADMW1001_BUFFER_BYPASSS;
diazdgeorge 31:38f9097982c7 183
Vkadaba 5:0728bde67bdb 184 /*! ADMW1001 analog input signal amplification gain options
Vkadaba 5:0728bde67bdb 185 *
Vkadaba 5:0728bde67bdb 186 * @note applicable only to ADC analog sensor channels
Vkadaba 5:0728bde67bdb 187 */
Vkadaba 8:2f2775c34640 188 typedef enum
Vkadaba 8:2f2775c34640 189 {
Vkadaba 6:9d393a9677f4 190 ADMW1001_ADC_RTD_CURVE_EUROPEAN = 0,
Vkadaba 6:9d393a9677f4 191 /*!< EUROPEAN RTD curve used. */
Vkadaba 6:9d393a9677f4 192 ADMW1001_ADC_RTD_CURVE_AMERICAN,
Vkadaba 6:9d393a9677f4 193 /*!< AMERICAN RTD curve used. */
Vkadaba 6:9d393a9677f4 194 ADMW1001_ADC_RTD_CURVE_JAPANESE,
Vkadaba 6:9d393a9677f4 195 /*!< JAPANESE RTD curve used. */
Vkadaba 6:9d393a9677f4 196 ADMW1001_ADC_RTD_CURVE_ITS90,
Vkadaba 6:9d393a9677f4 197 /*!< ITS90 RTD curve used. */
Vkadaba 8:2f2775c34640 198
Vkadaba 8:2f2775c34640 199 } ADMW1001_ADC_RTD_CURVE;
Vkadaba 6:9d393a9677f4 200 /*! ADMW1001 analog input signal amplification gain options
Vkadaba 6:9d393a9677f4 201 *
Vkadaba 6:9d393a9677f4 202 * @note applicable only to ADC analog sensor channels
Vkadaba 6:9d393a9677f4 203 */
Vkadaba 8:2f2775c34640 204 typedef enum
Vkadaba 8:2f2775c34640 205 {
Vkadaba 5:0728bde67bdb 206 ADMW1001_ADC_GAIN_1X = 0,
Vkadaba 5:0728bde67bdb 207 /*!< no amplification gain */
Vkadaba 5:0728bde67bdb 208 ADMW1001_ADC_GAIN_2X,
Vkadaba 5:0728bde67bdb 209 /*!< x2 amplification gain */
Vkadaba 5:0728bde67bdb 210 ADMW1001_ADC_GAIN_4X,
Vkadaba 5:0728bde67bdb 211 /*!< x4 amplification gain */
Vkadaba 5:0728bde67bdb 212 ADMW1001_ADC_GAIN_8X,
Vkadaba 5:0728bde67bdb 213 /*!< x8 amplification gain */
Vkadaba 5:0728bde67bdb 214 ADMW1001_ADC_GAIN_16X,
Vkadaba 5:0728bde67bdb 215 /*!< x16 amplification gain */
Vkadaba 5:0728bde67bdb 216 ADMW1001_ADC_GAIN_32X,
Vkadaba 5:0728bde67bdb 217 /*!< x32 amplification gain */
Vkadaba 5:0728bde67bdb 218 ADMW1001_ADC_GAIN_64X,
Vkadaba 5:0728bde67bdb 219 /*!< x64 amplification gain */
Vkadaba 5:0728bde67bdb 220 ADMW1001_ADC_GAIN_128X,
Vkadaba 5:0728bde67bdb 221 /*!< x128 amplification gain */
Vkadaba 8:2f2775c34640 222
Vkadaba 8:2f2775c34640 223 } ADMW1001_ADC_GAIN;
Vkadaba 5:0728bde67bdb 224
Vkadaba 6:9d393a9677f4 225 /*! ADMW1001 analog sensor excitation state options
Vkadaba 6:9d393a9677f4 226 *
Vkadaba 6:9d393a9677f4 227 * @note applicable only to ADC analog sensor channels, and
Vkadaba 6:9d393a9677f4 228 * specific sensor types
Vkadaba 6:9d393a9677f4 229 */
Vkadaba 8:2f2775c34640 230 typedef enum
Vkadaba 8:2f2775c34640 231 {
diazdgeorge 31:38f9097982c7 232 ADMW1001_ADC_EXC_STATE_CYCLE_POWER = 0,
diazdgeorge 31:38f9097982c7 233 /*!< Excitation for measurement is active only during measurement */
Vkadaba 6:9d393a9677f4 234 ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
Vkadaba 6:9d393a9677f4 235 /*!< Excitation for measurement is always on */
Vkadaba 8:2f2775c34640 236 } ADMW1001_ADC_EXC_STATE;
Vkadaba 6:9d393a9677f4 237
Vkadaba 5:0728bde67bdb 238 /*! ADMW1001 analog sensor excitation current output level options
Vkadaba 5:0728bde67bdb 239 *
Vkadaba 5:0728bde67bdb 240 * @note applicable only to ADC analog sensor channels, and
Vkadaba 5:0728bde67bdb 241 * specific sensor types
Vkadaba 5:0728bde67bdb 242 */
Vkadaba 8:2f2775c34640 243 typedef enum
Vkadaba 8:2f2775c34640 244 {
Vkadaba 18:cbf514cce921 245 ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT = -1,
Vkadaba 18:cbf514cce921 246 /*!< NO External excitation is provided */
Vkadaba 6:9d393a9677f4 247 ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0,
Vkadaba 6:9d393a9677f4 248 /*!< External excitation is provided */
Vkadaba 5:0728bde67bdb 249 ADMW1001_ADC_EXC_CURRENT_50uA,
Vkadaba 5:0728bde67bdb 250 /*!< 50uA excitation current enabled */
Vkadaba 5:0728bde67bdb 251 ADMW1001_ADC_EXC_CURRENT_100uA,
Vkadaba 5:0728bde67bdb 252 /*!< 100uA excitation current */
Vkadaba 5:0728bde67bdb 253 ADMW1001_ADC_EXC_CURRENT_250uA,
Vkadaba 5:0728bde67bdb 254 /*!< 250uA excitation current enabled */
Vkadaba 5:0728bde67bdb 255 ADMW1001_ADC_EXC_CURRENT_500uA,
Vkadaba 5:0728bde67bdb 256 /*!< 500uA excitation current enabled */
Vkadaba 5:0728bde67bdb 257 ADMW1001_ADC_EXC_CURRENT_1000uA,
Vkadaba 5:0728bde67bdb 258 /*!< 1mA excitation current enabled */
Vkadaba 8:2f2775c34640 259
Vkadaba 8:2f2775c34640 260 } ADMW1001_ADC_EXC_CURRENT;
Vkadaba 5:0728bde67bdb 261
Vkadaba 5:0728bde67bdb 262 /*! ADMW1001 analog sensor excitation current ratios used for diode sensor
Vkadaba 5:0728bde67bdb 263 *
Vkadaba 5:0728bde67bdb 264 * @note applicable only to a diode sensor
Vkadaba 5:0728bde67bdb 265 */
Vkadaba 8:2f2775c34640 266 typedef enum
Vkadaba 8:2f2775c34640 267 {
Vkadaba 6:9d393a9677f4 268 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_10UA_100UA = 0,
Vkadaba 6:9d393a9677f4 269 /**< 2 Current measurement 10uA 100uA */
Vkadaba 6:9d393a9677f4 270 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_20UA_160UA,
Vkadaba 6:9d393a9677f4 271 /**< 2 Current measurement 20uA 160uA */
Vkadaba 6:9d393a9677f4 272 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_50UA_300UA,
Vkadaba 6:9d393a9677f4 273 /**< 2 Current measurement 50uA 300uA */
Vkadaba 6:9d393a9677f4 274 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_100UA_600UA,
Vkadaba 6:9d393a9677f4 275 /**< 2 Current measurement 100uA 600uA */
Vkadaba 6:9d393a9677f4 276 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_10UA_50UA_100UA,
Vkadaba 6:9d393a9677f4 277 /**< 3 current measuremetn 10uA 50uA 100uA */
Vkadaba 6:9d393a9677f4 278 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_20UA_100UA_160UA,
Vkadaba 6:9d393a9677f4 279 /**< 3 current measuremetn 20uA 100uA 160uA */
Vkadaba 6:9d393a9677f4 280 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_50UA_150UA_300UA,
Vkadaba 6:9d393a9677f4 281 /**< 3 current measuremetn 50uA 150uA 300uA */
Vkadaba 6:9d393a9677f4 282 ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_100UA_300UA_600UA,
Vkadaba 6:9d393a9677f4 283 /**< 3 current measuremetn 100uA 300uA 600uA */
Vkadaba 8:2f2775c34640 284
Vkadaba 8:2f2775c34640 285 } ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO;
Vkadaba 5:0728bde67bdb 286
Vkadaba 5:0728bde67bdb 287 /*! ADMW1001 analog reference selection options
Vkadaba 5:0728bde67bdb 288 *
Vkadaba 5:0728bde67bdb 289 * @note applicable only to ADC analog sensor channels, and
Vkadaba 5:0728bde67bdb 290 * specific sensor types
Vkadaba 5:0728bde67bdb 291 */
Vkadaba 8:2f2775c34640 292 typedef enum
Vkadaba 8:2f2775c34640 293 {
Vkadaba 8:2f2775c34640 294 ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL = 0,
Vkadaba 8:2f2775c34640 295 /*!< Internal VRef - 1.2V */
Vkadaba 8:2f2775c34640 296 ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
Vkadaba 8:2f2775c34640 297 /*!< External reference voltage #1 */
Vkadaba 8:2f2775c34640 298 ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_2,
Vkadaba 8:2f2775c34640 299 /*!< External reference voltage #2 */
Vkadaba 5:0728bde67bdb 300 ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
Vkadaba 5:0728bde67bdb 301 /*!< Analag Supply Voltage AVDD reference (typically 3.3V) is selected */
Vkadaba 5:0728bde67bdb 302
Vkadaba 8:2f2775c34640 303 } ADMW1001_ADC_REFERENCE_TYPE;
Vkadaba 5:0728bde67bdb 304
Vkadaba 6:9d393a9677f4 305 /*! ADMW1001 ADC Reference configuration
Vkadaba 6:9d393a9677f4 306 *
Vkadaba 6:9d393a9677f4 307 * @note applicable only to ADC analog sensor channels
Vkadaba 6:9d393a9677f4 308 */
Vkadaba 8:2f2775c34640 309 typedef enum
Vkadaba 8:2f2775c34640 310 {
Vkadaba 6:9d393a9677f4 311 ADMW1001_ADC_GND_SW_OPEN = 0,
Vkadaba 6:9d393a9677f4 312 /*!< Ground switch not enabled for measurement. */
Vkadaba 6:9d393a9677f4 313 ADMW1001_ADC_GND_SW_CLOSED,
Vkadaba 8:2f2775c34640 314 /*!< Ground switch enabled for measurement. */
Vkadaba 8:2f2775c34640 315
Vkadaba 8:2f2775c34640 316 } ADMW1001_ADC_GND_SW;
Vkadaba 8:2f2775c34640 317
Vkadaba 8:2f2775c34640 318 /*! ADMW1001 analog filter chop mode
Vkadaba 8:2f2775c34640 319 *
Vkadaba 8:2f2775c34640 320 * @note applicable only to ADC analog sensor channels
Vkadaba 8:2f2775c34640 321 */
Vkadaba 8:2f2775c34640 322 typedef enum
Vkadaba 8:2f2775c34640 323 {
Vkadaba 8:2f2775c34640 324 ADMW1001_CHOP_MD_NONE = 0,
Vkadaba 8:2f2775c34640 325 /*!< No chop performed. */
Vkadaba 8:2f2775c34640 326 ADMW1001_CHOP_MD_HW,
Vkadaba 8:2f2775c34640 327 /*!< Hardware only chop performed. */
Vkadaba 8:2f2775c34640 328 ADMW1001_CHOP_MD_SW,
Vkadaba 8:2f2775c34640 329 /*!< Software only chop performed. */
Vkadaba 8:2f2775c34640 330 ADMW1001_CHOP_MD_HWSW,
Vkadaba 8:2f2775c34640 331 /*!< Hardware and software chop performed. */
Vkadaba 8:2f2775c34640 332
Vkadaba 8:2f2775c34640 333 } ADMW1001_CHOP_MD;
Vkadaba 6:9d393a9677f4 334
Vkadaba 5:0728bde67bdb 335 /*! ADMW1001 analog filter selection options
Vkadaba 5:0728bde67bdb 336 *
Vkadaba 5:0728bde67bdb 337 * @note applicable only to ADC analog sensor channels
Vkadaba 5:0728bde67bdb 338 */
Vkadaba 8:2f2775c34640 339 typedef enum
Vkadaba 8:2f2775c34640 340 {
Vkadaba 6:9d393a9677f4 341 ADMW1001_ADC_FILTER_SINC4 = 0,
Vkadaba 8:2f2775c34640 342 /*!< SINC4 - 4th order sinc response filter */
Vkadaba 6:9d393a9677f4 343 ADMW1001_ADC_FILTER_SINC3,
Vkadaba 8:2f2775c34640 344 /*!< SINC3 - 3rd order sinc response filter */
Vkadaba 8:2f2775c34640 345
Vkadaba 8:2f2775c34640 346 } ADMW1001_ADC_FILTER_TYPE;
Vkadaba 8:2f2775c34640 347
Vkadaba 8:2f2775c34640 348 /*! ADMW1001 Sinc Filter range (SF)
Vkadaba 8:2f2775c34640 349 *
Vkadaba 8:2f2775c34640 350 * @note applicable only to ADC analog sensor channels
Vkadaba 8:2f2775c34640 351 * @note SF must be set in conjunction with chop mode
Vkadaba 8:2f2775c34640 352 * and sinc filter type to achieve the desired sampling rate.
Vkadaba 8:2f2775c34640 353 */
Vkadaba 8:2f2775c34640 354 typedef enum
Vkadaba 8:2f2775c34640 355 {
Vkadaba 8:2f2775c34640 356 ADMW1001_SF_976HZ = 0,
Vkadaba 8:2f2775c34640 357 /*!< SF setting for 976Hz sample rate. */
Vkadaba 8:2f2775c34640 358 ADMW1001_SF_488HZ = 1,
Vkadaba 8:2f2775c34640 359 /*!< SF setting for 488Hz sample rate. */
Vkadaba 8:2f2775c34640 360 ADMW1001_SF_244HZ = 3,
Vkadaba 8:2f2775c34640 361 /*!< SF setting for 244Hz sample rate. */
Vkadaba 8:2f2775c34640 362 ADMW1001_SF_122HZ = 7,
Vkadaba 8:2f2775c34640 363 /*!< SF setting for 122Hz sample rate. */
Vkadaba 8:2f2775c34640 364 ADMW1001_SF_61HZ = 31,
Vkadaba 8:2f2775c34640 365 /*!< SF setting for 61Hz sample rate. */
Vkadaba 8:2f2775c34640 366 ADMW1001_SF_30P5HZ = 51,
Vkadaba 8:2f2775c34640 367 /*!< SF setting for 61Hz sample rate. */
Vkadaba 8:2f2775c34640 368 ADMW1001_SF_10HZ = 124,
Vkadaba 8:2f2775c34640 369 /*!< SF setting for 10Hz sample rate. */
Vkadaba 8:2f2775c34640 370 ADMW1001_SF_8P24HZ = 125,
Vkadaba 8:2f2775c34640 371 /*!< SF setting for 8.24Hz sample rate. */
Vkadaba 8:2f2775c34640 372 ADMW1001_SF_5HZ = 127,
Vkadaba 8:2f2775c34640 373 /*!< SF setting for 5Hz sample rate. */
Vkadaba 8:2f2775c34640 374
Vkadaba 8:2f2775c34640 375 } ADMW1001_SINC_FILTER_RANGE;
Vkadaba 5:0728bde67bdb 376
Vkadaba 5:0728bde67bdb 377 /*! ADMW1001 I2C clock speed options
Vkadaba 5:0728bde67bdb 378 *
Vkadaba 5:0728bde67bdb 379 * @note applicable only for I2C sensors
Vkadaba 5:0728bde67bdb 380 */
Vkadaba 5:0728bde67bdb 381 typedef enum
Vkadaba 5:0728bde67bdb 382 {
Vkadaba 8:2f2775c34640 383 ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0,
Vkadaba 5:0728bde67bdb 384 /*!< 100kHz I2C clock speed */
Vkadaba 8:2f2775c34640 385 ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K,
Vkadaba 5:0728bde67bdb 386 /*!< 400kHz I2C clock speed */
Vkadaba 8:2f2775c34640 387
Vkadaba 8:2f2775c34640 388 } ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED;
Vkadaba 5:0728bde67bdb 389
Vkadaba 5:0728bde67bdb 390 /*! ADMW1001 SPI mode options
Vkadaba 5:0728bde67bdb 391 *
Vkadaba 5:0728bde67bdb 392 * @note applicable only for SPI sensors
Vkadaba 5:0728bde67bdb 393 */
Vkadaba 5:0728bde67bdb 394 typedef enum
Vkadaba 5:0728bde67bdb 395 {
Vkadaba 8:2f2775c34640 396 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0,
Vkadaba 5:0728bde67bdb 397 /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 0 */
Vkadaba 8:2f2775c34640 398 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1,
Vkadaba 5:0728bde67bdb 399 /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 1 */
Vkadaba 8:2f2775c34640 400 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_2,
Vkadaba 5:0728bde67bdb 401 /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 0 */
Vkadaba 8:2f2775c34640 402 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_3,
Vkadaba 5:0728bde67bdb 403 /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 1 */
Vkadaba 8:2f2775c34640 404
Vkadaba 8:2f2775c34640 405 } ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE;
Vkadaba 5:0728bde67bdb 406
Vkadaba 5:0728bde67bdb 407 /*! ADMW1001 SPI clock speed options
Vkadaba 5:0728bde67bdb 408 *
Vkadaba 5:0728bde67bdb 409 * @note applicable only for SPI sensors
Vkadaba 5:0728bde67bdb 410 */
Vkadaba 5:0728bde67bdb 411 typedef enum
Vkadaba 5:0728bde67bdb 412 {
Vkadaba 8:2f2775c34640 413 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_8MHZ = 0,
Vkadaba 8:2f2775c34640 414 /*!< SPI Clock Speed configured to 8MHz */
Vkadaba 8:2f2775c34640 415 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_4MHZ,
Vkadaba 8:2f2775c34640 416 /*!< SPI Clock Speed configured to 4MHz */
Vkadaba 8:2f2775c34640 417 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_2MHZ,
Vkadaba 8:2f2775c34640 418 /*!< SPI Clock Speed configured to 2MHz */
Vkadaba 8:2f2775c34640 419 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1MHZ,
Vkadaba 8:2f2775c34640 420 /*!< SPI Clock Speed configured to 1MHz */
Vkadaba 8:2f2775c34640 421 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_500KHZ,
Vkadaba 8:2f2775c34640 422 /*!< SPI Clock Speed configured to 500kHz */
Vkadaba 8:2f2775c34640 423 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_250KHZ,
Vkadaba 8:2f2775c34640 424 /*!< SPI Clock Speed configured to 250kHz */
Vkadaba 8:2f2775c34640 425 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_125KHZ,
Vkadaba 8:2f2775c34640 426 /*!< SPI Clock Speed configured to 125kHz */
Vkadaba 8:2f2775c34640 427 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_62P5KHZ,
Vkadaba 8:2f2775c34640 428 /*!< SPI Clock Speed configured to 62.5kHz */
Vkadaba 8:2f2775c34640 429 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_31P3KHZ,
Vkadaba 8:2f2775c34640 430 /*!< SPI Clock Speed configured to 31.3kHz */
Vkadaba 8:2f2775c34640 431 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_15P6KHZ,
Vkadaba 8:2f2775c34640 432 /*!< SPI Clock Speed configured to 15.6kHz */
Vkadaba 8:2f2775c34640 433 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_7P8KHZ,
Vkadaba 8:2f2775c34640 434 /*!< SPI Clock Speed configured to 7.8kHz */
Vkadaba 8:2f2775c34640 435 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3P9KHZ,
Vkadaba 8:2f2775c34640 436 /*!< SPI Clock Speed configured to 3.9kHz */
Vkadaba 8:2f2775c34640 437 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1P9KHZ,
Vkadaba 8:2f2775c34640 438 /*!< SPI Clock Speed configured to 1.9kHz */
Vkadaba 8:2f2775c34640 439 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_977HZ,
Vkadaba 8:2f2775c34640 440 /*!< SPI Clock Speed configured to 977Hz */
Vkadaba 8:2f2775c34640 441 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_488HZ,
Vkadaba 8:2f2775c34640 442 /*!< SPI Clock Speed configured to 488Hz */
Vkadaba 8:2f2775c34640 443 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_244HZ,
Vkadaba 8:2f2775c34640 444 /*!< SPI Clock Speed configured to 244Hz */
Vkadaba 8:2f2775c34640 445
Vkadaba 8:2f2775c34640 446 } ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK;
Vkadaba 5:0728bde67bdb 447
Vkadaba 5:0728bde67bdb 448 /*! ADMW1001 Power Configuration options */
Vkadaba 8:2f2775c34640 449 typedef struct
Vkadaba 8:2f2775c34640 450 {
Vkadaba 5:0728bde67bdb 451 ADMW1001_POWER_MODE powerMode;
Vkadaba 5:0728bde67bdb 452 /*!< Power mode selection */
Vkadaba 8:2f2775c34640 453
Vkadaba 8:2f2775c34640 454 } ADMW1001_POWER_CONFIG;
Vkadaba 5:0728bde67bdb 455
Vkadaba 5:0728bde67bdb 456 /*! ADMW1001 Multi-Cycle Configuration options
Vkadaba 5:0728bde67bdb 457 *
Vkadaba 5:0728bde67bdb 458 * @note required only when ADMW1001_OPERATING_MODE_MULTICYCLE is selected
Vkadaba 5:0728bde67bdb 459 * as the operatingMode (@ref ADMW1001_MEASUREMENT_CONFIG)
Vkadaba 5:0728bde67bdb 460 */
Vkadaba 8:2f2775c34640 461 typedef struct
Vkadaba 8:2f2775c34640 462 {
Vkadaba 8:2f2775c34640 463 uint32_t cyclesPerBurst;
Vkadaba 5:0728bde67bdb 464 /*!< Number of cycles to complete for a single burst */
Vkadaba 8:2f2775c34640 465 uint32_t burstInterval;
Vkadaba 5:0728bde67bdb 466 /*!< Interval, in seconds, between each successive burst of cycles */
Vkadaba 8:2f2775c34640 467
Vkadaba 8:2f2775c34640 468 } ADMW1001_MULTICYCLE_CONFIG;
Vkadaba 5:0728bde67bdb 469
Vkadaba 5:0728bde67bdb 470 /*! ADMW1001 Measurement Configuration options */
Vkadaba 8:2f2775c34640 471 typedef struct
Vkadaba 8:2f2775c34640 472 {
Vkadaba 5:0728bde67bdb 473 ADMW1001_OPERATING_MODE operatingMode;
Vkadaba 5:0728bde67bdb 474 /*!< Operating mode - specifies how measurement cycles are scheduled */
Vkadaba 5:0728bde67bdb 475 ADMW1001_DATAREADY_MODE dataReadyMode;
Vkadaba 5:0728bde67bdb 476 /*!< Data read mode - specifies how output samples are stored for reading */
Vkadaba 5:0728bde67bdb 477 ADMW1001_MULTICYCLE_CONFIG multiCycleConfig;
Vkadaba 5:0728bde67bdb 478 /*!< Multi-Cycle configuration - specifies how bursts of measurement cycles
Vkadaba 5:0728bde67bdb 479 * are scheduled. Applicable only when operatingMode is
Vkadaba 5:0728bde67bdb 480 * ADMW1001_OPERATING_MODE_MULTICYCLE
Vkadaba 5:0728bde67bdb 481 */
Vkadaba 5:0728bde67bdb 482 ADMW1001_FILTER_SETTLING filterSettling;
Vkadaba 5:0728bde67bdb 483 /*!< Analog filter settling - specifies the policy for settling time
Vkadaba 5:0728bde67bdb 484 * between consecutive measurements from an analog channel in a multi-
Vkadaba 5:0728bde67bdb 485 * channel configuration. Note that, in single analog channel
Vkadaba 5:0728bde67bdb 486 * configurations, settling time is always skipped between consecutive
Vkadaba 5:0728bde67bdb 487 * measurements in a measurement cycle.
Vkadaba 5:0728bde67bdb 488 */
Vkadaba 8:2f2775c34640 489 uint8_t reserved0[3];
Vkadaba 8:2f2775c34640 490 /*!< Reserved for future use and ensure word alignment.
Vkadaba 8:2f2775c34640 491 */
Vkadaba 8:2f2775c34640 492 uint32_t cycleInterval;
Vkadaba 8:2f2775c34640 493 /*!< Cycle interval - specifies the time interval between the start of each
Vkadaba 8:2f2775c34640 494 * successive measurement cycle. Applicable only when operatingMode is
Vkadaba 8:2f2775c34640 495 * not ADMW1001_OPERATING_MODE_SINGLECYCLE
Vkadaba 8:2f2775c34640 496 */
Vkadaba 8:2f2775c34640 497 bool vBiasEnable;
Vkadaba 8:2f2775c34640 498 /*!< Enable voltage Bias output of ADC
Vkadaba 8:2f2775c34640 499 */
Vkadaba 8:2f2775c34640 500 float32_t externalRef1Value;
Vkadaba 8:2f2775c34640 501 /*!< Voltage value connected to external reference input #1.
Vkadaba 5:0728bde67bdb 502 * Applicable only if the selected reference type is
Vkadaba 8:2f2775c34640 503 * voltage.
Vkadaba 5:0728bde67bdb 504 * (see @ref ADMW1001_ADC_REFERENCE_TYPE)
diazdgeorge 31:38f9097982c7 505 */
diazdgeorge 31:38f9097982c7 506 float32_t RSenseValue;
diazdgeorge 31:38f9097982c7 507 /*!< Sense resistor value in Ohms. */
diazdgeorge 31:38f9097982c7 508 uint32_t reserved1[3];
Vkadaba 8:2f2775c34640 509 /*!< Reserved for future use and ensure word alignment.
Vkadaba 8:2f2775c34640 510 */
Vkadaba 8:2f2775c34640 511
Vkadaba 8:2f2775c34640 512 } ADMW1001_MEASUREMENT_CONFIG;
Vkadaba 5:0728bde67bdb 513
Vkadaba 5:0728bde67bdb 514 /*! ADMW1001 ADC Excitation Current output configuration
Vkadaba 5:0728bde67bdb 515 *
Vkadaba 5:0728bde67bdb 516 * @note applicable only to ADC analog sensor channels, and
Vkadaba 5:0728bde67bdb 517 * specific sensor types
Vkadaba 5:0728bde67bdb 518 */
Vkadaba 8:2f2775c34640 519 typedef struct
Vkadaba 8:2f2775c34640 520 {
Vkadaba 6:9d393a9677f4 521 ADMW1001_ADC_EXC_STATE excitationState;
Vkadaba 6:9d393a9677f4 522 /*!< Excitation current state */
Vkadaba 5:0728bde67bdb 523 ADMW1001_ADC_EXC_CURRENT outputLevel;
Vkadaba 5:0728bde67bdb 524 /*!< Excitation current output level */
Vkadaba 5:0728bde67bdb 525 ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO diodeRatio;
Vkadaba 5:0728bde67bdb 526 /*!< Excitation current output diode ratio */
Vkadaba 8:2f2775c34640 527
Vkadaba 8:2f2775c34640 528 } ADMW1001_ADC_EXC_CURRENT_CONFIG;
Vkadaba 5:0728bde67bdb 529
Vkadaba 5:0728bde67bdb 530 /*! ADMW1001 ADC Filter configuration
Vkadaba 5:0728bde67bdb 531 *
Vkadaba 5:0728bde67bdb 532 * @note applicable only to ADC analog sensor channels
Vkadaba 5:0728bde67bdb 533 */
Vkadaba 8:2f2775c34640 534 typedef struct
Vkadaba 8:2f2775c34640 535 {
Vkadaba 8:2f2775c34640 536 ADMW1001_ADC_FILTER_TYPE type;
Vkadaba 5:0728bde67bdb 537 /*!< Filter type selection */
Vkadaba 8:2f2775c34640 538 ADMW1001_SINC_FILTER_RANGE sf;
Vkadaba 8:2f2775c34640 539 /*!< SF value used along with filter type and chop mode to determine speed */
Vkadaba 17:2f0028880874 540 ADMW1001_CHOP_MD chopMode;
Vkadaba 6:9d393a9677f4 541 /*!< Enable filter chop */
Vkadaba 8:2f2775c34640 542 bool notch1p2;
Vkadaba 6:9d393a9677f4 543 /*!< Enable Notch 2 Filter Mode */
Vkadaba 8:2f2775c34640 544 ADMW1001_ADC_GND_SW groundSwitch;
Vkadaba 6:9d393a9677f4 545 /*!< Option to open or close sensor ground switch */
Vkadaba 5:0728bde67bdb 546
Vkadaba 8:2f2775c34640 547 } ADMW1001_ADC_FILTER_CONFIG;
Vkadaba 5:0728bde67bdb 548
Vkadaba 5:0728bde67bdb 549 /*! ADMW1001 ADC analog channel configuration details
Vkadaba 5:0728bde67bdb 550 *
Vkadaba 5:0728bde67bdb 551 * @note applicable only to ADC analog sensor channels
Vkadaba 5:0728bde67bdb 552 */
Vkadaba 8:2f2775c34640 553 typedef struct
Vkadaba 8:2f2775c34640 554 {
Vkadaba 5:0728bde67bdb 555 ADMW1001_ADC_SENSOR_TYPE sensor;
Vkadaba 5:0728bde67bdb 556 /*!< Sensor type selection */
Vkadaba 6:9d393a9677f4 557 ADMW1001_ADC_RTD_CURVE rtdCurve;
Vkadaba 6:9d393a9677f4 558 /*!< Rtd curve selection */
Vkadaba 5:0728bde67bdb 559 ADMW1001_ADC_GAIN gain;
Vkadaba 5:0728bde67bdb 560 /*!< ADC Gain selection */
Vkadaba 5:0728bde67bdb 561 ADMW1001_ADC_EXC_CURRENT_CONFIG current;
Vkadaba 5:0728bde67bdb 562 /*!< ADC Excitation Current configuration */
Vkadaba 5:0728bde67bdb 563 ADMW1001_ADC_FILTER_CONFIG filter;
Vkadaba 5:0728bde67bdb 564 /*!< ADC Filter configuration */
Vkadaba 8:2f2775c34640 565 ADMW1001_ADC_REFERENCE_TYPE reference;
Vkadaba 11:8e6023d2e584 566 bool vBiasEnable;
diazdgeorge 31:38f9097982c7 567 uint8_t bufferBypass;
Vkadaba 5:0728bde67bdb 568 /*!< ADC Reference configuration */
diazdgeorge 31:38f9097982c7 569 uint8_t reserved0[2];
Vkadaba 8:2f2775c34640 570 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 8:2f2775c34640 571 uint32_t reserved1[6];
Vkadaba 8:2f2775c34640 572 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 8:2f2775c34640 573
Vkadaba 8:2f2775c34640 574 } ADMW1001_ADC_CHANNEL_CONFIG;
Vkadaba 8:2f2775c34640 575
Vkadaba 8:2f2775c34640 576 /*! ADMW1001 look-up table selection
Vkadaba 8:2f2775c34640 577 * Select table used to linearise the measurement.
Vkadaba 8:2f2775c34640 578 */
Vkadaba 8:2f2775c34640 579 typedef enum
Vkadaba 8:2f2775c34640 580 {
Vkadaba 8:2f2775c34640 581 ADMW1001_LUT_DEFAULT = 0,
Vkadaba 8:2f2775c34640 582 /*!< Default LUT */
Vkadaba 8:2f2775c34640 583 ADMW1001_LUT_UNITY = 1,
Vkadaba 8:2f2775c34640 584 /*!< Unity LUT */
Vkadaba 8:2f2775c34640 585 ADMW1001_LUT_CUSTOM = 2,
Vkadaba 8:2f2775c34640 586 /*!< User defined custom LUT */
Vkadaba 8:2f2775c34640 587 ADMW1001_LUT_RESERVED = 3,
Vkadaba 8:2f2775c34640 588 /*!< Reserved for future use */
Vkadaba 8:2f2775c34640 589
Vkadaba 8:2f2775c34640 590 } ADMW1001_LUT_SELECT;
Vkadaba 5:0728bde67bdb 591
Vkadaba 5:0728bde67bdb 592 /*! ADMW1001 digital sensor data encoding
Vkadaba 5:0728bde67bdb 593 *
Vkadaba 5:0728bde67bdb 594 * @note applicable only to SPI and I2C digital sensor channels
Vkadaba 5:0728bde67bdb 595 */
Vkadaba 5:0728bde67bdb 596 typedef enum
Vkadaba 5:0728bde67bdb 597 {
Vkadaba 8:2f2775c34640 598 ADMW1001_DIGITAL_SENSOR_DATA_CODING_NONE = 0,
Vkadaba 5:0728bde67bdb 599 /**< None/Invalid - data format is ignored if coding is set to this value */
Vkadaba 5:0728bde67bdb 600 ADMW1001_DIGITAL_SENSOR_DATA_CODING_UNIPOLAR,
Vkadaba 5:0728bde67bdb 601 /**< Unipolar - unsigned integer values */
Vkadaba 5:0728bde67bdb 602 ADMW1001_DIGITAL_SENSOR_DATA_CODING_TWOS_COMPLEMENT,
Vkadaba 5:0728bde67bdb 603 /**< Twos-complement - signed integer values */
Vkadaba 5:0728bde67bdb 604 ADMW1001_DIGITAL_SENSOR_DATA_CODING_OFFSET_BINARY,
Vkadaba 5:0728bde67bdb 605 /**< Offset Binary - used to represent signed values with unsigned integers,
Vkadaba 5:0728bde67bdb 606 * with the mid-range value representing 0 */
Vkadaba 8:2f2775c34640 607
Vkadaba 8:2f2775c34640 608 } ADMW1001_DIGITAL_SENSOR_DATA_CODING;
Vkadaba 5:0728bde67bdb 609
Vkadaba 5:0728bde67bdb 610 /*! ADMW1001 digital sensor data format configuration
Vkadaba 5:0728bde67bdb 611 *
Vkadaba 5:0728bde67bdb 612 * @note applicable only to SPI and I2C digital sensor channels
Vkadaba 5:0728bde67bdb 613 */
Vkadaba 8:2f2775c34640 614 typedef struct
Vkadaba 8:2f2775c34640 615 {
Vkadaba 5:0728bde67bdb 616 ADMW1001_DIGITAL_SENSOR_DATA_CODING coding;
Vkadaba 5:0728bde67bdb 617 /**< Data Encoding of Sensor Result */
Vkadaba 5:0728bde67bdb 618 bool littleEndian;
Vkadaba 5:0728bde67bdb 619 /**< Set as true if data format is little-endian, false otherwise */
Vkadaba 5:0728bde67bdb 620 bool leftJustified;
Vkadaba 5:0728bde67bdb 621 /**< Set as true if data is left-justified in the data frame, false otherwise */
Vkadaba 5:0728bde67bdb 622 uint8_t frameLength;
Vkadaba 5:0728bde67bdb 623 /**< Data frame length (number of bytes to read from the sensor) */
Vkadaba 5:0728bde67bdb 624 uint8_t numDataBits;
Vkadaba 5:0728bde67bdb 625 /**< Number of relevant data bits to extract from the data frame */
Vkadaba 5:0728bde67bdb 626 uint8_t bitOffset;
Vkadaba 5:0728bde67bdb 627 /**< Data bit offset, relative to data alignment within the data frame */
Vkadaba 8:2f2775c34640 628 uint8_t reserved[2];
Vkadaba 8:2f2775c34640 629 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 8:2f2775c34640 630
Vkadaba 8:2f2775c34640 631 } ADMW1001_DIGITAL_SENSOR_DATA_FORMAT;
Vkadaba 5:0728bde67bdb 632
Vkadaba 5:0728bde67bdb 633 /*! ADMW1001 digital sensor command
Vkadaba 5:0728bde67bdb 634 *
Vkadaba 5:0728bde67bdb 635 * @note applicable only to SPI and I2C digital sensor channels
Vkadaba 5:0728bde67bdb 636 */
Vkadaba 8:2f2775c34640 637 typedef struct
Vkadaba 8:2f2775c34640 638 {
Vkadaba 5:0728bde67bdb 639 uint8_t command[ADMW1001_SENSOR_COMMAND_MAX_LENGTH];
Vkadaba 5:0728bde67bdb 640 /*!< Optional command bytes to send to the device */
Vkadaba 5:0728bde67bdb 641 uint8_t commandLength;
Vkadaba 5:0728bde67bdb 642 /*!< Number of valid command bytes. Set to 0 if unused */
Vkadaba 8:2f2775c34640 643
Vkadaba 8:2f2775c34640 644 } ADMW1001_DIGITAL_SENSOR_COMMAND;
Vkadaba 5:0728bde67bdb 645
Vkadaba 5:0728bde67bdb 646 /*! ADMW1001 digital sensor calibration param
Vkadaba 5:0728bde67bdb 647 *
Vkadaba 5:0728bde67bdb 648 * @note applicable only to digital sensor channels
Vkadaba 5:0728bde67bdb 649 */
Vkadaba 8:2f2775c34640 650 typedef struct
Vkadaba 8:2f2775c34640 651 {
Vkadaba 5:0728bde67bdb 652 uint32_t calibrationParam;
Vkadaba 5:0728bde67bdb 653 /*!< Independently established environmental variable used during calibration
Vkadaba 5:0728bde67bdb 654 * of a digital sensor. Used only if the sensor supports calibration
Vkadaba 5:0728bde67bdb 655 * and expects an environmental parameter
Vkadaba 5:0728bde67bdb 656 */
Vkadaba 5:0728bde67bdb 657 bool enableCalibrationParam;
Vkadaba 5:0728bde67bdb 658 /*!< Allow Calibration_Parameter to be used during calibration of any digital sensor */
Vkadaba 8:2f2775c34640 659 uint8_t reserved[3];
Vkadaba 8:2f2775c34640 660 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 8:2f2775c34640 661
Vkadaba 8:2f2775c34640 662 } ADMW1001_DIGITAL_CALIBRATION_COMMAND;
Vkadaba 5:0728bde67bdb 663
Vkadaba 5:0728bde67bdb 664 /*! ADMW1001 digital sensor communication config
Vkadaba 5:0728bde67bdb 665 *
Vkadaba 5:0728bde67bdb 666 * @note applicable only to digital sensor channels
Vkadaba 5:0728bde67bdb 667 */
Vkadaba 8:2f2775c34640 668 typedef struct
Vkadaba 8:2f2775c34640 669 {
Vkadaba 8:2f2775c34640 670 bool useCustomCommsConfig;
Vkadaba 5:0728bde67bdb 671 /*!< Optional parameter to enable user digital communication settings */
Vkadaba 8:2f2775c34640 672 ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED i2cClockSpeed;
Vkadaba 5:0728bde67bdb 673 /*!< Optional parameter to configure specific i2c speed for i2c sensor */
Vkadaba 8:2f2775c34640 674 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE spiMode;
Vkadaba 5:0728bde67bdb 675 /*!< Optional parameter to configure specific spi mode for spi sensor */
Vkadaba 8:2f2775c34640 676 ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK spiClock;
Vkadaba 5:0728bde67bdb 677 /*!< Optional parameter to configure specific spi clock for spi sensor */
Vkadaba 8:2f2775c34640 678
Vkadaba 8:2f2775c34640 679 } ADMW1001_DIGITAL_SENSOR_COMMS;
Vkadaba 5:0728bde67bdb 680
Vkadaba 5:0728bde67bdb 681 /*! ADMW1001 I2C digital channel configuration details
Vkadaba 5:0728bde67bdb 682 *
Vkadaba 5:0728bde67bdb 683 * @note applicable only to I2C digital sensor channels
Vkadaba 5:0728bde67bdb 684 */
Vkadaba 8:2f2775c34640 685 typedef struct
Vkadaba 8:2f2775c34640 686 {
Vkadaba 8:2f2775c34640 687 ADMW1001_I2C_SENSOR_TYPE sensor;
Vkadaba 5:0728bde67bdb 688 /*!< Sensor type selection */
Vkadaba 8:2f2775c34640 689 uint8_t deviceAddress;
Vkadaba 5:0728bde67bdb 690 /*!< I2C device address (7-bit) */
Vkadaba 8:2f2775c34640 691 uint8_t reserved;
Vkadaba 8:2f2775c34640 692 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 8:2f2775c34640 693 ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand;
Vkadaba 5:0728bde67bdb 694 /*!< Optional configuration command to send to the device at start-up.
Vkadaba 5:0728bde67bdb 695 * A default configuration command will be used if this is not specified.
Vkadaba 5:0728bde67bdb 696 * Applicable only to specific I2C sensor types.
Vkadaba 5:0728bde67bdb 697 */
Vkadaba 8:2f2775c34640 698 ADMW1001_DIGITAL_SENSOR_COMMAND dataRequestCommand;
Vkadaba 5:0728bde67bdb 699 /*!< Optional data request command to send to the device for each sample.
Vkadaba 5:0728bde67bdb 700 * A default data request command will be used if this is not specified.
Vkadaba 5:0728bde67bdb 701 * Applicable only to specific I2C sensor types.
Vkadaba 5:0728bde67bdb 702 */
Vkadaba 8:2f2775c34640 703 ADMW1001_DIGITAL_SENSOR_DATA_FORMAT dataFormat;
Vkadaba 5:0728bde67bdb 704 /*!< Optional data format configuration to parse/extract data from the device.
Vkadaba 5:0728bde67bdb 705 * A default data format will be used if this is not specified.
Vkadaba 5:0728bde67bdb 706 * Applicable only to specific I2C sensor types
Vkadaba 5:0728bde67bdb 707 */
Vkadaba 8:2f2775c34640 708 ADMW1001_DIGITAL_CALIBRATION_COMMAND digitalCalibrationParam;
Vkadaba 5:0728bde67bdb 709 /*!< This is used to supply an independently established environmental variable
Vkadaba 5:0728bde67bdb 710 * that must be used during calibration of a [digital] sensor which a)
Vkadaba 5:0728bde67bdb 711 * supports calibration and b) expects an environmental parameter.
Vkadaba 5:0728bde67bdb 712 * An example is a CO2 sensor, which may require the CO2 concentration level
Vkadaba 5:0728bde67bdb 713 * when performing a calibration
Vkadaba 5:0728bde67bdb 714 */
Vkadaba 8:2f2775c34640 715 ADMW1001_DIGITAL_SENSOR_COMMS configureComms;
Vkadaba 5:0728bde67bdb 716 /*!< Optional configuration to setup a user communication config.
Vkadaba 5:0728bde67bdb 717 * A default configuration will be used if this is not specified.
Vkadaba 5:0728bde67bdb 718 * Applicable only to specific I2C sensor types.
Vkadaba 5:0728bde67bdb 719 */
Vkadaba 8:2f2775c34640 720
Vkadaba 8:2f2775c34640 721 } ADMW1001_I2C_CHANNEL_CONFIG;
Vkadaba 5:0728bde67bdb 722
Vkadaba 5:0728bde67bdb 723 /*! ADMW1001 SPI digital channel configuration details
Vkadaba 5:0728bde67bdb 724 *
Vkadaba 5:0728bde67bdb 725 * @note applicable only to SPI digital sensor channels
Vkadaba 5:0728bde67bdb 726 */
Vkadaba 8:2f2775c34640 727 typedef struct
Vkadaba 8:2f2775c34640 728 {
Vkadaba 5:0728bde67bdb 729 ADMW1001_SPI_SENSOR_TYPE sensor;
Vkadaba 5:0728bde67bdb 730 /*!< Sensor type selection */
Vkadaba 8:2f2775c34640 731 uint8_t reserved[2];
Vkadaba 8:2f2775c34640 732 /*!< Reserved for future use and ensure word alignment. */
Vkadaba 5:0728bde67bdb 733 ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand;
Vkadaba 5:0728bde67bdb 734 /*!< Optional configuration command to send to the device at start-up.
Vkadaba 5:0728bde67bdb 735 * A default configuration command will be used if this is not specified.
Vkadaba 5:0728bde67bdb 736 * Applicable only to specific SPI sensor types.
Vkadaba 5:0728bde67bdb 737 */
Vkadaba 5:0728bde67bdb 738 ADMW1001_DIGITAL_SENSOR_COMMAND dataRequestCommand;
Vkadaba 5:0728bde67bdb 739 /*!< Optional data request command to send to the device for each sample.
Vkadaba 5:0728bde67bdb 740 * A default data request command will be used if this is not specified.
Vkadaba 5:0728bde67bdb 741 * Applicable only to specific SPI sensor types.
Vkadaba 5:0728bde67bdb 742 */
Vkadaba 5:0728bde67bdb 743 ADMW1001_DIGITAL_SENSOR_DATA_FORMAT dataFormat;
Vkadaba 5:0728bde67bdb 744 /*!< Optional data format configuration to parse/extract data from the device.
Vkadaba 5:0728bde67bdb 745 * A default data format will be used if this is not specified.
Vkadaba 5:0728bde67bdb 746 * Applicable only to specific SPI sensor types
Vkadaba 5:0728bde67bdb 747 */
Vkadaba 5:0728bde67bdb 748 ADMW1001_DIGITAL_CALIBRATION_COMMAND digitalCalibrationParam;
Vkadaba 5:0728bde67bdb 749 /*!< This is used to supply an independently established environmental variable
Vkadaba 5:0728bde67bdb 750 * that must be used during calibration of a [digital] sensor which a)
Vkadaba 5:0728bde67bdb 751 * supports calibration and b) expects an environmental parameter.
Vkadaba 5:0728bde67bdb 752 * An example is a CO2 sensor, which may require the CO2 concentration level
Vkadaba 5:0728bde67bdb 753 * when performing a calibration
Vkadaba 5:0728bde67bdb 754 */
Vkadaba 8:2f2775c34640 755 ADMW1001_DIGITAL_SENSOR_COMMS configureComms;
Vkadaba 5:0728bde67bdb 756 /*!< Optional configuration to setup a user communication config.
Vkadaba 5:0728bde67bdb 757 * A default configuration will be used if this is not specified.
Vkadaba 5:0728bde67bdb 758 * Applicable only to specific SPI sensor types.
Vkadaba 5:0728bde67bdb 759 */
Vkadaba 5:0728bde67bdb 760
Vkadaba 8:2f2775c34640 761 } ADMW1001_SPI_CHANNEL_CONFIG;
Vkadaba 5:0728bde67bdb 762
Vkadaba 5:0728bde67bdb 763 /*! ADMW1001 Measurement Channel configuration details */
Vkadaba 8:2f2775c34640 764 typedef struct
Vkadaba 8:2f2775c34640 765 {
Vkadaba 8:2f2775c34640 766 bool enableChannel;
Vkadaba 5:0728bde67bdb 767 /*!< Option to include this channel in normal measurement cycles */
Vkadaba 8:2f2775c34640 768 bool disablePublishing;
Vkadaba 5:0728bde67bdb 769 /*!< Option to disable publishing of data samples from this channel. The
Vkadaba 5:0728bde67bdb 770 * channel may still be included in measurement cycles, but data samples
Vkadaba 5:0728bde67bdb 771 * obtained from this channel will not be published. This is typically
Vkadaba 5:0728bde67bdb 772 * used for channels which are required only as a compensation reference
Vkadaba 5:0728bde67bdb 773 * for another channel (e.g. Cold-Junction Compensation channels).
Vkadaba 5:0728bde67bdb 774 */
Vkadaba 8:2f2775c34640 775 ADMW1001_CH_ID compensationChannel;
Vkadaba 8:2f2775c34640 776 /*!< Optional compensation channel. Set to ADMW1001_CH_ID_NONE if not
Vkadaba 5:0728bde67bdb 777 * required. Typically used for thermocouple sensors that require a
Vkadaba 5:0728bde67bdb 778 * separate measurement of the "cold-junction" temperature, which can be
Vkadaba 5:0728bde67bdb 779 * be provided by an RTD temperature sensor connected on a separate
Vkadaba 5:0728bde67bdb 780 * "compensation channel" */
Vkadaba 8:2f2775c34640 781 ADMW1001_LUT_SELECT lutSelect;
Vkadaba 8:2f2775c34640 782 /*!<Select Look Up Table LUT for calculations, this implies that the
Vkadaba 5:0728bde67bdb 783 * fundamental measurement for the sensor (typically mV or Ohms)
Vkadaba 8:2f2775c34640 784 * 0 = default, 1= unity, 2 = custom
Vkadaba 5:0728bde67bdb 785 */
Vkadaba 8:2f2775c34640 786 ADMW1001_MEASUREMENT_UNIT measurementUnit;
Vkadaba 5:0728bde67bdb 787 /*!< Optional measurement unit selection for conversion results. Applicable
Vkadaba 5:0728bde67bdb 788 * only for certain sensor types. Set to
Vkadaba 5:0728bde67bdb 789 * ADMW1001_MEASUREMENT_UNIT_DEFAULT if not applicable.
Vkadaba 5:0728bde67bdb 790 */
Vkadaba 8:2f2775c34640 791 float32_t lowThreshold;
Vkadaba 5:0728bde67bdb 792 /*!< Optional minimum threshold value for each processed sample, to be
Vkadaba 5:0728bde67bdb 793 * checked prior to publishing. A channel ALERT condition is raised
Vkadaba 5:0728bde67bdb 794 * if the processed value is lower than this threshold. Set to NaN
Vkadaba 5:0728bde67bdb 795 * if not required.
Vkadaba 5:0728bde67bdb 796 */
Vkadaba 8:2f2775c34640 797 float32_t highThreshold;
Vkadaba 5:0728bde67bdb 798 /*!< Optional maximum threshold value for each processed sample, to be
Vkadaba 5:0728bde67bdb 799 * checked prior to publishing. A channel ALERT condition is raised
Vkadaba 5:0728bde67bdb 800 * if the processed value is higher than this threshold. Set to NaN
Vkadaba 5:0728bde67bdb 801 * if not required.
Vkadaba 5:0728bde67bdb 802 */
Vkadaba 8:2f2775c34640 803 float32_t offsetAdjustment;
Vkadaba 5:0728bde67bdb 804 /*!< Optional offset adjustment value applied to each processed sample.
Vkadaba 5:0728bde67bdb 805 * Set to NaN or 0.0 if not required.
Vkadaba 5:0728bde67bdb 806 */
Vkadaba 8:2f2775c34640 807 float32_t gainAdjustment;
Vkadaba 5:0728bde67bdb 808 /*!< Optional gain adjustment value applied to each processed sample.
Vkadaba 5:0728bde67bdb 809 * Set to NaN or 1.0 if not required.
Vkadaba 5:0728bde67bdb 810 */
Vkadaba 8:2f2775c34640 811 float32_t sensorParameter;
Vkadaba 5:0728bde67bdb 812 /*!< Optional sensor parameter adjustment.
Vkadaba 5:0728bde67bdb 813 * Set to NaN or 0 if not required.
Vkadaba 5:0728bde67bdb 814 */
Vkadaba 8:2f2775c34640 815 uint32_t measurementsPerCycle;
Vkadaba 5:0728bde67bdb 816 /*!< The number of measurements to obtain from this channel within each
Vkadaba 5:0728bde67bdb 817 * cycle. Each enabled channel is measured in turn, until the number of
Vkadaba 5:0728bde67bdb 818 * measurements requested for the channel has been reached. A different
Vkadaba 5:0728bde67bdb 819 * number of measurements-per-cycle may be specified for each channel.
Vkadaba 5:0728bde67bdb 820 */
Vkadaba 8:2f2775c34640 821 uint32_t cycleSkipCount;
Vkadaba 5:0728bde67bdb 822 /*!< Optional number of cycles to skip, such that this channel is included
Vkadaba 5:0728bde67bdb 823 * in the sequence in only one of every (cycleSkipCount + 1) cycles that
Vkadaba 5:0728bde67bdb 824 * occur. If set to 0 (default), this channel is included in every cycle;
Vkadaba 5:0728bde67bdb 825 * if set to 1, this channel is included in every 2nd cycle; if set to 2,
Vkadaba 5:0728bde67bdb 826 * this channel is included in every 3rd cycle, and so on.
Vkadaba 5:0728bde67bdb 827 */
Vkadaba 8:2f2775c34640 828 uint32_t extraSettlingTime;
Vkadaba 5:0728bde67bdb 829 /*!< A minimum settling time is applied internally for each channel, based
Vkadaba 5:0728bde67bdb 830 * on the sensor type. However, additional settling time (microseconds)
Vkadaba 5:0728bde67bdb 831 * can optionally be specified. Set to 0 if not required.
Vkadaba 5:0728bde67bdb 832 */
Vkadaba 8:2f2775c34640 833 ADMW1001_CHANNEL_PRIORITY priority;
Vkadaba 5:0728bde67bdb 834 /*!< By default, channels are arranged in the measurement sequence based on
Vkadaba 5:0728bde67bdb 835 * ascending order of channel ID. However, a priority-level may be
Vkadaba 5:0728bde67bdb 836 * specified per channel to force a different ordering of the channels,
Vkadaba 5:0728bde67bdb 837 * with higher-priority channels appearing before lower-priority channels.
Vkadaba 5:0728bde67bdb 838 * Channels with equal priority are ordered by ascending order of channel
Vkadaba 5:0728bde67bdb 839 * ID. Lower numbers indicate higher priority, with 0 being the highest.
Vkadaba 5:0728bde67bdb 840 * Set to 0 if not required.
Vkadaba 5:0728bde67bdb 841 */
Vkadaba 8:2f2775c34640 842 union
Vkadaba 8:2f2775c34640 843 {
Vkadaba 8:2f2775c34640 844 ADMW1001_ADC_CHANNEL_CONFIG adcChannelConfig;
Vkadaba 5:0728bde67bdb 845 /*!< ADC channel configuration - applicable only to ADC channels */
Vkadaba 8:2f2775c34640 846 ADMW1001_I2C_CHANNEL_CONFIG i2cChannelConfig;
Vkadaba 5:0728bde67bdb 847 /*!< I2C channel configuration - applicable only to I2C channels */
Vkadaba 8:2f2775c34640 848 ADMW1001_SPI_CHANNEL_CONFIG spiChannelConfig;
Vkadaba 5:0728bde67bdb 849 /*!< SPI channel configuration - applicable only to SPI channels */
Vkadaba 5:0728bde67bdb 850 };
Vkadaba 6:9d393a9677f4 851 /*!< Only one of adcChannelConfig, i2cChannelConfig, spiChannelConfig
Vkadaba 6:9d393a9677f4 852 * is required, depending on the channel designation
Vkadaba 6:9d393a9677f4 853 * (analog, I2C, SPI)
Vkadaba 5:0728bde67bdb 854 */
Vkadaba 8:2f2775c34640 855
Vkadaba 8:2f2775c34640 856 } ADMW1001_CHANNEL_CONFIG;
Vkadaba 5:0728bde67bdb 857
Vkadaba 5:0728bde67bdb 858 /*! ADMW1001 Diagnostics configuration details */
Vkadaba 8:2f2775c34640 859 typedef struct
Vkadaba 8:2f2775c34640 860 {
Vkadaba 8:2f2775c34640 861 bool disableGlobalDiag;
Vkadaba 5:0728bde67bdb 862 /*!< Option to disable the following diagnostic checks on the ADC:
Vkadaba 5:0728bde67bdb 863 * - Reference Detection errors
Vkadaba 5:0728bde67bdb 864 * - Input under-/over-voltage errors
Vkadaba 5:0728bde67bdb 865 * - Calibration, Conversion and Saturation errors
Vkadaba 5:0728bde67bdb 866 */
Vkadaba 8:2f2775c34640 867 bool disableMeasurementDiag;
Vkadaba 5:0728bde67bdb 868 /*!< Option to disable additional checks per measurement channel:
Vkadaba 5:0728bde67bdb 869 * - High/low threshold limit violation
Vkadaba 5:0728bde67bdb 870 */
Vkadaba 8:2f2775c34640 871
Vkadaba 8:2f2775c34640 872 bool disableCriticalTempAbort;
Vkadaba 5:0728bde67bdb 873 /*!< Option to disable abort of measurement cycle if the operating
Vkadaba 5:0728bde67bdb 874 * temperature of the ADMW1001 has exceeded critical limits
Vkadaba 5:0728bde67bdb 875 */
Vkadaba 8:2f2775c34640 876
Vkadaba 8:2f2775c34640 877 ADMW1001_OPEN_SENSOR_DIAGNOSTICS osdFrequency;
Vkadaba 5:0728bde67bdb 878 /*!< Option to enable Open-Circuit Detection at a selected cycle interval */
Vkadaba 5:0728bde67bdb 879
Vkadaba 8:2f2775c34640 880 } ADMW1001_DIAGNOSTICS_CONFIG;
Vkadaba 8:2f2775c34640 881
Vkadaba 5:0728bde67bdb 882 typedef uint16_t ADMW1001_ADVANCED_ACCESS_KEY;
Vkadaba 5:0728bde67bdb 883
Vkadaba 5:0728bde67bdb 884 /*! ADMW1001 Device configuration details */
Vkadaba 8:2f2775c34640 885 typedef struct
Vkadaba 8:2f2775c34640 886 {
Vkadaba 5:0728bde67bdb 887 ADMW1001_POWER_CONFIG power;
Vkadaba 5:0728bde67bdb 888 /*!< Power configuration details */
Vkadaba 5:0728bde67bdb 889 ADMW1001_MEASUREMENT_CONFIG measurement;
Vkadaba 5:0728bde67bdb 890 /*!< Measurement configuration details */
Vkadaba 5:0728bde67bdb 891 ADMW1001_DIAGNOSTICS_CONFIG diagnostics;
Vkadaba 5:0728bde67bdb 892 /*!< FFT configuration details */
Vkadaba 5:0728bde67bdb 893 ADMW1001_CHANNEL_CONFIG channels[ADMW1001_MAX_CHANNELS];
Vkadaba 5:0728bde67bdb 894 /*!< Channel-specific configuration details */
Vkadaba 5:0728bde67bdb 895 ADMW1001_ADVANCED_ACCESS_KEY advancedAccessKey;
Vkadaba 5:0728bde67bdb 896 /*!< Key to enable access to advanced sensor configuration options */
Vkadaba 8:2f2775c34640 897
Vkadaba 8:2f2775c34640 898 } ADMW1001_CONFIG;
Vkadaba 5:0728bde67bdb 899
Vkadaba 5:0728bde67bdb 900 #ifdef __cplusplus
Vkadaba 5:0728bde67bdb 901 }
Vkadaba 5:0728bde67bdb 902 #endif
Vkadaba 5:0728bde67bdb 903
Vkadaba 5:0728bde67bdb 904 /*!
Vkadaba 5:0728bde67bdb 905 * @}
Vkadaba 5:0728bde67bdb 906 */
Vkadaba 5:0728bde67bdb 907
Vkadaba 5:0728bde67bdb 908 #endif /* __ADMW1001_CONFIG_H__ */