mcp3x6x 0.3.1

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

mcp3x6x

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