MPL3115A2 Pressure Sensor

Driver for the Freescale MPL3115A2 pressure sensor.

The driver will initialize the sensor for pressure measurement. The conversion duration depends on oversample ratio. After initialization the sensor can be set active to run periodic measurements. The oversample ratio can be configured during sensor initialization.

This driver provides [S]ensor [A]ctuator [U]ber [L]ayer capabilities.

enum @139
MPL3115A2_OS_RATIO_1 = 0
Oversample Ratio 1, conversion 6ms.
MPL3115A2_OS_RATIO_2
Oversample Ratio 2, conversion 10ms.
MPL3115A2_OS_RATIO_4
Oversample Ratio 4, conversion 18ms.
MPL3115A2_OS_RATIO_8
Oversample Ratio 8, conversion 34ms.
MPL3115A2_OS_RATIO_16
Oversample Ratio 16, conversion 66ms.
MPL3115A2_OS_RATIO_32
Oversample Ratio 32, conversion 130ms.
MPL3115A2_OS_RATIO_64
Oversample Ratio 64, conversion 258ms.
MPL3115A2_OS_RATIO_128
Oversample Ratio 128, conversion 514ms.
MPL3115A2_OS_RATIO_DEFAULT

Default Ratio.

1
MPL3115A2_OS_RATIO_16
enum @138
MPL3115A2_OK
all good
MPL3115A2_ERROR_I2C
I2C communication failed.
MPL3115A2_ERROR_DEV
Device MPL3115A2 not found.
MPL3115A2_ERROR_CNF
Device configuration failed.
int mpl3115a2_init(mpl3115a2_t * dev, const mpl3115a2_params_t * params)

Initialize the MPL3115A2 sensor driver.

Parameters

dev:device descriptor of sensor to initialize
params:configuration parameters

Return values

  • MPL3115A2_OK on success
  • -MPL3115A2_ERROR_I2C on I2C bus error
  • -MPL3115A2_ERROR_DEV on device error
  • -MPL3115A2_ERROR_CNF on config error
int mpl3115a2_reset(const mpl3115a2_t * dev)

Reset the MPL3115A2 sensor.

After that, the sensor should be reinitialized.

Parameters

dev:device descriptor of sensor

Return values

  • MPL3115A2_OK on success
  • -MPL3115A2_ERROR_I2C on error
int mpl3115a2_set_active(const mpl3115a2_t * dev)

Set active mode, this enables periodic measurements.

Parameters

dev:device descriptor of sensor

Return values

  • MPL3115A2_OK on success
  • -MPL3115A2_ERROR_I2C on error
int mpl3115a2_set_standby(const mpl3115a2_t * dev)

Set standby mode.

Parameters

dev:device descriptor of sensor

Return values

  • MPL3115A2_OK on success
  • -MPL3115A2_ERROR_I2C on error
int mpl3115a2_is_ready(const mpl3115a2_t * dev)

Check for new set of measurement data.

Parameters

dev:device descriptor of sensor

Return values

  • >0 if new data sample is ready
  • MPL3115A2_OK measurement in progress
  • -MPL3115A2_ERROR_I2C on error
int mpl3115a2_read_pressure(const mpl3115a2_t * dev, uint32_t * pres, uint8_t * status)

Read sensor’s data in pressure mode.

Parameters

dev:device descriptor of sensor
pres:pressure in Pascals
status:sensor status register

Return values

  • MPL3115A2_OK on success,
  • -MPL3115A2_ERROR_I2C on error
int mpl3115a2_read_temp(const mpl3115a2_t * dev, int16_t * temp)

Read sensor’s temperature.

Parameters

dev:device descriptor of sensor
temp:temperature in

Return values

  • MPL3115A2_OK on success
  • -MPL3115A2_ERROR_I2C on error
MPL3115A2_I2C_ADDRESS

MPL3115A2 Default Address.

1
(0x60)
MPL3115A2_CONVERSION_TIME

Maximum Conversion Time in microseconds [us].

1
(514000UL)

Note

Conversion time is: ((oversampling ratio * 4) + 2) * 1000 us

struct mpl3115a2_params_t

Configuration parameters.

i2c.h::i2c_t i2c

I2C bus the device is connected to.

uint8_t addr

I2C bus address of the device.

uint8_t ratio

MPL3115A2 oversampling ratio.

struct mpl3115a2_t

Device descriptor for MPL3115A2 sensors.

mpl3115a2_params_t params

device configuration parameters