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

无需std ads1x1x

适用于ADS1x1x超小型、低功耗模拟数字转换器(ADC)的平台无关Rust驱动程序。兼容设备:ADS1013、ADS1014、ADS1015、ADS1113、ADS1114和ADS1115。

4个版本

0.2.2 2021年7月29日
0.2.1 2020年6月22日
0.2.0 2019年3月31日
0.1.0 2018年11月21日

嵌入式开发中排名2022

Download history 202/week @ 2024-03-12 124/week @ 2024-03-19 137/week @ 2024-03-26 138/week @ 2024-04-02 56/week @ 2024-04-09 124/week @ 2024-04-16 82/week @ 2024-04-23 78/week @ 2024-04-30 89/week @ 2024-05-07 139/week @ 2024-05-14 302/week @ 2024-05-21 224/week @ 2024-05-28 60/week @ 2024-06-04 63/week @ 2024-06-11 67/week @ 2024-06-18 60/week @ 2024-06-25

每月下载量269
用于 2 包

MIT/Apache

57KB
824

Rust ADS1x1x超小型、低功耗模拟数字转换器(ADC)驱动程序

crates.io Docs Build Status Coverage Status

这是一个基于embedded-hal traits的平台无关Rust驱动程序,用于ADS1013、ADS1014、ADS1015、ADS1113、ADS1114和ADS1115超小型、低功耗模拟数字转换器(ADC)。

入门博客文章

此驱动程序允许您

  • 设置操作模式为单次或连续。见:into_continuous()
  • 在单次模式下进行测量。见:read()
  • 启动连续转换模式。见:start()
  • 读取在连续转换模式下进行的最后测量。见:read()
  • 设置数据速率。见:set_data_rate()
  • 设置全量程范围(增益放大器)。见 set_full_scale_range()
  • 读取是否正在进行的测量。见:is_measurement_in_progress()
  • 设置ALERT/RDY引脚用作转换就绪引脚。见:use_alert_rdy_pin_as_ready()
  • 比较器
    • 设置低和高阈值。见:set_high_threshold_raw()
    • 设置比较器模式。见:set_comparator_mode()
    • 设置比较器极性。参见:set_comparator_polarity()
    • 设置比较器保持。参见:set_comparator_latching()
    • 设置比较器队列。参见:set_comparator_queue()
    • 禁用比较器。参见:disable_comparator()

设备

这些设备是精密、低功耗、12/16位模数转换器(ADC),提供超小封装中测量最常见的传感器信号所需的所有功能。根据设备的不同,这些设备集成了可编程增益放大器(PGA)、电压参考、振荡器和高精度温度传感器。

这些设备可以以高达每秒3300个样本(SPS)的数据速率进行转换。PGA提供从±256 mV到±6.144 V的输入范围,允许以高分辨率测量大信号和小信号。输入多路复用器(MUX)允许测量两个差分或四个单端输入。高精度温度传感器可用于系统级温度监控或热电偶的冷端补偿。

这些设备可以在连续转换模式下运行,或者在一个转换后自动关闭的单次模式下运行。单次模式显著降低了空闲期间的电流消耗。数据通过I2C传输。

以下是设备的特性比较

设备 分辨率 采样率 通道 多通道 特性
ADS1013 12位 最大3300 SPS 1 不适用
ADS1014 12位 最大3300 SPS 1 不适用 比较器、PGA
ADS1015 12位 最大3300 SPS 4 复用 比较器、PGA
ADS1113 16位 最大860 SPS 1 不适用
ADS1114 16位 最大860 SPS 1 不适用 比较器、PGA
ADS1115 16位 最大860 SPS 4 复用 比较器、PGA

数据表

用法

要使用此驱动程序,导入此crate和embedded_hal实现,然后实例化适当的设备。以下示例将创建ADS1013设备的实例作为示例。其他设备可以通过类似的方法创建,例如:Ads1x1x::new_ads1114(...)

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

use embedded_hal::adc::OneShot;
use linux_embedded_hal::I2cdev;
use nb::block;

use ads1x1x::{channel, Ads1x1x, SlaveAddr};

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let address = SlaveAddr::default();
    let mut adc = Ads1x1x::new_ads1013(dev, address);
    let value = block!(adc.read(&mut channel::DifferentialA0A1)).unwrap();
    println!("Measurement: {}", value);
    // get I2C device back
    let _dev = adc.destroy_ads1013();
}

支持

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

许可

根据您的要求,许可如下

任选其一。

贡献

除非您明确表示,否则您有意提交的任何贡献,根据Apache-2.0许可证的定义,应双重许可,上述许可,不附加任何额外条款或条件。

依赖关系

~71KB