#dac #spi #digital #analog #embedded-hal-driver

无std mcp49xx

MCP49xx和MCP48xx数字到模拟转换器(DAC)的跨平台Rust驱动程序

3个版本 (重大更改)

0.3.0 2022年6月13日
0.2.0 2021年9月16日
0.1.0 2019年2月17日

嵌入式开发中排名2053

Download history 114/week @ 2024-03-13 126/week @ 2024-03-20 92/week @ 2024-03-27 189/week @ 2024-04-03 122/week @ 2024-04-10 107/week @ 2024-04-17 63/week @ 2024-04-24 38/week @ 2024-05-01 84/week @ 2024-05-08 79/week @ 2024-05-15 172/week @ 2024-05-22 146/week @ 2024-05-29 114/week @ 2024-06-05 78/week @ 2024-06-12 94/week @ 2024-06-19 34/week @ 2024-06-26

每月下载量345

MIT/Apache

27KB
413

Rust MCP49xx和MCP48xx数字到模拟转换器(DAC)驱动程序

crates.io Docs Build Status Coverage Status

这是一个基于embedded-hal trait的MCP49xx和MCP48xx SPI数字到模拟转换器(DAC)的跨平台Rust驱动程序。

此驱动程序允许您

  • 将通道设置为某个值。
  • 关闭通道。
  • 在命令上使用缓冲。
  • 选择增益。

设备

Microchip Technology Inc. 的MCP49xx设备是单/双通道8位、10位和12位缓冲电压输出的数字到模拟转换器(DAC)。这些设备从单个2.7V到5.5V电源运行,具有与SPI兼容的串行外围接口。用户可以通过设置增益选择选项位(增益为1或2)来配置设备的全量程范围为Vref或2*Vref。

用户可以通过设置配置寄存器位来关闭设备。在关闭模式下,大多数内部电路关闭以节省电源,并且输出放大器配置为提供已知的高阻性输出负载(500 kΩ,典型)。

这些设备包括双缓冲寄存器,允许通过LDAC引脚同步更新DAC输出。这些设备还集成了上电复位(POR)电路,以确保可靠的电源启动。

这些设备利用电阻串架构,具有低差分非线性(DNL)误差和快速建立时间的固有优势。这些设备在扩展温度范围(+125°C)内指定。

这些设备为需要校准或补偿信号(如温度、压力和湿度)的消费者和工业应用提供了高精度和低噪声性能。

此驱动程序与以下设备兼容

设备 分辨率 通道 缓冲
MCP4801 8位 1 不可用
MCP4802 8位 2 不可用
MCP4811 10位 1 不可用
MCP4812 10位 2 不可用
MCP4821 12位 1 不可用
MCP4822 12位 2 不可用
MCP4901 8位 1 可用
MCP4902 8位 2 可用
MCP4911 10位 1 可用
MCP4912 10位 2 可用
MCP4921 12位 1 可用
MCP4922 12位 2 可用

数据表

用法

要使用此驱动程序,请导入此包和一个 嵌入式HAL 实现,然后创建适当的设备实例。以下示例将创建MCP4921设备的实例作为示例。其他设备可以使用类似的方法创建,例如:Mcp49xx::new_mcp4822(...)

请在此存储库中找到使用硬件的更多示例:driver-examples

use linux_embedded_hal::{Pin, Spidev};
use mcp49xx::{Command, Mcp49xx};

fn main() {
    let spi = Spidev::open("/dev/spidev0.0").unwrap();
    let cs = Pin::new(25);
    let mut mcp4921 = Mcp49xx::new_mcp4921(cs);

    let cmd = Command::default();
    let cmd = cmd.double_gain().value(50);

    // enable double gain and set value
    mcp4921.send(&mut spi, cmd).unwrap();

    // keeps double gain enabled but changes value
    mcp4921.send(&mut spi, cmd.value(100)).unwrap();

    // Get CS pin back
    let _chip_select = mcp4921.destroy();
}

支持

有关问题、问题、功能请求和其他更改,请在github项目中提交问题

许可

以下任一许可下授权:

任您选择。

贡献

除非您明确声明,否则您提交的任何贡献,根据Apache-2.0许可证的定义,将按上述方式双重许可,不附加任何额外条款或条件。

依赖

~71KB