Vybhav Kadaba
/
EV-PRO-MW1001_Development_code_cleaup
Removed unwanted enums and unused functions
Diff: inc/admw1001/admw1001_config.h
- Revision:
- 8:2f2775c34640
- Parent:
- 6:9d393a9677f4
- Child:
- 11:8e6023d2e584
--- a/inc/admw1001/admw1001_config.h Tue Jun 18 09:28:16 2019 +0000 +++ b/inc/admw1001/admw1001_config.h Thu Jun 20 18:13:57 2019 +0000 @@ -46,10 +46,6 @@ #include "admw_platform.h" #include "admw1001_sensor_types.h" -/* Undefine for versions prior to V2.3. */ -#undef __V2_3_CFG_FMT__ - - /*! @addtogroup ADMW1001_Api * @{ */ @@ -62,7 +58,8 @@ #define ADMW1001_SENSOR_COMMAND_MAX_LENGTH 7 /*! ADMW1001 channel priority options */ -typedef enum { +typedef enum +{ ADMW1001_CHANNEL_PRIORITY_0 = 0, ADMW1001_CHANNEL_PRIORITY_1, ADMW1001_CHANNEL_PRIORITY_2, @@ -76,26 +73,27 @@ ADMW1001_CHANNEL_PRIORITY_10, ADMW1001_CHANNEL_PRIORITY_11, ADMW1001_CHANNEL_PRIORITY_12, - ADMW1001_CHANNEL_PRIORITY_13, - ADMW1001_CHANNEL_PRIORITY_14, - ADMW1001_CHANNEL_PRIORITY_15, ADMW1001_CHANNEL_PRIORITY_HIGHEST = ADMW1001_CHANNEL_PRIORITY_0, - ADMW1001_CHANNEL_PRIORITY_LOWEST = ADMW1001_CHANNEL_PRIORITY_15, -} ADMW1001_CHANNEL_PRIORITY; + ADMW1001_CHANNEL_PRIORITY_LOWEST = ADMW1001_CHANNEL_PRIORITY_12, + +} ADMW1001_CHANNEL_PRIORITY; /*! ADMW1001 operating mode options */ -typedef enum { +typedef enum +{ ADMW1001_OPERATING_MODE_SINGLECYCLE = 0, /*!< Executes a single measurement cycle and stops */ ADMW1001_OPERATING_MODE_CONTINUOUS, /*!< Continuously executes measurement cycles */ ADMW1001_OPERATING_MODE_MULTICYCLE, /*!< Executes a burst of measurement cycles, repeated at defined intervals */ -} ADMW1001_OPERATING_MODE; + +} ADMW1001_OPERATING_MODE; /*! ADMW1001 data ready mode options */ -typedef enum { +typedef enum +{ ADMW1001_DATAREADY_PER_CONVERSION = 0, /*!< The DATAREADY signal is asserted after completion of each conversion * - a single data sample only from the latest completed conversion is @@ -107,25 +105,24 @@ * - data samples only from the lastest completed measurement cycle are * stored in this mode */ - ADMW1001_DATAREADY_PER_MULTICYCLE_BURST, - /*!< The DATAREADY signal is asserted after completion of each burst of - * measurement cycles - * - applicable only when @ref ADMW1001_OPERATING_MODE_MULTICYCLE - * is also selected - * - data samples only from the lastest completed burst of measurement - * cycles are stored in this mode + ADMW1001_DATAREADY_PER_FIFO_FILL, + /*!< The DATAREADY signal is asserted after each fill of the data FIFO + * - applicable only when @ref ADMW1001_OPERATING_MODE_CONTINUOUS or + * @ref ADMW1001_OPERATING_MODE_MULTICYCLE is also selected */ -} ADMW1001_DATAREADY_MODE; + +} ADMW1001_DATAREADY_MODE; /*! ADMW1001 power mode options */ -typedef enum { +typedef enum +{ ADMW1001_POWER_MODE_HIBERNATION = 0, /*!< module has entede hibernation mode. All analog circuitry is disabled. All peripherals disabled apart from the Wake-up pin functionality. */ ADMW1001_POWER_MODE_ACTIVE, /*!< Part is fully powered up and either cycling through a sequence or awaiting a configuration */ -} ADMW1001_POWER_MODE; -#ifdef __V2_3_CFG_FMT__ +} ADMW1001_POWER_MODE; + /*! ADMW1001 measurement analog filter settling options */ typedef enum { @@ -133,22 +130,24 @@ /*!< Allow full settling time to elapse between every measurement from an analog sensor */ ADMW1001_FILTER_SETTLING_FAST, /*!< Skip settling time between consecutive measurements from an analog sensor */ -} ADMW1001_FILTER_SETTLING; -#endif + +} ADMW1001_FILTER_SETTLING; /*! ADMW1001 measurement unit options * * Optionally select a measurement unit for final conversion results. * Currently applicable only to specific temperature sensor types. */ -typedef enum { +typedef enum +{ ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED = 0, /*!< No measurement unit specified */ ADMW1001_MEASUREMENT_UNIT_CELSIUS, /*!< Celsius temperature unit - applicable to temperature sensors only */ ADMW1001_MEASUREMENT_UNIT_FAHRENHEIT, /*!< Fahrenheit temperature unit - applicable to temperature sensors only */ -} ADMW1001_MEASUREMENT_UNIT; + +} ADMW1001_MEASUREMENT_UNIT; /*! ADMW1001 Open-Sensor Diagnostics frequency * @@ -160,7 +159,8 @@ * @note Open-sensor diagnostic checks, when performed, will add a delay to the * start of the next measurement cycle. */ -typedef enum { +typedef enum +{ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED = 0, /*!< No Open-Sensor Detection is performed */ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE, @@ -169,13 +169,15 @@ /*!< No Open-Sensor Detection is performed at intervals of 100 cycles */ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_1000_CYCLES, /*!< No Open-Sensor Detection is performed at intervals of 1001 cycles */ -} ADMW1001_OPEN_SENSOR_DIAGNOSTICS; + +} ADMW1001_OPEN_SENSOR_DIAGNOSTICS; /*! ADMW1001 analog input signal amplification gain options * * @note applicable only to ADC analog sensor channels */ -typedef enum { +typedef enum +{ ADMW1001_ADC_RTD_CURVE_EUROPEAN = 0, /*!< EUROPEAN RTD curve used. */ ADMW1001_ADC_RTD_CURVE_AMERICAN, @@ -184,12 +186,14 @@ /*!< JAPANESE RTD curve used. */ ADMW1001_ADC_RTD_CURVE_ITS90, /*!< ITS90 RTD curve used. */ -} ADMW1001_ADC_RTD_CURVE; + +} ADMW1001_ADC_RTD_CURVE; /*! ADMW1001 analog input signal amplification gain options * * @note applicable only to ADC analog sensor channels */ -typedef enum { +typedef enum +{ ADMW1001_ADC_GAIN_1X = 0, /*!< no amplification gain */ ADMW1001_ADC_GAIN_2X, @@ -206,26 +210,30 @@ /*!< x64 amplification gain */ ADMW1001_ADC_GAIN_128X, /*!< x128 amplification gain */ -} ADMW1001_ADC_GAIN; + +} ADMW1001_ADC_GAIN; /*! ADMW1001 analog sensor excitation state options * * @note applicable only to ADC analog sensor channels, and * specific sensor types */ -typedef enum { +typedef enum +{ ADMW1001_ADC_EXC_STATE_ALWAYS_ON, /*!< Excitation for measurement is always on */ ADMW1001_ADC_EXC_STATE_CYCLE_POWER, /*!< Excitation for measurement is active only during measurement */ -} ADMW1001_ADC_EXC_STATE; + +} ADMW1001_ADC_EXC_STATE; /*! ADMW1001 analog sensor excitation current output level options * * @note applicable only to ADC analog sensor channels, and * specific sensor types */ -typedef enum { +typedef enum +{ ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0, /*!< External excitation is provided */ ADMW1001_ADC_EXC_CURRENT_50uA, @@ -238,13 +246,15 @@ /*!< 500uA excitation current enabled */ ADMW1001_ADC_EXC_CURRENT_1000uA, /*!< 1mA excitation current enabled */ -} ADMW1001_ADC_EXC_CURRENT; + +} ADMW1001_ADC_EXC_CURRENT; /*! ADMW1001 analog sensor excitation current ratios used for diode sensor * * @note applicable only to a diode sensor */ -typedef enum { +typedef enum +{ ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_10UA_100UA = 0, /**< 2 Current measurement 10uA 100uA */ ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_20UA_160UA, @@ -261,78 +271,98 @@ /**< 3 current measuremetn 50uA 150uA 300uA */ ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_100UA_300UA_600UA, /**< 3 current measuremetn 100uA 300uA 600uA */ -} ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO; + +} ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO; /*! ADMW1001 analog reference selection options * * @note applicable only to ADC analog sensor channels, and * specific sensor types */ -typedef enum { - ADMW1001_ADC_REFERENCE_NONE = 0, - /*!< No reference is selected */ - - ADMW1001_ADC_REFERENCE_RESISTOR_INTERNAL_1, - /*!< Internal reference resistor #1 (4320 ohms) is selected */ - ADMW1001_ADC_REFERENCE_RESISTOR_INTERNAL_2, - /*!< Internal reference resistor #2 (10010 ohms) is selected */ - ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL, - /*!< Internal ADC voltage reference (2.5V) is selected */ +typedef enum +{ + ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL = 0, + /*!< Internal VRef - 1.2V */ + ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1, + /*!< External reference voltage #1 */ + ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_2, + /*!< External reference voltage #2 */ ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD, /*!< Analag Supply Voltage AVDD reference (typically 3.3V) is selected */ - ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_1, - /*!< External user-supplied reference resistor #1 is selected - * - * @note reference resistor value externalRef1Value must be specified - * (see @ref ADMW1001_MEASUREMENT_CONFIG) */ - ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_2, - /*!< External user-supplied reference resistor #2 is selected - * - * @note reference resistor value externalRef2Value must be specified - * (see @ref ADMW1001_MEASUREMENT_CONFIG) */ - ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1, - /*!< External user-supplied reference voltage #1 is selected - * - * @note reference voltage value externalRef1Value must be specified - * (see @ref ADMW1001_MEASUREMENT_CONFIG) */ - ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_2, - /*!< External user-supplied reference voltage #2 is selected - * - * @note reference voltage value externalRef2Value must be specified - * (see @ref ADMW1001_MEASUREMENT_CONFIG) */ - ADMW1001_ADC_REFERENCE_BRIDGE_EXCITATION, - /*!< Bridge Excition Voltage is selected as reference - * - * @note this reference MUST be selected for 4/6-wire bridge sensor types - * (see @ref ADMW1001_ADC_SENSOR_TYPE) */ -} ADMW1001_ADC_REFERENCE_TYPE; +} ADMW1001_ADC_REFERENCE_TYPE; /*! ADMW1001 ADC Reference configuration * * @note applicable only to ADC analog sensor channels */ -typedef enum { +typedef enum +{ ADMW1001_ADC_GND_SW_OPEN = 0, /*!< Ground switch not enabled for measurement. */ ADMW1001_ADC_GND_SW_CLOSED, - /*!< Ground switch closed for measurement. */ -} ADMW1001_ADC_GND_SW; + /*!< Ground switch enabled for measurement. */ + +} ADMW1001_ADC_GND_SW; + +/*! ADMW1001 analog filter chop mode + * + * @note applicable only to ADC analog sensor channels + */ +typedef enum +{ + ADMW1001_CHOP_MD_NONE = 0, + /*!< No chop performed. */ + ADMW1001_CHOP_MD_HW, + /*!< Hardware only chop performed. */ + ADMW1001_CHOP_MD_SW, + /*!< Software only chop performed. */ + ADMW1001_CHOP_MD_HWSW, + /*!< Hardware and software chop performed. */ + +} ADMW1001_CHOP_MD; /*! ADMW1001 analog filter selection options * * @note applicable only to ADC analog sensor channels */ -typedef enum { +typedef enum +{ ADMW1001_ADC_FILTER_SINC4 = 0, - /*!< SINC4 filter - * - * @note The number of input samples to be averaged by the filter - * must be specified by fs (see @ref ADMW1001_ADC_FILTER_CONFIG). - * The fs value affects the output sample rate and settling times - * of the ADC */ + /*!< SINC4 - 4th order sinc response filter */ ADMW1001_ADC_FILTER_SINC3, -} ADMW1001_ADC_FILTER_TYPE; + /*!< SINC3 - 3rd order sinc response filter */ + +} ADMW1001_ADC_FILTER_TYPE; + +/*! ADMW1001 Sinc Filter range (SF) + * + * @note applicable only to ADC analog sensor channels + * @note SF must be set in conjunction with chop mode + * and sinc filter type to achieve the desired sampling rate. + */ +typedef enum +{ + ADMW1001_SF_976HZ = 0, + /*!< SF setting for 976Hz sample rate. */ + ADMW1001_SF_488HZ = 1, + /*!< SF setting for 488Hz sample rate. */ + ADMW1001_SF_244HZ = 3, + /*!< SF setting for 244Hz sample rate. */ + ADMW1001_SF_122HZ = 7, + /*!< SF setting for 122Hz sample rate. */ + ADMW1001_SF_61HZ = 31, + /*!< SF setting for 61Hz sample rate. */ + ADMW1001_SF_30P5HZ = 51, + /*!< SF setting for 61Hz sample rate. */ + ADMW1001_SF_10HZ = 124, + /*!< SF setting for 10Hz sample rate. */ + ADMW1001_SF_8P24HZ = 125, + /*!< SF setting for 8.24Hz sample rate. */ + ADMW1001_SF_5HZ = 127, + /*!< SF setting for 5Hz sample rate. */ + +} ADMW1001_SINC_FILTER_RANGE; /*! ADMW1001 I2C clock speed options * @@ -340,11 +370,12 @@ */ typedef enum { - ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0, + ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0, /*!< 100kHz I2C clock speed */ - ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K, + ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K, /*!< 400kHz I2C clock speed */ -} ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED; + +} ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED; /*! ADMW1001 SPI mode options * @@ -352,15 +383,16 @@ */ typedef enum { - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0, + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0, /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 0 */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1, + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1, /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 1 */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_2, + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_2, /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 0 */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_3, + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_3, /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 1 */ -} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE; + +} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE; /*! ADMW1001 SPI clock speed options * @@ -368,60 +400,66 @@ */ typedef enum { - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_13MHZ = 0, - /*!< SPI Clock Speed configured to 13MHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_6_5MHZ, - /*!< SPI Clock Speed configured to 6.5MHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3_25MHZ, - /*!< SPI Clock Speed configured to 3.25MHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1_625MHZ, - /*!< SPI Clock Speed configured to 1.625MHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_812KHZ, - /*!< SPI Clock Speed configured to 812kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_406KHZ, - /*!< SPI Clock Speed configured to 406kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_203KHZ, - /*!< SPI Clock Speed configured to 203kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_101KHZ, - /*!< SPI Clock Speed configured to 101kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_50KHZ, - /*!< SPI Clock Speed configured to 50kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_25KHZ, - /*!< SPI Clock Speed configured to 25kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_12KHZ, - /*!< SPI Clock Speed configured to 12kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_6KHZ, - /*!< SPI Clock Speed configured to 6kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3KHZ, - /*!< SPI Clock Speed configured to 3kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1_5KHZ, - /*!< SPI Clock Speed configured to 1.5kHz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_793HZ, - /*!< SPI Clock Speed configured to 793hz */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_396HZ, - /*!< SPI Clock Speed configured to 396hz */ -} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK; + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_8MHZ = 0, + /*!< SPI Clock Speed configured to 8MHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_4MHZ, + /*!< SPI Clock Speed configured to 4MHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_2MHZ, + /*!< SPI Clock Speed configured to 2MHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1MHZ, + /*!< SPI Clock Speed configured to 1MHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_500KHZ, + /*!< SPI Clock Speed configured to 500kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_250KHZ, + /*!< SPI Clock Speed configured to 250kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_125KHZ, + /*!< SPI Clock Speed configured to 125kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_62P5KHZ, + /*!< SPI Clock Speed configured to 62.5kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_31P3KHZ, + /*!< SPI Clock Speed configured to 31.3kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_15P6KHZ, + /*!< SPI Clock Speed configured to 15.6kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_7P8KHZ, + /*!< SPI Clock Speed configured to 7.8kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3P9KHZ, + /*!< SPI Clock Speed configured to 3.9kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1P9KHZ, + /*!< SPI Clock Speed configured to 1.9kHz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_977HZ, + /*!< SPI Clock Speed configured to 977Hz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_488HZ, + /*!< SPI Clock Speed configured to 488Hz */ + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_244HZ, + /*!< SPI Clock Speed configured to 244Hz */ + +} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK; /*! ADMW1001 Power Configuration options */ -typedef struct { +typedef struct +{ ADMW1001_POWER_MODE powerMode; /*!< Power mode selection */ -} ADMW1001_POWER_CONFIG; + +} ADMW1001_POWER_CONFIG; /*! ADMW1001 Multi-Cycle Configuration options * * @note required only when ADMW1001_OPERATING_MODE_MULTICYCLE is selected * as the operatingMode (@ref ADMW1001_MEASUREMENT_CONFIG) */ -typedef struct { - uint32_t cyclesPerBurst; +typedef struct +{ + uint32_t cyclesPerBurst; /*!< Number of cycles to complete for a single burst */ - uint32_t burstInterval; + uint32_t burstInterval; /*!< Interval, in seconds, between each successive burst of cycles */ -} ADMW1001_MULTICYCLE_CONFIG; + +} ADMW1001_MULTICYCLE_CONFIG; /*! ADMW1001 Measurement Configuration options */ -typedef struct { +typedef struct +{ ADMW1001_OPERATING_MODE operatingMode; /*!< Operating mode - specifies how measurement cycles are scheduled */ ADMW1001_DATAREADY_MODE dataReadyMode; @@ -431,12 +469,6 @@ * are scheduled. Applicable only when operatingMode is * ADMW1001_OPERATING_MODE_MULTICYCLE */ - uint32_t cycleInterval; - /*!< Cycle interval - specifies the time interval between the start of each - * successive measurement cycle. Applicable only when operatingMode is - * not ADMW1001_OPERATING_MODE_SINGLECYCLE - */ -#ifdef __V2_3_CFG_FMT__ ADMW1001_FILTER_SETTLING filterSettling; /*!< Analog filter settling - specifies the policy for settling time * between consecutive measurements from an analog channel in a multi- @@ -444,64 +476,70 @@ * configurations, settling time is always skipped between consecutive * measurements in a measurement cycle. */ -#endif - float32_t externalRef1Value; - /*!< Resistance/voltage value connected to external reference input #1. + uint8_t reserved0[3]; + /*!< Reserved for future use and ensure word alignment. + */ + uint32_t cycleInterval; + /*!< Cycle interval - specifies the time interval between the start of each + * successive measurement cycle. Applicable only when operatingMode is + * not ADMW1001_OPERATING_MODE_SINGLECYCLE + */ + bool vBiasEnable; + /*!< Enable voltage Bias output of ADC + */ + float32_t externalRef1Value; + /*!< Voltage value connected to external reference input #1. * Applicable only if the selected reference type is - * ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_1 or - * ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1 + * voltage. * (see @ref ADMW1001_ADC_REFERENCE_TYPE) */ - bool enableExternalFlash; - /*!< Enable the use of external flash memory for storage of samples. - */ -} ADMW1001_MEASUREMENT_CONFIG; + uint32_t reserved1[4]; + /*!< Reserved for future use and ensure word alignment. + */ + +} ADMW1001_MEASUREMENT_CONFIG; /*! ADMW1001 ADC Excitation Current output configuration * * @note applicable only to ADC analog sensor channels, and * specific sensor types */ -typedef struct { +typedef struct +{ ADMW1001_ADC_EXC_STATE excitationState; /*!< Excitation current state */ ADMW1001_ADC_EXC_CURRENT outputLevel; /*!< Excitation current output level */ ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO diodeRatio; /*!< Excitation current output diode ratio */ -} ADMW1001_ADC_EXC_CURRENT_CONFIG; + +} ADMW1001_ADC_EXC_CURRENT_CONFIG; /*! ADMW1001 ADC Filter configuration * * @note applicable only to ADC analog sensor channels */ -typedef struct { - ADMW1001_ADC_FILTER_TYPE type; +typedef struct +{ + ADMW1001_ADC_FILTER_TYPE type; /*!< Filter type selection */ - uint32_t sf; - /*!< SF value used along with filter type to determine speed */ - bool filterChop; + ADMW1001_SINC_FILTER_RANGE sf; + /*!< SF value used along with filter type and chop mode to determine speed */ + ADMW1001_CHOP_MD filterChop; /*!< Enable filter chop */ - bool notch1p2; + bool notch1p2; /*!< Enable Notch 2 Filter Mode */ - ADMW1001_ADC_GND_SW groundSwitch; + ADMW1001_ADC_GND_SW groundSwitch; /*!< Option to open or close sensor ground switch */ -} ADMW1001_ADC_FILTER_CONFIG; -/*! ADMW1001 ADC Referemce configuration - * - * @note applicable only to ADC analog sensor channels - */ -typedef struct { - ADMW1001_ADC_REFERENCE_TYPE type; - /*!< Filter type selection */ -} ADMW1001_ADC_REFERENCE_CONFIG; +} ADMW1001_ADC_FILTER_CONFIG; /*! ADMW1001 ADC analog channel configuration details * * @note applicable only to ADC analog sensor channels */ -typedef struct { +typedef struct +{ ADMW1001_ADC_SENSOR_TYPE sensor; /*!< Sensor type selection */ ADMW1001_ADC_RTD_CURVE rtdCurve; @@ -512,11 +550,30 @@ /*!< ADC Excitation Current configuration */ ADMW1001_ADC_FILTER_CONFIG filter; /*!< ADC Filter configuration */ - ADMW1001_ADC_REFERENCE_CONFIG reference; + ADMW1001_ADC_REFERENCE_TYPE reference; /*!< ADC Reference configuration */ - bool enableVbias; - /*!< Option to enable internal ADC voltage bias */ -} ADMW1001_ADC_CHANNEL_CONFIG; + uint8_t reserved0[3]; + /*!< Reserved for future use and ensure word alignment. */ + uint32_t reserved1[6]; + /*!< Reserved for future use and ensure word alignment. */ + +} ADMW1001_ADC_CHANNEL_CONFIG; + +/*! ADMW1001 look-up table selection + * Select table used to linearise the measurement. + */ +typedef enum +{ + ADMW1001_LUT_DEFAULT = 0, + /*!< Default LUT */ + ADMW1001_LUT_UNITY = 1, + /*!< Unity LUT */ + ADMW1001_LUT_CUSTOM = 2, + /*!< User defined custom LUT */ + ADMW1001_LUT_RESERVED = 3, + /*!< Reserved for future use */ + +} ADMW1001_LUT_SELECT; /*! ADMW1001 digital sensor data encoding * @@ -524,7 +581,7 @@ */ typedef enum { - ADMW1001_DIGITAL_SENSOR_DATA_CODING_NONE, + ADMW1001_DIGITAL_SENSOR_DATA_CODING_NONE = 0, /**< None/Invalid - data format is ignored if coding is set to this value */ ADMW1001_DIGITAL_SENSOR_DATA_CODING_UNIPOLAR, /**< Unipolar - unsigned integer values */ @@ -533,13 +590,15 @@ ADMW1001_DIGITAL_SENSOR_DATA_CODING_OFFSET_BINARY, /**< Offset Binary - used to represent signed values with unsigned integers, * with the mid-range value representing 0 */ -} ADMW1001_DIGITAL_SENSOR_DATA_CODING; + +} ADMW1001_DIGITAL_SENSOR_DATA_CODING; /*! ADMW1001 digital sensor data format configuration * * @note applicable only to SPI and I2C digital sensor channels */ -typedef struct { +typedef struct +{ ADMW1001_DIGITAL_SENSOR_DATA_CODING coding; /**< Data Encoding of Sensor Result */ bool littleEndian; @@ -552,24 +611,30 @@ /**< Number of relevant data bits to extract from the data frame */ uint8_t bitOffset; /**< Data bit offset, relative to data alignment within the data frame */ -} ADMW1001_DIGITAL_SENSOR_DATA_FORMAT; + uint8_t reserved[2]; + /*!< Reserved for future use and ensure word alignment. */ + +} ADMW1001_DIGITAL_SENSOR_DATA_FORMAT; /*! ADMW1001 digital sensor command * * @note applicable only to SPI and I2C digital sensor channels */ -typedef struct { +typedef struct +{ uint8_t command[ADMW1001_SENSOR_COMMAND_MAX_LENGTH]; /*!< Optional command bytes to send to the device */ uint8_t commandLength; /*!< Number of valid command bytes. Set to 0 if unused */ -} ADMW1001_DIGITAL_SENSOR_COMMAND; + +} ADMW1001_DIGITAL_SENSOR_COMMAND; /*! ADMW1001 digital sensor calibration param * * @note applicable only to digital sensor channels */ -typedef struct { +typedef struct +{ uint32_t calibrationParam; /*!< Independently established environmental variable used during calibration * of a digital sensor. Used only if the sensor supports calibration @@ -577,68 +642,80 @@ */ bool enableCalibrationParam; /*!< Allow Calibration_Parameter to be used during calibration of any digital sensor */ -} ADMW1001_DIGITAL_CALIBRATION_COMMAND; + uint8_t reserved[3]; + /*!< Reserved for future use and ensure word alignment. */ + +} ADMW1001_DIGITAL_CALIBRATION_COMMAND; /*! ADMW1001 digital sensor communication config * * @note applicable only to digital sensor channels */ -typedef struct { - bool useCustomCommsConfig; +typedef struct +{ + bool useCustomCommsConfig; /*!< Optional parameter to enable user digital communication settings */ - ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED i2cClockSpeed; + ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED i2cClockSpeed; /*!< Optional parameter to configure specific i2c speed for i2c sensor */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE spiMode; + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE spiMode; /*!< Optional parameter to configure specific spi mode for spi sensor */ - ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK spiClock; + ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK spiClock; /*!< Optional parameter to configure specific spi clock for spi sensor */ -} ADMW1001_DIGITAL_SENSOR_COMMS; + +} ADMW1001_DIGITAL_SENSOR_COMMS; /*! ADMW1001 I2C digital channel configuration details * * @note applicable only to I2C digital sensor channels */ -typedef struct { - ADMW1001_I2C_SENSOR_TYPE sensor; +typedef struct +{ + ADMW1001_I2C_SENSOR_TYPE sensor; /*!< Sensor type selection */ - uint32_t deviceAddress; + uint8_t deviceAddress; /*!< I2C device address (7-bit) */ - ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand; + uint8_t reserved; + /*!< Reserved for future use and ensure word alignment. */ + ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand; /*!< Optional configuration command to send to the device at start-up. * A default configuration command will be used if this is not specified. * Applicable only to specific I2C sensor types. */ - ADMW1001_DIGITAL_SENSOR_COMMAND dataRequestCommand; + ADMW1001_DIGITAL_SENSOR_COMMAND dataRequestCommand; /*!< Optional data request command to send to the device for each sample. * A default data request command will be used if this is not specified. * Applicable only to specific I2C sensor types. */ - ADMW1001_DIGITAL_SENSOR_DATA_FORMAT dataFormat; + ADMW1001_DIGITAL_SENSOR_DATA_FORMAT dataFormat; /*!< Optional data format configuration to parse/extract data from the device. * A default data format will be used if this is not specified. * Applicable only to specific I2C sensor types */ - ADMW1001_DIGITAL_CALIBRATION_COMMAND digitalCalibrationParam; + ADMW1001_DIGITAL_CALIBRATION_COMMAND digitalCalibrationParam; /*!< This is used to supply an independently established environmental variable * that must be used during calibration of a [digital] sensor which a) * supports calibration and b) expects an environmental parameter. * An example is a CO2 sensor, which may require the CO2 concentration level * when performing a calibration */ - ADMW1001_DIGITAL_SENSOR_COMMS configureComms; + ADMW1001_DIGITAL_SENSOR_COMMS configureComms; /*!< Optional configuration to setup a user communication config. * A default configuration will be used if this is not specified. * Applicable only to specific I2C sensor types. */ -} ADMW1001_I2C_CHANNEL_CONFIG; + +} ADMW1001_I2C_CHANNEL_CONFIG; /*! ADMW1001 SPI digital channel configuration details * * @note applicable only to SPI digital sensor channels */ -typedef struct { +typedef struct +{ ADMW1001_SPI_SENSOR_TYPE sensor; /*!< Sensor type selection */ + uint8_t reserved[2]; + /*!< Reserved for future use and ensure word alignment. */ ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand; /*!< Optional configuration command to send to the device at start-up. * A default configuration command will be used if this is not specified. @@ -661,84 +738,85 @@ * An example is a CO2 sensor, which may require the CO2 concentration level * when performing a calibration */ - ADMW1001_DIGITAL_SENSOR_COMMS configureComms; + ADMW1001_DIGITAL_SENSOR_COMMS configureComms; /*!< Optional configuration to setup a user communication config. * A default configuration will be used if this is not specified. * Applicable only to specific SPI sensor types. */ -} ADMW1001_SPI_CHANNEL_CONFIG; +} ADMW1001_SPI_CHANNEL_CONFIG; /*! ADMW1001 Measurement Channel configuration details */ -typedef struct { - bool enableChannel; +typedef struct +{ + bool enableChannel; /*!< Option to include this channel in normal measurement cycles */ - bool disablePublishing; + bool disablePublishing; /*!< Option to disable publishing of data samples from this channel. The * channel may still be included in measurement cycles, but data samples * obtained from this channel will not be published. This is typically * used for channels which are required only as a compensation reference * for another channel (e.g. Cold-Junction Compensation channels). */ - ADMW1001_CHANNEL_ID compensationChannel; - /*!< Optional compensation channel. Set to ADMW1001_CHANNEL_ID_NONE if not + ADMW1001_CH_ID compensationChannel; + /*!< Optional compensation channel. Set to ADMW1001_CH_ID_NONE if not * required. Typically used for thermocouple sensors that require a * separate measurement of the "cold-junction" temperature, which can be * be provided by an RTD temperature sensor connected on a separate * "compensation channel" */ - bool enableUnityLut; - /*!< Option to choose the LUT for calculations, this implies that the + ADMW1001_LUT_SELECT lutSelect; + /*!<Select Look Up Table LUT for calculations, this implies that the * fundamental measurement for the sensor (typically mV or Ohms) - * would be returned as the measurement result. + * 0 = default, 1= unity, 2 = custom */ - ADMW1001_MEASUREMENT_UNIT measurementUnit; + ADMW1001_MEASUREMENT_UNIT measurementUnit; /*!< Optional measurement unit selection for conversion results. Applicable * only for certain sensor types. Set to * ADMW1001_MEASUREMENT_UNIT_DEFAULT if not applicable. */ - float32_t lowThreshold; + float32_t lowThreshold; /*!< Optional minimum threshold value for each processed sample, to be * checked prior to publishing. A channel ALERT condition is raised * if the processed value is lower than this threshold. Set to NaN * if not required. */ - float32_t highThreshold; + float32_t highThreshold; /*!< Optional maximum threshold value for each processed sample, to be * checked prior to publishing. A channel ALERT condition is raised * if the processed value is higher than this threshold. Set to NaN * if not required. */ - float32_t offsetAdjustment; + float32_t offsetAdjustment; /*!< Optional offset adjustment value applied to each processed sample. * Set to NaN or 0.0 if not required. */ - float32_t gainAdjustment; + float32_t gainAdjustment; /*!< Optional gain adjustment value applied to each processed sample. * Set to NaN or 1.0 if not required. */ - float32_t sensorParameter; + float32_t sensorParameter; /*!< Optional sensor parameter adjustment. * Set to NaN or 0 if not required. */ - uint32_t measurementsPerCycle; + uint32_t measurementsPerCycle; /*!< The number of measurements to obtain from this channel within each * cycle. Each enabled channel is measured in turn, until the number of * measurements requested for the channel has been reached. A different * number of measurements-per-cycle may be specified for each channel. */ - uint32_t cycleSkipCount; + uint32_t cycleSkipCount; /*!< Optional number of cycles to skip, such that this channel is included * in the sequence in only one of every (cycleSkipCount + 1) cycles that * occur. If set to 0 (default), this channel is included in every cycle; * if set to 1, this channel is included in every 2nd cycle; if set to 2, * this channel is included in every 3rd cycle, and so on. */ - uint32_t extraSettlingTime; + uint32_t extraSettlingTime; /*!< A minimum settling time is applied internally for each channel, based * on the sensor type. However, additional settling time (microseconds) * can optionally be specified. Set to 0 if not required. */ - ADMW1001_CHANNEL_PRIORITY priority; + ADMW1001_CHANNEL_PRIORITY priority; /*!< By default, channels are arranged in the measurement sequence based on * ascending order of channel ID. However, a priority-level may be * specified per channel to force a different ordering of the channels, @@ -747,48 +825,51 @@ * ID. Lower numbers indicate higher priority, with 0 being the highest. * Set to 0 if not required. */ - union { - ADMW1001_ADC_CHANNEL_CONFIG adcChannelConfig; + union + { + ADMW1001_ADC_CHANNEL_CONFIG adcChannelConfig; /*!< ADC channel configuration - applicable only to ADC channels */ - ADMW1001_I2C_CHANNEL_CONFIG i2cChannelConfig; + ADMW1001_I2C_CHANNEL_CONFIG i2cChannelConfig; /*!< I2C channel configuration - applicable only to I2C channels */ - ADMW1001_SPI_CHANNEL_CONFIG spiChannelConfig; + ADMW1001_SPI_CHANNEL_CONFIG spiChannelConfig; /*!< SPI channel configuration - applicable only to SPI channels */ }; /*!< Only one of adcChannelConfig, i2cChannelConfig, spiChannelConfig * is required, depending on the channel designation * (analog, I2C, SPI) */ -} ADMW1001_CHANNEL_CONFIG; + +} ADMW1001_CHANNEL_CONFIG; /*! ADMW1001 Diagnostics configuration details */ -typedef struct { - bool disableGlobalDiag; +typedef struct +{ + bool disableGlobalDiag; /*!< Option to disable the following diagnostic checks on the ADC: * - Reference Detection errors * - Input under-/over-voltage errors * - Calibration, Conversion and Saturation errors */ - bool disableMeasurementDiag; + bool disableMeasurementDiag; /*!< Option to disable additional checks per measurement channel: * - High/low threshold limit violation */ -#ifdef __V2_3_CFG_FMT__ - bool disableCriticalTempAbort; + + bool disableCriticalTempAbort; /*!< Option to disable abort of measurement cycle if the operating * temperature of the ADMW1001 has exceeded critical limits */ -#endif - ADMW1001_OPEN_SENSOR_DIAGNOSTICS osdFrequency; + + ADMW1001_OPEN_SENSOR_DIAGNOSTICS osdFrequency; /*!< Option to enable Open-Circuit Detection at a selected cycle interval */ -} ADMW1001_DIAGNOSTICS_CONFIG; -#ifdef __V2_3_CFG_FMT__ +} ADMW1001_DIAGNOSTICS_CONFIG; + typedef uint16_t ADMW1001_ADVANCED_ACCESS_KEY; -#endif /*! ADMW1001 Device configuration details */ -typedef struct { +typedef struct +{ ADMW1001_POWER_CONFIG power; /*!< Power configuration details */ ADMW1001_MEASUREMENT_CONFIG measurement; @@ -797,11 +878,10 @@ /*!< FFT configuration details */ ADMW1001_CHANNEL_CONFIG channels[ADMW1001_MAX_CHANNELS]; /*!< Channel-specific configuration details */ -#ifdef __V2_3_CFG_FMT__ ADMW1001_ADVANCED_ACCESS_KEY advancedAccessKey; -#endif /*!< Key to enable access to advanced sensor configuration options */ -} ADMW1001_CONFIG; + +} ADMW1001_CONFIG; #ifdef __cplusplus }