32#include "adbms_afe_regs.h"
43#define _PACKED __attribute__((packed))
52#define ADBMS_AFE_MAX_DEVICES 2
58#define ADBMS_AFE_MAX_CELLS_PER_DEVICE 18
59#define ADBMS_AFE_MAX_CELL_THERMISTORS_PER_DEVICE 9
64#define ADBMS_AFE_MAX_CELLS (ADBMS_AFE_MAX_DEVICES * ADBMS_AFE_MAX_CELLS_PER_DEVICE)
65#define ADBMS_AFE_MAX_CELL_THERMISTORS (ADBMS_AFE_MAX_DEVICES * ADBMS_AFE_MAX_CELL_THERMISTORS_PER_DEVICE)
73 ADBMS_AFE_ADC_MODE_422HZ = 0,
77 ADBMS_AFE_ADC_MODE_1KHZ,
78 ADBMS_AFE_ADC_MODE_14KHZ,
79 ADBMS_AFE_ADC_MODE_3KHZ,
80 ADBMS_AFE_ADC_MODE_2KHZ,
81 NUM_ADBMS_AFE_ADC_MODES
233#ifdef MS_PLATFORM_X86
258StatusCode adbms_afe_set_thermistor_voltage(
AdbmsAfeStorage *afe, uint8_t device_num, uint8_t thermistor_index,
float voltage);
299uint16_t adbms_afe_get_cell_voltage(
AdbmsAfeStorage *afe, uint16_t cell_index);
307uint16_t adbms_afe_get_thermistor_voltage(
AdbmsAfeStorage *afe, uint8_t device_num, uint16_t thermistor_index);
StatusCode adbms_afe_set_discharge_pwm_cycle(AdbmsAfeStorage *afe, uint8_t duty_cycle)
Sets the same discharge PWM duty cycle for all cells across all AFE devices.
Definition: adbms_afe.c:449
StatusCode adbms_afe_read_thermistors(AdbmsAfeStorage *afe)
Reads and stores thermistor voltages from the aux voltage registers of each afe.
Definition: adbms_afe.c:360
#define ADBMS_AFE_MAX_CELLS
Maximum across all devices.
Definition: adbms_afe.h:64
StatusCode adbms_afe_trigger_thermistor_conv(AdbmsAfeStorage *afe)
Triggers ADC conversion for all thermistor GPIO inputs.
Definition: adbms_afe.c:297
StatusCode adbms_afe_write_config(AdbmsAfeStorage *afe)
Writes configuration bits onto CFGR (Configuration Register Group)
Definition: adbms_afe.c:271
#define ADBMS_AFE_MAX_DEVICES
Maximum AFE devices in daisy chain config.
Definition: adbms_afe.h:52
StatusCode adbms_afe_init(AdbmsAfeStorage *afe, const AdbmsAfeSettings *config)
Initializes the ADBMS AFE system with provided configuration settings.
Definition: adbms_afe.c:222
StatusCode adbms_afe_trigger_cell_conv(AdbmsAfeStorage *afe)
Triggers ADC conversion for all enabled cell voltage inputs.
Definition: adbms_afe.c:283
StatusCode adbms_afe_toggle_cell_discharge(AdbmsAfeStorage *afe, uint16_t cell, bool discharge)
Mark cell for discharging in each device.
Definition: adbms_afe.c:403
AdbmsAfeAdcMode
Select the ADC mode.
Definition: adbms_afe.h:72
StatusCode adbms_afe_trigger_board_temp_conv(AdbmsAfeStorage *afe, uint8_t device_num)
Triggers ADC conversion for the specified board temperature thermistor input.
Definition: adbms_afe.c:316
StatusCode adbms_afe_read_cells(AdbmsAfeStorage *afe)
Reads and stores cell voltages from the voltage cell registers of each afe.
Definition: adbms_afe.c:323
@ ADBMS_AFE_ADC_MODE_26HZ
Definition: adbms_afe.h:76
@ ADBMS_AFE_ADC_MODE_27KHZ
Definition: adbms_afe.h:74
@ ADBMS_AFE_ADC_MODE_7KHZ
Definition: adbms_afe.h:75
SpiPort
SPI Port selection.
Definition: spi.h:34
StatusCode
StatusCodes for various errors.
Definition: status.h:27
Afe Settings Data.
Definition: adbms_afe.h:90
SpiSettings * spi_settings
Definition: adbms_afe.h:97
AdbmsAfeAdcMode adc_mode
Definition: adbms_afe.h:91
const SpiPort spi_port
Definition: adbms_afe.h:98
size_t num_thermistors
Definition: adbms_afe.h:95
size_t num_devices
Definition: adbms_afe.h:93
size_t num_cells
Definition: adbms_afe.h:94
Runtime Data Storage.
Definition: adbms_afe.h:109
uint16_t cell_result_lookup[ADBMS_AFE_MAX_CELLS]
Definition: adbms_afe.h:113
uint16_t thermistor_voltages[ADBMS_AFE_MAX_CELL_THERMISTORS]
Definition: adbms_afe.h:111
AdbmsAfeWriteConfigBPacket config_b[ADBMS_AFE_MAX_DEVICES]
Definition: adbms_afe.h:118
uint16_t cell_voltages[ADBMS_AFE_MAX_CELLS]
Definition: adbms_afe.h:110
AdbmsAfeWriteConfigAPacket config_a[ADBMS_AFE_MAX_DEVICES]
Definition: adbms_afe.h:117
AdbmsAfeSettings * settings
Definition: adbms_afe.h:116
uint16_t discharge_cell_lookup[ADBMS_AFE_MAX_CELLS]
Definition: adbms_afe.h:114
SPI settings struct.
Definition: spi.h:76