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.
Revision 51:e013f4d2fb9a, committed 2020-03-06
- Comitter:
- Vkadaba
- Date:
- Fri Mar 06 17:03:18 2020 +0000
- Parent:
- 50:d84305e5e1c0
- Commit message:
- 1. Reverting Mbed firmware to support customers using ADMW1001 device firmware v82.25.; 2. New Mbed firmware will be available when ADMW1001 device firmware is released to the public. ; 3. SPI speed is reduced to 700KHz
Changed in this revision
--- a/bridge_4w_load_cell_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/bridge_4w_load_cell_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -50,18 +50,15 @@
.powerMode = ADMW1001_POWER_MODE_ACTIVE,
},
.measurement = {
- .externalRefVoltage=0.0,
- .AVDDVoltage=3.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,
.cycleInterval = 0,
.RSenseValue = 1000.0,
},
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- // .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -77,7 +74,7 @@
.sensorParameter = 0.0,
.measurementsPerCycle = 1,
.cycleSkipCount = 0,
- .extraSettlingTime = 5,
+ .extraSettlingTime = 4499.99986449257,
.priority = 0,
.adcChannelConfig = {
.sensor = ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_1,
@@ -87,6 +84,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -94,4 +92,4 @@
},
},
},
-};
\ No newline at end of file
+};
--- a/common/platform.h Mon Feb 17 11:23:39 2020 +0000
+++ b/common/platform.h Fri Mar 06 17:03:18 2020 +0000
@@ -54,7 +54,6 @@
# define PLATFORM_SPI_MISO D12
# define PLATFORM_SPI_SCK D13
# define PLATFORM_SPI_CS D10
-# define PLATFORM_SPI_WAKEUP D8
# define PLATFORM_GPIO_RESET D6
# define PLATFORM_GPIO_ALERT_ERROR D3
# define PLATFORM_GPIO_DATAREADY D4
@@ -82,8 +81,7 @@
.misoPin = PLATFORM_SPI_MISO, \
.sckPin = PLATFORM_SPI_SCK, \
.csPin = PLATFORM_SPI_CS, \
- .wakeupPin = PLATFORM_SPI_WAKEUP, \
- .maxSpeedHz = 1000000, \
+ .maxSpeedHz = 700000, \
}, \
.gpio = { \
.resetPin = PLATFORM_GPIO_RESET, \
--- a/common/utils.c Mon Feb 17 11:23:39 2020 +0000
+++ b/common/utils.c Fri Mar 06 17:03:18 2020 +0000
@@ -134,7 +134,7 @@
{
for (uint32_t i = 0; i < nNumSamples; i++) {
- ADMW_LOG_INFO("Sample # %2d Channel # %2d :: Raw %X %f :: Processed %f :: flags:%s%s",
+ ADMW_LOG_INFO("Sample # %2d Channel # %2d :: Raw %0X %f :: Processed %f :: flags:%s%s",
i+1,
pSampleBuffer[i].channelId,
pSampleBuffer[i].rawValue, (pSampleBuffer[i].rawValue/1024.0),
--- a/i2c0_sensirionSHT3X_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/i2c0_sensirionSHT3X_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -57,7 +57,7 @@
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_DIG_I2C_0] = {
@@ -67,7 +67,7 @@
.compensationChannel = ADMW1001_CH_ID_NONE,
.measurementUnit = ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED,
.measurementsPerCycle = 1,
- .extraSettlingTime = 15,
+ .extraSettlingTime = 15000,
.i2cChannelConfig = {
.sensor = ADMW1001_I2C_SENSOR_HUMIDITY_B,
},
--- a/inc/admw1001/ADMW1001_REGISTERS.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS.h Fri Mar 06 17:03:18 2020 +0000
@@ -1,7 +1,7 @@
/* ================================================================================
Created by :
- Created on : 2020 Jan 08, 12:45 GMT Standard Time
+ Created on : 2019 Oct 08, 09:43 GMT Daylight Time
Project : ADMW1001_REGISTERS
File : ADMW1001_REGISTERS.h
@@ -10,7 +10,7 @@
!! ADI Confidential !!
INTERNAL USE ONLY
- Copyright (c) 2020 Analog Devices, Inc. All Rights Reserved.
+ Copyright (c) 2019 Analog Devices, Inc. All Rights Reserved.
This software is proprietary and confidential to Analog Devices, Inc. and
its licensors.
@@ -262,8 +262,6 @@
#define REG_CORE_EXTERNAL_REFERENCE_RESISTOR 0x00000050 /* CORE External Reference Resistor Value */
#define REG_CORE_EXTERNAL_VOLTAGE_REFERENCE_RESET 0x3F99999A /* Reset Value for External_Voltage_Reference */
#define REG_CORE_EXTERNAL_VOLTAGE_REFERENCE 0x00000054 /* CORE External Reference Information */
-#define REG_CORE_AVDD_VOLTAGE_RESET 0x40533333 /* Reset Value for AVDD_Voltage */
-#define REG_CORE_AVDD_VOLTAGE 0x00000058 /* CORE AVDD Voltage */
#define REG_CORE_DIAGNOSTICS_CONTROL_RESET 0x00000000 /* Reset Value for Diagnostics_Control */
#define REG_CORE_DIAGNOSTICS_CONTROL 0x0000005C /* CORE Diagnostic Control */
#define REG_CORE_DATA_FIFO_RESET 0x00000000 /* Reset Value for Data_FIFO */
@@ -279,7 +277,7 @@
#define REG_CORE_LUT_DATA_RESET 0x00000000 /* Reset Value for LUT_Data */
#define REG_CORE_LUT_DATA 0x00000074 /* CORE Data to Read/Write from Addressed LUT Entry */
#define REG_CORE_REVISION_RESET 0x01000000 /* Reset Value for Revision */
-#define REG_CORE_REVISION 0x0000008A /* CORE Hardware, Firmware Revision */
+#define REG_CORE_REVISION 0x0000008C /* CORE Hardware, Firmware Revision */
#define REG_CORE_CHANNEL_COUNTn_RESET 0x00000000 /* Reset Value for Channel_Count[n] */
#define REG_CORE_CHANNEL_COUNT0_RESET 0x00000000 /* Reset Value for REG_CORE_CHANNEL_COUNT0 */
#define REG_CORE_CHANNEL_COUNT1_RESET 0x00000000 /* Reset Value for REG_CORE_CHANNEL_COUNT1 */
@@ -582,6 +580,8 @@
#define REG_CORE_SENSOR_GAIN8_RESET 0x3F800000 /* Reset Value for REG_CORE_SENSOR_GAIN8 */
#define REG_CORE_SENSOR_GAIN9_RESET 0x3F800000 /* Reset Value for REG_CORE_SENSOR_GAIN9 */
#define REG_CORE_SENSOR_GAIN10_RESET 0x3F800000 /* Reset Value for REG_CORE_SENSOR_GAIN10 */
+#define REG_CORE_SENSOR_GAIN11_RESET 0x3F800000 /* Reset Value for REG_CORE_SENSOR_GAIN11 */
+#define REG_CORE_SENSOR_GAIN12_RESET 0x3F800000 /* Reset Value for REG_CORE_SENSOR_GAIN12 */
#define REG_CORE_SENSOR_GAIN0 0x000000AC /* CORE Sensor Gain Adjustment */
#define REG_CORE_SENSOR_GAIN1 0x000000EC /* CORE Sensor Gain Adjustment */
#define REG_CORE_SENSOR_GAIN2 0x0000012C /* CORE Sensor Gain Adjustment */
@@ -593,8 +593,10 @@
#define REG_CORE_SENSOR_GAIN8 0x000002AC /* CORE Sensor Gain Adjustment */
#define REG_CORE_SENSOR_GAIN9 0x000002EC /* CORE Sensor Gain Adjustment */
#define REG_CORE_SENSOR_GAIN10 0x0000032C /* CORE Sensor Gain Adjustment */
+#define REG_CORE_SENSOR_GAIN11 0x0000036C /* CORE Sensor Gain Adjustment */
+#define REG_CORE_SENSOR_GAIN12 0x000003AC /* CORE Sensor Gain Adjustment */
#define REG_CORE_SENSOR_GAINn(i) (REG_CORE_SENSOR_GAIN0 + ((i) * 64))
-#define REG_CORE_SENSOR_GAINn_COUNT 11
+#define REG_CORE_SENSOR_GAINn_COUNT 13
#define REG_CORE_CHANNEL_SKIPn_RESET 0x00000000 /* Reset Value for Channel_Skip[n] */
#define REG_CORE_CHANNEL_SKIP0_RESET 0x00000000 /* Reset Value for REG_CORE_CHANNEL_SKIP0 */
#define REG_CORE_CHANNEL_SKIP1_RESET 0x00000000 /* Reset Value for REG_CORE_CHANNEL_SKIP1 */
@@ -624,35 +626,6 @@
#define REG_CORE_CHANNEL_SKIP12 0x000003B2 /* CORE Indicates If Channel Will Skip Some Measurement Cycles */
#define REG_CORE_CHANNEL_SKIPn(i) (REG_CORE_CHANNEL_SKIP0 + ((i) * 64))
#define REG_CORE_CHANNEL_SKIPn_COUNT 13
-#define REG_CORE_SENSOR_PARAMETERn_RESET 0x7FC00000 /* Reset Value for Sensor_Parameter[n] */
-#define REG_CORE_SENSOR_PARAMETER0_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER0 */
-#define REG_CORE_SENSOR_PARAMETER1_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER1 */
-#define REG_CORE_SENSOR_PARAMETER2_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER2 */
-#define REG_CORE_SENSOR_PARAMETER3_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER3 */
-#define REG_CORE_SENSOR_PARAMETER4_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER4 */
-#define REG_CORE_SENSOR_PARAMETER5_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER5 */
-#define REG_CORE_SENSOR_PARAMETER6_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER6 */
-#define REG_CORE_SENSOR_PARAMETER7_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER7 */
-#define REG_CORE_SENSOR_PARAMETER8_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER8 */
-#define REG_CORE_SENSOR_PARAMETER9_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER9 */
-#define REG_CORE_SENSOR_PARAMETER10_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER10 */
-#define REG_CORE_SENSOR_PARAMETER11_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER11 */
-#define REG_CORE_SENSOR_PARAMETER12_RESET 0x7FC00000 /* Reset Value for REG_CORE_SENSOR_PARAMETER12 */
-#define REG_CORE_SENSOR_PARAMETER0 0x000000B4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER1 0x000000F4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER2 0x00000134 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER3 0x00000174 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER4 0x000001B4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER5 0x000001F4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER6 0x00000234 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER7 0x00000274 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER8 0x000002B4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER9 0x000002F4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER10 0x00000334 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER11 0x00000374 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER12 0x000003B4 /* CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETERn(i) (REG_CORE_SENSOR_PARAMETER0 + ((i) * 64))
-#define REG_CORE_SENSOR_PARAMETERn_COUNT 13
#define REG_CORE_DIGITAL_SENSOR_CONFIGn_RESET 0x00000000 /* Reset Value for Digital_Sensor_Config[n] */
#define REG_CORE_DIGITAL_SENSOR_CONFIG0_RESET 0x00000000 /* Reset Value for REG_CORE_DIGITAL_SENSOR_CONFIG0 */
#define REG_CORE_DIGITAL_SENSOR_CONFIG1_RESET 0x00000000 /* Reset Value for REG_CORE_DIGITAL_SENSOR_CONFIG1 */
@@ -782,24 +755,16 @@
/* -------------------------------------------------------------------------------------------------------------------------
CORE_CYCLE_CONTROL Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 15 /* Disable Current Sources After Measurement Completes */
#define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 14 /* Units for Cycle Time */
#define BITP_CORE_CYCLE_CONTROL_VBIAS 13 /* Voltage Bias Global Enable */
-#define BITP_CORE_CYCLE_CONTROL_GND_SW_CTRL 12 /* Ground Switch Cycle Control */
#define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME 0 /* Time Between Measurement Cycles */
-#define BITM_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 0x00008000 /* Disable Current Sources After Measurement Completes */
#define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 0x00004000 /* Units for Cycle Time */
#define BITM_CORE_CYCLE_CONTROL_VBIAS 0x00002000 /* Voltage Bias Global Enable */
-#define BITM_CORE_CYCLE_CONTROL_GND_SW_CTRL 0x00001000 /* Ground Switch Cycle Control */
#define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME 0x00000FFF /* Time Between Measurement Cycles */
-#define ENUM_CORE_CYCLE_CONTROL_POWERCYCLE 0x00000000
-#define ENUM_CORE_CYCLE_CONTROL_ALWAYSON 0x00008000
#define ENUM_CORE_CYCLE_CONTROL_MILLISECONDS 0x00000000 /* Cycle_Time_Units: Milli-seconds */
#define ENUM_CORE_CYCLE_CONTROL_SECONDS 0x00004000 /* Cycle_Time_Units: Seconds */
#define ENUM_CORE_CYCLE_CONTROL_VBIAS_DISABLE 0x00000000 /* Vbias: Vbias disabled */
#define ENUM_CORE_CYCLE_CONTROL_VBIAS_ENABLE 0x00002000 /* Vbias: Enable Vbias output for the duration of a cycle */
-#define ENUM_CORE_CYCLE_CONTROL_CLOSE_SW 0x00000000 /* GND_SW_CTRL: Ground Switch Closed */
-#define ENUM_CORE_CYCLE_CONTROL_CYCLE_SW 0x00001000 /* GND_SW_CTRL: Ground Switch Opens outside of measurement cycle to conserve power */
/* -------------------------------------------------------------------------------------------------------------------------
CORE_FIFO_NUM_CYCLES Pos/Masks Description
@@ -896,18 +861,16 @@
#define BITM_CORE_EXTERNAL_VOLTAGE_REFERENCE_EXT_REFIN2_VALUE 0xFFFFFFFF /* Reference Input Value */
/* -------------------------------------------------------------------------------------------------------------------------
- CORE_AVDD_VOLTAGE Pos/Masks Description
- ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_AVDD_VOLTAGE_AVDD_VOLTAGE 0 /* AVDD Voltage */
-#define BITM_CORE_AVDD_VOLTAGE_AVDD_VOLTAGE 0xFFFFFFFF /* AVDD Voltage */
-
-/* -------------------------------------------------------------------------------------------------------------------------
CORE_DIAGNOSTICS_CONTROL Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 1 /* Diagnostics Sensor Detect Frequency */
+#define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 1 /* Diagnostics Open Sensor Detect Frequency */
#define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_MEAS_EN 0 /* Diagnostics Measure Enable */
-#define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 0x000000FE /* Diagnostics Sensor Detect Frequency */
+#define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 0x00000006 /* Diagnostics Open Sensor Detect Frequency */
#define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_MEAS_EN 0x00000001 /* Diagnostics Measure Enable */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_OFF 0x00000000 /* Diag_OSD_Freq: No Open-Circuit Detection During Measurement */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE 0x00000002 /* Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Measurement Cycle */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES 0x00000004 /* Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Ten Measurement Cycles */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES 0x00000006 /* Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Hundred Measurement Cycles */
/* -------------------------------------------------------------------------------------------------------------------------
CORE_DATA_FIFO Pos/Masks Description
@@ -939,7 +902,7 @@
CORE_LUT_OFFSET Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
#define BITP_CORE_LUT_OFFSET_LUT_OFFSET 0 /* Offset into the Lookup Table */
-#define BITM_CORE_LUT_OFFSET_LUT_OFFSET 0x000007FF /* Offset into the Lookup Table */
+#define BITM_CORE_LUT_OFFSET_LUT_OFFSET 0x00003FFF /* Offset into the Lookup Table */
/* -------------------------------------------------------------------------------------------------------------------------
CORE_LUT_DATA Pos/Masks Description
@@ -986,7 +949,6 @@
#define ENUM_CORE_SENSOR_TYPE_RTD_4W_PT100 0x00000060 /* Sensor_Type: RTD 4 wire PT100 sensor */
#define ENUM_CORE_SENSOR_TYPE_RTD_4W_PT1000 0x00000061 /* Sensor_Type: RTD 4 wire PT1000 sensor */
#define ENUM_CORE_SENSOR_TYPE_BRIDGE_4W 0x000000A9 /* Sensor_Type: Bridge 4 wire sensor */
-#define ENUM_CORE_SENSOR_TYPE_VOLTAGE 0x00000200 /* Sensor_Type: Voltage Input */
#define ENUM_CORE_SENSOR_TYPE_CUSTOM1 0x00000400 /* Sensor_Type: Custom1 */
#define ENUM_CORE_SENSOR_TYPE_I2C_HUMIDITY_B 0x00000841 /* Sensor_Type: I2C humidity sensor B */
#define ENUM_CORE_SENSOR_TYPE_SENSOR_RESERVED_1 0x00000FE0 /* Sensor_Type: RESERVED. NOT TO BE USED */
@@ -1038,18 +1000,8 @@
/* -------------------------------------------------------------------------------------------------------------------------
CORE_CHANNEL_EXCITATION[n] Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_CHANNEL_EXCITATION_IOUT_DIODE_RATIO 6 /* Modify Current Ratios Used for Diode Sensor */
#define BITP_CORE_CHANNEL_EXCITATION_IOUT_EXCITATION_CURRENT 0 /* Current Source Value */
-#define BITM_CORE_CHANNEL_EXCITATION_IOUT_DIODE_RATIO 0x000001C0 /* Modify Current Ratios Used for Diode Sensor */
#define BITM_CORE_CHANNEL_EXCITATION_IOUT_EXCITATION_CURRENT 0x0000000F /* Current Source Value */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_10UA_100UA 0x00000000 /* IOUT_Diode_Ratio: 2 Current measurement 10uA 100uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_20UA_160UA 0x00000040 /* IOUT_Diode_Ratio: 2 Current measurement 20uA 160uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_50UA_300UA 0x00000080 /* IOUT_Diode_Ratio: 2 Current measurement 50uA 300uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_100UA_600UA 0x000000C0 /* IOUT_Diode_Ratio: 2 Current measurement 100uA 600uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_10UA_50UA_100UA 0x00000100 /* IOUT_Diode_Ratio: 3 current measuremet 10uA 50uA 100uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_20UA_100UA_160UA 0x00000140 /* IOUT_Diode_Ratio: 3 current measuremet 20uA 100uA 160uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_50UA_150UA_300UA 0x00000180 /* IOUT_Diode_Ratio: 3 current measuremet 50uA 150uA 300uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_100UA_300UA_600UA 0x000001C0 /* IOUT_Diode_Ratio: 3 current measuremet 100uA 300uA 600uA */
#define ENUM_CORE_CHANNEL_EXCITATION_NONE 0x00000000 /* IOUT_Excitation_Current: Excitation Current Disabled */
#define ENUM_CORE_CHANNEL_EXCITATION_RESERVED 0x00000001 /* IOUT_Excitation_Current: Reserved */
#define ENUM_CORE_CHANNEL_EXCITATION_IEXC_10UA 0x00000002 /* IOUT_Excitation_Current: 10 \mu;A */
@@ -1068,32 +1020,40 @@
#define BITP_CORE_SETTLING_TIME_SETTLING_TIME 0 /* Settling Time to Allow When Switching to Channel */
#define BITM_CORE_SETTLING_TIME_SETTLING_TIME_UNITS 0x0000C000 /* Units for Settling Time */
#define BITM_CORE_SETTLING_TIME_SETTLING_TIME 0x00003FFF /* Settling Time to Allow When Switching to Channel */
-#define ENUM_CORE_SETTLING_TIME_MILLISECONDS 0x00000000 /* Settling_Time_Units: Micro-seconds */
-#define ENUM_CORE_SETTLING_TIME_SECONDS 0x00004000 /* Settling_Time_Units: Milli-seconds */
-#define ENUM_CORE_SETTLING_TIME_RESERVED 0x00008000 /* Settling_Time_Units: Seconds */
+#define ENUM_CORE_SETTLING_TIME_MICROSECONDS 0x00000000 /* Settling_Time_Units: Micro-seconds */
+#define ENUM_CORE_SETTLING_TIME_MILLISECONDS 0x00004000 /* Settling_Time_Units: Milli-seconds */
+#define ENUM_CORE_SETTLING_TIME_SECONDS 0x00008000 /* Settling_Time_Units: Seconds */
#define ENUM_CORE_SETTLING_TIME_UNDEFINED 0x0000C000 /* Settling_Time_Units: Undefined */
/* -------------------------------------------------------------------------------------------------------------------------
CORE_MEASUREMENT_SETUP[n] Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
#define BITP_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 15 /* Disable Buffers */
+#define BITP_CORE_MEASUREMENT_SETUP_GND_SW 13 /* Ground Switch Selection */
#define BITP_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 12 /* ADC Digital Filter Type */
#define BITP_CORE_MEASUREMENT_SETUP_CHOP_MODE 10 /* Enabled and Disable Chop Mode */
+#define BITP_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL 9 /* Disable Current Sources After Measurement Completes */
#define BITP_CORE_MEASUREMENT_SETUP_NOTCH_EN_2 8 /* Enable Notch 2 Filter Mode */
#define BITP_CORE_MEASUREMENT_SETUP_ADC_SF 0 /* ADC Digital Filter Speed */
#define BITM_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 0x00008000 /* Disable Buffers */
+#define BITM_CORE_MEASUREMENT_SETUP_GND_SW 0x00006000 /* Ground Switch Selection */
#define BITM_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 0x00001000 /* ADC Digital Filter Type */
#define BITM_CORE_MEASUREMENT_SETUP_CHOP_MODE 0x00000C00 /* Enabled and Disable Chop Mode */
+#define BITM_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL 0x00000200 /* Disable Current Sources After Measurement Completes */
#define BITM_CORE_MEASUREMENT_SETUP_NOTCH_EN_2 0x00000100 /* Enable Notch 2 Filter Mode */
#define BITM_CORE_MEASUREMENT_SETUP_ADC_SF 0x0000007F /* ADC Digital Filter Speed */
#define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_ENABLED 0x00000000 /* Buffer_Bypass: Input buffers enabled */
#define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_DISABLED 0x00008000 /* Buffer_Bypass: Input buffers disabled */
+#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_OPEN 0x00000000 /* GND_SW: GND_SW Open. The ground switch is not enabled for the sensor measurement */
+#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_CLOSED 0x00002000 /* GND_SW: GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
#define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC4 0x00000000 /* ADC_Filter_Type: Enabled SINC4 filter */
#define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC3 0x00001000 /* ADC_Filter_Type: Enabled SINC3 filter */
#define ENUM_CORE_MEASUREMENT_SETUP_DISABLE_CHOP 0x00000000 /* Chop_Mode: ADC front end chopping disabled */
#define ENUM_CORE_MEASUREMENT_SETUP_HW_CHOP 0x00000400 /* Chop_Mode: Hardware chopping enabled */
#define ENUM_CORE_MEASUREMENT_SETUP_SW_CHOP 0x00000800 /* Chop_Mode: SW chop enabled */
#define ENUM_CORE_MEASUREMENT_SETUP_HW_SW_CHOP 0x00000C00 /* Chop_Mode: Hardware and software chop enabled */
+#define ENUM_CORE_MEASUREMENT_SETUP_POWERCYCLE 0x00000000
+#define ENUM_CORE_MEASUREMENT_SETUP_ALWAYSON 0x00000200
#define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_DIS 0x00000000 /* NOTCH_EN_2: Disable notch filter */
#define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_EN 0x00000100 /* NOTCH_EN_2: Enable notch 2 filter option. */
@@ -1110,12 +1070,6 @@
#define BITM_CORE_LOW_THRESHOLD_LIMIT_LOW_THRESHOLD 0xFFFFFFFF /* Lower Limit for Sensor Alert Comparison */
/* -------------------------------------------------------------------------------------------------------------------------
- CORE_IDEALITY_FACTOR[n] Pos/Masks Description
- ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_IDEALITY_FACTOR_IDEALITY_FACTOR 0 /* Diode Ideality Factor, Default 1.003. */
-#define BITM_CORE_IDEALITY_FACTOR_IDEALITY_FACTOR 0xFFFFFFFF /* Diode Ideality Factor, Default 1.003. */
-
-/* -------------------------------------------------------------------------------------------------------------------------
CORE_SENSOR_OFFSET[n] Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
#define BITP_CORE_SENSOR_OFFSET_SENSOR_OFFSET 0 /* Sensor Offset Adjustment */
@@ -1134,12 +1088,6 @@
#define BITM_CORE_CHANNEL_SKIP_CHANNEL_SKIP 0x000000FF /* Indicates If Channel Will Skip Some Measurement Cycles */
/* -------------------------------------------------------------------------------------------------------------------------
- CORE_SENSOR_PARAMETER[n] Pos/Masks Description
- ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_SENSOR_PARAMETER_SENSOR_PARAMETER 0 /* Sensor Parameter Adjustment */
-#define BITM_CORE_SENSOR_PARAMETER_SENSOR_PARAMETER 0xFFFFFFFF /* Sensor Parameter Adjustment */
-
-/* -------------------------------------------------------------------------------------------------------------------------
CORE_DIGITAL_SENSOR_CONFIG[n] Pos/Masks Description
------------------------------------------------------------------------------------------------------------------------- */
#define BITP_CORE_DIGITAL_SENSOR_CONFIG_DIGITAL_SENSOR_DATA_BITS 11 /* Number of Relevant Data Bits */
--- a/inc/admw1001/ADMW1001_REGISTERS_typedefs.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS_typedefs.h Fri Mar 06 17:03:18 2020 +0000
@@ -1,7 +1,7 @@
/* ================================================================================
Created by :
- Created on : 2020 Jan 15, 14:45 GMT Standard Time
+ Created on : 2019 Oct 08, 09:43 GMT Daylight Time
Project : ADMW1001_REGISTERS
File : ADMW1001_REGISTERS_typedefs.h
@@ -10,7 +10,7 @@
!! ADI Confidential !!
INTERNAL USE ONLY
- Copyright (c) 2020 Analog Devices, Inc. All Rights Reserved.
+ Copyright (c) 2019 Analog Devices, Inc. All Rights Reserved.
This software is proprietary and confidential to Analog Devices, Inc. and
its licensors.
@@ -71,6 +71,38 @@
/*@}*/
+/** @defgroup Interface_Config_B Interface Configuration B (Interface_Config_B) Register
+ * Interface Configuration B (Interface_Config_B) Register.
+ * @{
+ */
+
+/* =========================================================================
+ *! \enum ADMW_SPI_Interface_Config_B_Single_Inst
+ *! \brief Select Streaming or Single Instruction Mode (Single_Inst) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ SPI_INTERFACE_CONFIG_B_STREAMING_MODE = 0, /**< Streaming mode is enabled */
+ SPI_INTERFACE_CONFIG_B_SINGLE_INSTRUCTION_MODE = 1 /**< Single Instruction mode is enabled */
+} ADMW_SPI_Interface_Config_B_Single_Inst;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Interface_Config_B_Struct
+ *! \brief Interface Configuration B Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Interface_Config_B_t {
+ union {
+ struct {
+ uint8_t reserved0 : 7;
+ uint8_t Single_Inst : 1; /**< Select Streaming or Single Instruction Mode */
+ };
+ uint8_t VALUE8;
+ };
+} ADMW_SPI_Interface_Config_B_t;
+
+/*@}*/
+
/** @defgroup Chip_Type Chip Type (Chip_Type) Register
* Chip Type (Chip_Type) Register.
* @{
@@ -104,7 +136,8 @@
typedef struct _ADMW_SPI_Product_ID_L_t {
union {
struct {
- uint8_t Product_ID : 8; /**< Product_ID[7:0] The Device Chip Type and Family */
+ uint8_t Product_ID_Trim_Bits : 4; /**< These Bits Vary on Die Configured for Multiple Generics */
+ uint8_t Product_ID_Fixed_Bits : 4; /**< Product_ID_Fixed_Bits[3:0] These Bits are Fixed on Die Configured for Multiple Generics */
};
uint8_t VALUE8;
};
@@ -124,7 +157,7 @@
typedef struct _ADMW_SPI_Product_ID_H_t {
union {
struct {
- uint8_t Product_ID : 8; /**< Product_ID[15:8] The Device Chip Type and Family */
+ uint8_t Product_ID_Fixed_Bits : 8; /**< Product_ID_Fixed_Bits[11:4] These Bits are Fixed on Die Configured for Multiple Generics */
};
uint8_t VALUE8;
};
@@ -132,6 +165,27 @@
/*@}*/
+/** @defgroup Chip_Grade Chip Grade (Chip_Grade) Register
+ * Chip Grade (Chip_Grade) Register.
+ * @{
+ */
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Chip_Grade_Struct
+ *! \brief Chip Grade Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Chip_Grade_t {
+ union {
+ struct {
+ uint8_t Device_Revision : 4; /**< Device Hardware Revision */
+ uint8_t Grade : 4; /**< Device Performance Grade */
+ };
+ uint8_t VALUE8;
+ };
+} ADMW_SPI_Chip_Grade_t;
+
+/*@}*/
+
/** @defgroup Scratch_Pad Scratch Pad (Scratch_Pad) Register
* Scratch Pad (Scratch_Pad) Register.
* @{
@@ -254,6 +308,85 @@
/*@}*/
+/** @defgroup Transfer_Config Transfer Config (Transfer_Config) Register
+ * Transfer Config (Transfer_Config) Register.
+ * @{
+ */
+
+/* =========================================================================
+ *! \enum ADMW_SPI_Transfer_Config_Stream_Mode
+ *! \brief When Streaming, Control Master to Slave Transfer (Stream_Mode) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ SPI_TRANSFER_CONFIG_UPDATE_ON_WRITE = 0, /**< Transfers after each byte/mulit-byte register */
+ SPI_TRANSFER_CONFIG_UPDATE_ON_ADDRESS_LOOP = 1 /**< Transfers when address loops */
+} ADMW_SPI_Transfer_Config_Stream_Mode;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Transfer_Config_Struct
+ *! \brief Transfer Config Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Transfer_Config_t {
+ union {
+ struct {
+ uint8_t reserved0 : 1;
+ uint8_t Stream_Mode : 1; /**< When Streaming, Control Master to Slave Transfer */
+ uint8_t reserved2 : 6;
+ };
+ uint8_t VALUE8;
+ };
+} ADMW_SPI_Transfer_Config_t;
+
+/*@}*/
+
+/** @defgroup Interface_Config_C Interface Configuration C (Interface_Config_C) Register
+ * Interface Configuration C (Interface_Config_C) Register.
+ * @{
+ */
+
+/* =========================================================================
+ *! \enum ADMW_SPI_Interface_Config_C_Strict_Register_Access
+ *! \brief Multibyte Registers Must Be Read or Written in Full (Strict_Register_Access) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ SPI_INTERFACE_CONFIG_C_NORMAL_ACCESS = 0, /**< Normal mode, no access restrictions */
+ SPI_INTERFACE_CONFIG_C_STRICT_ACCESS = 1 /**< Strict mode, multi-byte registers require all bytes read/written */
+} ADMW_SPI_Interface_Config_C_Strict_Register_Access;
+
+
+/* =========================================================================
+ *! \enum ADMW_SPI_Interface_Config_C_CRC_Enable
+ *! \brief CRC Enable (CRC_Enable) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ SPI_INTERFACE_CONFIG_C_DISABLED = 0, /**< CRC Disabled */
+ SPI_INTERFACE_CONFIG_C_ENABLED = 1 /**< CRC Enabled */
+} ADMW_SPI_Interface_Config_C_CRC_Enable;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Interface_Config_C_Struct
+ *! \brief Interface Configuration C Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Interface_Config_C_t {
+ union {
+ struct {
+ uint8_t CRC_EnableB : 2; /**< Inverted CRC Enable */
+ uint8_t reserved2 : 2;
+ uint8_t Send_Status : 1; /**< Sends Status in 4-Wire Mode When Enabled */
+ uint8_t Strict_Register_Access : 1; /**< Multibyte Registers Must Be Read or Written in Full */
+ uint8_t CRC_Enable : 2; /**< CRC Enable */
+ };
+ uint8_t VALUE8;
+ };
+} ADMW_SPI_Interface_Config_C_t;
+
+/*@}*/
+
/** @defgroup Interface_Status_A Interface Status A (Interface_Status_A) Register
* Interface Status A (Interface_Status_A) Register.
* @{
@@ -297,6 +430,7 @@
CORE_COMMAND_LATCH_CONFIG = 7, /**< Latch configuration. */
CORE_COMMAND_LOAD_LUT = 8, /**< Load LUT from flash */
CORE_COMMAND_SAVE_LUT = 9, /**< Save LUT to flash */
+ CORE_COMMAND_POWER_DOWN = 20, /**< Enter Low Power State */
CORE_COMMAND_LOAD_CONFIG_1 = 24, /**< Load registers with configuration from flash */
CORE_COMMAND_SAVE_CONFIG_1 = 25 /**< Store current registers to flash configuration */
} ADMW_CORE_Command_Special_Command;
@@ -341,8 +475,7 @@
typedef enum
{
CORE_MODE_DRDY_PER_CONVERSION = 0, /**< Data ready per conversion */
- CORE_MODE_DRDY_PER_CYCLE = 1, /**< Data ready per cycle */
- CORE_MODE_DRDY_PER_FIFO_FILL = 2
+ CORE_MODE_DRDY_PER_CYCLE = 1 /**< Data ready per cycle */
} ADMW_CORE_Mode_Drdy_Mode;
@@ -401,17 +534,6 @@
*/
/* =========================================================================
- *! \enum ADMW_CORE_Cycle_Control_GND_SW_CTRL
- *! \brief Ground Switch Cycle Control (GND_SW_CTRL) Enumerations
- * ========================================================================= */
-typedef enum
-{
- CORE_CYCLE_CONTROL_OPEN_SW = 0, /**< Ground Switch Opens outside of measurement cycle to conserve power */
- CORE_CYCLE_CONTROL_CLOSE_SW = 1 /**< Ground Switch Closed */
-} ADMW_CORE_Cycle_Control_GND_SW_CTRL;
-
-
-/* =========================================================================
*! \enum ADMW_CORE_Cycle_Control_Vbias
*! \brief Voltage Bias Global Enable (Vbias) Enumerations
* ========================================================================= */
@@ -433,17 +555,6 @@
} ADMW_CORE_Cycle_Control_Cycle_Time_Units;
-/* =========================================================================
- *! \enum ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL
- *! \brief Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
- * ========================================================================= */
-typedef enum
-{
- CORE_CYCLE_CONTROL_POWERCYCLE = 0, /**< */
- CORE_CYCLE_CONTROL_ALWAYSON = 1 /**< */
-} ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL;
-
-
/* ==========================================================================
*! \struct ADMW_CORE_Cycle_Control_Struct
*! \brief Measurement Cycle Register bit field structure
@@ -452,10 +563,10 @@
union {
struct {
uint16_t Cycle_Time : 12; /**< Time Between Measurement Cycles */
- uint16_t GND_SW_CTRL : 1; /**< Ground Switch Cycle Control */
- uint16_t Vbias : 1; /**< Voltage Bias Global Enable */
+ uint16_t reserved12 : 1;
+ uint16_t Vbias : 1; /**< Voltage Bias Global Enable */
uint16_t Cycle_Time_Units : 1; /**< Units for Cycle Time */
- uint16_t PST_MEAS_EXC_CTRL : 1; /**< Disable Current Sources After Measurement Completes */
+ uint16_t reserved15 : 1;
};
uint16_t VALUE16;
};
@@ -561,10 +672,9 @@
uint16_t Sensor_OverRange : 1; /**< Indicates If the Sensor is Overrange */
uint16_t CJ_Soft_Fault : 1; /**< Cold Junction Soft Fault */
uint16_t CJ_Hard_Fault : 1; /**< Cold Junction Hard Fault */
- uint16_t ADC_Input_OverRange : 1; /**< Indicates the ADC Input is Overrange */
- uint16_t Sensor_HardFault : 1; /**< Indicates Sensor Hard Fault */
- uint16_t Threshold_Exceeded : 1;
- uint16_t reserved7 : 7;
+ uint16_t ADC_Input_OverRange : 1; /**< Indicates the ADC Input is Overrange */
+ uint16_t Sensor_HardFault : 1; /**< Indicates Sensor Hard Fault */
+ uint16_t reserved8 : 8;
};
uint16_t VALUE16;
};
@@ -631,32 +741,24 @@
} ADMW_CORE_External_Voltage_Reference_t;
/*@}*/
-
-/** @defgroup AVDD_Voltage AVDD Voltage (AVDD_Voltage) Register
- * AVDD Voltage (AVDD_Voltage) Register.
- * @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_AVDD_Voltage_Struct
- *! \brief AVDD Voltage Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_AVDD_Voltage_t {
- union {
- struct {
- float Avdd_Voltage; /**< AVDD Voltage */
- };
- float VALUE32;
- };
-} ADMW_CORE_AVDD_Voltage_t;
-
-/*@}*/
-
/** @defgroup Diagnostics_Control Diagnostic Control (Diagnostics_Control) Register
* Diagnostic Control (Diagnostics_Control) Register.
* @{
*/
+/* =========================================================================
+ *! \enum ADMW_CORE_Diagnostics_Control_Diag_OSD_Freq
+ *! \brief Diagnostics Open Sensor Detect Frequency (Diag_OSD_Freq) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ CORE_DIAGNOSTICS_CONTROL_OCD_OFF = 0, /**< No Open-Circuit Detection During Measurement */
+ CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE = 1, /**< Open-Circuit Detection Performed Once Per Measurement Cycle */
+ CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES = 2, /**< Open-Circuit Detection Performed Once Per Ten Measurement Cycles */
+ CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES = 3 /**< Open-Circuit Detection Performed Once Per Hundred Measurement Cycles */
+} ADMW_CORE_Diagnostics_Control_Diag_OSD_Freq;
+
+
/* ==========================================================================
*! \struct ADMW_CORE_Diagnostics_Control_Struct
*! \brief Diagnostic Control Register bit field structure
@@ -665,7 +767,8 @@
union {
struct {
uint8_t Diag_Meas_En : 1; /**< Diagnostics Measure Enable */
- uint8_t Diag_OSD_Freq : 7; /**< Diagnostics Open Sensor Detect Frequency */
+ uint8_t Diag_OSD_Freq : 2; /**< Diagnostics Open Sensor Detect Frequency */
+ uint8_t reserved3 : 5;
};
uint8_t VALUE8;
};
@@ -777,8 +880,8 @@
typedef struct _ADMW_CORE_LUT_Offset_t {
union {
struct {
- uint16_t LUT_Offset : 11; /**< Offset into the Lookup Table */
- uint16_t reserved11 : 5;
+ uint16_t LUT_Offset : 14; /**< Offset into the Lookup Table */
+ uint16_t reserved14 : 2;
};
uint16_t VALUE16;
};
@@ -891,7 +994,6 @@
CORE_SENSOR_TYPE_RTD_4W_PT100 = 96, /**< RTD 4 wire PT100 sensor */
CORE_SENSOR_TYPE_RTD_4W_PT1000 = 97, /**< RTD 4 wire PT1000 sensor */
CORE_SENSOR_TYPE_BRIDGE_4W = 169, /**< Bridge 4 wire sensor */
- CORE_SENSOR_TYPE_VOLTAGE = 512, /**< Voltage Input */
CORE_SENSOR_TYPE_CUSTOM1 = 1024, /**< Custom1 */
CORE_SENSOR_TYPE_I2C_HUMIDITY_B = 2113, /**< I2C humidity sensor B */
CORE_SENSOR_TYPE_SENSOR_RESERVED_1 = 4064, /**< RESERVED. NOT TO BE USED */
@@ -939,9 +1041,10 @@
* ========================================================================= */
typedef enum
{
- CORE_SENSOR_DETAILS_LUT_DEFAULT = 0, /**< Default lookup table for selected sensor type */
- CORE_SENSOR_DETAILS_LUT_CUSTOM = 1, /**< User defined custom lookup table. */
- CORE_SENSOR_DETAILS_LUT_RESERVED = 2 /**< Reserved */
+ CORE_SENSOR_DETAILS_LUT_DEFAULT = 0, /**< Default lookup table for selected sensor type */
+ CORE_SENSOR_DETAILS_LUT_UNITY = 1, /**< Unity lookup table. 1:1 mapping from input to output */
+ CORE_SENSOR_DETAILS_LUT_CUSTOM = 2, /**< User defined custom lookup table. */
+ CORE_SENSOR_DETAILS_LUT_RESERVED = 3 /**< Reserved */
} ADMW_CORE_Sensor_Details_LUT_Select;
@@ -1036,23 +1139,6 @@
} ADMW_CORE_Channel_Excitation_IOUT_Excitation_Current;
-/* =========================================================================
- *! \enum ADMW_CORE_Channel_Excitation_IOUT_Diode_Ratio
- *! \brief Modify Current Ratios Used for Diode Sensor (IOUT_Diode_Ratio) Enumerations
- * ========================================================================= */
-typedef enum
-{
- CORE_CHANNEL_EXCITATION_DIODE_2PT_10UA_100UA = 0, /**< 2 Current measurement 10uA 100uA */
- CORE_CHANNEL_EXCITATION_DIODE_2PT_20UA_160UA = 1, /**< 2 Current measurement 20uA 160uA */
- CORE_CHANNEL_EXCITATION_DIODE_2PT_50UA_300UA = 2, /**< 2 Current measurement 50uA 300uA */
- CORE_CHANNEL_EXCITATION_DIODE_2PT_100UA_600UA = 3, /**< 2 Current measurement 100uA 600uA */
- CORE_CHANNEL_EXCITATION_DIODE_3PT_10UA_50UA_100UA = 4, /**< 3 current measuremet 10uA 50uA 100uA */
- CORE_CHANNEL_EXCITATION_DIODE_3PT_20UA_100UA_160UA = 5, /**< 3 current measuremet 20uA 100uA 160uA */
- CORE_CHANNEL_EXCITATION_DIODE_3PT_50UA_150UA_300UA = 6, /**< 3 current measuremet 50uA 150uA 300uA */
- CORE_CHANNEL_EXCITATION_DIODE_3PT_100UA_300UA_600UA = 7 /**< 3 current measuremet 100uA 300uA 600uA */
-} ADMW_CORE_Channel_Excitation_IOUT_Diode_Ratio;
-
-
/* ==========================================================================
*! \struct ADMW_CORE_Channel_Excitation_Struct
*! \brief Excitation Current Register bit field structure
@@ -1061,9 +1147,7 @@
union {
struct {
uint16_t IOUT_Excitation_Current : 4; /**< Current Source Value */
- uint16_t reserved4 : 2;
- uint16_t IOUT_Diode_Ratio : 3; /**< Modify Current Ratios Used for Diode Sensor */
- uint16_t reserved9 : 7;
+ uint16_t reserved4 : 12;
};
uint16_t VALUE16;
};
@@ -1076,6 +1160,19 @@
* @{
*/
+/* =========================================================================
+ *! \enum ADMW_CORE_Settling_Time_Settling_Time_Units
+ *! \brief Units for Settling Time (Settling_Time_Units) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ CORE_SETTLING_TIME_MICROSECONDS = 0, /**< Micro-seconds */
+ CORE_SETTLING_TIME_MILLISECONDS = 1, /**< Milli-seconds */
+ CORE_SETTLING_TIME_SECONDS = 2, /**< Seconds */
+ CORE_SETTLING_TIME_UNDEFINED = 3 /**< Undefined */
+} ADMW_CORE_Settling_Time_Settling_Time_Units;
+
+
/* ==========================================================================
*! \struct ADMW_CORE_Settling_Time_Struct
*! \brief Settling Time Register bit field structure
@@ -1083,8 +1180,8 @@
typedef struct _ADMW_CORE_Settling_Time_t {
union {
struct {
- uint16_t Settling_Time : 8; /**< Additional Settling Time in Milliseconds. Max 255ms */
- uint16_t reserved8 : 8;
+ uint16_t Settling_Time : 14; /**< Settling Time to Allow When Switching to Channel */
+ uint16_t Settling_Time_Units : 2; /**< Units for Settling Time */
};
uint16_t VALUE16;
};
@@ -1109,6 +1206,17 @@
/* =========================================================================
+ *! \enum ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL
+ *! \brief Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ CORE_MEASUREMENT_SETUP_POWERCYCLE = 0, /**< */
+ CORE_MEASUREMENT_SETUP_ALWAYSON = 1 /**< */
+} ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL;
+
+
+/* =========================================================================
*! \enum ADMW_CORE_Measurement_Setup_Chop_Mode
*! \brief Enabled and Disable Chop Mode (Chop_Mode) Enumerations
* ========================================================================= */
@@ -1133,6 +1241,17 @@
/* =========================================================================
+ *! \enum ADMW_CORE_Measurement_Setup_GND_SW
+ *! \brief Ground Switch Selection (GND_SW) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ CORE_MEASUREMENT_SETUP_GND_SW_OPEN = 0, /**< GND_SW Open. The ground switch is not enabled for the sensor measurement */
+ CORE_MEASUREMENT_SETUP_GND_SW_CLOSED = 1 /**< GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
+} ADMW_CORE_Measurement_Setup_GND_SW;
+
+
+/* =========================================================================
*! \enum ADMW_CORE_Measurement_Setup_Buffer_Bypass
*! \brief Disable Buffers (Buffer_Bypass) Enumerations
* ========================================================================= */
@@ -1153,12 +1272,12 @@
uint32_t ADC_SF : 7; /**< ADC Digital Filter Speed */
uint32_t reserved7 : 1;
uint32_t NOTCH_EN_2 : 1; /**< Enable Notch 2 Filter Mode */
- uint32_t reserved9 : 1;
- uint32_t Chop_Mode : 2; /**< Enabled and Disable Chop Mode */
- uint32_t ADC_Filter_Type : 1; /**< ADC Digital Filter Type */
- uint32_t reserved13 : 2;
- uint32_t Buffer_Bypass : 1; /**< Disable Buffers */
- uint32_t reserved16 : 16;
+ uint32_t PST_MEAS_EXC_CTRL : 1; /**< Disable Current Sources After Measurement Completes */
+ uint32_t Chop_Mode : 2; /**< Enabled and Disable Chop Mode */
+ uint32_t ADC_Filter_Type : 1; /**< ADC Digital Filter Type */
+ uint32_t GND_SW : 2; /**< Ground Switch Selection */
+ uint32_t Buffer_Bypass : 1; /**< Disable Buffers */
+ uint32_t reserved16 : 16;
};
uint32_t VALUE32;
};
@@ -1206,26 +1325,6 @@
/*@}*/
-/** @defgroup Ideality_Factor Diode Ideality Factor Register (Ideality_Factor) Register
- * Diode Ideality Factor Register (Ideality_Factor) Register.
- * @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_Ideality_Factor_Struct
- *! \brief Diode Ideality Factor Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_Ideality_Factor_t {
- union {
- struct {
- float32_t Ideality_Factor; /**< Diode Ideality Factor, Default 1.003. */
- };
- float32_t VALUE32;
- };
-} ADMW_CORE_Ideality_Factor_t;
-
-/*@}*/
-
/** @defgroup Sensor_Offset Sensor Offset Adjustment (Sensor_Offset) Register
* Sensor Offset Adjustment (Sensor_Offset) Register.
* @{
@@ -1287,26 +1386,6 @@
/*@}*/
-/** @defgroup Sensor_Parameter Sensor Parameter Adjustment (Sensor_Parameter) Register
- * Sensor Parameter Adjustment (Sensor_Parameter) Register.
- * @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_Sensor_Parameter_Struct
- *! \brief Sensor Parameter Adjustment Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_Sensor_Parameter_t {
- union {
- struct {
- float Sensor_Parameter; /**< Sensor Parameter Adjustment */
- };
- float VALUE32;
- };
-} ADMW_CORE_Sensor_Parameter_t;
-
-/*@}*/
-
/** @defgroup Digital_Sensor_Config Digital Sensor Data Coding (Digital_Sensor_Config) Register
* Digital Sensor Data Coding (Digital_Sensor_Config) Register.
* @{
@@ -1371,6 +1450,17 @@
*/
/* =========================================================================
+ *! \enum ADMW_CORE_Digital_Sensor_Comms_Digital_Sensor_Comms_En
+ *! \brief Enable Digital Sensor Communications Register Parameters (Digital_Sensor_Comms_En) Enumerations
+ * ========================================================================= */
+typedef enum
+{
+ CORE_DIGITAL_SENSOR_COMMS_DIGITAL_COMMS_DEFAULT = 0, /**< Default parameters used for digital sensor communications */
+ CORE_DIGITAL_SENSOR_COMMS_DIGITAL_COMMS_USER = 1 /**< User supplied parameters used for digital sensor communications */
+} ADMW_CORE_Digital_Sensor_Comms_Digital_Sensor_Comms_En;
+
+
+/* =========================================================================
*! \enum ADMW_CORE_Digital_Sensor_Comms_SPI_Clock
*! \brief Controls Clock Frequency for SPI Sensors (SPI_Clock) Enumerations
* ========================================================================= */
@@ -1428,12 +1518,12 @@
typedef struct _ADMW_CORE_Digital_Sensor_Comms_t {
union {
struct {
- uint16_t reserved0 : 1;
- uint16_t SPI_Clock : 4; /**< Controls Clock Frequency for SPI Sensors */
- uint16_t I2C_Clock : 2; /**< Controls SCLK Frequency for I2C Sensors */
- uint16_t reserved7 : 3;
- uint16_t SPI_Mode : 2; /**< Configuration for Sensor SPI Protocol */
- uint16_t reserved12 : 4;
+ uint16_t Digital_Sensor_Comms_En : 1; /**< Enable Digital Sensor Communications Register Parameters */
+ uint16_t SPI_Clock : 4; /**< Controls Clock Frequency for SPI Sensors */
+ uint16_t I2C_Clock : 2; /**< Controls SCLK Frequency for I2C Sensors */
+ uint16_t reserved7 : 3;
+ uint16_t SPI_Mode : 2; /**< Configuration for Sensor SPI Protocol */
+ uint16_t reserved12 : 4;
};
uint16_t VALUE16;
};
--- a/inc/admw1001/admw1001_config.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_config.h Fri Mar 06 17:03:18 2020 +0000
@@ -58,8 +58,7 @@
#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,
@@ -80,8 +79,7 @@
} 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,
@@ -92,8 +90,7 @@
} 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
@@ -114,18 +111,16 @@
} ADMW1001_DATAREADY_MODE;
/*! ADMW1001 power mode options */
-typedef enum
-{
- ADMW1001_POWER_MODE_ACTIVE = 0,
+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_HIBERNATION,
- /*!< module has entede hibernation mode. All analog circuitry is disabled. All peripherals disabled apart from the Wake-up pin functionality. */
} ADMW1001_POWER_MODE;
/*! ADMW1001 measurement analog filter settling options */
-typedef enum
-{
+typedef enum {
ADMW1001_FILTER_SETTLING_ALWAYS = 0,
/*!< Allow full settling time to elapse between every measurement from an analog sensor */
ADMW1001_FILTER_SETTLING_FAST,
@@ -138,8 +133,7 @@
* 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,
@@ -149,8 +143,30 @@
} ADMW1001_MEASUREMENT_UNIT;
-typedef enum
-{
+/*! ADMW1001 Open-Sensor Diagnostics frequency
+ *
+ * Select the per-cycle frequency at which open-sensor diagnostic
+ * checks should be performed. Open-sensor diagnostic checks typically require
+ * specific or time-consuming processing which cannot be executed while a
+ * measurement cycle is running.
+ *
+ * @note Open-sensor diagnostic checks, when performed, will add a delay to the
+ * start of the next measurement cycle.
+ */
+typedef enum {
+ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED = 0,
+ /*!< No Open-Sensor Detection is performed */
+ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE,
+ /*!< No Open-Sensor Detection is performed prior to each cycle */
+ ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_100_CYCLES,
+ /*!< 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;
+
+
+typedef enum {
ADMW1001_BUFFER_BYPASSS_DISABLED = 0,
/*!< Buffer Bypass Disabled */
ADMW1001_BUFFER_BYPASSS_ENABLED,
@@ -162,8 +178,7 @@
*
* @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,
@@ -178,8 +193,7 @@
*
* @note applicable only to ADC analog sensor channels
*/
-typedef enum
-{
+typedef enum {
ADMW1001_ADC_GAIN_1X = 0,
/*!< no amplification gain */
ADMW1001_ADC_GAIN_2X,
@@ -204,13 +218,11 @@
* @note applicable only to ADC analog sensor channels, and
* specific sensor types
*/
-typedef enum
-{
- ADMW1001_ADC_EXC_STATE_CYCLE_POWER = 0,
+typedef enum {
+ ADMW1001_ADC_EXC_STATE_CYCLE_POWER=0,
/*!< Excitation for measurement is active only during measurement */
ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
/*!< Excitation for measurement is always on */
-
} ADMW1001_ADC_EXC_STATE;
/*! ADMW1001 analog sensor excitation current output level options
@@ -218,8 +230,7 @@
* @note applicable only to ADC analog sensor channels, and
* specific sensor types
*/
-typedef enum
-{
+typedef enum {
ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT = -1,
/*!< NO External excitation is provided */
ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0,
@@ -241,8 +252,7 @@
*
* @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,
@@ -267,8 +277,7 @@
* @note applicable only to ADC analog sensor channels, and
* specific sensor types
*/
-typedef enum
-{
+typedef enum {
ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL = 0,
/*!< Internal VRef - 1.2V */
ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
@@ -284,8 +293,7 @@
*
* @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,
@@ -297,8 +305,7 @@
*
* @note applicable only to ADC analog sensor channels
*/
-typedef enum
-{
+typedef enum {
ADMW1001_CHOP_MD_NONE = 0,
/*!< No chop performed. */
ADMW1001_CHOP_MD_HW,
@@ -314,8 +321,7 @@
*
* @note applicable only to ADC analog sensor channels
*/
-typedef enum
-{
+typedef enum {
ADMW1001_ADC_FILTER_SINC4 = 0,
/*!< SINC4 - 4th order sinc response filter */
ADMW1001_ADC_FILTER_SINC3,
@@ -329,8 +335,7 @@
* @note SF must be set in conjunction with chop mode
* and sinc filter type to achieve the desired sampling rate.
*/
-typedef enum
-{
+typedef enum {
ADMW1001_SF_976HZ = 0,
/*!< SF setting for 976Hz sample rate. */
ADMW1001_SF_488HZ = 1,
@@ -356,8 +361,7 @@
*
* @note applicable only for I2C sensors
*/
-typedef enum
-{
+typedef enum {
ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0,
/*!< 100kHz I2C clock speed */
ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K,
@@ -369,8 +373,7 @@
*
* @note applicable only for SPI sensors
*/
-typedef enum
-{
+typedef enum {
ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0,
/*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 0 */
ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1,
@@ -386,8 +389,7 @@
*
* @note applicable only for SPI sensors
*/
-typedef enum
-{
+typedef enum {
ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_8MHZ = 0,
/*!< SPI Clock Speed configured to 8MHz */
ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_4MHZ,
@@ -424,8 +426,7 @@
} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK;
/*! ADMW1001 Power Configuration options */
-typedef struct
-{
+typedef struct {
ADMW1001_POWER_MODE powerMode;
/*!< Power mode selection */
@@ -436,8 +437,7 @@
* @note required only when ADMW1001_OPERATING_MODE_MULTICYCLE is selected
* as the operatingMode (@ref ADMW1001_MEASUREMENT_CONFIG)
*/
-typedef struct
-{
+typedef struct {
uint32_t cyclesPerBurst;
/*!< Number of cycles to complete for a single burst */
uint32_t burstInterval;
@@ -446,8 +446,7 @@
} 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;
@@ -464,13 +463,8 @@
* configurations, settling time is always skipped between consecutive
* measurements in a measurement cycle.
*/
- uint8_t excitationState;
- /*!< Excitation current state */
- uint8_t groundSwitch;
- /*!< Option to open or close sensor ground switch */
- uint8_t fifoNumCycles;
- /*!< Specifies the number of cycles to fill a FIFO buffer
- * Applicable only when operatingMode is ADMW1001_OPERATING_MODE_CONTINUOUS
+ 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
@@ -491,12 +485,7 @@
float32_t externalRefVoltage;
/*!< External Reference Voltage.
*/
- float32_t AVDDVoltage;
- /*!< AVDD Voltage.
- */
- uint32_t reserved1[1];
- /*!< Reserved for future use and ensure word alignment.
- */
+ uint32_t reserved1[2];
} ADMW1001_MEASUREMENT_CONFIG;
@@ -505,13 +494,13 @@
* @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 */
- float32_t idealityRatio;
} ADMW1001_ADC_EXC_CURRENT_CONFIG;
@@ -519,8 +508,7 @@
*
* @note applicable only to ADC analog sensor channels
*/
-typedef struct
-{
+typedef struct {
ADMW1001_ADC_FILTER_TYPE type;
/*!< Filter type selection */
ADMW1001_SINC_FILTER_RANGE sf;
@@ -529,6 +517,8 @@
/*!< Enable filter chop */
bool notch1p2;
/*!< Enable Notch 2 Filter Mode */
+ ADMW1001_ADC_GND_SW groundSwitch;
+ /*!< Option to open or close sensor ground switch */
} ADMW1001_ADC_FILTER_CONFIG;
@@ -536,8 +526,7 @@
*
* @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;
@@ -549,9 +538,10 @@
ADMW1001_ADC_FILTER_CONFIG filter;
/*!< ADC Filter configuration */
ADMW1001_ADC_REFERENCE_TYPE reference;
+ bool vBiasEnable;
/*!< ADC Reference configuration */
uint8_t bufferBypass;
- /*!< Buffer Bypass configuration */
+ /*!< Buffer Bypass configuration */
uint8_t reserved0[2];
/*!< Reserved for future use and ensure word alignment. */
uint32_t reserved1[6];
@@ -562,13 +552,14 @@
/*! ADMW1001 look-up table selection
* Select table used to linearise the measurement.
*/
-typedef enum
-{
+typedef enum {
ADMW1001_LUT_DEFAULT = 0,
/*!< Default LUT */
- ADMW1001_LUT_CUSTOM = 1,
+ ADMW1001_LUT_UNITY = 1,
+ /*!< Unity LUT */
+ ADMW1001_LUT_CUSTOM = 2,
/*!< User defined custom LUT */
- ADMW1001_LUT_RESERVED = 2,
+ ADMW1001_LUT_RESERVED = 3,
/*!< Reserved for future use */
} ADMW1001_LUT_SELECT;
@@ -577,8 +568,7 @@
*
* @note applicable only to SPI and I2C digital sensor channels
*/
-typedef enum
-{
+typedef enum {
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,
@@ -595,8 +585,7 @@
*
* @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;
@@ -618,8 +607,7 @@
*
* @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;
@@ -631,8 +619,7 @@
*
* @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
@@ -649,8 +636,7 @@
*
* @note applicable only to digital sensor channels
*/
-typedef struct
-{
+typedef struct {
bool useCustomCommsConfig;
/*!< Optional parameter to enable user digital communication settings */
ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED i2cClockSpeed;
@@ -666,8 +652,7 @@
*
* @note applicable only to I2C digital sensor channels
*/
-typedef struct
-{
+typedef struct {
ADMW1001_I2C_SENSOR_TYPE sensor;
/*!< Sensor type selection */
uint8_t deviceAddress;
@@ -708,8 +693,7 @@
*
* @note applicable only to SPI digital sensor channels
*/
-typedef struct
-{
+typedef struct {
ADMW1001_SPI_SENSOR_TYPE sensor;
/*!< Sensor type selection */
uint8_t reserved[2];
@@ -745,8 +729,7 @@
} ADMW1001_SPI_CHANNEL_CONFIG;
/*! ADMW1001 Measurement Channel configuration details */
-typedef struct
-{
+typedef struct {
bool enableChannel;
/*!< Option to include this channel in normal measurement cycles */
bool disablePublishing;
@@ -811,7 +794,7 @@
*/
uint32_t extraSettlingTime;
/*!< A minimum settling time is applied internally for each channel, based
- * on the sensor type. However, additional settling time (milliseconds)
+ * on the sensor type. However, additional settling time (microseconds)
* can optionally be specified. Set to 0 if not required.
*/
ADMW1001_CHANNEL_PRIORITY priority;
@@ -823,8 +806,7 @@
* ID. Lower numbers indicate higher priority, with 0 being the highest.
* Set to 0 if not required.
*/
- union
- {
+ union {
ADMW1001_ADC_CHANNEL_CONFIG adcChannelConfig;
/*!< ADC channel configuration - applicable only to ADC channels */
ADMW1001_I2C_CHANNEL_CONFIG i2cChannelConfig;
@@ -840,8 +822,7 @@
} ADMW1001_CHANNEL_CONFIG;
/*! ADMW1001 Diagnostics configuration details */
-typedef struct
-{
+typedef struct {
bool disableGlobalDiag;
/*!< Option to disable the following diagnostic checks on the ADC:
* - Reference Detection errors
@@ -858,7 +839,7 @@
* temperature of the ADMW1001 has exceeded critical limits
*/
- uint8_t osdFrequency;
+ ADMW1001_OPEN_SENSOR_DIAGNOSTICS osdFrequency;
/*!< Option to enable Open-Circuit Detection at a selected cycle interval */
} ADMW1001_DIAGNOSTICS_CONFIG;
@@ -866,8 +847,7 @@
typedef uint16_t ADMW1001_ADVANCED_ACCESS_KEY;
/*! ADMW1001 Device configuration details */
-typedef struct
-{
+typedef struct {
ADMW1001_POWER_CONFIG power;
/*!< Power configuration details */
ADMW1001_MEASUREMENT_CONFIG measurement;
--- a/inc/admw1001/admw1001_host_comms.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_host_comms.h Fri Mar 06 17:03:18 2020 +0000
@@ -80,18 +80,21 @@
*/
#define ADMW1001_HOST_COMMS_MAX_RETRIES (10)
+
/*! ADMW1001 Sensor Result bit field structure */
-typedef struct _ADMW1001_Sensor_Result_t
-{
- float32_t Sensor_Result; /**< Linearized and compensated sensor result */
- uint32_t Channel_ID : 4; /**< Indicates which channel this result corresponds to */
- uint32_t Ch_Error : 1; /**< Indicates Error on channel */
- uint32_t Ch_Alert : 1; /**< Indicates Alert on channel */
- uint32_t Ch_Raw : 1; /**< Indicates if Raw sensor data field is valid */
- uint32_t Ch_Valid : 1; /**< Indicates if this Result structure is valid */
- uint32_t Status : 24; /**< Reserved for future use */
- float32_t Raw_Sample; /**< Raw sensor data value */
-
-} ADMW1001_Sensor_Result_t;
+typedef struct ADMW1001_Sensor_Result_t {
+ union {
+ struct {
+ float32_t Sensor_Result; /**< Linearized and compensated sensor result */
+ uint32_t Channel_ID : 4; /**< Indicates which channel this result corresponds to */
+ uint32_t Ch_Error : 1; /**< Indicates Error on channel */
+ uint32_t Ch_Alert : 1; /**< Indicates Alert on channel */
+ uint32_t Ch_Raw : 1; /**< Indicates if Raw sensor data field is valid */
+ uint32_t Ch_Valid : 1; /**< Indicates if this Result structure is valid */
+ uint32_t Raw_Sample : 24; /**< Raw sensor data value */
+ };
+ uint64_t VALUE64;
+ };
+} ADMW1001_Sensor_Result_t;
#endif /* __ADMW1001_HOST_COMMS_H__ */
--- a/inc/admw1001/admw1001_lut_data.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_lut_data.h Fri Mar 06 17:03:18 2020 +0000
@@ -57,15 +57,14 @@
#endif
/*! LUT data validation signature */
-#define ADMW_LUT_SIGNATURE 0x4C555473
+#define ADMW_LUT_SIGNATURE 0x4C555473
/*! LUT data CRC-16-CCITT seed value */
-#define ADMW_LUT_CRC_SEED 0x4153
+#define ADMW_LUT_CRC_SEED 0x4153
/*! LUT maximum allowed size */
#define ADMW_LUT_MAX_SIZE 10240U
-#define MAX_LUT_NUM_ENTRIES 16
/*! Linearisation look-up table / co-efficient list geometry */
typedef enum {
ADMW1001_LUT_GEOMETRY_RESERVED = 0x00,
@@ -74,6 +73,12 @@
/**< 1D/2D equation coefficient list */
ADMW1001_LUT_GEOMETRY_NES_1D = 0x02,
/**< 1-dimensional not-equally-spaced look-up table */
+ ADMW1001_LUT_GEOMETRY_NES_2D = 0x03,
+ /**< 2-dimensional not-equally-spaced look-up table */
+ ADMW1001_LUT_GEOMETRY_ES_1D = 0x04,
+ /**< 1-dimensional equally-spaced look-up table */
+ ADMW1001_LUT_GEOMETRY_ES_2D = 0x05,
+ /**< 2-dimensional equally-spaced look-up table */
} ADMW1001_LUT_GEOMETRY;
/*! Linearisation equation type */
@@ -215,22 +220,22 @@
/*! Macro to calculate the number of elements in
* a @ref ADMW1001_LUT_1D_NES table */
#define ADMW1001_LUT_1D_NES_NELEMENTS(_t) \
- ((_t).nElements * 2)
+ ((_t).nElements * 2)
/*! Macro to calculate the number of elements in
* a @ref ADMW1001_LUT_2D_ES table */
#define ADMW1001_LUT_2D_ES_NELEMENTS(_t) \
- ((_t).nElementsX * (_t).nElementsX)
+ ((_t).nElementsX * (_t).nElementsX)
/*! Macro to calculate the number of elements in
* a @ref ADMW1001_LUT_2D_NES table */
#define ADMW1001_LUT_2D_NES_NELEMENTS(_t) \
- ((_t).nElementsX + (_t).nElementsY + ((_t).nElementsX * (_t).nElementsY))
+ ((_t).nElementsX + (_t).nElementsY + ((_t).nElementsX * (_t).nElementsY))
/*! Macro to calculate the number of elements in
* a @ref ADMW1001_LUT_2D_POLYN_COEFF_LIST table */
#define ADMW1001_LUT_2D_POLYN_COEFF_LIST_NELEMENTS(_t) \
- (((_t).maxDegree + 1) * ((_t).maxDegree + 2) / 2)
+ (((_t).maxDegree + 1) * ((_t).maxDegree + 2) / 2)
/*! Macro to calculate the storage size in bytes of
* a @ref ADMW1001_LUT_COEFF_LIST table */
@@ -265,15 +270,14 @@
/*! Look-Up Table descriptor */
typedef union __attribute__((packed, aligned(4))) {
struct {
- uint16_t geometry : 4; /**< ADMW1001_LUT_GEOMETRY */
- uint8_t channel : 2; /**< ADMW1001_ADC_CHANNEL */
- uint16_t equation : 6; /**< ADMW1001_LUT_EQUATION */
- uint16_t dir : 4; /**< ADMW1001_LUT_TC_DIRECTION */
- uint16_t sensor : 12; /**< ADMW1001_ADC_SENSOR_TYPE */
- uint16_t dataType : 4; /**< ADMW1001_LUT_DATA_TYPE */
- uint16_t length; /**< Length (bytes) of table data section
- (excl. this header) */
- uint16_t crc16; /**< CRC-16-CCITT of the data */
+ uint16_t geometry : 6; /**< ADMW1001_LUT_GEOMETRY */
+ uint16_t equation : 6; /**< ADMW1001_LUT_EQUATION */
+ uint16_t dir : 4; /**< ADMW1001_LUT_TC_DIRECTION */
+ uint16_t sensor : 12; /**< ADMW1001_ADC_SENSOR_TYPE */
+ uint16_t dataType : 4; /**< ADMW1001_LUT_DATA_TYPE */
+ uint16_t length; /**< Length (bytes) of table data section
+ (excl. this header) */
+ uint16_t crc16; /**< CRC-16-CCITT of the data */
};
uint64_t value64;
} ADMW1001_LUT_DESCRIPTOR;
@@ -329,7 +333,7 @@
typedef struct __attribute__((packed, aligned(4))) {
ADMW1001_LUT_HEADER header;
/*!< LUT data top-level header structure */
- ADMW1001_LUT_TABLE tables[1];
+ ADMW1001_LUT_TABLE tables[];
/*!< Variable-length array of one-or-more look-up table structures */
} ADMW1001_LUT;
--- a/inc/admw1001/admw1001_sensor_types.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_sensor_types.h Fri Mar 06 17:03:18 2020 +0000
@@ -102,6 +102,11 @@
*/
typedef enum
{
+ ADMW1001_ADC_SENSOR_THERMOCOUPLE_T = 0,
+ /*!< Standard T-type Thermocouple temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
ADMW1001_ADC_SENSOR_THERMOCOUPLE_J = 1,
/*!< Standard J-type Thermocouple temperature sensor
*
@@ -112,313 +117,150 @@
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_E = 3,
- /*!< Standard E-type Thermocouple temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_N = 4,
- /*!< Standard N-type Thermocouple temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_THERMOCOUPLE_1 = 8,
+ /*!< Standard thermocouple temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_R = 5,
- /*!< Standard R-type Thermocouple temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_S = 6,
- /*!< Standard S-type Thermocouple temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_T = 7,
- /*!< Standard T-type Thermocouple temperature sensor
+ ADMW1001_ADC_SENSOR_THERMOCOUPLE_2 = 9,
+ /*!< Standard thermocouple temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_B = 8,
- /*!< Standard B-type Thermocouple temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_THERMOCOUPLE_CUSTOM = 9,
- /*!< CUSTOM -type Thermocouple temperature sensor with custom
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_THERMOCOUPLE_3 = 10,
+ /*!< Standard thermocouple temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100_DEF_L1 = 32,
- /*!< Standard 2-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_DEF_L1 = 33,
- /*!< Standard 2-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_THERMOCOUPLE_4 = 11,
+ /*!< Standard thermocouple temperature sensor
*
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
+ * @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT10 = 34,
- /*!< Standard 2-wire PT10 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT50 = 35,
- /*!< Standard 2-wire PT50 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100 = 32,
+ /*!< Standard 2-wire PT100 RTD temperature sensor
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100 = 36,
- /*!< Standard 2-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT200 = 37,
- /*!< Standard 2-wire PT200 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000 = 33,
+ /*!< Standard 2-wire PT1000 RTD temperature
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT500 = 38,
- /*!< Standard 2-wire PT500 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000 = 39,
- /*!< Standard 2-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_0P00375 = 40,
- /*!< Standard 2-wire PT1000 RTD temperature sensor with alpha 0.00375
- * linearisation
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_1 = 40,
+ /*!< 2-wire RTD temperature sensor
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_2WIRE_NI120 = 41,
- /*!< Standard 2-wire NI120 RTD temperature sensor
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_2WIRE_CUSTOM = 42,
- /*!< 2-wire Custom RTD temperature sensor with user-defined linearisation and
- * default configuration options
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_2 = 41,
+ /*!< 2-wire RTD temperature sensor
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100_DEF_L1 = 64,
- /*!< Standard 3-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_DEF_L1 = 65,
- /*!< Standard 3-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Analog Sensor channels only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT10 = 66,
- /*!< Standard 3-wire PT10 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_3 = 42,
+ /*!< 2-wire RTD temperature sensor
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT50 = 67,
- /*!< Standard 3-wire PT50 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100 = 68,
- /*!< Standard 3-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_2WIRE_4 = 43,
+ /*!< 2-wire RTD temperature sensor
*
* @note For use with Cold-Juction Compensation and Analog Sensor channels
* only
*/
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT200 = 69,
- /*!< Standard 3-wire PT200 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100 = 64,
+ /*!< Standard 3-wire PT100 RTD temperature sensor
*
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT500 = 70,
- /*!< Standard 3-wire PT500 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000 = 71,
- /*!< Standard 3-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
+ * @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_0P00375 = 72,
- /*!< Standard 3-wire PT1000 RTD temperature sensor with alpha 0.00375
- * linearisation
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_NI120 = 73,
- /*!< Standard 3-wire NI120 RTD temperature sensor
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_3WIRE_CUSTOM = 74,
- /*!< 3-wire Custom RTD temperature sensor with user-defined linearisation and
- * default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100_DEF_L1 = 96,
- /*!< Standard 4-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000 = 65,
+ /*!< Standard 3-wire PT1000 RTD temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_DEF_L1 = 97,
- /*!< Standard 4-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_1 = 72,
+ /*!< 3-wire RTD temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_2 = 73,
+ /*!< 3-wire RTD temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_3 = 74,
+ /*!< 3-wire RTD temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_RTD_3WIRE_4 = 75,
+ /*!< 3-wire RTD temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT10 = 98,
- /*!< Standard 4-wire PT10 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT50 = 99,
- /*!< Standard 4-wire PT50 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100 = 100,
- /*!< Standard 4-wire PT100 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT200 = 101,
- /*!< Standard 4-wire PT200 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT500 = 102,
- /*!< Standard 4-wire PT500 RTD temperature sensor with default
- * linearisation and default configuration options
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100 = 96,
+ /*!< Standard 4-wire PT100 RTD temperature sensor
*
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
+ * @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000 = 103,
- /*!< Standard 4-wire PT1000 RTD temperature sensor with default
- * linearisation and default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_0P00375 = 104,
- /*!< Standard 4-wire PT1000 RTD temperature sensor with alpha 0.00375
- * linearisation
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000 = 97,
+ /*!< Standard 4-wire PT1000 RTD temperature sensor
*
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_RTD_4WIRE_NI120 = 105,
- /*!< Standard 4-wire NI120 RTD temperature sensor
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
+ * @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_RTD_4WIRE_CUSTOM = 106,
- /*!< 4-wire Custom RTD temperature sensor with user-defined linearisation and
- * default configuration options
- *
- * @note For use with Cold-Juction Compensation and Analog Sensor channels
- * only
- */
- ADMW1001_ADC_SENSOR_THERMISTOR_44004_44033_2P252K_AT_25C = 128,
- /*!< Standard 2.252kOhm NTC Thermistor
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_1 = 104,
+ /*!< 4-wire RTD temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_44005_44030_3K_AT_25C = 129,
- /*!< Standard 3kOhm NTC Thermistor
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_2 = 105,
+ /*!< 4-wire RTD temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_44007_44034_5K_AT_25C = 130,
- /*!< Standard 5kOhm NTC Thermistor
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_3 = 106,
+ /*!< 4-wire RTD temperature sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_44006_44031_10K_AT_25C = 131,
+ ADMW1001_ADC_SENSOR_RTD_4WIRE_4 = 107,
+ /*!< 4-wire RTD temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_THERMISTOR_A_10K = 128,
/*!< Standard 10kOhm NTC Thermistor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_44008_44032_30K_AT_25C = 132,
- /*!< Standard 30kOhm NTC Thermistor
+ ADMW1001_ADC_SENSOR_THERMISTOR_B_10K = 129,
+ /*!< Standard 10kOhm NTC Thermistor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_YSI_400 = 133,
- /*!< Standard YSI400 NTC Thermistor
+ ADMW1001_ADC_SENSOR_THERMISTOR_1 = 136,
+ /*!< Thermistor sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_SPECTRUM_1003K_1K = 134,
- /*!< Standard 1kOhm NTC Thermistor
+ ADMW1001_ADC_SENSOR_THERMISTOR_2 = 137,
+ /*!< Thermistor sensor with user-defined linearisation and
+ * default configuration options
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_STEINHART_HART = 135,
- /*!< CUSTOM Equation NTC Thermistor
+ ADMW1001_ADC_SENSOR_THERMISTOR_3 = 138,
+ /*!< Thermistor sensor
*
* @note For use with Analog Sensor channels only
*/
- ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_TABLE = 136,
- /*!< Custom Table NTC Thermistor
+ ADMW1001_ADC_SENSOR_THERMISTOR_4 = 139,
+ /*!< Thermistor sensor
*
* @note For use with Analog Sensor channels only
*/
@@ -470,11 +312,46 @@
* @note For use with Analog Sensor channels only
* @note Bridge Excitation Voltage must be selected as reference
*/
- ADMW1001_ADC_SENSOR_DIODE = 224,
- /*!< Standard Diode current temperature sensor
+ ADMW1001_ADC_SENSOR_DIODE_2C_TYPEA = 224,
+ /*!< Standard Diode two current temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_DIODE_3C_TYPEA = 225,
+ /*!< Standard Diode three current temperature sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_DIODE_2C_1 = 232,
+ /*!< Standard Diode two current sensor
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_DIODE_3C_1 = 233,
+ /*!< Standard Diode three current sensor
*
* @note For use with Analog Sensor channels only
*/
+ ADMW1001_ADC_SENSOR_MICROPHONE_A = 256,
+ /*!< Generic microphone sensor without external amplifier
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_MICROPHONE_B = 257,
+ /*!< Generic microphone sensor with external amplifier and bias
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_MICROPHONE_1 = 264,
+ /*!< Generic microphone sensor without external amplifier
+ *
+ * @note For use with Analog Sensor channels only
+ */
+ ADMW1001_ADC_SENSOR_MICROPHONE_2 = 265,
+ /*!< Generic microphone sensor with external amplifier and bias
+ *
+ * @note For use with Analog Sensor channels only
+ */
ADMW1001_ADC_SENSOR_VOLTAGE = 512,
/*!< Generic voltage sensor
*
@@ -608,12 +485,6 @@
*
* @note For use with I2C Digital Sensor channels only
*/
- ADMW1001_I2C_SENSOR_TEMPERATURE_ADT742X = 2218,
- /*!< ADT742X sensor
- * Note: the ADT742X Temperature sensor.
- *
- * @note For use with I2C Digital Sensor channels only
- */
ADMW1001_I2C_SENSOR_CO2_A = 2224,
/*!< Sensirion SCD30 C02 sensor
* Note: the SCD30 is a combined CO2, Humidity and Temperature sensor.
@@ -621,8 +492,6 @@
*
* @note For use with I2C Digital Sensor channels only
*/
-
-
} ADMW1001_I2C_SENSOR_TYPE;
--- a/inc/admw_api.h Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw_api.h Fri Mar 06 17:03:18 2020 +0000
@@ -172,8 +172,6 @@
/*!< Device summary status snapshot when the sample was recorded */
uint32_t channelId;
/*!< The measurement channel from which this sample was obtained */
- uint8_t measurementStatus;
- /*!< The measurement status from the DMZ layer */
uint32_t rawValue;
/*!< The raw (unprocessed) value obtained directly from the measurement
* channel, if available
@@ -207,16 +205,7 @@
} ADMW_USER_CONFIG_SLOT;
-/*! Identifiers for the user configuration slots in persistent memory. */
-typedef enum
-{
- ADMW_FLASH_LUT_CHANNEL_0=0,
- ADMW_FLASH_LUT_CHANNEL_1,
- ADMW_FLASH_LUT_CHANNEL_2,
- ADMW_FLASH_LUT_CHANNEL_3,
-
-} ADMW_USER_LUT_CONFIG_SLOT;
typedef struct
{
@@ -701,7 +690,7 @@
bool *pbCommandRunning);
ADMW_RESULT admw1001_sendRun( ADMW_DEVICE_HANDLE const hDevice);
-ADMW_RESULT admw_deviceInformation(ADMW_DEVICE_HANDLE hDevice);
+ADMW_RESULT deviceInformation(ADMW_DEVICE_HANDLE hDevice);
#ifdef __cplusplus
}
--- a/main.cpp Mon Feb 17 11:23:39 2020 +0000
+++ b/main.cpp Fri Mar 06 17:03:18 2020 +0000
@@ -56,10 +56,7 @@
extern ADMW_CONFIG multichannel_continuous_config;
extern ADMW_CONFIG multichannel_singlecycle_config;
extern ADMW_CONFIG i2c0_sensirionSHT3X_config;
-/* Use the following config if adding a configuration file from measureware designer*/
-extern ADMW_CONFIG measureware_config;
-
-/* Change the following pointer to load or change the configurations */
+/* Change the following pointer to select any of the configurations above */
static ADMW_CONFIG *pSelectedConfig = &thermocouple_typeK_cjc0_config;
static ADMW_CONNECTION connectionInfo = PLATFORM_CONNECTION_INFO;
@@ -67,7 +64,6 @@
int main()
{
-
ADMW_RESULT res;
ADMW_STATUS status;
ADMW_DEVICE_HANDLE hDevice;
@@ -123,7 +119,7 @@
* Check device status after updating the configuration
*/
res = admw_GetStatus(hDevice, &status);
- admw_deviceInformation(hDevice);
+ deviceInformation(hDevice);
if (res != ADMW_SUCCESS) {
ADMW_LOG_ERROR("Failed to retrieve device status");
return res;
--- a/multichannel_continuous_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/multichannel_continuous_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -42,7 +42,7 @@
#include "admw_config_types.h"
ADMW_CONFIG multichannel_continuous_config = {
- .versionId = { .major = 2, .minor = 0 },
+ .versionId = { .major = 2, .minor = 0 },
.productId = ADMW_PRODUCT_ID_ADMW1001,
.admw1001 = {
.power = {
@@ -52,18 +52,14 @@
.externalRefVoltage=0.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
- .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.vBiasEnable = true,
- .RSenseValue = 1000.0,
+ .RSenseValue = 1000.0,
},
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -86,6 +82,7 @@
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -94,6 +91,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -119,6 +117,7 @@
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_8X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
.outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
.diodeRatio = 0,
},
@@ -127,6 +126,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/multichannel_singlecycle_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/multichannel_singlecycle_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -52,8 +52,6 @@
.externalRefVoltage=0.0,
.operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.vBiasEnable = true,
.RSenseValue = 1000.0,
@@ -61,7 +59,7 @@
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -84,6 +82,7 @@
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -92,6 +91,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -117,6 +117,7 @@
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_8X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
.outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
.diodeRatio = 0,
},
@@ -125,6 +126,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/rtd_3w_pt100_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/rtd_3w_pt100_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -53,8 +53,6 @@
.externalRefVoltage =0.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.vBiasEnable = false,
.RSenseValue = 1000.0,
@@ -62,7 +60,7 @@
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -85,6 +83,7 @@
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -93,6 +92,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
},
--- a/rtd_4w_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/rtd_4w_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -51,16 +51,15 @@
},
.measurement = {
.externalRefVoltage = 0.0,
- .operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
+ .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.RSenseValue = 1000.0,
},
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -82,6 +81,7 @@
.sensor = ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -91,6 +91,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/src/admw_1001.c Mon Feb 17 11:23:39 2020 +0000
+++ b/src/admw_1001.c Fri Mar 06 17:03:18 2020 +0000
@@ -388,7 +388,7 @@
return ADMW_SUCCESS;
}
-ADMW_RESULT admw_deviceInformation(ADMW_DEVICE_HANDLE hDevice)
+ADMW_RESULT deviceInformation(ADMW_DEVICE_HANDLE hDevice)
{
uint16_t nAddress = REG_CORE_REVISION;
char nData[ADMW_VERSION_REG_VAL_SIZE]; //4 Bytes of version register data
@@ -401,7 +401,7 @@
} else {
char buffer[ADMW_FORMATTED_VERSION_SIZE]; //00.00.0000 8 digits + 2 Bytes "." + one null character at the end
strcat(nData, buffer);
- ADMW_LOG_INFO("Firmware Version Id is %X.%X.%X",nData[3],nData[2],nData[0]);
+ ADMW_LOG_INFO("Firmware Version Id is %X.%X",nData[2],nData[0]);
}
return ADMW_SUCCESS;
}
@@ -433,8 +433,8 @@
if (bWaitForCompletion) {
do {
- /* Allow a minimum 100usec delay for status update before checking */
- admw_TimeDelayUsec(100);
+ /* Allow a minimum 50usec delay for status update before checking */
+ admw_TimeDelayUsec(50);
eRet = admw_GetCommandRunningState(hDevice, &bCommandRunning);
if (eRet)
@@ -648,6 +648,7 @@
for (unsigned i = 0; i < nRequested; i++) {
bool bHoldCs = true;
+
/* Keep the CS signal asserted for all but the last sample */
if ((i + 1) == nRequested)
bHoldCs = false;
@@ -777,8 +778,8 @@
nAddress);
return eRet;
}
- wait_ms(100);
- //admw_TimeDelayUsec(ADMW1001_HOST_COMMS_XFER_DELAY);
+
+ admw_TimeDelayUsec(ADMW1001_HOST_COMMS_XFER_DELAY);
} while ((commandResponse[0] != ADMW1001_HOST_COMMS_CMD_RESP_0) ||
(commandResponse[1] != ADMW1001_HOST_COMMS_CMD_RESP_1));
@@ -908,9 +909,9 @@
*peOperatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS;
if (eMeasurementMode == ADMW_MEASUREMENT_MODE_OMIT_RAW) {
- *pnBytesPerSample = 8;
+ *pnBytesPerSample = 5;
} else {
- *pnBytesPerSample = 12;
+ *pnBytesPerSample = 8;
}
for (ADMW1001_CH_ID chId = ADMW1001_CH_ID_ANLG_1_UNIVERSAL;
@@ -925,26 +926,29 @@
READ_REG_U8(hDevice, channelCountReg.VALUE8, CORE_CHANNEL_COUNTn(chId));
READ_REG_U32(hDevice, sensorDetailsReg.VALUE32, CORE_SENSOR_DETAILSn(chId));
- if (channelCountReg.Channel_Enable && !sensorDetailsReg.Do_Not_Publish) {
+ if (channelCountReg.Channel_Enable && !sensorDetailsReg.Do_Not_Publish)
+ {
unsigned nActualChannels = 1;
- if (chId == ADMW1001_CH_ID_DIG_SPI_0) {
+ if (chId == ADMW1001_CH_ID_DIG_SPI_0)
+ {
/* Some sensors automatically generate samples on additional
* "virtual" channels so these channels must be counted as
* active when those sensors are selected and we use the count
* from the corresponding "physical" channel
*/
-#if 0 /* SPI sensors arent supported at present to be added back once there is
+#if 0 /* SPI sensors arent supported at present to be added back once there is
* support for these sensors
*/
ADMW_CORE_Sensor_Type_t sensorTypeReg;
READ_REG_U16(hDevice, sensorTypeReg.VALUE16, CORE_SENSOR_TYPEn(chId));
-
+
if ((sensorTypeReg.Sensor_Type >=
- CORE_SENSOR_TYPE_SPI_ACCELEROMETER_A) &&
- (sensorTypeReg.Sensor_Type <=
- CORE_SENSOR_TYPE_SPI_ACCELEROMETER_B)) {
+ CORE_SENSOR_TYPE_SPI_ACCELEROMETER_A) &&
+ (sensorTypeReg.Sensor_Type <=
+ CORE_SENSOR_TYPE_SPI_ACCELEROMETER_B))
+ {
nActualChannels += 2;
}
#endif
@@ -967,30 +971,14 @@
if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CONVERSION) {
*pnSamplesPerDataready = 1;
- } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CYCLE) {
+ } else {
*pnSamplesPerDataready = nSamplesPerCycle;
- } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_FIFO_FILL) {
- ADMW_CORE_Fifo_Num_Cycles_t fifoNumCyclesReg;
-
- READ_REG_U8(hDevice, fifoNumCyclesReg.VALUE8, CORE_FIFO_NUM_CYCLES);
-
- *pnSamplesPerDataready = nSamplesPerCycle * fifoNumCyclesReg.Fifo_Num_Cycles;
- } else {
- ADMW_LOG_ERROR("Invalid DRDY mode %d specified",
- modeReg.Drdy_Mode);
- return ADMW_INVALID_PARAM;
}
if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CONVERSION) {
*peDataReadyMode = ADMW1001_DATAREADY_PER_CONVERSION;
- } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CYCLE) {
+ } else {
*peDataReadyMode = ADMW1001_DATAREADY_PER_CYCLE;
- } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_FIFO_FILL) {
- *peDataReadyMode = ADMW1001_DATAREADY_PER_FIFO_FILL;
- } else {
- ADMW_LOG_ERROR("Invalid DRDY mode %d specified",
- modeReg.Drdy_Mode);
- return ADMW_INVALID_PARAM;
}
return ADMW_SUCCESS;
@@ -1015,7 +1003,7 @@
ADMW_DEVICE_HANDLE hDevice,
ADMW1001_POWER_MODE powerMode)
{
- ADMW_CORE_Power_Config_t powerConfigReg = { 0 };
+ ADMW_CORE_Power_Config_t powerConfigReg;
if (powerMode == ADMW1001_POWER_MODE_HIBERNATION) {
powerConfigReg.Power_Mode_MCU = CORE_POWER_CONFIG_HIBERNATION;
@@ -1050,13 +1038,13 @@
ADMW_DEVICE_HANDLE hDevice,
float32_t RSenseValue)
{
- ADMW_CORE_External_Reference_Resistor_t RefResistorConfigReg;
-
- RefResistorConfigReg.Ext_Refin1_Value = RSenseValue;
-
- WRITE_REG_FLOAT(hDevice, RefResistorConfigReg.VALUE32, CORE_EXTERNAL_REFERENCE_RESISTOR);
-
- return ADMW_SUCCESS;
+ ADMW_CORE_External_Reference_Resistor_t RefResistorConfigReg;
+
+ RefResistorConfigReg.Ext_Refin1_Value = RSenseValue;
+
+ WRITE_REG_FLOAT(hDevice, RefResistorConfigReg.VALUE32, CORE_EXTERNAL_REFERENCE_RESISTOR);
+
+ return ADMW_SUCCESS;
}
static ADMW_RESULT admw_SetMode(
@@ -1082,8 +1070,6 @@
modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_CONVERSION;
} else if (eDataReadyMode == ADMW1001_DATAREADY_PER_CYCLE) {
modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_CYCLE;
- } else if (eDataReadyMode == ADMW1001_DATAREADY_PER_FIFO_FILL) {
- modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_FIFO_FILL;
} else {
ADMW_LOG_ERROR("Invalid data-ready mode %d specified", eDataReadyMode);
return ADMW_INVALID_PARAM;
@@ -1096,19 +1082,18 @@
ADMW_RESULT admw_SetCycleControl(ADMW_DEVICE_HANDLE hDevice,
uint32_t nCycleInterval,
- bool vBiasEnable,
- bool vPostExecCurrentState,
- bool vGroundSwitch)
+ bool vBiasEnable)
{
ADMW_CORE_Cycle_Control_t cycleControlReg;
cycleControlReg.VALUE16 = REG_RESET_VAL(CORE_CYCLE_CONTROL);
- if (nCycleInterval < (1 << 12)) {
- cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
+ if (nCycleInterval < (1000 * (1 << 12))) {
+ cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_MILLISECONDS;
+ nCycleInterval /= 1000;
} else {
- ADMW_LOG_ERROR("Invalid nCycleInterval %d specified", nCycleInterval);
- return ADMW_INVALID_PARAM;
+ cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
+ nCycleInterval /= 1000000;
}
if (vBiasEnable == true) {
@@ -1117,32 +1102,6 @@
CHECK_REG_FIELD_VAL(CORE_CYCLE_CONTROL_CYCLE_TIME, nCycleInterval);
cycleControlReg.Cycle_Time = nCycleInterval;
- switch(vPostExecCurrentState) {
- case ADMW1001_ADC_EXC_STATE_CYCLE_POWER:
- cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_POWERCYCLE;
- break;
- case ADMW1001_ADC_EXC_STATE_ALWAYS_ON:
- cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_ALWAYSON;
- break;
- default:
- ADMW_LOG_ERROR("Invalid Post measurement Excitation Current state %d specified",
- vPostExecCurrentState);
- return ADMW_INVALID_PARAM;
- }
-
- switch(vGroundSwitch) {
- case ADMW1001_ADC_GND_SW_OPEN:
- cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_OPEN_SW;
- break;
- case ADMW1001_ADC_GND_SW_CLOSED:
- cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_CLOSE_SW;
- break;
- default:
- ADMW_LOG_ERROR("Invalid ground switch state %d specified",
- vGroundSwitch);
- return ADMW_INVALID_PARAM;
- }
-
WRITE_REG_U16(hDevice, cycleControlReg.VALUE16, CORE_CYCLE_CONTROL);
return ADMW_SUCCESS;
@@ -1155,14 +1114,6 @@
return ADMW_SUCCESS;
}
-static ADMW_RESULT admw_SetFifoNumCycles(
- ADMW_DEVICE_HANDLE hDevice,
- uint8_t fifoNumCycles)
-{
- WRITE_REG_U8(hDevice, fifoNumCycles, CORE_FIFO_NUM_CYCLES);
-
- return ADMW_SUCCESS;
-}
static ADMW_RESULT admw_SetExternalReferenceValues(
ADMW_DEVICE_HANDLE hDevice,
@@ -1172,15 +1123,6 @@
return ADMW_SUCCESS;
}
-static ADMW_RESULT admw_SetAVDDVoltage(
- ADMW_DEVICE_HANDLE hDevice,
- float32_t AVDDVoltage)
-{
-
- WRITE_REG_FLOAT(hDevice, AVDDVoltage, CORE_AVDD_VOLTAGE);
-
- return ADMW_SUCCESS;
-}
ADMW_RESULT admw1001_SetMeasurementConfig(
ADMW_DEVICE_HANDLE hDevice,
@@ -1197,25 +1139,13 @@
}
eRet = admw_SetCycleControl(hDevice, pMeasConfig->cycleInterval,
- pMeasConfig->vBiasEnable,
- pMeasConfig->excitationState,
- pMeasConfig->groundSwitch );
+ pMeasConfig->vBiasEnable);
if (eRet != ADMW_SUCCESS) {
ADMW_LOG_ERROR("Failed to set cycle control");
return eRet;
}
- if (pMeasConfig->fifoNumCycles > 0) {
- eRet = admw_SetFifoNumCycles(hDevice,
- pMeasConfig->fifoNumCycles);
- }
-
- if (eRet != ADMW_SUCCESS) {
- ADMW_LOG_ERROR("Failed to set the FIFO number of cycles.");
- return eRet;
- }
-
- if(pMeasConfig->externalRef1Value > 0) {
+ if(pMeasConfig->externalRef1Value>0) {
eRet = admw_SetExternalReferenceValues(hDevice,
pMeasConfig->externalRef1Value);
}
@@ -1225,30 +1155,23 @@
return eRet;
}
- if((pMeasConfig->AVDDVoltage >= 3.0) && (pMeasConfig->AVDDVoltage <= 3.6)) {
- eRet = admw_SetAVDDVoltage(hDevice,
- pMeasConfig->AVDDVoltage);
- }
-
- if (eRet != ADMW_SUCCESS) {
- ADMW_LOG_ERROR("Failed to set AVDD Voltge");
- return eRet;
- }
-
eRet = admw_SetRSenseValue(hDevice, pMeasConfig->RSenseValue);
- if (eRet != ADMW_SUCCESS) {
+ if (eRet != ADMW_SUCCESS)
+ {
ADMW_LOG_ERROR("Failed to set RSenseValue");
return eRet;
}
-
+
eRet = admw_SetExternalReferenceVoltage(hDevice, pMeasConfig->externalRefVoltage);
- if (eRet != ADMW_SUCCESS) {
+ if (eRet != ADMW_SUCCESS)
+ {
ADMW_LOG_ERROR("Failed to set External reference Voltage");
return eRet;
- }
-
+ }
+
return ADMW_SUCCESS;
}
+
ADMW_RESULT admw1001_SetDiagnosticsConfig(
ADMW_DEVICE_HANDLE hDevice,
ADMW1001_DIAGNOSTICS_CONFIG *pDiagnosticsConfig)
@@ -1262,16 +1185,26 @@
else
diagnosticsControlReg.Diag_Meas_En = 1;
- if(pDiagnosticsConfig->osdFrequency <= 0x7F)
+ switch (pDiagnosticsConfig->osdFrequency)
{
- diagnosticsControlReg.Diag_OSD_Freq = pDiagnosticsConfig->osdFrequency;
- }
- else
- {
+ case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED:
+ diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_OFF;
+ break;
+ case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE:
+ diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE;
+ break;
+ case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_100_CYCLES:
+ diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES;
+ break;
+ case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_1000_CYCLES:
+ diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES;
+ break;
+ default:
ADMW_LOG_ERROR("Invalid open-sensor diagnostic frequency %d specified",
pDiagnosticsConfig->osdFrequency);
return ADMW_INVALID_PARAM;
}
+
WRITE_REG_U8(hDevice, diagnosticsControlReg.VALUE8, CORE_DIAGNOSTICS_CONTROL);
return ADMW_SUCCESS;
@@ -1349,37 +1282,18 @@
/* Ensure that the sensor type is valid for this channel */
switch(sensorType) {
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT10:
-
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT50:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT200:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT500:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_0P00375:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_NI120:
- case ADMW1001_ADC_SENSOR_RTD_2WIRE_CUSTOM:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT10:
-
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT50:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_1:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_2:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_3:
+ case ADMW1001_ADC_SENSOR_RTD_3WIRE_4:
case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT200:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT500:
case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_0P00375:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_NI120:
- case ADMW1001_ADC_SENSOR_RTD_4WIRE_CUSTOM:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT10:
-
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT50:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT200:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT500:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_0P00375 :
-
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_NI120:
- case ADMW1001_ADC_SENSOR_RTD_3WIRE_CUSTOM:
+ case ADMW1001_ADC_SENSOR_RTD_4WIRE_1:
+ case ADMW1001_ADC_SENSOR_RTD_4WIRE_2:
+ case ADMW1001_ADC_SENSOR_RTD_4WIRE_3:
+ case ADMW1001_ADC_SENSOR_RTD_4WIRE_4:
case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_1:
case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_2:
case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_3:
@@ -1388,23 +1302,29 @@
case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_2:
case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_3:
case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_4:
- case ADMW1001_ADC_SENSOR_DIODE:
- case ADMW1001_ADC_SENSOR_THERMISTOR_44004_44033_2P252K_AT_25C:
- case ADMW1001_ADC_SENSOR_THERMISTOR_44005_44030_3K_AT_25C:
- case ADMW1001_ADC_SENSOR_THERMISTOR_44007_44034_5K_AT_25C:
- case ADMW1001_ADC_SENSOR_THERMISTOR_44006_44031_10K_AT_25C:
- case ADMW1001_ADC_SENSOR_THERMISTOR_44008_44032_30K_AT_25C:
- case ADMW1001_ADC_SENSOR_THERMISTOR_YSI_400:
- case ADMW1001_ADC_SENSOR_THERMISTOR_SPECTRUM_1003K_1K:
- case ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_STEINHART_HART:
- case ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_TABLE:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_1:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_2:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_3:
+ case ADMW1001_ADC_SENSOR_RTD_2WIRE_4:
+ case ADMW1001_ADC_SENSOR_DIODE_2C_TYPEA:
+ case ADMW1001_ADC_SENSOR_DIODE_3C_TYPEA:
+ case ADMW1001_ADC_SENSOR_DIODE_2C_1:
+ case ADMW1001_ADC_SENSOR_DIODE_3C_1:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_A_10K:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_B_10K:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_1:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_2:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_3:
+ case ADMW1001_ADC_SENSOR_THERMISTOR_4:
case ADMW1001_ADC_SENSOR_SINGLE_ENDED_ABSOLUTE:
case ADMW1001_ADC_SENSOR_DIFFERENTIAL_ABSOLUTE:
case ADMW1001_ADC_SENSOR_SINGLE_ENDED_RATIO:
case ADMW1001_ADC_SENSOR_DIFFERENTIAL_RATIO:
-
- if (! (ADMW1001_CHANNEL_IS_ADC_CJC(eChannelId) ||
- ADMW1001_CHANNEL_IS_ADC(eChannelId) )) {
+ if (! (ADMW1001_CHANNEL_IS_ADC_SENSOR(eChannelId) ||
+ ADMW1001_CHANNEL_IS_ADC_CJC(eChannelId) || ADMW1001_CHANNEL_IS_ADC(eChannelId) ))
+ {
ADMW_LOG_ERROR(
"Invalid ADC sensor type %d specified for channel %d",
sensorType, eChannelId);
@@ -1419,12 +1339,10 @@
case ADMW1001_ADC_SENSOR_THERMOCOUPLE_J:
case ADMW1001_ADC_SENSOR_THERMOCOUPLE_K:
case ADMW1001_ADC_SENSOR_THERMOCOUPLE_T:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_E:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_N:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_R:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_S:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_B:
- case ADMW1001_ADC_SENSOR_THERMOCOUPLE_CUSTOM:
+ case ADMW1001_ADC_SENSOR_THERMOCOUPLE_1:
+ case ADMW1001_ADC_SENSOR_THERMOCOUPLE_2:
+ case ADMW1001_ADC_SENSOR_THERMOCOUPLE_3:
+ case ADMW1001_ADC_SENSOR_THERMOCOUPLE_4:
if (! ADMW1001_CHANNEL_IS_ADC_VOLTAGE(eChannelId)) {
ADMW_LOG_ERROR(
"Invalid ADC sensor type %d specified for channel %d",
@@ -1575,6 +1493,7 @@
switch (pChannelConfig->lutSelect) {
case ADMW1001_LUT_DEFAULT:
+ case ADMW1001_LUT_UNITY:
case ADMW1001_LUT_CUSTOM:
sensorDetailsReg.LUT_Select = pChannelConfig->lutSelect;
break;
@@ -1597,8 +1516,9 @@
ADMW_CORE_Measurement_Setup_t MeasSetupReg;
ADMW1001_ADC_FILTER_CONFIG *pFilterConfig = &pAdcChannelConfig->filter;
MeasSetupReg.VALUE32 = REG_RESET_VAL(CORE_MEASUREMENT_SETUPn);
+ MeasSetupReg.PST_MEAS_EXC_CTRL = pAdcChannelConfig->current.excitationState;
MeasSetupReg.Buffer_Bypass = pAdcChannelConfig->bufferBypass;
-
+
if (pFilterConfig->type == ADMW1001_ADC_FILTER_SINC4) {
MeasSetupReg.ADC_Filter_Type = CORE_MEASUREMENT_SETUP_ENABLE_SINC4;
MeasSetupReg.ADC_SF = pFilterConfig->sf;
@@ -1619,6 +1539,19 @@
else
MeasSetupReg.NOTCH_EN_2 = 0;
+ switch(pFilterConfig->groundSwitch) {
+ case ADMW1001_ADC_GND_SW_OPEN:
+ MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_OPEN;
+ break;
+ case ADMW1001_ADC_GND_SW_CLOSED:
+ MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_CLOSED;
+ break;
+ default:
+ ADMW_LOG_ERROR("Invalid ground switch state %d specified",
+ pFilterConfig->groundSwitch);
+ return ADMW_INVALID_PARAM;
+ }
+
WRITE_REG_U32(hDevice, MeasSetupReg.VALUE32, CORE_MEASUREMENT_SETUPn(eChannelId));
return ADMW_SUCCESS;
@@ -1684,7 +1617,7 @@
}
eRet = admw_SetChannelAdcMeasurementSetup(hDevice, eChannelId,
- pAdcChannelConfig);
+ pAdcChannelConfig);
if (eRet != ADMW_SUCCESS) {
ADMW_LOG_ERROR("Failed to set ADC filter for channel %d",
eChannelId);
@@ -1831,7 +1764,6 @@
switch(sensorType) {
case ADMW1001_I2C_SENSOR_HUMIDITY_A:
case ADMW1001_I2C_SENSOR_HUMIDITY_B:
- case ADMW1001_I2C_SENSOR_TEMPERATURE_ADT742X:
sensorTypeReg.Sensor_Type = sensorType;
break;
default:
@@ -1865,6 +1797,7 @@
digitalSensorComms.VALUE16 = REG_RESET_VAL(CORE_DIGITAL_SENSOR_COMMSn);
if(pDigitalComms->useCustomCommsConfig) {
+ digitalSensorComms.Digital_Sensor_Comms_En = 1;
if(pDigitalComms->i2cClockSpeed == ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K) {
digitalSensorComms.I2C_Clock = CORE_DIGITAL_SENSOR_COMMS_I2C_100K;
@@ -1944,9 +1877,10 @@
pDigitalComms->spiClock);
return ADMW_INVALID_PARAM;
}
+ } else {
+ digitalSensorComms.Digital_Sensor_Comms_En = 0;
}
-
WRITE_REG_U16(hDevice, digitalSensorComms.VALUE16, CORE_DIGITAL_SENSOR_COMMSn(eChannelId));
return ADMW_SUCCESS;
@@ -2157,6 +2091,16 @@
{
ADMW_CORE_Settling_Time_t settlingTimeReg;
+ if (nSettlingTime < (1 << 12)) {
+ settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_MICROSECONDS;
+ } else if (nSettlingTime < (1000 * (1 << 12))) {
+ settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_MILLISECONDS;
+ nSettlingTime /= 1000;
+ } else {
+ settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_SECONDS;
+ nSettlingTime /= 1000000;
+ }
+
CHECK_REG_FIELD_VAL(CORE_SETTLING_TIME_SETTLING_TIME, nSettlingTime);
settlingTimeReg.Settling_Time = nSettlingTime;
@@ -2322,7 +2266,8 @@
}
eRet = admw1001_SetDiagnosticsConfig(hDevice, &pDeviceConfig->diagnostics);
- if (eRet) {
+ if (eRet)
+ {
ADMW_LOG_ERROR("Failed to set diagnostics configuration");
return eRet;
}
@@ -2347,7 +2292,6 @@
{
ADMW1001_LUT_HEADER *pLutHeader = &pLutData->header;
ADMW1001_LUT_TABLE *pLutTable = pLutData->tables;
-
unsigned actualLength = 0;
if (pLutData->header.signature != ADMW_LUT_SIGNATURE) {
@@ -2355,10 +2299,7 @@
ADMW_LUT_SIGNATURE, pLutHeader->signature);
return ADMW_INVALID_SIGNATURE;
}
- if ((pLutData->tables->descriptor.geometry!= ADMW1001_LUT_GEOMETRY_NES_1D) &&
- (pLutData->tables->data.lut1dNes.nElements > MAX_LUT_NUM_ENTRIES)) {
- return ADMW_INVALID_PARAM;
- }
+
for (unsigned i = 0; i < pLutHeader->numTables; i++) {
ADMW1001_LUT_DESCRIPTOR *pDesc = &pLutTable->descriptor;
ADMW1001_LUT_TABLE_DATA *pData = &pLutTable->data;
@@ -2381,6 +2322,14 @@
}
break;
case ADMW1001_LUT_GEOMETRY_NES_1D:
+ case ADMW1001_LUT_GEOMETRY_NES_2D:
+ case ADMW1001_LUT_GEOMETRY_ES_1D:
+ case ADMW1001_LUT_GEOMETRY_ES_2D:
+ if (pDesc->equation != ADMW1001_LUT_EQUATION_LUT) {
+ ADMW_LOG_ERROR("Invalid equation %u specified for LUT table %u",
+ pDesc->equation, i);
+ return ADMW_INVALID_PARAM;
+ }
break;
default:
ADMW_LOG_ERROR("Invalid geometry %u specified for LUT table %u",
@@ -2430,6 +2379,7 @@
return ADMW_SUCCESS;
}
+
ADMW_RESULT admw1001_SetLutDataRaw(
ADMW_DEVICE_HANDLE const hDevice,
ADMW1001_LUT_RAW * const pLutData)
@@ -2446,11 +2396,22 @@
switch (pDesc->geometry) {
case ADMW1001_LUT_GEOMETRY_COEFFS:
if (pDesc->equation == ADMW1001_LUT_EQUATION_BIVARIATE_POLYN)
+ *pLength = ADMW1001_LUT_2D_POLYN_COEFF_LIST_SIZE(pData->coeffList2d);
+ else
*pLength = ADMW1001_LUT_COEFF_LIST_SIZE(pData->coeffList);
break;
case ADMW1001_LUT_GEOMETRY_NES_1D:
*pLength = ADMW1001_LUT_1D_NES_SIZE(pData->lut1dNes);
break;
+ case ADMW1001_LUT_GEOMETRY_NES_2D:
+ *pLength = ADMW1001_LUT_2D_NES_SIZE(pData->lut2dNes);
+ break;
+ case ADMW1001_LUT_GEOMETRY_ES_1D:
+ *pLength = ADMW1001_LUT_1D_ES_SIZE(pData->lut1dEs);
+ break;
+ case ADMW1001_LUT_GEOMETRY_ES_2D:
+ *pLength = ADMW1001_LUT_2D_ES_SIZE(pData->lut2dEs);
+ break;
default:
ADMW_LOG_ERROR("Invalid LUT table geometry %d specified\r\n",
pDesc->geometry);
--- a/src/mbed/admw_spi.cpp Mon Feb 17 11:23:39 2020 +0000
+++ b/src/mbed/admw_spi.cpp Fri Mar 06 17:03:18 2020 +0000
@@ -1,5 +1,5 @@
/******************************************************************************
-Copyright 2017 (c) Analog Devices, Inc.
+Copyright 2019 (c) Analog Devices, Inc.
All rights reserved.
@@ -106,22 +106,15 @@
pCtx->_spi->format(ADMW_SPI_FRAME_SIZE, 1);
int rc = 0;
-
- *(pCtx->_wakeup) = 1;
- wait_ms(0.03);
*(pCtx->_cs) = 0;
-
-
rc = pCtx->_spi->write((char*)(pTxData), pTxData ? nLength : 0,
(char*)(pRxData), pRxData ? nLength : 0);
if ((rc < 0) || !bCsHold)
*(pCtx->_cs) = 1;
- *(pCtx->_wakeup) = 0;
-
if (rc < 0)
{
ADMW_LOG_ERROR("Failed to complete SPI transfer");
@@ -147,9 +140,7 @@
int rc = 0;
SpiContext_t *pCtx = (SpiContext_t*)hDevice;
-
- *(pCtx->_wakeup) = 1;
- wait_ms(0.03);
+
*(pCtx->_cs) = 0;
rc = pCtx->_spi->write((char*)(pTxData), pTxData ? nLength : 0,
@@ -157,9 +148,7 @@
if ((rc < 0) || !bCsHold)
*(pCtx->_cs) = 1;
-
- *(pCtx->_wakeup) = 0;
-
+
if (rc < 0)
{
ADMW_LOG_ERROR("Failed to complete SPI transfer");
@@ -190,4 +179,4 @@
/*!
* @}
- */
\ No newline at end of file
+ */
--- a/thermocouple_typeJ_cjc0_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeJ_cjc0_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -55,15 +55,13 @@
.externalRefVoltage = 0.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.RSenseValue = 1000.0,
},
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -85,6 +83,7 @@
.sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -94,6 +93,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -122,6 +122,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/thermocouple_typeK_cjc0_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeK_cjc0_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -54,11 +54,9 @@
.powerMode = ADMW1001_POWER_MODE_ACTIVE,
},
.measurement = {
- .externalRefVoltage = 0.0,
+ .externalRefVoltage=0.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
- .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE,
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
+ .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
.cycleInterval = 0,
.vBiasEnable = true,
.RSenseValue = 1000.0,
@@ -66,7 +64,7 @@
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -74,23 +72,31 @@
.disablePublishing = false,
.compensationChannel = ADMW1001_CH_ID_NONE,
.lutSelect = ADMW1001_LUT_DEFAULT,
- .measurementUnit = ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED,
- .lowThreshold = 0,
- .highThreshold = 45359.2,
- .measurementsPerCycle = 1,
+ .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
+ .lowThreshold = -50,
+ .highThreshold = 250,
+ .offsetAdjustment = 0.0,
+ .gainAdjustment = 0.0,
+ .sensorParameter = 0.0,
+ .measurementsPerCycle = 10,
+ .cycleSkipCount = 0,
+ .extraSettlingTime = 0,
+ .priority = 0,
.adcChannelConfig = {
.sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
- .diodeRatio = (ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO)0,
+ .diodeRatio = 0,
},
.filter = {
.type = ADMW1001_ADC_FILTER_SINC3,
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -107,23 +113,25 @@
.offsetAdjustment = 0.0,
.gainAdjustment = 0.0,
.sensorParameter = 0.0,
- .measurementsPerCycle = 1,
+ .measurementsPerCycle = 10,
.cycleSkipCount = 0,
- .extraSettlingTime = 0,
- .priority = ADMW1001_CHANNEL_PRIORITY_0,
+ .extraSettlingTime = 4499.99986449257,
+ .priority = 0,
.adcChannelConfig = {
.sensor = ADMW1001_ADC_SENSOR_THERMOCOUPLE_K,
.rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
.gain = ADMW1001_ADC_GAIN_8X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
.outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
- .diodeRatio = (ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO)0,
+ .diodeRatio = 0,
},
.filter = {
.type = ADMW1001_ADC_FILTER_SINC3,
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
- .notch1p2 = true,
+ .notch1p2 = false,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -131,4 +139,5 @@
},
},
},
-};
\ No newline at end of file
+};
+
--- a/thermocouple_typeT_cjc0_config.c Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeT_cjc0_config.c Fri Mar 06 17:03:18 2020 +0000
@@ -52,15 +52,13 @@
.externalRefVoltage = 0.0,
.operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
.dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
- .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
- .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
.cycleInterval = 0,
.RSenseValue = 1000.0,
},
.diagnostics = {
.disableGlobalDiag = true,
.disableMeasurementDiag = true,
- .osdFrequency = 0,
+ .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
},
.channels = {
[ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -82,6 +80,7 @@
.sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
.gain = ADMW1001_ADC_GAIN_1X,
.current = {
+ .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
.outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
.diodeRatio = 0,
},
@@ -91,6 +90,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -119,6 +119,7 @@
.sf = ADMW1001_SF_8P24HZ,
.chopMode = ADMW1001_CHOP_MD_SW,
.notch1p2 = true,
+ .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
},
.reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
.bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,