The Rust i2cdev crate seeks to provide full access to the Linux i2cdev

in the embedded-hal traits rather than

Rust I2cdev

Documentation

The Rust i2cdev crate seeks to provide full access to the Linux i2cdev driver interface in Rust without the need to wrap any C code or directly make low-level system calls. The documentation for the i2cdev interace can be found at https://www.kernel.org/doc/Documentation/i2c/dev-interface and in the lm-sensors projects.

Device driver developers should consider building on top of the embedded-hal traits rather than directly coupling to this library. An implementation of those generic traits for Linux can be found in linux-embedded-hal which, at present, uses this crate as the backend for I2C.

Example/API

The source includes an example of using the library to talk to a Wii Nunchuck (which has an i2c interface). Go View the Example.

The Documentation contains a quick overview of how to get started with an i2c device.

In addition to the Read/Write traits, the following methods are available via the I2CDevice trait.

Features

The following features are implemented and planned for the library:

  • Implement the Read trait
  • Implement the Write trait
  • Implement SMBus Methods
  • Add Tests/Example for SMBus Methods
  • Add sensor library for handy sensors (and examples)
  • Add higher-level APIs/Macros for simplifying access to devices with large register sets
  • Add Support for Non-SMBus ioctl methods
  • Add examples for non-smbus ioctl methods
  • Unit Testing

Cross Compiling

Most likely, the machine you are running on is not your development machine (although it could be). In those cases, you will need to cross-compile. See https://github.com/japaric/rust-cross for pointers.

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.46.0 and up. It might compile with older versions but that may change in any new patch release.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Code of Conduct

Contribution to this crate is organized under the terms of the Rust Code of Conduct, the maintainer of this crate, the Embedded Linux Team, promises to intervene to uphold that code of conduct.

Issues

Collection of the latest Issues

DarkWugWug

DarkWugWug

1

I found that the smbus functions were unimplemented when trying to test my code. I require access to these functions because I use the smbus_* in the driver to communicate to the peripheral. I'm suggesting just having the smbus_* methods do a the appropriate mapping to the already implemented MockI2CDevice's read() and write() methods.

Is there a reason the MockI2CDevice's smbus_* methods weren't implemented? Is it as simple as calling MockI2CDevice's read/write methods or am I missing something larger?

Versions

Find the latest versions by id

0.5.1 - Nov 22, 2021

  • Add PEC support for SMBus compatible adapters.
  • Add LinuxI2CDevice::force_new() to open the device without checking if the address is bound to a driver.
  • Updated nix to version 0.23.

0.5.0 - Sep 22, 2021

  • Updated nix to version 0.22.
  • Updated bitflags to version 1.3.
  • Updated MSRV to version 1.46.0.

Information - Updated Apr 13, 2022

Stars: 149
Forks: 44
Issues: 1

rust_embedded_starter

Boilerplate für Embedded Entwicklung mit Rust mit Flash und Debug automatik

rust_embedded_starter

Embedded rust HAL (hardware abstraction layer) for the STM32WL

This is a work in progress, it is unstable, incomplete, and (mostly) untested

Embedded rust HAL (hardware abstraction layer) for the STM32WL

Embedded Rust Template

This template is based on stm32f4xx-hal

Embedded Rust Template

A Rust embedded-hal HAL for all MCUs in the STM32 F7 family

This crate is largely inspired by the awesome work done here:

A Rust embedded-hal HAL for all MCUs in the STM32 F7 family

For use with the AnyLeaf pH and RTD sensors in Rust on embedded systems, and...

For use with the AnyLeaf pH and RTD sensors in Rust on embedded systems, and single-board computers

For use with the AnyLeaf pH and RTD sensors in Rust on embedded systems, and...

An embedded rust no_std driver for the AHT20 temperature and humidity sensor, forked from Anthony...

An embedded rust no_std driver for the AHT20 temperature and humidity sensor, forked from Anthony Romano's docs

An embedded rust no_std driver for the AHT20 temperature and humidity sensor, forked from Anthony...

embedded-rust-H2AL

Hardware abstraction layer - abstraction layer

embedded-rust-H2AL

cargo-pio = Cargo + PlatformIO

Build Rust embedded projects with PlatformIO!

cargo-pio = Cargo + PlatformIO
Facebook Instagram Twitter GitHub Dribbble
Privacy