12个版本 (6个重大变更)

0.7.2 2024年5月23日
0.7.0 2024年1月18日
0.6.1 2023年12月27日
0.6.0 2023年7月10日
0.2.0 2018年11月22日

#404嵌入式开发

Download history 212/week @ 2024-05-04 166/week @ 2024-05-11 307/week @ 2024-05-18 172/week @ 2024-05-25 214/week @ 2024-06-01 233/week @ 2024-06-08 199/week @ 2024-06-15 174/week @ 2024-06-22 59/week @ 2024-06-29 112/week @ 2024-07-06 189/week @ 2024-07-13 162/week @ 2024-07-20 237/week @ 2024-07-27 244/week @ 2024-08-03 164/week @ 2024-08-10 121/week @ 2024-08-17

788 每月下载量
用于 7 个crate(6个直接使用)

MIT/Apache

44KB
552

Rust 24x EEPROM 驱动程序

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

这是一个基于 embedded-hal 特性的24x系列串行EEPROM的平台无关Rust驱动程序。

此驱动程序允许您

  • 从内存地址读取单个字节。参见:read_byte()
  • 从内存地址开始读取字节数组。参见:read_data()
  • 读取当前内存地址(请参阅说明)。参见:read_current_address()
  • 将字节写入内存地址。参见:write_byte()
  • 将字节数组(最多一个内存页)写入内存地址。参见:write_page()
  • 读取CSx变体设备的工厂编程的唯一串行号。参见:read_unique_serial()
  • 通过Eeprom24xTrait在通用代码中使用设备。

至少可以与以下设备一起使用。

入门博客文章

设备

这些设备提供一定数量的串行电擦写和可编程只读存储器(EEPROM),组织为一定数量的8位单词。设备的级联功能允许最多8个设备共享一个公共的2线总线。这些设备针对在低功耗和低电压操作至关重要的许多工业和商业应用进行了优化。

设备 存储位 8位单词 页面大小 数据表
24x00 128位 16 N/A 24C00
24x01 1 Kbit 128 8 字节 AT24C01
M24x01 1 Kbit 128 16 字节 M24C01
24x02 2 Kbit 256 8 字节 AT24C02
M24x02 2 Kbit 256 16 字节 M24C02
24x04 4 Kbit 512 16 字节 AT24C04
24x08 8 Kbit 1,024 16 字节 AT24C08
24x16 16 Kbit 2,048 16 字节 AT24C16
24x32 32 Kbit 4,096 32 字节 AT24C32
24x64 64 Kbit 8,192 32 字节 AT24C64
24x128 128 Kbit 16,384 64 字节 AT24C128
24x256 256 Kbit 32,768 64 字节 AT24C256
24x512 512 Kbit 65,536 128 字节 AT24C512
24xM01 1 Mbit 131,072 256 字节 AT24CM01
24xM02 2 Mbit 262,144 256 字节 AT24CM02

用法

要使用此驱动程序,请导入此包和嵌入式硬件实现,然后实例化适当的设备。以下示例中创建AT24C256设备实例作为示例。可以使用类似的方法创建其他设备: Eeprom24x::new_24x64(...).

请在此存储库中找到使用硬件的附加示例: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
}

特性

defmt-03

要启用defmt(版本0.3.x)支持,在指定对eeprom24x的依赖项时,请添加功能“defmt-03”。

[dependencies]
eeprom24x = { version = "0.7.2", features = ["defmt-03"] }

支持

对于问题、问题、功能请求和其他更改,请在github项目中提交问题。

许可

根据您选择以下任一项许可

由您选择。

贡献

除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证的定义,将根据上述许可证双重许可,无需任何其他条款或条件。

依赖项

~235KB