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
99 NUM_ADBMS_AFE_AUXILIARY_REGISTERS
150}
_PACKED AdbmsAfeConfigRegisterAData;
151static_assert(
sizeof(AdbmsAfeConfigRegisterAData) == 6,
"AdbmsAfeConfigRegisterAData must be 6 bytes");
181}
_PACKED AdbmsAfeConfigRegisterBData;
182static_assert(
sizeof(AdbmsAfeConfigRegisterBData) == 6,
"AdbmsAfeConfigRegisterBData must be 6 bytes");
204}
_PACKED AdbmsAfeCommRegisterData;
205static_assert(
sizeof(AdbmsAfeCommRegisterData) == 6,
"AdbmsAfeCommRegisterData must be 6 bytes");
210 AdbmsAfeCommRegisterData reg;
212}
_PACKED AdbmsAfeWriteCommRegPacket;
218}
_PACKED AdbmsAfeSendCommRegPacket;
222 AdbmsAfeConfigRegisterAData cfg;
224}
_PACKED AdbmsAfeWriteConfigAPacket;
228 AdbmsAfeConfigRegisterBData cfg;
230}
_PACKED AdbmsAfeWriteConfigBPacket;
233 uint16_t voltages[3];
242static_assert(
sizeof(AdbmsAfeVoltageData) == 8,
"AdbmsAfeVoltageData must be 8 bytes");
248static_assert(
sizeof(AdbmsAfeAuxData) == 8,
"AdbmsAfeAuxData must be 8 bytes");
254#define ADBMS1818_WRCFGA_RESERVED (1 << 0)
255#define ADBMS1818_WRCFGB_RESERVED (1 << 5) | (1 << 2)
256#define ADBMS1818_RDCFGA_RESERVED (1 << 1)
257#define ADBMS1818_RDCFGB_RESERVED (1 << 5) | (1 << 2) | (1 << 1)
259#define ADBMS1818_RDCVA_RESERVED (1 << 2)
260#define ADBMS1818_RDCVB_RESERVED (1 << 2) | (1 << 1)
261#define ADBMS1818_RDCVC_RESERVED (1 << 3)
262#define ADBMS1818_RDCVD_RESERVED (1 << 3) | (1 << 1)
263#define ADBMS1818_RDCVE_RESERVED (1 << 3) | (1 << 0)
264#define ADBMS1818_RDCVF_RESERVED (1 << 3) | (1 << 1) | (1 << 0)
266#define ADBMS1818_RDAUXA_RESERVED ((1 << 3) | (1 << 2))
267#define ADBMS1818_RDAUXB_RESERVED ((1 << 3) | (1 << 2)) | (1 << 1)
268#define ADBMS1818_RDAUXC_RESERVED ((1 << 3) | (1 << 2)) | (1 << 0)
269#define ADBMS1818_RDAUXD_RESERVED ((1 << 3) | (1 << 2)) | (1 << 1) | (1 << 0)
271#define ADBMS1818_RDSTATA_RESERVED (1 << 4)
272#define ADBMS1818_RDSTATB_RESERVED (1 << 4) | (1 << 1)
274#define ADBMS1818_WRSCTRL_RESERVED (1 << 4) | (1 << 2)
275#define ADBMS1818_WRPWM_RESERVED (1 << 5)
276#define ADBMS1818_WRPSB_RESERVED (1 << 4) | (1 << 3) | (1 << 2)
277#define ADBMS1818_RDSCTRL_RESERVED (1 << 4) | (1 << 2) | (1 << 1)
278#define ADBMS1818_RDPWM_RESERVED (1 << 5) | (1 << 2)
279#define ADBMS1818_RDPSB_RESERVED (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1)
280#define ADBMS1818_STSCTRL_RESERVED (1 << 4) | (1 << 3) | (1 << 0)
281#define ADBMS1818_CLRSCTRL_RESERVED (1 << 4) | (1 << 3)
283#define ADBMS1818_ADCV_RESERVED ((1 << 9) | (1 << 6) | (1 << 5))
284#define ADBMS1818_ADOW_RESERVED ((1 << 3) | (1 << 5) | (1 << 9))
285#define ADBMS1818_CVST_RESERVED ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 9))
286#define ADBMS1818_ADAX_RESERVED (1 << 10) | (1 << 6) | (1 << 5)
287#define ADBMS1818_CLRCELL_RESERVED (1 << 0) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
288#define ADBMS1818_CLRAUX_RESERVED (1 << 1) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
289#define ADBMS1818_CLRSTAT_RESERVED (1 << 0) | (1 << 1) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
290#define ADBMS1818_PLADC_RESERVED (1 << 2) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
291#define ADBMS1818_DIAGN_RESERVED (1 << 0) | (1 << 2) | (1 << 4) | (1 << 8) | (1 << 9) | (1 << 10)
292#define ADBMS1818_WRCOMM_RESERVED (1 << 0) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
293#define ADBMS1818_RDCOMM_RESERVED (1 << 1) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
294#define ADBMS1818_STCOMM_RESERVED (1 << 0) | (1 << 1) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 10)
300#define ADBMS1818_GPIO1_PD_ON (0 << 3)
301#define ADBMS1818_GPIO1_PD_OFF (1 << 3)
302#define ADBMS1818_GPIO2_PD_ON (0 << 4)
303#define ADBMS1818_GPIO2_PD_OFF (1 << 4)
304#define ADBMS1818_GPIO3_PD_ON (0 << 5)
305#define ADBMS1818_GPIO3_PD_OFF (1 << 5)
306#define ADBMS1818_GPIO4_PD_ON (0 << 6)
307#define ADBMS1818_GPIO4_PD_OFF (1 << 6)
308#define ADBMS1818_GPIO5_PD_ON (0 << 7)
309#define ADBMS1818_GPIO5_PD_OFF (1 << 7)
310#define ADBMS1818_GPIO6_PD_ON (0 << 0)
311#define ADBMS1818_GPIO6_PD_OFF (1 << 0)
312#define ADBMS1818_GPIO7_PD_ON (0 << 1)
313#define ADBMS1818_GPIO7_PD_OFF (1 << 1)
314#define ADBMS1818_GPIO8_PD_ON (0 << 2)
315#define ADBMS1818_GPIO8_PD_OFF (1 << 2)
316#define ADBMS1818_GPIO9_PD_ON (0 << 3)
317#define ADBMS1818_GPIO9_PD_OFF (1 << 3)
323#define ADBMS1818_CNVT_CELL_ALL 0x00
324#define ADBMS1818_CNVT_CELL_1_7_13 0x01
325#define ADBMS1818_CNVT_CELL_2_8_14 0x02
326#define ADBMS1818_CNVT_CELL_3_9_15 0x03
327#define ADBMS1818_CNVT_CELL_4_10_16 0x04
328#define ADBMS1818_CNVT_CELL_5_11_17 0x05
329#define ADBMS1818_CNVT_CELL_6_12_18 0x06
335#define ADBMS1818_ADCV_DISCHARGE_NOT_PERMITTED (0 << 4)
336#define ADBMS1818_ADCV_DISCHARGE_PERMITTED (1 << 4)
339#define ADBMS1818_ADAX_GPIO_ALL 0x00
340#define ADBMS1818_ADAX_GPIO1_6 0x01
341#define ADBMS1818_ADAX_GPIO2_7 0x02
342#define ADBMS1818_ADAX_GPIO3_8 0x03
343#define ADBMS1818_ADAX_GPIO4_9 0x04
344#define ADBMS1818_ADAX_GPIO5 0x05
345#define ADBMS1818_ADAX_REF2 0x06
346#define ADBMS1818_ADAX_MODE_FAST (0 << 8) | (1 << 7)
349#define ADBMS1818_ICOM_CSBM_LOW (1 << 3)
350#define ADBMS1818_ICOM_CSBM_FALL_EDGE (1 << 3) | (1 << 0)
351#define ADBMS1818_ICOM_CSBM_HIGH (1 << 3) | (1 << 1)
352#define ADBMS1818_ICOM_NO_TRANSMIT (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)
355#define ADBMS1818_FCOM_CSBM_LOW (0 << 0)
356#define ADBMS1818_FCOM_CSBM_HIGH (1 << 3) | (1 << 0)
362#define ADBMS1818_PWMC_DC_100 100
AdbmsAfeDischargeTimeout
Discharge timeout options for the AFE.
Definition: adbms_afe_regs.h:106
AdbmsAfeVoltageRegister
Voltage registers for easy mapping to AdbmsAfeRegister
Definition: adbms_afe_regs.h:83
AdbsAfeAuxiliaryRegister
Aux registers for easy mapping to AdbmsAfeRegister
Definition: adbms_afe_regs.h:94
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:110
@ ADBMS_AFE_DISCHARGE_TIMEOUT_1_MIN
Definition: adbms_afe_regs.h:109
@ ADBMS_AFE_DISCHARGE_TIMEOUT_90_MIN
Definition: adbms_afe_regs.h:121
@ ADBMS_AFE_DISCHARGE_TIMEOUT_5_MIN
Definition: adbms_afe_regs.h:113
@ ADBMS_AFE_DISCHARGE_TIMEOUT_40_MIN
Definition: adbms_afe_regs.h:118
@ ADBMS_AFE_DISCHARGE_TIMEOUT_20_MIN
Definition: adbms_afe_regs.h:116
@ ADBMS_AFE_DISCHARGE_TIMEOUT_15_MIN
Definition: adbms_afe_regs.h:115
@ ADBMS_AFE_DISCHARGE_TIMEOUT_75_MIN
Definition: adbms_afe_regs.h:120
@ ADBMS_AFE_DISCHARGE_TIMEOUT_120_MIN
Definition: adbms_afe_regs.h:122
@ ADBMS_AFE_DISCHARGE_TIMEOUT_10_MIN
Definition: adbms_afe_regs.h:114
@ ADBMS_AFE_DISCHARGE_TIMEOUT_60_MIN
Definition: adbms_afe_regs.h:119
@ ADBMS_AFE_DISCHARGE_TIMEOUT_30_S
Definition: adbms_afe_regs.h:108
@ ADBMS_AFE_DISCHARGE_TIMEOUT_4_MIN
Definition: adbms_afe_regs.h:112
@ ADBMS_AFE_DISCHARGE_TIMEOUT_3_MIN
Definition: adbms_afe_regs.h:111
@ ADBMS_AFE_DISCHARGE_TIMEOUT_30_MIN
Definition: adbms_afe_regs.h:117
@ ADBMS_AFE_DISCHARGE_TIMEOUT_DISABLED
Definition: adbms_afe_regs.h:107
@ 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:138
uint8_t discharge_bitset
Definition: adbms_afe_regs.h:169
uint32_t overvoltage
Definition: adbms_afe_regs.h:146
uint8_t adcopt
Definition: adbms_afe_regs.h:139
uint8_t refon
Definition: adbms_afe_regs.h:141
uint16_t discharge_bitset
Definition: adbms_afe_regs.h:148
uint8_t gpio
Definition: adbms_afe_regs.h:143
uint8_t discharge_timer_monitor
Definition: adbms_afe_regs.h:170
uint32_t undervoltage
Definition: adbms_afe_regs.h:145
uint8_t discharge_timeout
Definition: adbms_afe_regs.h:149
uint8_t force_fail
Definition: adbms_afe_regs.h:173
uint8_t mute
Definition: adbms_afe_regs.h:175
uint8_t dten
Definition: adbms_afe_regs.h:140
uint8_t path_select
Definition: adbms_afe_regs.h:172
Definition: adbms_afe_regs.h:232