lps22df-rs
Provides a platform-agnostic, no_std-compatible driver for the ST LPS22DF sensor, supporting both I2C and SPI communication interfaces.
Sensor Overview
The LPS22DF is an ultracompact, piezoresistive, absolute pressure sensor that functions as a digital output barometer. The LPS22DF provides lower power consumption, achieving lower pressure noise than its predecessor.
The device comprises a sensing element and an IC interface that communicates over an I²C, MIPI I3CSM, or SPI interface from the sensing element to the application and supports a wide Vdd IO range for the digital interfaces as well. The sensing element, which detects absolute pressure, consists of a suspended membrane manufactured using a dedicated process developed by ST.
The LPS22DF is available in a full-mold, holed LGA package (HLGA). It is guaranteed to operate over a temperature range extending from -40 °C to +85 °C. The package is holed to allow external pressure to reach the sensing element.
For more info, please visit the device page at https://www.st.com/en/mems-and-sensors/lps22df.html
Installation
Add the driver to your Cargo.toml dependencies:
[]
= "2.0.0"
Or, add it directly from the terminal:
Usage
By default, the create exposes the asynchronous API, and it could be included using:
use asynchronous as lps22df;
use *;
use *;
Blocking API (optional feature)
To use the blocking API instead of the asynchronous one, disable default features and enable the blocking feature in your Cargo.toml
[]
= { = "2.0.0", = false, = ["blocking"] }
or from the terminal:
Then import the blocking API:
use blocking as lps22df;
use *;
use *;
Create an instance
Create an instance of the driver with the new_<bus> associated function, by passing an I2C (embedded_hal::i2c::I2c) instance and I2C address, or an SPI (embedded_hal::spi::SpiDevice) instance, along with a timing peripheral.
An example with I2C:
let mut sensor = new_i2c;
Check "Who Am I" Register
This step ensures correct communication with the sensor. It returns a unique ID to verify the sensor's identity.
let whoami = sensor.id_get.unwrap;
if whoami != ID
Configure
See details in specific examples; the following are common api calls:
// Boot device
sensor.init_set.unwrap;
// Reset device
sensor.init_set.unwrap;
// Set BDU and IF_INC recommended for driver usage
sensor.init_set.unwrap;
// Select bus interface
let bus_mode = BusMode ;
sensor.bus_mode_set.unwrap;
// Set Output Data Rate
let md = Md ;
sensor.mode_set.unwrap;
License
Distributed under the BSD-3 Clause license.
More Information: http://www.st.com.
Copyright (C) 2025 STMicroelectronics