27#define _PACKED __attribute__((packed))
33#define ADBMS1818_CELLS_IN_REG 3
34#define ADBMS1818_GPIOS_IN_REG 3
37#define AUX_ADG731_NUM_PINS 32
40#define ADBMS1818_CMD_SIZE 4
43#define ADBMS1818_NUM_COMM_REG_BYTES 3
46#define ADBMS1818_NUM_PWMR_REGS 6
49#define ADBMS1818_NUM_PSR_REGS 6
50#define ADBMS1818_NUM_PWM_REGS_IN_PSR 3
51#define ADBMS1818_NUM_SCTL_REGS_IN_PSR 3
54#define ADBMS1818_NUM_PWMS_REGS 6
57#define ADBMS_AFE_MAX_CELLS_PER_DEVICE 18
90 NUM_ADBMS_AFE_VOLTAGE_REGISTERS
141}
_PACKED AdbmsAfeConfigRegisterAData;
142static_assert(
sizeof(AdbmsAfeConfigRegisterAData) == 6,
"AdbmsAfeConfigRegisterAData must be 6 bytes");
172}
_PACKED AdbmsAfeConfigRegisterBData;
173static_assert(
sizeof(AdbmsAfeConfigRegisterBData) == 6,
"AdbmsAfeConfigRegisterBData must be 6 bytes");
195}
_PACKED AdbmsAfeCommRegisterData;
196static_assert(
sizeof(AdbmsAfeCommRegisterData) == 6,
"AdbmsAfeCommRegisterData must be 6 bytes");
201 AdbmsAfeCommRegisterData reg;
203}
_PACKED AdbmsAfeWriteCommRegPacket;
209}
_PACKED AdbmsAfeSendCommRegPacket;
213 AdbmsAfeConfigRegisterAData cfg;
215}
_PACKED AdbmsAfeWriteConfigAPacket;
219 AdbmsAfeConfigRegisterBData cfg;
221}
_PACKED AdbmsAfeWriteConfigBPacket;
224 uint16_t voltages[3];
233static_assert(
sizeof(AdbmsAfeVoltageData) == 8,
"AdbmsAfeVoltageData must be 8 bytes");
239static_assert(
sizeof(AdbmsAfeAuxData) == 8,
"AdbmsAfeAuxData must be 8 bytes");
245#define ADBMS1818_WRCFGA_RESERVED (1 << 0)
246#define ADBMS1818_WRCFGB_RESERVED (1 << 5) | (1 << 2)
247#define ADBMS1818_RDCFGA_RESERVED (1 << 1)
248#define ADBMS1818_RDCFGB_RESERVED (1 << 5) | (1 << 2) | (1 << 1)
250#define ADBMS1818_RDCVA_RESERVED (1 << 2)
251#define ADBMS1818_RDCVB_RESERVED (1 << 2) | (1 << 1)
252#define ADBMS1818_RDCVC_RESERVED (1 << 3)
253#define ADBMS1818_RDCVD_RESERVED (1 << 3) | (1 << 1)
254#define ADBMS1818_RDCVE_RESERVED (1 << 3) | (1 << 0)
255#define ADBMS1818_RDCVF_RESERVED (1 << 3) | (1 << 1) | (1 << 0)
257#define ADBMS1818_RDAUXA_RESERVED ((1 << 3) | (1 << 2))
258#define ADBMS1818_RDAUXB_RESERVED ((1 << 3) | (1 << 2)) | (1 << 1)
259#define ADBMS1818_RDAUXC_RESERVED ((1 << 3) | (1 << 2)) | (1 << 0)
260#define ADBMS1818_RDAUXD_RESERVED ((1 << 3) | (1 << 2)) | (1 << 1) | (1 << 0)
262#define ADBMS1818_RDSTATA_RESERVED (1 << 4)
263#define ADBMS1818_RDSTATB_RESERVED (1 << 4) | (1 << 1)
265#define ADBMS1818_WRSCTRL_RESERVED (1 << 4) | (1 << 2)
266#define ADBMS1818_WRPWM_RESERVED (1 << 5)
267#define ADBMS1818_WRPSB_RESERVED (1 << 4) | (1 << 3) | (1 << 2)
268#define ADBMS1818_RDSCTRL_RESERVED (1 << 4) | (1 << 2) | (1 << 1)
269#define ADBMS1818_RDPWM_RESERVED (1 << 5) | (1 << 2)
270#define ADBMS1818_RDPSB_RESERVED (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1)
271#define ADBMS1818_STSCTRL_RESERVED (1 << 4) | (1 << 3) | (1 << 0)
272#define ADBMS1818_CLRSCTRL_RESERVED (1 << 4) | (1 << 3)
274#define ADBMS1818_ADCV_RESERVED ((1 << 9) | (1 << 6) | (1 << 5))
275#define ADBMS1818_ADOW_RESERVED ((1 << 3) | (1 << 5) | (1 << 9))
276#define ADBMS1818_CVST_RESERVED ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 9))
277#define ADBMS1818_ADAX_RESERVED (1 << 10) | (1 << 6) | (1 << 5)
278#define ADBMS1818_CLRCELL_RESERVED (1 << 0) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
279#define ADBMS1818_CLRAUX_RESERVED (1 << 1) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
280#define ADBMS1818_CLRSTAT_RESERVED (1 << 0) | (1 << 1) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
281#define ADBMS1818_PLADC_RESERVED (1 << 2) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
282#define ADBMS1818_DIAGN_RESERVED (1 << 0) | (1 << 2) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
283#define ADBMS1818_WRCOMM_RESERVED (1 << 0) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
284#define ADBMS1818_RDCOMM_RESERVED (1 << 1) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
285#define ADBMS1818_STCOMM_RESERVED (1 << 0) | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
291#define ADBMS1818_GPIO1_PD_ON (0 << 3)
292#define ADBMS1818_GPIO1_PD_OFF (1 << 3)
293#define ADBMS1818_GPIO2_PD_ON (0 << 4)
294#define ADBMS1818_GPIO2_PD_OFF (1 << 4)
295#define ADBMS1818_GPIO3_PD_ON (0 << 5)
296#define ADBMS1818_GPIO3_PD_OFF (1 << 5)
297#define ADBMS1818_GPIO4_PD_ON (0 << 6)
298#define ADBMS1818_GPIO4_PD_OFF (1 << 6)
299#define ADBMS1818_GPIO5_PD_ON (0 << 7)
300#define ADBMS1818_GPIO5_PD_OFF (1 << 7)
301#define ADBMS1818_GPIO6_PD_ON (0 << 0)
302#define ADBMS1818_GPIO6_PD_OFF (1 << 0)
303#define ADBMS1818_GPIO7_PD_ON (0 << 1)
304#define ADBMS1818_GPIO7_PD_OFF (1 << 1)
305#define ADBMS1818_GPIO8_PD_ON (0 << 2)
306#define ADBMS1818_GPIO8_PD_OFF (1 << 2)
307#define ADBMS1818_GPIO9_PD_ON (0 << 3)
308#define ADBMS1818_GPIO9_PD_OFF (1 << 3)
314#define ADBMS1818_CNVT_CELL_ALL 0x00
315#define ADBMS1818_CNVT_CELL_1_7_13 0x01
316#define ADBMS1818_CNVT_CELL_2_8_14 0x02
317#define ADBMS1818_CNVT_CELL_3_9_15 0x03
318#define ADBMS1818_CNVT_CELL_4_10_16 0x04
319#define ADBMS1818_CNVT_CELL_5_11_17 0x05
320#define ADBMS1818_CNVT_CELL_6_12_18 0x06
326#define ADBMS1818_ADCV_DISCHARGE_NOT_PERMITTED (0 << 4)
327#define ADBMS1818_ADCV_DISCHARGE_PERMITTED (1 << 4)
330#define ADBMS1818_ADAX_GPIO_ALL 0x00
331#define ADBMS1818_ADAX_GPIO1_6 0x01
332#define ADBMS1818_ADAX_GPIO2_7 0x02
333#define ADBMS1818_ADAX_GPIO3_8 0x03
334#define ADBMS1818_ADAX_GPIO4_9 0x04
335#define ADBMS1818_ADAX_GPIO5 0x05
336#define ADBMS1818_ADAX_REF2 0x06
337#define ADBMS1818_ADAX_MODE_FAST (0 << 8) | (1 << 7)
340#define ADBMS1818_ICOM_CSBM_LOW (1 << 3)
341#define ADBMS1818_ICOM_CSBM_FALL_EDGE (1 << 3) | (1 << 0)
342#define ADBMS1818_ICOM_CSBM_HIGH (1 << 3) | (1 << 1)
343#define ADBMS1818_ICOM_NO_TRANSMIT (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
346#define ADBMS1818_FCOM_CSBM_LOW (0 << 0)
347#define ADBMS1818_FCOM_CSBM_HIGH (1 << 3) | (1 << 0)
353#define ADBMS1818_PWMC_DC_100 (0xF)
AdbmsAfeDischargeTimeout
Discharge timeout options for the AFE.
Definition: adbms_afe_regs.h:97
AdbmsAfeVoltageRegister
Voltage registers for easy mapping to AdbmsAfeRegister
Definition: adbms_afe_regs.h:83
AdbmsAfeRegister
List of ADBMS AFE registers.
Definition: adbms_afe_regs.h:62
#define ADBMS1818_CMD_SIZE
Size of command code (2 bytes) + PEC (2 bytes)
Definition: adbms_afe_regs.h:40
#define ADBMS1818_NUM_COMM_REG_BYTES
3 bytes are required to send 24 clock cycles with our SPI driver for the STCOMM command
Definition: adbms_afe_regs.h:43
@ ADBMS_AFE_DISCHARGE_TIMEOUT_2_MIN
Definition: adbms_afe_regs.h:101
@ ADBMS_AFE_DISCHARGE_TIMEOUT_1_MIN
Definition: adbms_afe_regs.h:100
@ ADBMS_AFE_DISCHARGE_TIMEOUT_90_MIN
Definition: adbms_afe_regs.h:112
@ ADBMS_AFE_DISCHARGE_TIMEOUT_5_MIN
Definition: adbms_afe_regs.h:104
@ ADBMS_AFE_DISCHARGE_TIMEOUT_40_MIN
Definition: adbms_afe_regs.h:109
@ ADBMS_AFE_DISCHARGE_TIMEOUT_20_MIN
Definition: adbms_afe_regs.h:107
@ ADBMS_AFE_DISCHARGE_TIMEOUT_15_MIN
Definition: adbms_afe_regs.h:106
@ ADBMS_AFE_DISCHARGE_TIMEOUT_75_MIN
Definition: adbms_afe_regs.h:111
@ ADBMS_AFE_DISCHARGE_TIMEOUT_120_MIN
Definition: adbms_afe_regs.h:113
@ ADBMS_AFE_DISCHARGE_TIMEOUT_10_MIN
Definition: adbms_afe_regs.h:105
@ ADBMS_AFE_DISCHARGE_TIMEOUT_60_MIN
Definition: adbms_afe_regs.h:110
@ ADBMS_AFE_DISCHARGE_TIMEOUT_30_S
Definition: adbms_afe_regs.h:99
@ ADBMS_AFE_DISCHARGE_TIMEOUT_4_MIN
Definition: adbms_afe_regs.h:103
@ ADBMS_AFE_DISCHARGE_TIMEOUT_3_MIN
Definition: adbms_afe_regs.h:102
@ ADBMS_AFE_DISCHARGE_TIMEOUT_30_MIN
Definition: adbms_afe_regs.h:108
@ ADBMS_AFE_DISCHARGE_TIMEOUT_DISABLED
Definition: adbms_afe_regs.h:98
@ ADBMS_AFE_REGISTER_AUX_B
Definition: adbms_afe_regs.h:72
@ ADBMS_AFE_REGISTER_STATUS_A
Definition: adbms_afe_regs.h:75
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_F
Definition: adbms_afe_regs.h:70
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_B
Definition: adbms_afe_regs.h:66
@ ADBMS_AFE_REGISTER_AUX_D
Definition: adbms_afe_regs.h:74
@ ADBMS_AFE_REGISTER_AUX_A
Definition: adbms_afe_regs.h:71
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_C
Definition: adbms_afe_regs.h:67
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_D
Definition: adbms_afe_regs.h:68
@ ADBMS_AFE_REGISTER_READ_COMM
Definition: adbms_afe_regs.h:77
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_E
Definition: adbms_afe_regs.h:69
@ ADBMS_AFE_REGISTER_STATUS_B
Definition: adbms_afe_regs.h:76
@ ADBMS_AFE_REGISTER_CELL_VOLTAGE_A
Definition: adbms_afe_regs.h:65
@ ADBMS_AFE_REGISTER_CONFIG_B
Definition: adbms_afe_regs.h:64
@ NUM_ADBMS_AFE_REGISTERS
Definition: adbms_afe_regs.h:79
@ ADBMS_AFE_REGISTER_AUX_C
Definition: adbms_afe_regs.h:73
@ ADBMS_AFE_REGISTER_CONFIG_A
Definition: adbms_afe_regs.h:63
@ ADBMS_AFE_REGISTER_START_COMM
Definition: adbms_afe_regs.h:78
Configuration for the AFE configuration register group A (CFGRA).
Definition: adbms_afe_regs.h:129
uint8_t discharge_bitset
Definition: adbms_afe_regs.h:160
uint32_t overvoltage
Definition: adbms_afe_regs.h:137
uint8_t adcopt
Definition: adbms_afe_regs.h:130
uint8_t refon
Definition: adbms_afe_regs.h:132
uint16_t discharge_bitset
Definition: adbms_afe_regs.h:139
uint8_t gpio
Definition: adbms_afe_regs.h:134
uint8_t discharge_timer_monitor
Definition: adbms_afe_regs.h:161
uint32_t undervoltage
Definition: adbms_afe_regs.h:136
uint8_t discharge_timeout
Definition: adbms_afe_regs.h:140
uint8_t force_fail
Definition: adbms_afe_regs.h:164
uint8_t mute
Definition: adbms_afe_regs.h:166
uint8_t dten
Definition: adbms_afe_regs.h:131
uint8_t path_select
Definition: adbms_afe_regs.h:163
Definition: adbms_afe_regs.h:223