6个版本 (稳定)
2.0.0 | 2024年1月21日 |
---|---|
1.2.0 | 2022年12月31日 |
1.1.0 | 2022年6月14日 |
1.0.0 | 2022年3月20日 |
0.0.1 | 2021年12月25日 |
#160 in 嵌入式开发
每月625次下载
69KB
807 行
PCA9535
使用 embedded-hal 的 PCA9535 IO-Expander 驱动程序。
特性
两种扩展模式
- 立即
- 缓存
立即模式在每个函数调用时都会发出 i2c 总线事务,就像正常的 i2c 设备库一样。
缓存模式利用了设备的中断引脚,该引脚指示寄存器值的变化。驱动程序保留设备寄存器的内部表示;因此,只有在中断引脚指示有数据变化时才会发出读取操作。与立即模式相比,这种模式可以显著减少对总线的读取访问。
两种交互方式
- 标准接口
- HAL 引脚接口
标准接口提供与设备 GPIO 引脚交互所需的所有函数。
HAL 引脚接口提供了一种使用 Expander GPIO 作为嵌入式-hal GPIO 的方法,这使得它们可以在任何使用嵌入式-hal 的其他库中使用。可以使用 ExpanderMutex 在多个线程中使用这些引脚。
使用示例
这是一个基本的使用示例;有关更多信息,请访问文档。
使用标准接口的立即扩展器
use pca9535::{GPIOBank, Pca9535Immediate, StandardExpanderInterface};
let i2c = I2c::new().unwrap();
let mut expander = Pca9535Immediate::new(i2c, 32);
expander.pin_into_input(GPIOBank::Bank0, 4).unwrap();
expander.pin_into_output(GPIOBank::Bank1, 6).unwrap();
if expander.pin_is_high(GPIOBank::Bank0, 4).unwrap() {
expander.pin_set_high(GPIOBank::Bank1, 6).unwrap();
}
使用 HAL 引脚接口的缓存扩展器
use std::sync::Mutex;
use embedded_hal::digital::blocking::{InputPin, OutputPin};
use pca9535::{ExpanderInputPin, ExpanderOutputPin, GPIOBank, IoExpander, Pca9535Cached, PinState};
let i2c = I2c::new().unwrap();
let interrupt_pin = Gpio::new().unwrap().get(1).unwrap().into_input();
let expander = Pca9535Cached::new(i2c, 32, interrupt_pin, true).unwrap();
let io_expander: IoExpander<_, _, Mutex<_>> = IoExpander::new(expander);
let mut input_pin = ExpanderInputPin::new(&io_expander, GPIOBank::Bank0, 4).unwrap();
let mut output_pin = ExpanderOutputPin::new(&io_expander, GPIOBank::Bank1, 6, PinState::Low).unwrap();
if input_pin.is_high().unwrap() {
output_pin.set_high().unwrap();
}
变更日志
请参阅 CHANGELOG.md 或版本页面以获取详细信息。