7个版本 (破坏性)

0.6.0 2024年2月1日
0.5.0 2023年1月31日
0.4.0 2022年2月19日
0.3.0 2020年5月4日
0.1.0 2018年8月15日

#1963嵌入式开发

MIT/Apache

32KB
489

Rust DS1307实时时钟驱动程序

crates.io Docs MSRV Build Status Coverage Status

这是一个基于embedded-hal traits的平台无关Rust驱动程序,用于DS1307实时时钟。

此驱动程序允许您

  • 以12小时和24小时格式读取和设置日期和时间。参见:datetime
  • 启用和禁用实时时钟。参见:set_running
  • 读取和写入用户RAM。参见:read_ram
  • 控制方波输出。参见:enable_square_wave_output

介绍性博客文章

设备

DS1307串行实时时钟(RTC)是一款低功耗、全二进制编码十进制(BCD)时钟/日历,带有56字节的NV SRAM。地址和数据通过I2C双向总线串行传输。

时钟/日历提供秒、分、小时、日、日期、月份和年份信息。月底日期会自动调整,包括闰年的修正。时钟可以在24小时或12小时格式下运行,带有AM/PM指示器。

DS1307内置电源检测电路,可检测电源故障并自动切换到备用电源。在从备用电源运行时,时钟保持运行。

数据表:DS1307

用法

要使用此驱动程序,请导入此crate和embedded_hal实现,然后实例化设备。

请在此仓库中查找使用硬件的额外示例: driver-examples

use ds1307::{DateTimeAccess, Ds1307, NaiveDate};
use linux_embedded_hal::I2cdev;

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let mut rtc = Ds1307::new(dev);
    let datetime = NaiveDate::from_ymd_opt(2022, 1, 2)
        .unwrap()
        .and_hms_opt(19, 59, 58)
        .unwrap();
    rtc.set_datetime(&datetime).unwrap();
    // ...
    let datetime = rtc.datetime().unwrap();
    println!("{datetime}");
    // This will print something like: 2022-01-02 19:59:58
}

最小支持Rust版本(MSRV)

此crate保证在稳定Rust 1.62及以上版本上编译。它可能与较旧版本编译,但这可能在任何新的补丁版本中改变。

支持

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

许可

许可方式为以下之一

由你选择。

贡献

除非你明确说明,否则根据Apache-2.0许可证的定义,你有意提交的任何贡献,旨在包含在作品中,将根据上述方式双许可,无需任何附加条款或条件。

依赖项

~1MB
~19K SLoC