Skip to content

Abstraction for AD LTC6813 battery stack monitor

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

atlas-aero/rt-LTC681X

Repository files navigation

Client for LTC681X battery stack monitors

License License Crates.io Actions Status

Abstraction for LTC681X family. Supports all devices of LTC681X family: LTC6813, LTC6812, LTC6811 and LTC6810.

Currently, the following features are implemented:

Example

For all details see monitor module.

use ltc681x::example::{ExampleCSPin, ExampleSPIBus};
use ltc681x::ltc6813::{CellSelection, Channel, GPIOSelection, LTC6813};
use ltc681x::monitor::{ADCMode, LTC681X, LTC681XClient, PollClient};

let spi_bus = ExampleSPIBus::default();
let cs_pin = ExampleCSPin{};

// LTC6813 device
let mut client: LTC681X<_, _, _, LTC6813, 1> = LTC681X::ltc6813(spi_bus, cs_pin)
    .enable_sdo_polling();

// Starts conversion for cell group 1
client.start_conv_cells(ADCMode::Normal, CellSelection::Group1, true);

// Poll ADC status
while !client.adc_ready().unwrap() {
    // Conversion is not done yet
}

// Returns the value of cell group A. In case of LTC613: cell 1, 7 and 13
let voltages = client.read_voltages(CellSelection::Group1).unwrap();
assert_eq!(Channel::Cell1, voltages[0][0].channel);
assert_eq!(24979, voltages[0][0].voltage);

State

⚠️ The crate is still incomplete, but is under active development.

⚠️ The crate has only been tested for the LTC6813 variant. Although the protocol of the LTC681X family is essentially the same, inconsistencies are still conceivable for some variants. Practical tests + feedback with other variants are therefore welcome.

Development