iis2dulpx-rs

Crates.ioiis2dulpx-rs
lib.rsiis2dulpx-rs
version1.0.0
created_at2025-08-19 07:39:00.813382+00
updated_at2025-08-19 07:39:00.813382+00
description Driver for the IIS2DULPX ultra-low-power 3-axis accelerometer with FSM, MLC, adaptive self-configuration, analog hub/Qvar, FIFO, and advanced motion detection.
homepage
repositoryhttps://github.com/STMicroelectronics/iis2dulpx-rs
max_upload_size
id1801521
size296,864
Armando Visconti (avisconti)

documentation

README

iis2dulpx-rs

Crates.io BSD 3-Clause licensed

This crate provides a platform-agnostic driver for the ST IIS2DULPX digital 3-axis linear accelerometer.

Sensor Overview

The IIS2DULPX is an intelligent, digital 3-axis linear accelerometer whose MEMS and ASIC have been expressly designed to combine the lowest supply current possible with features such as always-on antialiasing filtering, a finite state machine (FSM) and machine learning core (MLC) with adaptive self-configuration (ASC), and an analog hub / Qvar sensing channel.

The FSM and MLC with ASC deliver outstanding always-on, edge processing capabilities to the IIS2DULPX, while the analog hub / Qvar sensing channel defines a new degree of system optimization. The IIS2DULPX MIPI I3C® target interface and embedded 128-level FIFO buffer complete a set of features that make this accelerometer a reference in terms of system integration from a standpoint of the bill of materials, processing, or power consumption.

The device has user-selectable full scales of ±2g/±4g/±8g/±16g and is capable of measuring accelerations with output data rates from 1.6 Hz to 800 Hz.

The IIS2DULPX has a dedicated internal engine to process motion and acceleration detection including free-fall, wake-up, single/double/triple-tap recognition, activity/inactivity, and 6D/4D orientation.

The device is available in a small thin plastic, land grid array (LGA) package and it is guaranteed to operate over an extended temperature range from -40°C to +105°C.

This driver was built using the embedded-hal traits.

For more info, please visit the device page at https://www.st.com/en/mems-and-sensors/iis2dulpx.html

Installation

Add the driver to your Cargo.toml dependencies:

[dependencies]
iis2dulpx-rs = "0.1.0"

Or, add it directly from the terminal:

cargo add iis2dulpx-rs

Usage

Include the crate and its prelude

use iis2dulpx_rs as iis2dulpx;
use iis2dulpx::*;
use iis2dulpx::prelude::*;

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 = Iis2dulpx::new_i2c(i2c, iis2dulpx::I2CAddress::I2cAddH, delay).unwrap();

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.device_id_get().unwrap();
if whoami != ID {
    panic!("Invalid sensor ID");
}

Configure

See details in specific examples; the following are common api calls:

// Restore default configuration
sensor.init_set(Init::Reset).unwrap();
loop {
    let status = sensor.status_get().unwrap();
    if status.sw_reset == 0 {
        break;
    }
}

// Set Output Data Rate
let md = Md {
    odr: Odr::_25hzLp,
    fs: Fs::_4g,
    bw: Bw::OdrDiv4,
};
sensor.mode_set(&md).unwrap();

License

Distributed under the BSD-3 Clause license.

More Information: http://www.st.com.

Copyright (C) 2025 STMicroelectronics

Commit count: 3

cargo fmt