Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
}