/** * @brief AEK_POW_BMS63CHAIN data struct Fast Measure list. */ typedef struct{ uint8_t AEK_POW_BMS63CHAIN_vCell1_En; /**< Cell 1 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell1; /**< Cell 1 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell1; /**< Cell 1 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell2_En; /**< Cell 2 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell2; /**< Cell 2 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell2; /**< Cell 2 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell3_En; /**< Cell 3 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell3; /**< Cell 3 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell3; /**< Cell 3 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell4_En; /**< Cell 4 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell4; /**< Cell 4 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell4; /**< Cell 4 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell5_En; /**< Cell 5 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell5; /**< Cell 5 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell5; /**< Cell 5 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell6_En; /**< Cell 6 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell6; /**< Cell 6 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell6; /**< Cell 6 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell7_En; /**< Cell 7 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell7; /**< Cell 7 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell7; /**< Cell 7 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell8_En; /**< Cell 8 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell8; /**< Cell 8 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell8; /**< Cell 8 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell9_En; /**< Cell 9 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell9; /**< Cell 9 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell9; /**< Cell 9 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell10_En; /**< Cell 10 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell10; /**< Cell 10 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell10; /**< Cell 10 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell11_En; /**< Cell 11 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell11; /**< Cell 11 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell11; /**< Cell 11 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell12_En; /**< Cell 12 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell12; /**< Cell 12 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell12; /**< Cell 12 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell13_En; /**< Cell 13 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell13; /**< Cell 13 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell13; /**< Cell 13 Voltage */ uint8_t AEK_POW_BMS63CHAIN_vCell14_En; /**< Cell 14 Enable */ uint8_t AEK_POW_BMS63CHAIN_dRdyVcell14; /**< Cell 14 Voltage Dataready */ float AEK_POW_BMS63CHAIN_vCell14; /**< Cell 14 Voltage */ float AEK_POW_BMS63CHAIN_vPackSum; /**< Voltage Pack Sum */ float AEK_POW_BMS63CHAIN_vPack; /**< Voltage Pack */ uint8_t AEK_POW_BMS63CHAIN_dataReadyVsum; /**< Voltage Pack Sum Dataready */ uint8_t AEK_POW_BMS63CHAIN_dataReadyVbattDiv; /**< Voltage Pack Dataready */ uint8_t AEK_POW_BMS63CHAIN_soc; /**< State of Charge Status */ uint8_t AEK_POW_BMS63CHAIN_ovrLatch; /**< Over Latch Status */ uint8_t AEK_POW_BMS63CHAIN_confCyclicEn; /**< Cyclic Convertion Enable */ uint8_t AEK_POW_BMS63CHAIN_dutyON; /**< Duty Status */ uint8_t AEK_POW_BMS63CHAIN_vSumOV; /**< Voltage Sum OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vSumUV; /**< Voltage Sum UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_timedBalAcc; /**< Timed Balancing Acc flag status */ uint8_t AEK_POW_BMS63CHAIN_timedBalTimer; /**< Timed Balancing Timer flag status */ uint8_t AEK_POW_BMS63CHAIN_balOn; /**< Balancing On flag status */ uint8_t AEK_POW_BMS63CHAIN_eofBal; /**< End of Balancing flag status */ uint8_t AEK_POW_BMS63CHAIN_coulombCounterEn; /**< Coulomb Counter Enable */ uint8_t AEK_POW_BMS63CHAIN_coCouOvf; /**< Coulomb Counter Overflow flag status */ uint16_t AEK_POW_BMS63CHAIN_coulombCntTime; /**< Coulomb Counter Counter Time */ uint8_t AEK_POW_BMS63CHAIN_sensePlusOpen; /**< Sense Plus Open flag status */ uint8_t AEK_POW_BMS63CHAIN_senseMinusOpen; /**< Sense Minus Open flag status */ uint8_t AEK_POW_BMS63CHAIN_curSenseOvcSleep; /**< Current Sensing Overflow on Sleep status */ uint8_t AEK_POW_BMS63CHAIN_curSenseOvcNorm; /**< Current Sensing Overflow on Normal status */ uint16_t AEK_POW_BMS63CHAIN_coulombCounterMSB; /**< Coulomb Counter MSB */ uint16_t AEK_POW_BMS63CHAIN_coulombCounterLSB; /**< Coulomb Counter LSB */ float AEK_POW_BMS63CHAIN_curInstSync; /**< Current InstSync value */ float AEK_POW_BMS63CHAIN_curInstCalib; /**< Current InstCalib value */ uint8_t AEK_POW_BMS63CHAIN_gpio3OT; /**< GPIO3 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3UT; /**< GPIO3 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio3; /**< GPIO3 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio3Meas; /**< GPIO3 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio4OT; /**< GPIO4 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4UT; /**< GPIO4 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio4; /**< GPIO4 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio4Meas; /**< GPIO4 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio5OT; /**< GPIO5 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5UT; /**< GPIO5 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio5; /**< GPIO5 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio5Meas; /**< GPIO5 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio6OT; /**< GPIO6 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6UT; /**< GPIO6 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio6; /**< GPIO6 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio6Meas; /**< GPIO6 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio7OT; /**< GPIO7 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7UT; /**< GPIO7 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio7; /**< GPIO7 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio7Meas; /**< GPIO7 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio8OT; /**< GPIO8 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8UT; /**< GPIO8 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio8; /**< GPIO8 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio8Meas; /**< GPIO8 measured value */ uint8_t AEK_POW_BMS63CHAIN_gpio9OT; /**< GPIO9 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9UT; /**< GPIO9 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyGpio9; /**< GPIO9 dataReady flag status */ float AEK_POW_BMS63CHAIN_gpio9Meas; /**< GPIO9 measured value */ uint8_t AEK_POW_BMS63CHAIN_trimmCalOK; /**< Trimming Cal OK flag status */ uint8_t AEK_POW_BMS63CHAIN_drdyVtref; /**< VTref dataReady flag status */ float AEK_POW_BMS63CHAIN_VTrefMeas; /**< VTref measured value */ uint8_t AEK_POW_BMS63CHAIN_OTchip; /**< OverTemperature chip flag status */ float AEK_POW_BMS63CHAIN_Tempchip; /**< Temperature chip measured value */ }AEK_POW_BMS63CHAIN_fastMeas_t; //******************************************************************************************************************************************************************* /** * @brief AEK_POW_BMS63CHAIN data struct Fast Diagnosis list. */ typedef struct{ uint8_t AEK_POW_BMS63CHAIN_ovrLatch; /**< Over Latch Status */ uint8_t AEK_POW_BMS63CHAIN_tCycleOvf; /**< Period Cylce Overflow flag status */ uint8_t AEK_POW_BMS63CHAIN_sensePlusOpen; /**< Sense Plus Open flag status */ uint8_t AEK_POW_BMS63CHAIN_senseMinusOpen; /**< Sense Minus Open flag status */ uint8_t AEK_POW_BMS63CHAIN_OTchip; /**< OverTemperature chip flag status */ uint8_t AEK_POW_BMS63CHAIN_vAnaOV; /**< VAna Overvoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vDigOV; /**< VDiag Overvoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vtRefUV; /**< Vtref Undervoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vtRefOV; /**< Vtref Overvoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vtRegUV; /**< Vtreg Undervoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vtRegOV; /**< Vtreg Overvoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vComUV; /**< VCom Undervoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vtComOV; /**< VCom Overvoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_wuGpio7; /**< Wakeup from GPIO7 flag status */ uint8_t AEK_POW_BMS63CHAIN_wuSpi; /**< Wakeup from SPI flag status */ uint8_t AEK_POW_BMS63CHAIN_wuIsoLine; /**< Wakeup from ISOline flag status */ uint8_t AEK_POW_BMS63CHAIN_wufaultH; /**< Wakeup from FaultH flag status */ uint8_t AEK_POW_BMS63CHAIN_wuCycWup; /**< Wakeup from CyclicWakeup flag status */ uint8_t AEK_POW_BMS63CHAIN_lossAgnd; /**< Loss Agnd flag status */ uint8_t AEK_POW_BMS63CHAIN_lossDgnd; /**< Loss Dgnd flag status */ uint8_t AEK_POW_BMS63CHAIN_lossCgnd; /**< Loss Cgnd flag status */ uint8_t AEK_POW_BMS63CHAIN_lossGndRef; /**< Loss Gnd ref flag status */ uint8_t AEK_POW_BMS63CHAIN_trimmCalOK; /**< Trimming Cal OK flag status */ uint8_t AEK_POW_BMS63CHAIN_coCouOvf; /**< Coulomb Counter Overflow flag status */ uint8_t AEK_POW_BMS63CHAIN_eobTimerError; /**< End of Balancing Timer flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9FastChgOT; /**< GPIO9 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8FastChgOT; /**< GPIO8 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7FastChgOT; /**< GPIO7 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6FastChgOT; /**< GPIO6 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5FastChgOT; /**< GPIO5 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4FastChgOT; /**< GPIO4 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3FastChgOT; /**< GPIO3 fastcharge OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9Open; /**< GPIO9 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8Open; /**< GPIO8 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7Open; /**< GPIO7 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6Open; /**< GPIO6 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5Open; /**< GPIO5 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4Open; /**< GPIO4 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3Open; /**< GPIO3 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_eepromDwnldDone; /**< EEProm Donwload Done flag status */ uint8_t AEK_POW_BMS63CHAIN_bal14Open; /**< Balancing Cell 14 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal13Open; /**< Balancing Cell 13 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal12Open; /**< Balancing Cell 12 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal11Open; /**< Balancing Cell 11 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal10Open; /**< Balancing Cell 10 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal9Open; /**< Balancing Cell 9 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal8Open; /**< Balancing Cell 8 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal7Open; /**< Balancing Cell 7 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal6Open; /**< Balancing Cell 6 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal5Open; /**< Balancing Cell 5 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal4Open; /**< Balancing Cell 4 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal3Open; /**< Balancing Cell 3 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal2Open; /**< Balancing Cell 2 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_bal1Open; /**< Balancing Cell 1 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_vBatCompBistFail; /**< VBat Comp Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_vRegCompBistFail; /**< VReg Comp Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_vComCompBistFail; /**< VCom Comp Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_vTrefCompBistFail; /**< Vtref Comp Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_bal14Short; /**< Balancing Cell 14 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal13Short; /**< Balancing Cell 13 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal12Short; /**< Balancing Cell 12 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal11Short; /**< Balancing Cell 11 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal10Short; /**< Balancing Cell 10 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal9Short; /**< Balancing Cell 9 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal8Short; /**< Balancing Cell 8 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal7Short; /**< Balancing Cell 7 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal6Short; /**< Balancing Cell 6 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal5Short; /**< Balancing Cell 5 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal4Short; /**< Balancing Cell 4 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal3Short; /**< Balancing Cell 3 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal2Short; /**< Balancing Cell 2 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_bal1Short; /**< Balancing Cell 1 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_eepromCrcErrCalOff; /**< EEprom Crc Err Cal Off flag status */ uint8_t AEK_POW_BMS63CHAIN_hwscDone; /**< Hardware SelfCheck Done flag status */ uint8_t AEK_POW_BMS63CHAIN_vBattOpen; /**< Vbatt Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel14Open; /**< Cell 14 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel13Open; /**< Cell 13 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel12Open; /**< Cell 12 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel11Open; /**< Cell 11 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel10Open; /**< Cell 10 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel9Open; /**< Cell 9 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel8Open; /**< Cell 8 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel7Open; /**< Cell 7 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel6Open; /**< Cell 6 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel5Open; /**< Cell 5 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel4Open; /**< Cell 4 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel3Open; /**< Cell 3 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel2Open; /**< Cell 2 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel1Open; /**< Cell 1 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_cel0Open; /**< Cell 0 Open flag status */ uint8_t AEK_POW_BMS63CHAIN_eepromCrcErrSect0; /**< EEprom Crc Error Sector 0 flag status */ uint8_t AEK_POW_BMS63CHAIN_commtimeoutFlt; /**< Communication Timeout Filter flag status */ uint8_t AEK_POW_BMS63CHAIN_eepromCrcErrCalRam; /**< EEprom Crc Error Cal Ram flag status */ uint8_t AEK_POW_BMS63CHAIN_RamCrcErr; /**< Ram Crc Error flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell14UV; /**< Voltage Cell 14 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell13UV; /**< Voltage Cell 13 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell12UV; /**< Voltage Cell 12 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell11UV; /**< Voltage Cell 11 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell10UV; /**< Voltage Cell 10 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell9UV; /**< Voltage Cell 9 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell8UV; /**< Voltage Cell 8 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell7UV; /**< Voltage Cell 7 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell6UV; /**< Voltage Cell 6 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell5UV; /**< Voltage Cell 5 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell4UV; /**< Voltage Cell 4 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell3UV; /**< Voltage Cell 3 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell2UV; /**< Voltage Cell 2 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell1UV; /**< Voltage Cell 1 UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vBattWrnOV; /**< Overvoltage Battery Warning flag status */ uint8_t AEK_POW_BMS63CHAIN_vBattWrnUV; /**< Undervoltage Battery Warning flag status */ uint8_t AEK_POW_BMS63CHAIN_vBattCritUV; /**< Undervoltage Battery Critical flag status */ uint8_t AEK_POW_BMS63CHAIN_vSumUV; /**< Undervoltage Voltage Sum flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell14OV; /**< Voltage Cell 14 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell13OV; /**< Voltage Cell 13 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell12OV; /**< Voltage Cell 12 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell11OV; /**< Voltage Cell 11 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell10OV; /**< Voltage Cell 10 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell9OV; /**< Voltage Cell 9 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell8OV; /**< Voltage Cell 8 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell7OV; /**< Voltage Cell 7 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell6OV; /**< Voltage Cell 6 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell5OV; /**< Voltage Cell 5 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell4OV; /**< Voltage Cell 4 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell3OV; /**< Voltage Cell 3 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell2OV; /**< Voltage Cell 2 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell1OV; /**< Voltage Cell 1 OverVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_balOn; /**< Balancing ON flag status */ uint8_t AEK_POW_BMS63CHAIN_eofBal; /**< End Of Balancing flag status */ uint8_t AEK_POW_BMS63CHAIN_vBattCritOV; /**< Overvoltage Battery Critical flag status */ uint8_t AEK_POW_BMS63CHAIN_vSumOV; /**< Overvoltage Voltage Sum flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9OT; /**< Voltage GPIO9 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8OT; /**< Voltage GPIO8 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7OT; /**< Voltage GPIO7 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6OT; /**< Voltage GPIO6 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5OT; /**< Voltage GPIO5 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4OT; /**< Voltage GPIO4 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3OT; /**< Voltage GPIO3 OverTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9UT; /**< Voltage GPIO9 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8UT; /**< Voltage GPIO8 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7UT; /**< Voltage GPIO7 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6UT; /**< Voltage GPIO6 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5UT; /**< Voltage GPIO5 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4UT; /**< Voltage GPIO4 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3UT; /**< Voltage GPIO3 UnderTemperature flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6On; /**< GPIO6 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5On; /**< GPIO5 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4On; /**< GPIO4 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3On; /**< GPIO3 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell14BalUV; /**< Voltage Cell 14 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell13BalUV; /**< Voltage Cell 13 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell12BalUV; /**< Voltage Cell 12 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell11BalUV; /**< Voltage Cell 11 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell10BalUV; /**< Voltage Cell 10 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell9BalUV; /**< Voltage Cell 9 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell8BalUV; /**< Voltage Cell 8 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell7BalUV; /**< Voltage Cell 7 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell6BalUV; /**< Voltage Cell 6 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell5BalUV; /**< Voltage Cell 5 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell4BalUV; /**< Voltage Cell 4 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell3BalUV; /**< Voltage Cell 3 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell2BalUV; /**< Voltage Cell 2 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_vCell1BalUV; /**< Voltage Cell 1 Balancing UnderVoltage flag status */ uint8_t AEK_POW_BMS63CHAIN_faultLlineSts; /**< FaultL line flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9On; /**< GPIO9 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8On; /**< GPIO8 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7On; /**< GPIO7 ON flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio9Short; /**< GPIO9 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio8Short; /**< GPIO8 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio7Short; /**< GPIO7 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio6Short; /**< GPIO6 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio5Short; /**< GPIO5 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio4Short; /**< GPIO4 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpio3Short; /**< GPIO3 Short flag status */ uint8_t AEK_POW_BMS63CHAIN_gpioBistFail; /**< GPIO Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_heartBeatFault; /**< HeartBeat Fault flag status */ uint8_t AEK_POW_BMS63CHAIN_faultHlineSts; /**< FaultH line flag status */ uint8_t AEK_POW_BMS63CHAIN_faultHen; /**< FaultH Enable flag status */ uint8_t AEK_POW_BMS63CHAIN_heartBeatEn; /**< HeartBeat Enable status */ uint16_t AEK_POW_BMS63CHAIN_muxBistFail; /**< Mux Bist Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_curSenseOvcSleep; /**< Current Sense Overflow on Sleep flag status */ uint8_t AEK_POW_BMS63CHAIN_heartBeatCycle; /**< HeartBeat Cycle flag status */ uint8_t AEK_POW_BMS63CHAIN_bistBalCompHsFail; /**< Bist Balancing Comp HS Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_bistBalCompLsFail; /**< Bist Balancing Comp LS Fail flag status */ uint8_t AEK_POW_BMS63CHAIN_curSenseOvcNorm; /**< Current Sense Overflow on Normal flag status */ uint8_t AEK_POW_BMS63CHAIN_oscFail; /**< Oscillator flag status */ uint8_t AEK_POW_BMS63CHAIN_clkMonEn; /**< Clock Monitor Enable status */ uint8_t AEK_POW_BMS63CHAIN_clkMonInitDone; /**< Clock Monitor Init Done flag status */ uint16_t AEK_POW_BMS63CHAIN_openBistFail; /**< Open Bist Fail flag status */ }AEK_POW_BMS63CHAIN_fastDiag_t; //******************************************************************************************************************************************************************* AEK_POW_BMS63CHAIN_fastMeas_t AEK_POW_BMS63CHAIN_node_getFastMeas(AEK_POW_BMS63CHAIN_chain_name_t AEK_POW_BMS63CHAIN_chain_name, AEK_POW_BMS63CHAIN_node_devName_t AEK_POW_BMS63CHAIN_node_devName){ AEK_POW_BMS63CHAIN_fastMeas_t AEK_POW_BMS63CHAIN_fastMeas; uint32_t AEK_POW_BMS63CHAIN_burstAnswer[AEK_POW_BMS63CHAIN_BURST_MEAS_LEN]; uint32_t AEK_POW_BMS63CHAIN_burstAnswer1[AEK_POW_BMS63CHAIN_BURST_MEAS1_LEN]; AEK_POW_BMS63CHAIN_spi_readRegBurst(AEK_POW_BMS63CHAIN_chain_name, AEK_POW_BMS63CHAIN_node_devName, AEK_POW_BMS63CHAIN_BURST_MEAS_CMD, AEK_POW_BMS63CHAIN_BURST_MEAS_LEN, AEK_POW_BMS63CHAIN_burstAnswer); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell1_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[0],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell1 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[0],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell1 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[0],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell2_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[1],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell2 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[1],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell2 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[1],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell3_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[2],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell3 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[2],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell3 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[2],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell4_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[3],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell4 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[3],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell4 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[3],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell5_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[4],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell5 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[4],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell5 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[4],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell6_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[5],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell6 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[5],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell6 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[5],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell7_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[6],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell7 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[6],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell7 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[6],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell8_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[7],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell8 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[7],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell8 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[7],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell9_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[8],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell9 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[8],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell9 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[8],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell10_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[9],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell10 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[9],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell10 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[9],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell11_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[10],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell11 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[10],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell11 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[10],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell12_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[11],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell12 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[11],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell12 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[11],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell13_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[12],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell13 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[12],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell13 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[12],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell14_En = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[13],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dRdyVcell14 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[13],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vCell14 = ((float)(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[13],0,16))) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vPackSum = ((float)((AEK_POW_BMS63CHAIN_burstAnswer[14] << 2) | (AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[15],16,2)))) * AEK_POW_BMS63CHAIN_VBAT_VOLTAGESUM_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vPack = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[15],0,16))* AEK_POW_BMS63CHAIN_VBAT_VOLTAGESUM_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dataReadyVsum = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dataReadyVbattDiv = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_soc = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],15,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_ovrLatch = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],14,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_confCyclicEn = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],13,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_dutyON = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],12,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vSumOV = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],11,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_vSumUV = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],10,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_timedBalAcc = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],9,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_timedBalTimer = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],2,7); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_balOn = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],1,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_eofBal = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer[16],0,1); AEK_POW_BMS63CHAIN_spi_readRegBurst(AEK_POW_BMS63CHAIN_chain_name, AEK_POW_BMS63CHAIN_node_devName, AEK_POW_BMS63CHAIN_BURST_MEAS1_CMD, AEK_POW_BMS63CHAIN_BURST_MEAS1_LEN, AEK_POW_BMS63CHAIN_burstAnswer1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_coulombCounterEn = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[0],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_coCouOvf = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[0],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_coulombCntTime = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[0],0,16); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_sensePlusOpen = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[1],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_senseMinusOpen = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[1],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_coulombCounterMSB = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[1],0,16); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_coulombCounterLSB = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[2],0,16); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_curSenseOvcSleep = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[2],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_curSenseOvcNorm = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[2],16,1); float AEK_POW_BMS63CHAIN_Rshunt = ((float)(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_rshunt))/1000; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_curInstSync = (((float)(AEK_POW_BMS63CHAIN_node_getTwoComp(AEK_POW_BMS63CHAIN_burstAnswer1[3],18))) * AEK_POW_BMS63CHAIN_VISENSE_RES)/AEK_POW_BMS63CHAIN_Rshunt; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_curInstCalib = (((float)(AEK_POW_BMS63CHAIN_node_getTwoComp(AEK_POW_BMS63CHAIN_burstAnswer1[4],18))) * AEK_POW_BMS63CHAIN_VISENSE_RES)/AEK_POW_BMS63CHAIN_Rshunt; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[12],0,16)) * AEK_POW_BMS63CHAIN_CELL_VOLTAGE_RES; AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_trimmCalOK = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[12],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyVtref = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[12],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio3OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[5],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio3UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio3 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[5],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO3 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio3Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[5],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio3Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[5],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio4OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[6],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio4UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],16,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio4 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[6],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO4 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio4Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[6],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio4Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[6],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio5OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[7],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio5UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],15,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio5 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[7],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO5 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio5Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[7],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio5Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[7],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio6OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[8],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio6UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],14,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio6 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[8],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO6 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio6Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[8],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio6Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[8],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio7OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[9],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio7UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],13,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio7 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[9],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO7 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio7Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[9],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio7Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[9],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio8OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[10],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio8UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],12,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio8 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[10],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO8 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio8Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[10],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio8Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[10],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio9OT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[11],17,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio9UT = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],11,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_drdyGpio9 = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[11],16,1); if(AEK_POW_BMS63CHAIN_chain[AEK_POW_BMS63CHAIN_chain_name].AEK_POW_BMS63CHAIN_node[AEK_POW_BMS63CHAIN_node_devName - 1].AEK_POW_BMS63CHAIN_node_ratioAbsModeGPIO9 == AEK_POW_BMS63CHAIN_RATIOMODE){ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio9Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[11],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_RATIO_RES * AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_VTrefMeas; } else{ AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_gpio9Meas = ((float)AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[11],0,16)) * AEK_POW_BMS63CHAIN_VGPIO_ABS_RES; } AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_OTchip = AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],8,1); AEK_POW_BMS63CHAIN_fastMeas.AEK_POW_BMS63CHAIN_Tempchip = (((float)AEK_POW_BMS63CHAIN_node_getTwoComp(AEK_POW_BMS63CHAIN_EXTRACT_BITS(AEK_POW_BMS63CHAIN_burstAnswer1[13],0,8),8)) * 1.3828) + 99.733; return AEK_POW_BMS63CHAIN_fastMeas; }