#battery #bms #ic #no-std

no-std ltc681x

Client LTC681X battery monitoring family

11 unstable releases

0.6.0 Dec 18, 2024
0.5.0 Feb 8, 2024
0.4.2 Sep 9, 2022
0.3.3 Jul 1, 2022
0.1.0 May 3, 2022

#98 in Embedded development

Download history 16/week @ 2024-09-19 12/week @ 2024-09-26 8/week @ 2024-12-05 97/week @ 2024-12-12 48/week @ 2024-12-19 28/week @ 2024-12-26

181 downloads per month

MIT/Apache

235KB
5K SLoC

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::ExampleSPIDevice;
use ltc681x::ltc6813::{CellSelection, Channel, GPIOSelection, LTC6813};
use ltc681x::monitor::{ADCMode, LTC681X, LTC681XClient, PollClient};

let spi_bus = ExampleSPIDevice::default();

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

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

// Wait until ADC conversion is finished or poll the status
// (s. 'Conversion time' and 'Polling' section(s) of monitor module)

// 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

Any form of support is greatly appreciated. Feel free to create issues and PRs. See DEVELOPMENT for more details.

License

Licensed under either of

Each contributor agrees that his/her contribution covers both licenses.

Dependencies

~3MB
~55K SLoC