#dac #driver #embedded-hal #embedded-hal-driver

无需std mcp4728

适用于MCP4728 4通道、12位I2C DAC的平台无关Rust驱动程序

1个不稳定版本

0.1.0 2022年10月22日

#903 in 嵌入式开发

MIT/Apache

47KB
725

Rust驱动程序,用于MCP4728 4通道12位I2C DAC

这是一个使用嵌入式-hal特征的平台无关的Rust DAC驱动程序。

此驱动程序允许您

  • 写入单个通道并将数据保存到EEPROM
  • 写入多个通道并将数据保存到EEPROM
  • 写入所有通道,跳过某些配置位,不保存到EEPROM(“快速写入”)
  • 将电压参考模式写入所有通道
  • 将增益模式写入所有通道
  • 将掉电模式写入所有通道
  • 读取所有通道的EEPROM和输出寄存器
  • 发出I2C通用调用命令:复位、唤醒和软件更新

此驱动程序不支持的一个功能是 - 读取和写入设备的I2C地址。驱动程序的三个位可以设置(从0x60到0x67),但这需要通过精确的时序切换另一个引脚与I2C消息,这是不可能通过嵌入式-hal特征实现的。

设备

MCP4728是一款具有非易失性存储器(EEPROM)的4通道、12位数字模拟转换器,用于其输出设置。设备在启动时将自动从EEPROM加载其上一个设置,而无需接收任何命令。每个通道都有独立的电压参考、增益和掉电设置。通道可以单独写入或同时写入。

数据表

MCP4728

使用方法

use linux_embedded_hal::I2cdev;
use mcp4728::{MCP4728};

let i2c = I2cdev::new("/dev/i2c-1").unwrap();
let mut dac = MCP4728::new(i2c, 0x60);
dac.fast_write(483, 279, 297, 590).unwrap();

更新模拟输出

大多数命令写入输出寄存器,但并不一定更新模拟输出。有以下几种方式可以更新输出:

  • 如果OutputEnableModeUpdate,则每个通道在接收最后字节后更新输出(不是所有命令都可以设置此位)
  • 如果LDAC引脚被置为低电平,则每个通道在接收最后字节后更新输出。
  • 如果在任何时间LDAC引脚从高电平跳变到低电平,则所有通道将更新。
  • 如果接收到通用调用软件更新命令,则所有通道将更新。

许可协议

以下任一许可协议下授权

由您自行选择。

贡献

除非您明确声明,否则您按照 Apache-2.0 许可证定义的,有意提交以包含在该作品中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

约1.5MB
约36K SLoC