dps310 - Driver for for DPS310, barometric pressure sensor¶
- group dps310
ESP-IDF driver for DPS310 barometric pressure sensor.
Sponsored by .
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.