max1704x - Driver for MAX17043/MAX17044/MAX17048/MAX17049 battery fuel gauge

group max1704x

ESP-IDF driver for MAX17043/MAX17044/MAX17048/MAX17049 battery fuel gauge.

Copyright (c) 2022 Joshua Butler, MD, MHI josh.butler929@gmail.com

BSD Licensed as described in the file LICENSE

Defines

MAX1704X_I2C_ADDR

Enums

enum max1704x_model_t

Device model.

Values:

enumerator MAX17043_4
enumerator MAX17048_9

Functions

esp_err_t max1704x_init_desc(max1704x_t *dev, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)

Initialize device descriptor.

Parameters
  • dev – Device descriptor

  • port – I2C port

  • sda_gpio – SDA GPIO

  • scl_gpio – SCL GPIO

Returns

ESP_OK on success

esp_err_t max1704x_free_desc(max1704x_t *dev)

Free device descriptor.

Parameters

dev – Device descriptor

Returns

ESP_OK on success

esp_err_t max1704x_quickstart(max1704x_t *dev)

Quickstart battery fuel gauge.

Parameters

dev – Device descriptor

Returns

ESP_OK on success

esp_err_t max1704x_get_voltage(max1704x_t *dev, float *voltage)

Get battery voltage.

Parameters
  • dev – Device descriptor

  • voltage – Battery voltage

Returns

ESP_OK on success

esp_err_t max1704x_get_soc(max1704x_t *dev, float *soc)

Get state of charge.

Parameters
  • dev – Device descriptor

  • soc – State of charge

Returns

ESP_OK on success

esp_err_t max1704x_get_crate(max1704x_t *dev, float *crate)

Get rate of battery charge or discharge.

Parameters
  • dev – Device descriptor

  • crate – Rate of charge or discharge

Returns

ESP_OK on success

esp_err_t max1704x_get_version(max1704x_t *dev, uint16_t *version)

Get the production version of the chip.

Parameters
  • dev – Device descriptor

  • version – Production version

Returns

ESP_OK on success

esp_err_t max1704x_get_config(max1704x_t *dev)

Get the configuration register.

Parameters

dev – Device descriptor

Returns

ESP_OK on success

esp_err_t max1704x_set_config(max1704x_t *dev, max1704x_config_t *config)

Set the configuration register.

Parameters
  • dev – Device descriptor

  • config – Configuration register

Returns

ESP_OK on success

esp_err_t max1704x_get_status(max1704x_t *dev)

Get the status register.

Parameters

dev – Device descriptor

Returns

ESP_OK on success

esp_err_t max1704x_set_status(max1704x_t *dev, max1704x_status_t *status)

Set the status register.

Note

Use this function to clear alert flags after servicing the alert

Parameters
  • dev – Device descriptor

  • status – Status register

Returns

ESP_OK on success

struct max1704x_status_t
#include <max1704x.h>

Alert Status structure.

Public Members

bool reset_indicator

Reset indicator.

bool voltage_high

Voltage high alert.

bool voltage_low

Voltage low alert.

bool voltage_reset

Voltage reset alert.

bool soc_low

SOC low alert, set when SOC cross empty_alert_thresh.

bool soc_change

SOC change alert, set when SOC change is at least 1%.

bool vreset_alert

Set to enable voltage reset alert under conditions specified in the valert register.

struct max1704x_config_t
#include <max1704x.h>

MAX1704X configuration structure.

Public Members

uint8_t rcomp

RCOMP register value - default 0x97.

bool sleep_mode

Sleep mode - set to true to enter sleep mode.

bool soc_change_alert

SOC change alert - enable/disable SOC change alert.

bool alert_status

Alert status - read to check if alert has been triggered.

uint8_t empty_alert_thresh

Empty alert threshold - default 0x1C (4%, 32 - ATHD)

uint8_t active_threshold

Exits hibernation when IOCV-CELLI above this threshold.

uint8_t hibernate_threshold

Enters Hibernation when CRATE falls below this threshold.

struct max1704x_t
#include <max1704x.h>

Device descriptor.