1 个不稳定版本
新 0.1.0 | 2024年8月13日 |
---|
#623 在 嵌入式开发
每月 121次下载
15KB
290 行
Rust AW9523B - 16位GPIO扩展器和LED驱动器的驱动程序
这是一个不依赖于平台的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寄存器中更改。
使用方法
要使用此驱动程序,导入此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 License,版本 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择其中之一。
贡献
除非您明确声明,否则您提交的任何有意包含在作品中的贡献,如Apache-2.0许可证中定义,将按照上述方式双许可,不附加任何额外条款或条件。
依赖项
~56KB