Giter Site home page Giter Site logo

joelsa / eeprom24x-rs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eldruin/eeprom24x-rs

0.0 0.0 0.0 146 KB

Platform agnostic Rust driver for 24x series serial EEPROM devices using embedded-hal

Home Page: https://blog.eldruin.com/24x-serial-eeprom-driver-in-rust/

License: Apache License 2.0

Rust 100.00%

eeprom24x-rs's Introduction

Rust 24x EEPROM Driver

crates.io Docs Minimum Supported Rust Version Build Status Coverage Status

This is a platform agnostic Rust driver for the 24x series serial EEPROM, based on the embedded-hal traits.

This driver allows you to:

  • Read a single byte from a memory address. See: read_byte().
  • Read a byte array starting on a memory address. See: read_data().
  • Read the current memory address (please read notes). See: read_current_address().
  • Write a byte to a memory address. See: write_byte().
  • Write a byte array (up to a memory page) to a memory address. See: write_page().
  • Use the device in generic code via the Eeprom24xTrait.

Can be used at least with the devices listed below.

Introductory blog post

The devices

These devices provides a number of bits of serial electrically erasable and programmable read only memory (EEPROM) organized as a number of words of 8 bits each. The devices' cascadable feature allows up to 8 devices to share a common 2-wire bus. The devices are optimized for use in many industrial and commercial applications where low power and low voltage operation are essential.

Device Memory bits 8-bit words Page size Datasheet
24x00 128 bits 16 N/A 24C00
24x01 1 Kbit 128 8 bytes AT24C01
M24x01 1 Kbit 128 16 bytes M24C01
24x02 2 Kbit 256 8 bytes AT24C02
M24x02 2 Kbit 256 16 bytes M24C02
24x04 4 Kbit 512 16 bytes AT24C04
24x08 8 Kbit 1,024 16 bytes AT24C08
24x16 16 Kbit 2,048 16 bytes AT24C16
24x32 32 Kbit 4,096 32 bytes AT24C32
24x64 64 Kbit 8,192 32 bytes AT24C64
24x128 128 Kbit 16,384 64 bytes AT24C128
24x256 256 Kbit 32,768 64 bytes AT24C256
24x512 512 Kbit 65,536 128 bytes AT24C512
24xM01 1 Mbit 131,072 256 bytes AT24CM01
24xM02 2 Mbit 262,144 256 bytes AT24CM02

Usage

To use this driver, import this crate and an embedded_hal implementation, then instantiate the appropriate device. In the following examples an instance of the device AT24C256 will be created as an example. Other devices can be created with similar methods like: Eeprom24x::new_24x64(...).

Please find additional examples using hardware in this repository: driver-examples

use eeprom24x::{Eeprom24x, SlaveAddr};
use embedded_hal::blocking::delay::DelayMs;
use linux_embedded_hal::{Delay, I2cdev};

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let address = SlaveAddr::default();
    let mut eeprom = Eeprom24x::new_24x256(dev, address);
    let memory_address = 0x1234;
    let data = 0xAB;

    eeprom.write_byte(memory_address, data).unwrap();

    Delay.delay_ms(5u16);

    let read_data = eeprom.read_byte(memory_address).unwrap();

    println!(
        "Read memory address: {}, retrieved content: {}",
        memory_address, &read_data
    );

    let _dev = eeprom.destroy(); // Get the I2C device back
}

Support

For questions, issues, feature requests, and other changes, please file an issue in the github project.

License

Licensed under either of

at your option.

Contributing

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.