dps310 - Driver for for DPS310, barometric pressure sensor
- group dps310
ESP-IDF driver for DPS310 barometric pressure sensor.
Sponsored by beriberikix.
DPS310 supports I2C and SPI (3-wires and 4-wires) as digital interface. The driver currently supports:
I2C
The driver currently does not support:
SPI
read measurements by interrupt
multi-master I2C configuration
Note that the unit of pressure in this driver is pascal (Pa), not hectopascals (hPa).
Note that the unit of altitude in this driver is meter.
Defines
-
DPS310_I2C_ADDRESS_0
I2C address when SDO pin is low.
-
DPS310_I2C_ADDRESS_1
I2C address when SDO pin is high.
-
DPS310_PRODUCT_ID
Product ID.
-
DPS310_REVISION_ID
Revision ID.
-
DPS310_AVERAGE_SEA_LEVEL_PRESSURE_hPa
Average sea-level pressure in hPa.
-
DPS310_AVERAGE_SEA_LEVEL_PRESSURE_Pa
Average sea-level pressure in Pa.
-
DPS310_CONFIG_DEFAULT()
A macro to set default dps310_config_t.
-
DPS310_REG_PRS_B2
DPS310 registers.
-
DPS310_REG_PRS_B1
-
DPS310_REG_PRS_B0
-
DPS310_REG_TMP_B2
-
DPS310_REG_TMP_B1
-
DPS310_REG_TMP_B0
-
DPS310_REG_PRS_CFG
-
DPS310_REG_TMP_CFG
-
DPS310_REG_MEAS_CFG
-
DPS310_REG_CFG_REG
-
DPS310_REG_INT_STS
-
DPS310_REG_FIFO_STS
-
DPS310_REG_RESET
-
DPS310_REG_ID
-
DPS310_REG_COEF
-
DPS310_REG_COEF_LEN
-
DPS310_REG_COEF_SRCE
-
DPS310_REG_ID_REV_MASK
-
DPS310_REG_ID_PROD_MASK
-
DPS310_REG_RESET_FIFO_FLUSH_MASK
-
DPS310_REG_RESET_SOFT_RST_MASK
-
DPS310_REG_PRS_CFG_PM_RATE_MASK
-
DPS310_REG_PRS_CFG_TMP_RATE_MASK
-
DPS310_REG_PRS_CFG_PM_PRC_MASK
-
DPS310_REG_PRS_CFG_TMP_EXT_MASK
-
DPS310_REG_TMP_CFG_TMP_PRC_MASK
-
DPS310_REG_CFG_REG_INT_HL_MASK
-
DPS310_REG_CFG_REG_INT_FIFO_MASK
-
DPS310_REG_CFG_REG_INT_TMP_MASK
-
DPS310_REG_CFG_REG_INT_PRS_MASK
-
DPS310_REG_CFG_REG_T_SHIFT_MASK
-
DPS310_REG_CFG_REG_P_SHIFT_MASK
-
DPS310_REG_CFG_REG_FIFO_EN_MASK
-
DPS310_REG_CFG_REG_SPI_MODE_MASK
-
DPS310_REG_MEAS_CFG_COEF_RDY_MASK
-
DPS310_REG_MEAS_CFG_SENSOR_RDY_MASK
-
DPS310_REG_MEAS_CFG_TMP_RDY_MASK
-
DPS310_REG_MEAS_CFG_PRS_RDY_MASK
-
DPS310_REG_MEAS_CFG_MEAS_CTRL_MASK
-
DPS310_REG_COEF_SRCE_MASK
-
DPS310_REG_FIFO_STS_FIFO_EMPTY_MASK
-
DPS310_REG_FIFO_STS_FIFO_FULL_MASK
-
DPS310_I2C_FREQ_MAX_HZ
-
DPS310_I2C_FREQ_MAX_ESP_IDF_HZ
-
DPS310_SPI_FREQ_MAX_HZ
-
DPS310_TRIM_READY_DELAY_MS
-
DPS310_SENSOR_READY_DELAY_MS
-
DPS310_COEFFICIENTS_READY_DELAY_MS
-
DPS310_STARTUP_DELAY_MS
-
DPS310_PROD_ID
-
DPS310_REG_SENSOR_VALUE_LEN
-
DPS310_REG_FIFO
-
DPS310_FIFO_EMPTY
-
DPS310_FIFO_FLUSH_VALUE
-
DPS310_SOFT_RST_VALUE
Enums
-
enum dps310_mode_t
Mode of DPS310 module operation.
See 4.1 Operating Modes.
Values:
-
enumerator DPS310_MODE_STANDBY
Standby mode.
-
enumerator DPS310_MODE_COMMAND_PRESSURE
Command mode, pressure measurement.
-
enumerator DPS310_MODE_COMMAND_TEMPERATURE
Command mode, temperature measurement.
-
enumerator DPS310_MODE_BACKGROUND_PRESSURE
Background mode, continuous pressure measurement.
-
enumerator DPS310_MODE_BACKGROUND_TEMPERATURE
Background mode, continuous temperature measurement.
-
enumerator DPS310_MODE_BACKGROUND_ALL
Background mode, continuous pressure and temperature measurement.
-
enumerator DPS310_MODE_STANDBY
-
enum dps310_pm_rate_t
Pressure measurement rate.
Values:
-
enumerator DPS310_PM_RATE_1
1 measurements / sec
-
enumerator DPS310_PM_RATE_2
2 measurements / sec
-
enumerator DPS310_PM_RATE_4
4 measurements / sec
-
enumerator DPS310_PM_RATE_8
8 measurements / sec
-
enumerator DPS310_PM_RATE_16
16 measurements / sec
-
enumerator DPS310_PM_RATE_32
32 measurements / sec
-
enumerator DPS310_PM_RATE_64
64 measurements / sec
-
enumerator DPS310_PM_RATE_128
128 measurements / sec
-
enumerator DPS310_PM_RATE_1
-
enum dps310_pm_oversampling_t
Pressure resolution, or oversampling rate.
Values:
-
enumerator DPS310_PM_PRC_1
Single (Low Precision)
-
enumerator DPS310_PM_PRC_2
2 times (Low Power).
-
enumerator DPS310_PM_PRC_4
4 times
-
enumerator DPS310_PM_PRC_8
8 times
-
enumerator DPS310_PM_PRC_16
16 times (Standard)
-
enumerator DPS310_PM_PRC_32
32 times
-
enumerator DPS310_PM_PRC_64
64 times (High Precision)
-
enumerator DPS310_PM_PRC_128
128 times
-
enumerator DPS310_PM_PRC_1
-
enum dps310_tmp_src_ext_t
Temperature measurement source.
Used for temperature measurement and temperature coefficients.
Values:
-
enumerator DPS310_TMP_SRC_INTERNAL
Internal sensor (in ASIC)
-
enumerator DPS310_TMP_SRC_EXTERNAL
External sensor (in pressure sensor MEMS element)
-
enumerator DPS310_TMP_SRC_INTERNAL
-
enum dps310_tmp_rate_t
Temperature measurement rate.
Values:
-
enumerator DPS310_TMP_RATE_1
1 measurements / sec
-
enumerator DPS310_TMP_RATE_2
2 measurements / sec
-
enumerator DPS310_TMP_RATE_4
4 measurements / sec
-
enumerator DPS310_TMP_RATE_8
8 measurements / sec
-
enumerator DPS310_TMP_RATE_16
16 measurements / sec
-
enumerator DPS310_TMP_RATE_32
32 measurements / sec
-
enumerator DPS310_TMP_RATE_64
64 measurements / sec
-
enumerator DPS310_TMP_RATE_128
128 measurements / sec
-
enumerator DPS310_TMP_RATE_1
-
enum dps310_tmp_oversampling_t
Pressure resolution, or oversampling rate.
Values:
-
enumerator DPS310_TMP_PRC_1
Single (Low Precision)
-
enumerator DPS310_TMP_PRC_2
2 times (Low Power).
-
enumerator DPS310_TMP_PRC_4
4 times
-
enumerator DPS310_TMP_PRC_8
8 times
-
enumerator DPS310_TMP_PRC_16
16 times (Standard)
-
enumerator DPS310_TMP_PRC_32
32 times
-
enumerator DPS310_TMP_PRC_64
64 times (High Precision)
-
enumerator DPS310_TMP_PRC_128
128 times
-
enumerator DPS310_TMP_PRC_1
-
enum dps310_int_hl_active_level_t
Interupt (on SDO pin) active level.
Values:
-
enumerator DPS310_INT_HL_ACTIVE_LOW
Active low.
-
enumerator DPS310_INT_HL_ACTIVE_HIGH
Active high.
-
enumerator DPS310_INT_HL_ACTIVE_LOW
-
enum dps310_int_fifo_mode_t
Mode of interupt when the FIFO is full.
Values:
-
enumerator DPS310_INT_FIFO_DISABLE
Disable interrupt when the FIFO is full.
-
enumerator DPS310_INT_FIFO_ENABLE
Enable interrupt when the FIFO is full.
-
enumerator DPS310_INT_FIFO_DISABLE
-
enum dps310_int_tmp_mode_t
Mode of interupt when a temperature measurement is ready.
Values:
-
enumerator DPS310_INT_TMP_DISABLE
Disable interrupt when a temperature measurement is ready.
-
enumerator DPS310_INT_TMP_ENABLE
Enable interrupt when a temperature measurement is ready.
-
enumerator DPS310_INT_TMP_DISABLE
-
enum dps310_int_prs_mode_t
Mode of interupt when a pressure measurement is ready.
Values:
-
enumerator DPS310_INT_PRS_DISABLE
Disable interrupt when a pressure measurement is ready.
-
enumerator DPS310_INT_PRS_ENABLE
Enable interrupt when a pressure measurement is ready.
-
enumerator DPS310_INT_PRS_DISABLE
-
enum dps310_t_shift_mode_t
Mode of temperature result bit-shift.
Values:
-
enumerator DPS310_T_SHIFT_DISABLE
No shift.
-
enumerator DPS310_T_SHIFT_ENABLE
Shift result right in data register.
-
enumerator DPS310_T_SHIFT_DISABLE
-
enum dps310_p_shift_mode_t
Mode of pressure result bit-shift.
Values:
-
enumerator DPS310_P_SHIFT_DISABLE
No shift.
-
enumerator DPS310_P_SHIFT_ENABLE
Shift result right in data register.
-
enumerator DPS310_P_SHIFT_DISABLE
-
enum dps310_fifo_en_mode_t
Mode of FIFO.
Values:
-
enumerator DPS310_FIFO_DISABLE
Disable FIFO.
-
enumerator DPS310_FIFO_ENABLE
Enable FIFO.
-
enumerator DPS310_FIFO_DISABLE
-
enum dps310_spi_mode_t
SPI mode.
Values:
-
enumerator DPS310_SPI_MODE_4WIRE
SPI 4-wires.
-
enumerator DPS310_SPI_MODE_3WIRE
SPI 3-wires.
-
enumerator DPS310_SPI_MODE_4WIRE
-
enum dps310_fifo_measurement_type_t
Type of measurement result in FIFO.
When the type is DPS310_MEASUREMENT_EMPTY, the result is always zero. Otherwise, the result is the compensated value of each type.
Values:
-
enumerator DPS310_MEASUREMENT_TEMPERATURE
Temperature.
-
enumerator DPS310_MEASUREMENT_PRESSURE
Pressure.
-
enumerator DPS310_MEASUREMENT_EMPTY
Empty, no measurement available.
-
enumerator DPS310_MEASUREMENT_TEMPERATURE
Functions
-
esp_err_t dps310_init_desc(dps310_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
Initialize device descriptor.
- Parameters:
dev – [out] The device descriptor.
addr – [in] DPS310’s I2C address
port – [in] I2C port number to use. See available I2C port at: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/i2c.html#_CPPv410i2c_port_t
sda_gpio – [in] GPIO pin for SDA
scl_gpio – [in] GPIO pin for SCL
- Returns:
ESP_OK
on success
-
esp_err_t dps310_free_desc(dps310_t *dev)
Free the device descriptor.
The device descriptor must NOT be NULL.
dps310_free_desc()
does notfree()
the device descriptor on error.- Parameters:
dev – [out] Device descriptor
- Returns:
ESP_OK
on success
-
esp_err_t dps310_init(dps310_t *dev, dps310_config_t *config)
Initialize DPS310 module.
The function does the followings:
read the DPS310_REG_ID, and identify the product ID. Return ESP_FAIL if the product ID does not match expected product ID.
reset the chip
perform a quirk
- Parameters:
dev – [in] Device descriptor
config – [in] Configuration
- Returns:
ESP_OK
on success
-
esp_err_t dps310_reset(dps310_t *dev)
Reset the device.
Perform “soft reset” and ensure the chip is fully functional by delaying
DPS310_STARTUP_DELAY_MS
.- Parameters:
dev – [in] The device descriptor
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orconfig
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_rate_p(dps310_t *dev, dps310_pm_rate_t *value)
Get pressure measurement rate.
- Parameters:
dev – [in] The device descriptor
value – [out] the value in the resister
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_rate_p(dps310_t *dev, dps310_pm_rate_t value)
Set pressure measurement rate.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orconfig
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_rate_t(dps310_t *dev, dps310_tmp_rate_t *value)
Get temperature measurement rate.
- Parameters:
dev – [in] The device descriptor
value – [out] the value in the resister
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_rate_t(dps310_t *dev, dps310_tmp_rate_t value)
Set temperature measurement rate.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orconfig
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_oversampling_p(dps310_t *dev, dps310_pm_oversampling_t *value)
Get pressure oversampling rate.
- Parameters:
dev – [in] The device descriptor
value – [out] the value in the resister
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_oversampling_p(dps310_t *dev, dps310_pm_oversampling_t value)
Set pressure oversampling rate.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orconfig
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_oversampling_t(dps310_t *dev, dps310_tmp_oversampling_t *value)
Get temperature oversampling rate.
- Parameters:
dev – [in] The device descriptor
value – [out] the value in the resister
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_oversampling_t(dps310_t *dev, dps310_tmp_oversampling_t value)
Set temperature oversampling rate.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orconfig
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_tmp_ext(dps310_t *dev, dps310_tmp_src_ext_t *value)
Get temperature measurement source.
- Parameters:
dev – [in] The device descriptor.
value – [out] the value in the resister.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_tmp_ext(dps310_t *dev, dps310_tmp_src_ext_t value)
Set temperature measurement source.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_tmp_coef_ext(dps310_t *dev, dps310_tmp_src_ext_t value)
Set temperature coefficient source.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_int_hl(dps310_t *dev, dps310_int_hl_active_level_t *value)
Get interrupt active level.
- Parameters:
dev – [in] The device descriptor.
value – [out] the value in the resister.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_int_hl(dps310_t *dev, dps310_int_hl_active_level_t value)
Set interrupt active level.
- Parameters:
dev – [in] The device descriptor.
value – [in] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_int_fifo(dps310_t *dev, dps310_int_fifo_mode_t *value)
Get the status of FIFO interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of INT_FIFO.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_int_fifo(dps310_t *dev, dps310_int_fifo_mode_t value)
Set the status of FIFO interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_int_tmp(dps310_t *dev, dps310_int_tmp_mode_t *value)
Get the status of temperature interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of INT_TMP.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_int_tmp(dps310_t *dev, dps310_int_tmp_mode_t value)
Set the status of temperature interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_int_prs(dps310_t *dev, dps310_int_prs_mode_t *value)
Get the status of pressure interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of INT_PRS.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_int_prs(dps310_t *dev, dps310_int_prs_mode_t value)
Set the status of pressure interrupt.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_t_shift(dps310_t *dev, dps310_t_shift_mode_t *value)
Get the status of temperature result bit-shift.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of T_SHIFT.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_t_shift(dps310_t *dev, dps310_t_shift_mode_t value)
Set the status of temperature result bit-shift.
Must be set to DPS310_T_SHIFT_ENABLE when the oversampling rate is >8 times.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_p_shift(dps310_t *dev, dps310_p_shift_mode_t *value)
Get the status of pressure result bit-shift.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of T_SHIFT.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_p_shift(dps310_t *dev, dps310_p_shift_mode_t value)
Set the status of pressure result bit-shift.
Must be set to DPS310_P_SHIFT_ENABLE when the oversampling rate is >8 times.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_fifo_en(dps310_t *dev, dps310_fifo_en_mode_t *value)
Get the status of FIFO.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of FIFO_EN.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_fifo_en(dps310_t *dev, dps310_fifo_en_mode_t value)
Set the status of FIFO.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_spi_mode(dps310_t *dev, dps310_spi_mode_t *value)
Get the mode of SPI.
- Parameters:
dev – [in] The device descriptor.
value – [out] Current configuration of SPI_MODE.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
and/orvalue
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_set_spi_mode(dps310_t *dev, dps310_spi_mode_t value)
Set the mode of SPI.
- Parameters:
dev – [in] The device descriptor.
value – [out] The value to set.
- Returns:
ESP_OK
on success,ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_coef(dps310_t *dev)
Get Calibration Coefficients (COEF), update COEF in the device descriptor.
- Parameters:
dev – [in] The device descriptor.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_get_mode(dps310_t *dev, dps310_mode_t *mode)
Get operating mode.
- Parameters:
dev – [in] The device descriptor.
mode – [out] The operating mode.
-
esp_err_t dps310_set_mode(dps310_t *dev, dps310_mode_t mode)
Set operating mode.
- Parameters:
dev – [in] The device descriptor.
mode – [in] The operating mode.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_flush_fifo(dps310_t *dev)
Flush FIFO.
- Parameters:
dev – [in] The device descriptor.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_enable_fifo(dps310_t *dev, bool enable)
Enable or disable FIFO.
The function performs flush (
dps310_flush_fifo()
) before disabling FIFO.- Parameters:
dev – [in] The device descriptor.
enable – [in] Enable FIFO when true, disable FIFO when false.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_read_raw(dps310_t *dev, uint8_t reg, int32_t *value)
Read the raw sensor value from resisters.
The real raw value is 2’s complement. The function internally converts the value from the 2’s complement to uint32_t number.
- Parameters:
dev – [in] The device descriptor.
reg – [in] Either
DPS310_REG_TMP_B2
orDPS310_REG_PRS_B2
.value – [out] The raw value in the three resisters.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_read_pressure(dps310_t *dev, float *pressure)
Read compensated pressure value.
- Parameters:
dev – [in] The device descriptor.
pressure – [out] Compensated pressure value in Pascal (not hPa).
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_read_pressure_wait(dps310_t *dev, uint16_t delay_ms, uint8_t max_attempt, float *pressure)
Read compensated temperature value after waiting for PRES_RDY bit.
- Parameters:
dev – [in] The device descriptor.
delay_ms – [in] Time in microseconds to wait when the value is not ready.
max_attempt – [in] Number of attempt to read.
pressure – [out] Compensated pressure value in Pascal (not hPa).
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL. ESP_ERR_TIMEOUT when failed to read the measurement within max_attempt, or other errors when I2C communication fails.
-
esp_err_t dps310_read_temp(dps310_t *dev, float *temperature)
Read compensated temperature value.
- Parameters:
dev – [in] The device descriptor.
temperature – [out] Compensated temperature value.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_read_temp_wait(dps310_t *dev, uint16_t delay_ms, uint8_t max_attempt, float *temperature)
Read compensated temperature value after waiting for TMP_RDY bit.
- Parameters:
dev – [in] The device descriptor.
delay_ms – [in] Time in microseconds to wait when the value is not ready.
max_attempt – [in] Number of attempt to read.
temperature – [out] Compensated temperature value.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL. ESP_ERR_TIMEOUT when failed to read the measurement within max_attempt, or other errors when I2C communication fails.
-
esp_err_t dps310_is_ready_for(dps310_t *dev, uint8_t reg, uint8_t mask, bool *ready)
Test if a single bit in a resister is set.
- Parameters:
dev – [in] The device descriptor.
reg – [in] The resister
mask – [in] bit mask to test
ready – [out] true when the bit is set, false when the bit is cleared.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_is_ready_for_coef(dps310_t *dev, bool *ready)
Test COEF_RDY in MEAS_CFG resister is set.
- Parameters:
dev – [in] The device descriptor.
ready – [out] true when the bit is set, false when the bit is cleared.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_is_ready_for_sensor(dps310_t *dev, bool *ready)
Test SENSOR_RDY in MEAS_CFG resister is set.
- Parameters:
dev – [in] The device descriptor.
ready – [out] true when the bit is set, false when the bit is cleared.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_is_ready_for_temp(dps310_t *dev, bool *ready)
Test TMP_RDY in MEAS_CFG resister is set.
- Parameters:
dev – [in] The device descriptor.
ready – [out] true when the bit is set, false when the bit is cleared.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_is_ready_for_pressure(dps310_t *dev, bool *ready)
Test PRS_RDY in MEAS_CFG resister is set.
- Parameters:
dev – [in] The device descriptor.
ready – [out] true when the bit is set, false when the bit is cleared.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_quirk(dps310_t *dev)
Reset undocumented internal resisters.
The function is supposed to fix an issue in the sensor by writing magic values to magic resisters. However, the issue is not documented. The latest data sheet does not mention the issue, nor an errata.
After issuing magic commands, the function re-reads COEF and temperature once so that the subsequent pressure reads return compensated values with internal cached parameters.
See: https://github.com/Infineon/DPS310-Pressure-Sensor#temperature-measurement-issue https://github.com/Infineon/DPS310-Pressure-Sensor/blob/3edb0e58dfd7691491ae8d7f6a86277b001ad93f/src/DpsClass.cpp#L442-L461 https://github.com/Infineon/DPS310-Pressure-Sensor/blob/ed02f803fc780cbcab54ed8b35dd3d718f2ebbda/src/Dps310.cpp#L84-L86 https://github.com/Infineon/DPS310-Pressure-Sensor/issues/15#issuecomment-475394536
- Parameters:
dev – [in] The device descriptor.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_is_fifo_empty(dps310_t *dev, bool *result)
See if FIFO is empty.
- Parameters:
dev – [in] The device descriptor.
result – [out] The result. true if empty, false otherwise.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_read_fifo(dps310_t *dev, dps310_fifo_measurement_t *measurement)
Read measurement result from FIFO.
- Parameters:
dev – [in] The device descriptor.
measurement – [out] Measured value.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_backgorund_start(dps310_t *dev, dps310_mode_t mode)
Start background measurement.
This function is a syntax-sugar of
dps310_set_mode()
just for readbility and for an emphasis on a fact that measurement starts immediately after this.- Parameters:
dev – [in] The device descriptor.
mode – [in] The mode of background measurement.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_backgorund_stop(dps310_t *dev)
Stop background measurement.
This function is a syntax-sugar of
dps310_set_mode()
.- Parameters:
dev – [in] The device descriptor.
- Returns:
ESP_OK
on success.ESP_ERR_INVALID_ARG
whendev
is NULL, or other errors when I2C communication fails.
-
esp_err_t dps310_calibrate_altitude(dps310_t *dev, float altitude_real)
Calibrate altitude offset from the altitude of the device.
Call this function before dps310_read_altitude() for higher accuracy.
By default, the driver calculates altitude using average sea-level pressure. This function updates internal offset of altitude by reading pressure from the sensor, and given altitude. There are public web services that provide altitude at a specific location, such as Google Earth.
The function attempts to keep original oversampling rates during calibration. When it fails to do so due to errors, the oversampling rates might be different.
- Parameters:
dev – [in] The device descriptor.
altitude_real – [in] Real (known) altitude.
-
esp_err_t dps310_calc_altitude(dps310_t *dev, float pressure, float *altitude)
Calculate altitude from pressure.
Calculates altitude from pressure given. Call dps310_calibrate_altitude() before this function for higher accuracy. The function adds the offset to calculated altitude.
- Parameters:
dev – [in] The device descriptor.
pressure – [in] The pressure.
altitude – [out] The calicurated altitude.
-
struct dps310_fifo_measurement_t
- #include <dps310.h>
-
struct dps310_config_t
- #include <dps310.h>
Configuration parameters for DPS310.
-
struct dps310_coef_t
- #include <dps310.h>
Calibration Coefficients (COEF).
-
struct dps310_t
- #include <dps310.h>
Device descriptor.