#i2c-sensors #sensirion #i2c #embedded-hal #crc-8

no-std sensirion-i2c

Common functionality for I2C based sensors from Sensirion

5 releases (3 breaking)

0.4.0 Jul 17, 2024
0.3.0 Feb 16, 2024
0.2.0 Nov 29, 2022
0.1.1 Sep 2, 2020
0.1.0 Aug 21, 2020

#245 in Hardware support

Download history 63/week @ 2024-11-29 120/week @ 2024-12-06 133/week @ 2024-12-13 19/week @ 2024-12-20 11/week @ 2024-12-27 58/week @ 2025-01-03 143/week @ 2025-01-10 173/week @ 2025-01-17 114/week @ 2025-01-24 134/week @ 2025-01-31 160/week @ 2025-02-07 105/week @ 2025-02-14 109/week @ 2025-02-21 150/week @ 2025-02-28 196/week @ 2025-03-07 124/week @ 2025-03-14

581 downloads per month
Used in 13 crates

BSD-3-Clause

12KB
182 lines

sensirion-i2c-rs

Crates.io Version Crates.io Downloads No Std

Rust library with common functionality for I2C based sensors from Sensirion.


lib.rs:

Library with common functionality for I2C based sensors from Sensirion, based on the embedded-hal traits.

Usage

CRC8 calculation / validation

use sensirion_i2c::crc8;

let data = [0xbe, 0xef];
let crc = crc8::calculate(&data);

let data = [0xbe, 0xef, crc];
assert_eq!(Ok(()), crc8::validate(&data));

I2C

The I2C helpers work with any embedded_hal::i2c implementation.

use embedded_hal_mock::eh1::i2c::{Mock as I2cMock, Transaction as I2cTransaction};
use sensirion_i2c::i2c;

let expectations = [I2cTransaction::write(0x12, vec![0x34, 0x56])];
let mut i2c_mock = I2cMock::new(&expectations);
i2c::write_command_u16(&mut i2c_mock, 0x12, 0x3456);
i2c_mock.done();

embedded-hal-async

The i2c_async module provides versions of the I2C helpers in this crate that use the embedded-hal-async crate, rather than the blocking I2C traits from embedded-hal.

This module is only available when the embedded-hal-async Cargo feature is enabled.

Dependencies

~61KB