1个不稳定版本
0.1.0 | 2022年10月22日 |
---|
#903 in 嵌入式开发
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加载其上一个设置,而无需接收任何命令。每个通道都有独立的电压参考、增益和掉电设置。通道可以单独写入或同时写入。
数据表
使用方法
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();
更新模拟输出
大多数命令写入输出寄存器,但并不一定更新模拟输出。有以下几种方式可以更新输出:
- 如果
OutputEnableMode
是Update
,则每个通道在接收最后字节后更新输出(不是所有命令都可以设置此位) - 如果LDAC引脚被置为低电平,则每个通道在接收最后字节后更新输出。
- 如果在任何时间LDAC引脚从高电平跳变到低电平,则所有通道将更新。
- 如果接收到通用调用软件更新命令,则所有通道将更新。
许可协议
以下任一许可协议下授权
- Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您自行选择。
贡献
除非您明确声明,否则您按照 Apache-2.0 许可证定义的,有意提交以包含在该作品中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖项
约1.5MB
约36K SLoC