3个版本 (1个稳定版)
1.0.0 | 2024年6月24日 |
---|---|
0.2.0 | 2021年9月23日 |
0.1.0 | 2019年2月9日 |
#1820 在 嵌入式开发
每月 88 次下载
18KB
174 行
Rust MCP4x数字电位器(digipot)驱动程序
这是一个基于embedded-hal
traits的Rust平台无关的MCP41xxx和MCP42xxx SPI数字电位器(digipot)驱动程序。
此驱动程序允许您
- 设置一个通道(或所有通道)的位置。请参阅:
set_position()
。 - 关闭一个通道(或所有通道)。请参阅:
shutdown()
。
设备
MCP41XXX和MCP42XXX设备是256位置的数字电位器,提供10 kΩ、50 kΩ和100 kΩ电阻版本。MCP41XXX是一个单通道设备,提供8引脚PDIP或SOIC封装。MCP42XXX包含两个独立的通道,封装为14引脚PDIP、SOIC或TSSOP。MCP41XXX/42XXX的滑动端子位置线性变化,并通过工业标准SPI接口进行控制。
这些设备在静态操作期间功耗小于1 μA。提供软件关闭功能,该功能将“A”端子从电阻堆中断开,并同时将滑动端子连接到“B”端子。此外,双通道MCP42XXX具有SHDN引脚,在硬件上执行相同的功能。在关闭模式下,可以更改滑动寄存器的内容,电位器从关闭状态返回到新值。上电时,滑动端子重置到中间位置(80h)。RS(复位)引脚执行硬件复位,并将滑动端子返回到中间位置。
MCP42XXX SPI接口包括SI和SO引脚,允许多个设备级联。MCP42XXX通道之间的电阻匹配小于1%。
此驱动程序至少与以下设备兼容:MCP41010、MCP41050、MCP41100、MCP42010、MCP42050和MCP42100。
数据表
用法
要使用此驱动程序,请导入此crate和embedded_hal
实现,然后实例化相应的设备。以下示例中,将以MCP41x设备实例作为示例。其他设备可以使用类似的方法创建,例如:Mcp4x::new_mcp42x(...)
。
请在此存储库中查找使用硬件的更多示例: driver-examples
use mcp4x::{Channel, Mcp4x};
use embedded_hal_bus::spi::ExclusiveDevice;
use linux_embedded_hal::{Delay, SpidevBus, SysfsPin};
fn main() {
let spi = SpidevBus::open("/dev/spidev0.0").unwrap();
let chip_select = SysfsPin::new(25);
let dev = ExclusiveDevice::new(spi, chip_select, Delay);
let mut mcp41x = Mcp4x::new_mcp41x(dev);
mcp41x.set_position(Channel::Ch0, 50).unwrap();
// Get SPI device back
let _dev = mcp41x.destroy_mcp41x();
}
支持
有关问题、问题、功能请求(例如与类似设备的兼容性和其他更改),请在github项目中提交问题。
许可证
根据您的选择,许可如下:
- Apache许可证,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确表示,否则您有意提交给作品以包含在内的任何贡献,如Apache-2.0许可证中定义的,应按上述方式双许可,不附加任何额外的条款或条件。
依赖项
~56KB