ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
bq76972.h
Go to the documentation of this file.
1#pragma once
2
6
7#include <array>
8
9namespace esphome::bq76972 {
10
11static constexpr size_t BQ76972_NUM_CELLS = 16;
12static constexpr size_t BQ76972_NUM_TEMPERATURES = 10;
13
14class BQ76972Component final : public PollingComponent, public i2c::I2CDevice {
15 public:
16 void setup() override;
17 void update() override;
18 void dump_config() override;
19
20 void set_crc_mode(bool crc_mode) { this->crc_mode_ = crc_mode; }
21 void set_reg_disable(bool reg_disable) { this->reg_disable_ = reg_disable; }
23 void set_cell_sensor(sensor::Sensor *s, size_t index) { this->cell_sensors_[index] = s; }
24 void set_temperature_sensor(sensor::Sensor *s, size_t index) { this->temperature_sensors_[index] = s; }
25
26 void program_i2c_address(uint8_t address);
27
28 protected:
29 bool read_block_(uint8_t start_register, uint8_t *data, size_t len);
30 bool write_block_(uint8_t start_register, const uint8_t *data, size_t len);
31 bool read_words_(uint8_t start_register, uint16_t *data, size_t num_words);
32 bool send_subcommand_(uint16_t subcommand);
33 bool read_subcommand_(uint16_t subcommand, uint8_t *data, size_t len);
34 bool write_subcommand_(uint16_t subcommand, const uint8_t *data, size_t len);
37 bool enter_cfg_update_();
38 bool exit_cfg_update_();
39 bool regs_disabled_(bool &out);
40 const LogString *configure_();
41 const LogString *write_config_(bool write_regs);
42
43 bool reg_disable_{false};
44 bool crc_mode_{false};
45
47 std::array<sensor::Sensor *, BQ76972_NUM_CELLS> cell_sensors_{};
48 std::array<sensor::Sensor *, BQ76972_NUM_TEMPERATURES> temperature_sensors_{};
49};
50
51} // namespace esphome::bq76972
uint8_t address
Definition bl0906.h:4
This class simplifies creating components that periodically check a state.
Definition component.h:514
void set_crc_mode(bool crc_mode)
Definition bq76972.h:20
bool read_block_(uint8_t start_register, uint8_t *data, size_t len)
Definition bq76972.cpp:34
bool read_subcommand_(uint16_t subcommand, uint8_t *data, size_t len)
Definition bq76972.cpp:120
bool read_words_(uint8_t start_register, uint16_t *data, size_t num_words)
Definition bq76972.cpp:82
const LogString * write_config_(bool write_regs)
Definition bq76972.cpp:197
void set_temperature_sensor(sensor::Sensor *s, size_t index)
Definition bq76972.h:24
std::array< sensor::Sensor *, BQ76972_NUM_CELLS > cell_sensors_
Definition bq76972.h:47
bool write_subcommand_(uint16_t subcommand, const uint8_t *data, size_t len)
Definition bq76972.cpp:125
bool write_block_(uint8_t start_register, const uint8_t *data, size_t len)
Definition bq76972.cpp:63
void program_i2c_address(uint8_t address)
Definition bq76972.cpp:228
const LogString * configure_()
Definition bq76972.cpp:162
std::array< sensor::Sensor *, BQ76972_NUM_TEMPERATURES > temperature_sensors_
Definition bq76972.h:48
sensor::Sensor * stack_voltage_sensor_
Definition bq76972.h:46
void set_cell_sensor(sensor::Sensor *s, size_t index)
Definition bq76972.h:23
void set_reg_disable(bool reg_disable)
Definition bq76972.h:21
void set_stack_voltage_sensor(sensor::Sensor *s)
Definition bq76972.h:22
bool send_subcommand_(uint16_t subcommand)
Definition bq76972.cpp:91
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
Base-class for all sensors.
Definition sensor.h:47
std::vector< uint8_t > & out
Definition gif.cpp:49
const void size_t len
Definition hal.h:68