#led-driver #gpio #16-bit #general #explander #dimming

no-std aw9523b

AW9523B的通用驱动程序,它是一个16位GPIO扩展器和LED驱动器

1 个不稳定版本

0.1.0 2024年8月13日

#623嵌入式开发

Download history 121/week @ 2024-08-11

每月 121次下载

MIT/Apache

15KB
290

Rust AW9523B - 16位GPIO扩展器和LED驱动器的驱动程序

crates.io 文档

这是一个不依赖于平台的Rust驱动程序,用于手持和便携式设备中的aw9523b,使用embedded-hal特性。

此驱动程序允许您

  • 设置GPIO输入或输出
  • 设置GPIO驱动LED
  • LED调光
  • 获取GPIO状态

Rust驱动程序已与AnalogLamb CiC AW9523B Breakout进行测试。您可以从AnalogLamb 购买该模块。

设备

AW9523B是一个16功能LED驱动器和GPIO控制器。16个I/O端口中的任何一个都可以配置为LED驱动模式或GPIO模式。此外,任何GPIO都可以独立地配置为输入或输出。

开机后,所有16个I/O端口默认配置为GPIO输出,默认状态由I2C设备地址选择输入AD0和AD1复位。所有配置为输入的I/O端口会持续监控状态变化。状态变化通过INTN输出指示。当AW9523B通过I2C接口读取GPIO状态时,中断被清除。中断有8μs的消抖。

当I/O端口配置为LED驱动模式时,AW9523B可以通过I2C接口设置LED驱动电流为0~IMAX之间,分为256级线性调光。默认最大电流(IMAX)为37mA,IMAX可以在GCR寄存器中更改。

Wiki - CIC AW9523B Breakout

使用方法

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

请查阅CIC AW9523B Breakout硬件使用示例Wiki - CIC AW9523B Breakout

use linux_embedded_hal::I2cdev;
use aw9523b::Aw9523b;

fn main() {
    let dev = I2cdev::new("/dev/i2c-3").unwrap();
    let mut ic = Aw9523b::new(dev, 0x58);

    let id = ic.id().unwrap();
    println!("aw9523b id = {:02x}", id);
    std::thread::sleep(std::time::Duration::from_secs(1));

    ic.set_io_direction(aw9523b::Pin::P00, aw9523b::Dir::INPUT).unwrap();

    loop {
        while !ic.pin_is_low(aw9523b::Pin::P00).unwrap() {
            println!("P00 is high");
            std::thread::sleep(std::time::Duration::from_millis(200));
        }
        println!("P00 is low");
    }
}

支持

有关问题、问题、功能请求和其他更改,请在wiki FAQ中提交问题。

最低支持的Rust版本(MSRV)

本库保证可以在稳定版Rust 1.62及更高版本上编译。它可能在旧版本上也能编译,但在任何新的补丁版本中可能都会发生变化。

许可协议

许可协议为以下之一

您可选择其中之一。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,如Apache-2.0许可证中定义,将按照上述方式双许可,不附加任何额外条款或条件。

依赖项

~56KB