3个版本 (1个稳定版)

1.0.0 2024年6月24日
0.2.0 2021年9月23日
0.1.0 2019年2月9日

#1820嵌入式开发

Download history 1/week @ 2024-04-19 138/week @ 2024-06-21 5/week @ 2024-06-28 59/week @ 2024-07-26 29/week @ 2024-08-02

每月 88 次下载

MIT/Apache

18KB
174

Rust MCP4x数字电位器(digipot)驱动程序

crates.io Docs Minimum Supported Rust Version Build Status Coverage Status

这是一个基于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许可证中定义的,应按上述方式双许可,不附加任何额外的条款或条件。

依赖项

~56KB