mcp3x6x

Crates.iomcp3x6x
lib.rsmcp3x6x
version0.3.1
created_at2025-12-02 19:22:13.659093+00
updated_at2026-01-20 12:16:08.797418+00
descriptionno_std library for the MCP3x6x(R) family of analog digital converters
homepage
repositoryhttps://github.com/WMT-GmbH/mcp3x6x
max_upload_size
id1962460
size56,738
(dimpolo)

documentation

README

mcp3x6x

github Crates.io docs.rs

no_std library for the MCP3x6x(R) family of analog digital converters.

Supports:

  • MCP3461
  • MCP3462
  • MCP3464
  • MCP3561
  • MCP3562
  • MCP3564
  • MCP3461R
  • MCP3462R
  • MCP3464R
  • MCP3465R
  • MCP3561R
  • MCP3562R
  • MCP3564R
  • MCP3565R

Features:

  • Activate one of the device features to enable support for the corresponding device.
  • defmt feature implements defmt::Format for all registers.

Basic usage:

use mcp3x6x::{FastCommand, MCP3x6x, ToVoltageConverter24bit, Irq, ClkSel, Config0};

// use 3.3V as Vref+ and 0V as Vref-
const TO_VOLT: ToVoltageConverter24bit = ToVoltageConverter24bit::new(3.3, 0.0, mcp3x6x::Gain::X1);

// spi is a struct implementing embedded_hal::spi::SpiDevice.
// irq is an input pin attached to the IRQ pin of the ADC.

let mut adc = MCP3x6x::new(spi);

// use internal clock
let config0 = Config0::default().with_clk_sel(ClkSel::InternalClock);
adc.write_register(config0).unwrap();

// disable en_stp
let irq = Irq::default().with_en_stp(false);
adc.write_register(irq).unwrap();

// be ready for conversions
adc.fast_command(FastCommand::Standby).unwrap();

loop {
    adc.fast_command(FastCommand::ConversionStart);
    while irq_pin.is_high() {}
    let sample = adc.read_24_bit_adc_data().unwrap();
    let voltage = TO_VOLT.to_volt(sample);
}

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Commit count: 35

cargo fmt