#i2c #adc #driver #embedded-hal-driver #analog-devices

no-std ltc2497

适用于Analog Devices LTC2497 ADC的平台无关Rust驱动程序

1 个不稳定版本

0.1.0 2023年6月18日

#14 in #analog-devices

MIT 许可证

12KB
187

LTC2497 Rust 驱动程序

这是一个适用于Analog Devices LTC2497 16位8/16通道DSADC(具有I2C接口)的平台无关驱动程序。

设备

LTC2497是一款低功耗16位模数转换器,具有16个单端输入,可作为8个差分输入使用。

设备具有I2C接口,可以通过GPIO引脚设置27个地址之一,并且可以通过硬编码的全局地址同步批量设备的读取。设备具有内部振荡器,但可配置为使用外部振荡器。

设备信息数据手册


lib.rs:

基于embedded-hal trait的平台无关LTC2497 ADC Rust驱动程序。设备可以直接与嵌入式HAL一起使用,或者与具有“hal”功能的RPPAL(Raspberry Pi Peripheral Access Library)一起使用。

使用

导入此crate和嵌入式HAL实现之一(例如linux-embedded-halrppal)。然后实例化设备。

use std::error::Error;
use ltc2497::LTC2497;
use ltc2497::{AddressPinState::Low, Channel};
use rppal::hal::Delay;
use rppal::i2c::I2c;

let i2c = I2c::new()?;

let mut adc = LTC2497::new_from_pins(i2c, Low, Low, Low, 5.0, 0.0, Delay);

for ch in 0..=15 {
    match adc.read_channel(Channel::from(ch)) {
        Ok(v) => println!("Channel {ch}: {v}V"),
        Err(e) => println!("error {e:?} at channel {ch}"),
    };
}

Ok(())

您还可以直接使用地址实例化设备。例如,如果您已配置引脚以设置设备地址0x20

let mut adc = LTC2497::new(i2c, 0x20, 5.0, 0.0, Delay);

依赖项

~71KB