62 #include "HL_system.h"
78 #define LTC_PORT_EXPANDER_TI_INPUT_REG_ADR (0x00u)
79 #define LTC_PORT_EXPANDER_TI_OUTPUT_REG_ADR (0x01u)
80 #define LTC_PORT_EXPANDER_TI_CONFIG_REG_ADR (0x03u)
87 #define LTC_FUEL_CELL_LSB_RESOLUTION_mV (1.5f)
89 #define LTC_FUEL_CELL_LSB_RESOLUTION_mV (3.0f)
95 #define LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV ((int16_t)((0x7FF * LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
100 #define LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV \
101 ((int16_t)((((~0x001) + 1) & 0x7FF) * (-LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
109 #pragma SET_DATA_SECTION(".sharedRAM")
112 #pragma SET_DATA_SECTION()
132 .minimumPlausibleVoltage_mV = -5000,
148 .numberOfMeasuredMux = 32,
150 .ErrRetryCounter = 0,
151 .ErrRequestCounter = 0,
152 .VoltageSampleTime = 0,
154 .commandDataTransferTime = 3,
155 .commandTransferTime = 3,
156 .gpioClocksTransferTime = 3,
160 .first_measurement_made =
false,
164 .transmit_ongoing =
false,
172 .ltcData.balancingFeedback =
NULL_PTR,
173 .ltcData.balancingControl =
NULL_PTR,
181 .requestedString = 0u,
230 {0x07, 0xC0, 0xBA, 0x70};
232 {0x06, 0xC0, 0x32, 0x3C};
245 uint16_t timer_ms_ok,
247 uint8_t substate_nok,
248 uint16_t timer_ms_nok);
255 uint32_t frameLength);
270 uint8_t stringNumber);
274 uint16_t *DataBufferSPI_RX_with_PEC,
275 uint8_t stringNumber);
281 uint32_t frameLength);
349 ltc_state->
state = state;
351 ltc_state->
timer = timer_ms;
378 uint16_t timer_ms_ok,
380 uint8_t substate_nok,
381 uint16_t timer_ms_nok) {
403 int32_t stringVoltage_mV = 0;
404 uint16_t numberValidMeasurements = 0;
429 numberValidMeasurements++;
454 uint16_t numberValidMeasurements = 0;
469 numberValidMeasurements++;
562 return ltc_state->
state;
617 uint8_t tmpbusID = 0;
630 if (ltc_state->
timer > 0u) {
631 if ((--ltc_state->
timer) > 0u) {
638 if (ltc_state->
timer > 0u) {
639 if ((--ltc_state->
timer) > 0u) {
647 if (continueFunction ==
STD_OK) {
648 switch (ltc_state->
state) {
659 ltc_state->
adcMode = tmpadcMode;
1298 uint8_t registerSet,
1299 uint8_t stringNumber) {
1300 uint16_t cellOffset = 0;
1301 uint16_t val_ui = 0;
1302 int16_t voltage = 0;
1303 uint64_t bitmask = 0;
1304 uint16_t buffer_LSB = 0;
1305 uint16_t buffer_MSB = 0;
1307 cellOffset = registerSet * 4u;
1310 bitmask |= 0x0Full << cellOffset;
1313 if (cellOffset == 0u) {
1318 for (uint8_t m = 0u; m <
LTC_N_LTC; m++) {
1319 uint8_t incrementations = 0u;
1322 for (uint8_t c = 0u; c < 4u; c++) {
1325 buffer_MSB = pRxBuff[4u + (m * 8u)];
1326 buffer_LSB = (pRxBuff[4u + 1u + (m * 8u)]) >> 4u;
1327 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1330 buffer_MSB = pRxBuff[4u + 1u + (m * 8u)] & 0x0Fu;
1331 buffer_LSB = (pRxBuff[4u + 2u + (m * 8u)]);
1332 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1335 buffer_MSB = pRxBuff[4u + 3u + (m * 8u)];
1336 buffer_LSB = (pRxBuff[4u + 4u + (m * 8u)]) >> 4u;
1337 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1340 buffer_MSB = pRxBuff[4u + 4u + (m * 8u)] & 0x0Fu;
1341 buffer_LSB = (pRxBuff[4u + 5u + (m * 8u)]);
1342 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1349 if ((val_ui & (1u << (12u - 1u))) == 0u) {
1402 uint32_t frameLength) {
1405 uint8_t PEC_Check[6];
1406 uint16_t PEC_result = 0;
1416 for (uint16_t i = 0u; i <
LTC_N_LTC; i++) {
1418 pTxBuff[4u + (i * 8u)] = 0x3F;
1419 pTxBuff[5u + (i * 8u)] = (
LTC_HIRNG << 7u) | 0x40u;
1420 pTxBuff[6u + (i * 8u)] = 0x00;
1421 pTxBuff[7u + (i * 8u)] = 0x00;
1422 pTxBuff[8u + (i * 8u)] = 0x00;
1423 pTxBuff[9u + (i * 8u)] = 0x00;
1425 PEC_Check[0] = pTxBuff[4u + (i * 8u)];
1426 PEC_Check[1] = pTxBuff[5u + (i * 8u)];
1427 PEC_Check[2] = pTxBuff[6u + (i * 8u)];
1428 PEC_Check[3] = pTxBuff[7u + (i * 8u)];
1429 PEC_Check[4] = pTxBuff[8u + (i * 8u)];
1430 PEC_Check[5] = pTxBuff[9u + (i * 8u)];
1432 PEC_result = LTC_pec15_calc(6, PEC_Check);
1433 pTxBuff[10u + (i * 8u)] = (PEC_result >> 8u) & 0xFFu;
1434 pTxBuff[11u + (i * 8u)] = PEC_result & 0xFFu;
1508 }
else if (PUP == 1u) {
1533 uint16_t *DataBufferSPI_RX_with_PEC,
1534 uint8_t stringNumber) {
1538 uint16_t PEC_result = 0;
1539 uint8_t PEC_Check[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1543 PEC_Check[0] = DataBufferSPI_RX_with_PEC[4u + (i * 8u)];
1544 PEC_Check[1] = DataBufferSPI_RX_with_PEC[5u + (i * 8u)];
1545 PEC_Check[2] = DataBufferSPI_RX_with_PEC[6u + (i * 8u)];
1546 PEC_Check[3] = DataBufferSPI_RX_with_PEC[7u + (i * 8u)];
1547 PEC_Check[4] = DataBufferSPI_RX_with_PEC[8u + (i * 8u)];
1548 PEC_Check[5] = DataBufferSPI_RX_with_PEC[9u + (i * 8u)];
1550 PEC_result = LTC_pec15_calc(6, PEC_Check);
1551 PEC_TX[0] = (uint8_t)((PEC_result >> 8u) & 0xFFu);
1552 PEC_TX[1] = (uint8_t)(PEC_result & 0xFFu);
1555 if ((PEC_TX[0] != DataBufferSPI_RX_with_PEC[10u + (i * 8u)]) ||
1556 (PEC_TX[1] != DataBufferSPI_RX_with_PEC[11u + (i * 8u)])) {
1599 uint32_t frameLength) {
1611 pTxBuff[0] = Command[0];
1612 pTxBuff[1] = Command[1];
1613 pTxBuff[2] = Command[2];
1614 pTxBuff[3] = Command[3];
1631 uint32_t SPI_Clock = 0;
1632 uint32_t prescaler = 0;
1657 prescaler = ((pSpiInterface->
pNode->FMT0) >> 8u) & 0xFFu;
1658 SPI_Clock = (uint32_t)(AVCLK1_FREQ * 1000000u) / (prescaler + 1u);
1672 uint32_t transferTime_us = 0;
1673 uint32_t SPI_Clock = 0;
1679 transferTime_us = (8u * 1000u * 1000u) / (SPI_Clock);
1686 transferTime_us = ((4u) * 8u * 1000u * 1000u) / (SPI_Clock);
1692 transferTime_us = ((4u + 9u) * 8u * 1000u * 1000u) / (SPI_Clock);
1730 bool retval =
false;
1769 #ifdef UNITY_UNIT_TEST
1770 uint8_t TEST_LTC_CheckReEntrance(
LTC_STATE_s *ltc_state) {
1774 extern void TEST_LTC_SetFirstMeasurementCycleFinished(
LTC_STATE_s *ltc_state) {
1779 #define TEST_LTC_DEFINE_GET(VARIABLE) \
1780 extern void TEST_LTC_Get_##VARIABLE(uint8_t data[4]) { \
1781 for (uint8_t i = 0u; i < 4u; i++) { \
1782 data[i] = (uint8_t)(VARIABLE)[i]; \
STD_RETURN_TYPE_e AFE_PlausibilityCheckTempMinMax(const int16_t celltemperature_ddegC)
Cell temperature plausibility check.
STD_RETURN_TYPE_e AFE_PlausibilityCheckVoltageMeasurementRange(const int16_t cellvoltage_mV, const AFE_PLAUSIBILITY_VALUES_s plausibleValues)
Cell voltage measurement range plausibility check.
plausibility checks for cell voltage and cell temperatures
#define BS_NR_OF_CELL_BLOCKS_PER_MODULE
number of cells per module
#define BS_NR_OF_STRINGS
Number of parallel strings in the battery pack.
#define BS_NR_OF_TEMP_SENSORS_PER_MODULE
number of temperature sensors per battery module
#define BS_NR_OF_GPIOS_PER_MODULE
Number of GPIOs on the LTC IC.
#define BS_NR_OF_CELL_BLOCKS_PER_STRING
#define BS_NR_OF_MODULES_PER_STRING
number of modules in a string
#define BS_NR_OF_TEMP_SENSORS_PER_STRING
#define DATA_WRITE_DATA(...)
@ DATA_BLOCK_ID_CELL_TEMPERATURE_BASE
@ DATA_BLOCK_ID_OPEN_WIRE_BASE
@ DATA_BLOCK_ID_CELL_VOLTAGE_BASE
@ DATA_BLOCK_ID_ALL_GPIO_VOLTAGES_BASE
DIAG_RETURNTYPE_e DIAG_Handler(DIAG_ID_e diag_id, DIAG_EVENT_e event, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_Handler provides generic error handling, based on diagnosis group.
STD_RETURN_TYPE_e DIAG_CheckEvent(STD_RETURN_TYPE_e cond, DIAG_ID_e diag_id, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_CheckEvent provides a simple interface to check an event for STD_OK.
@ DIAG_ID_AFE_CELL_VOLTAGE_MEAS_ERROR
@ DIAG_ID_AFE_CELL_TEMPERATURE_MEAS_ERROR
@ DIAG_ID_AFE_COM_INTEGRITY
#define FAS_ASSERT(x)
Assertion macro that asserts that x is true.
#define FAS_TRAP
Define that evaluates to essential boolean false thus tripping an assert.
#define NULL_PTR
Null pointer.
Header for the driver for the IO module.
Headers for the driver for the LTC monitoring chip.
static uint16_t ltc_cmdRDCVI_Fuelcell[4]
uint16_t ltc_TxPecBuffer[LTC_N_BYTES_FOR_DATA_TRANSMISSION]
static STD_RETURN_TYPE_e LTC_StartVoltageMeasurement(SPI_INTERFACE_CONFIG_s *pSpiInterface, LTC_ADCMODE_e adcMode, LTC_ADCMEAS_CHAN_e adcMeasCh)
tells the LTC daisy-chain to start measuring the voltage on all cells.
static DATA_BLOCK_ALL_GPIO_VOLTAGES_s ltc_allgpiovoltage
static DATA_BLOCK_CELL_VOLTAGE_s ltc_cellvoltage
static STD_RETURN_TYPE_e LTC_StartOpenWireMeasurement(SPI_INTERFACE_CONFIG_s *pSpiInterface, LTC_ADCMODE_e adcMode, uint8_t PUP)
tells LTC daisy-chain to start measuring the voltage on GPIOS.
static uint16_t ltc_cmdRDCVA_Fuelcell[4]
LTC_STATEMACH_e LTC_GetState(LTC_STATE_s *ltc_state)
gets the current state.
static STD_RETURN_TYPE_e LTC_ReadRegister(uint16_t *Command, SPI_INTERFACE_CONFIG_s *pSpiInterface, uint16_t *pTxBuff, uint16_t *pRxBuff, uint32_t frameLength)
send command to the LTC daisy-chain and receives data from the LTC daisy-chain.
bool LTC_IsFirstMeasurementCycleFinished(LTC_STATE_s *ltc_state)
gets the measurement initialization status.
static const AFE_PLAUSIBILITY_VALUES_s ltc_plausibleCellVoltages6806
static void LTC_StateTransition(LTC_STATE_s *ltc_state, LTC_STATEMACH_e state, uint8_t substate, uint16_t timer_ms)
function for setting LTC_Trigger state transitions
static void LTC_SetFirstMeasurementCycleFinished(LTC_STATE_s *ltc_state)
sets the measurement initialization status.
static LTC_RETURN_TYPE_e LTC_CheckStateRequest(LTC_STATE_s *ltc_state, LTC_REQUEST_s statereq)
checks the state requests that are made.
LTC_RETURN_TYPE_e LTC_SetStateRequest(LTC_STATE_s *ltc_state, LTC_REQUEST_s statereq)
sets the current state request of the state variable ltc_state.
static uint16_t ltc_cmdRDCVD_Fuelcell[4]
static void LTC_SetTransferTimes(LTC_STATE_s *ltc_state)
sets the transfer time needed to receive/send data with the LTC daisy-chain.
static uint32_t LTC_GetSpiClock(SPI_INTERFACE_CONFIG_s *pSpiInterface)
gets the frequency of the SPI clock.
static uint16_t ltc_cmdRDCVG_Fuelcell[4]
static uint16_t ltc_cmdRDCVH_Fuelcell[4]
static STD_RETURN_TYPE_e LTC_CheckPec(LTC_STATE_s *ltc_state, uint16_t *DataBufferSPI_RX_with_PEC, uint8_t stringNumber)
checks if the data received from the daisy-chain is not corrupt.
static uint16_t ltc_cmdRDCVE_Fuelcell[4]
static uint16_t ltc_cmdRDCFG[4]
static void LTC_SaveLastStates(LTC_STATE_s *ltc_state)
Saves the last state and the last substate.
LTC_REQUEST_s LTC_TransferStateRequest(LTC_STATE_s *ltc_state, uint8_t *pBusIDptr, LTC_ADCMODE_e *pAdcModeptr, LTC_ADCMEAS_CHAN_e *pAdcMeasChptr)
transfers the current state request to the state machine.
void LTC_SaveTemperatures(LTC_STATE_s *ltc_state, uint8_t stringNumber)
stores the measured temperatures and the measured multiplexer feedbacks in the database.
static uint16_t ltc_used_cells_index[BS_NR_OF_STRINGS]
#define LTC_FUEL_CELL_LSB_RESOLUTION_mV
void LTC_InitializeMonitoringPin(void)
Sets the transceiver pins to enable LTC6820 IC.
static void LTC_SaveRXtoVoltagebuffer_Fuelcell(LTC_STATE_s *ltc_state, uint16_t *pRxBuff, uint8_t registerSet, uint8_t stringNumber)
saves the voltage values read from the LTC daisy-chain.
LTC_REQUEST_s LTC_GetStateRequest(LTC_STATE_s *ltc_state)
gets the current state request.
void LTC_SaveVoltages(LTC_STATE_s *ltc_state, uint8_t stringNumber)
stores the measured voltages in the database.
#define LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV
static STD_RETURN_TYPE_e LTC_Init(SPI_INTERFACE_CONFIG_s *pSpiInterface, uint16_t *pTxBuff, uint16_t *pRxBuff, uint32_t frameLength)
initialize the daisy-chain.
static void LTC_ResetErrorTable(LTC_STATE_s *ltc_state)
resets the error table.
LTC_STATE_s ltc_stateBase
static uint16_t ltc_cmdRDCVF_Fuelcell[4]
static uint16_t ltc_cmdRDCVB_Fuelcell[4]
void LTC_SaveAllGpioMeasurement(LTC_STATE_s *ltc_state)
stores the measured GPIOs in the database.
static LTC_ERRORTABLE_s ltc_errorTable
void LTC_Trigger(LTC_STATE_s *ltc_state)
trigger function for the LTC driver state machine.
uint8_t LTC_CheckReEntrance(LTC_STATE_s *ltc_state)
re-entrance check of LTC state machine trigger function
#define LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV
static DATA_BLOCK_OPEN_WIRE_s ltc_openwire
static void LTC_InitializeDatabase(LTC_STATE_s *ltc_state)
in the database, initializes the fields related to the LTC drivers.
uint16_t ltc_RxPecBuffer[LTC_N_BYTES_FOR_DATA_TRANSMISSION]
static LTC_OPENWIRE_DETECTION_s ltc_openWireDetection
static void LTC_CondBasedStateTransition(LTC_STATE_s *ltc_state, STD_RETURN_TYPE_e retVal, DIAG_ID_e diagCode, LTC_STATEMACH_e state_ok, uint8_t substate_ok, uint16_t timer_ms_ok, LTC_STATEMACH_e state_nok, uint8_t substate_nok, uint16_t timer_ms_nok)
condition-based state transition depending on retVal
static uint16_t ltc_BC_cmdADOW_PDOWN_100ms_fuelcell[4]
static uint16_t ltc_cmdWRCFG[4]
static DATA_BLOCK_CELL_TEMPERATURE_s ltc_celltemperature
static uint16_t ltc_BC_cmdADOW_PUP_100ms_fuelcell[4]
static uint16_t ltc_cmdRDCVC_Fuelcell[4]
static uint16_t ltc_cmdADCV_normal_Fuelcell[4]
Header for the configuration for the LTC 6806 monitoring IC.
#define LTC_STATEMACH_DAISY_CHAIN_FIRST_INITIALIZATION_TIME
#define LTC_TRANSMISSION_TIMEOUT
#define LTC_FUELCELL_NORMAL_ALL_CELLS_MS
#define LTC_TransmitCommand(spi_ltcInterface, command)
#define LTC_STATEMACH_SHORTTIME
#define LTC_NUMBER_OF_LTC_PER_MODULE
#define LTC_VOLTAGE_MEASUREMENT_MODE
#define LTC_ADOW_THRESHOLD
#define LTC_FUEL_CELL_ADOW_TIME_MS
#define LTC_TransmitReceiveData(spi_ltcInterface, txbuf, rxbuf, length)
#define LTC_SPI_WAKEUP_WAIT_TIME_US
#define LTC_TransmitWakeUp(spi_ltcInterface)
#define LTC_NMBR_REQ_ADOW_COMMANDS
#define LTC_OW_MEASUREMENT_MODE
#define LTC_STATEMACH_DAISY_CHAIN_SECOND_INITIALIZATION_TIME
bool AFE_IsTransmitOngoing(LTC_STATE_s *pLtcState)
gets the SPI transmit status.
void AFE_SetTransmitOngoing(LTC_STATE_s *pLtcState)
sets the SPI transmit status.
#define LTC_N_BYTES_FOR_DATA_TRANSMISSION
@ LTC_RE_ENTRY_INITIALIZATION
@ LTC_ENTRY_INITIALIZATION
@ LTC_START_INIT_INITIALIZATION
@ LTC_EXIT_INITIALIZATION
@ LTC_CHECK_INITIALIZATION
@ LTC_STATE_OPENWIRE_CHECK_REQUEST
@ LTC_STATEMACH_INITIALIZATION
@ LTC_STATEMACH_UNINITIALIZED
@ LTC_STATEMACH_STARTMEAS_CONTINUE
@ LTC_STATEMACH_OPENWIRE_CHECK
@ LTC_STATEMACH_READVOLTAGE
@ LTC_STATEMACH_INITIALIZED
@ LTC_STATEMACH_STARTMEAS
@ LTC_REQUEST_PULLDOWN_CURRENT_OPENWIRE_CHECK
@ LTC_READ_VOLTAGES_PULLDOWN_OPENWIRE_CHECK
@ LTC_READ_VOLTAGES_PULLUP_OPENWIRE_CHECK
@ LTC_REQUEST_PULLUP_CURRENT_OPENWIRE_CHECK
@ LTC_PERFORM_OPENWIRE_CHECK
@ LTC_ADCMEAS_ALLCHANNEL_CELLS
@ LTC_ALREADY_INITIALIZED
@ LTC_READ_VOLTAGE_REGISTER_F_RDCVF_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_A_RDCVA_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_D_RDCVD_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_G_RDCVG_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_I_RDCVI_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_B_RDCVB_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_H_RDCVH_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_E_RDCVE_READVOLTAGE
@ LTC_READ_VOLTAGE_REGISTER_C_RDCVC_READVOLTAGE
@ LTC_REUSE_READVOLT_FOR_ADOW_PUP
@ LTC_REUSE_READVOLT_FOR_ADOW_PDOWN
Declaration of the OS wrapper interface.
void OS_ExitTaskCritical(void)
Exit Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
void OS_EnterTaskCritical(void)
Enter Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
void PEX_SetPin(uint8_t portExpander, uint8_t pin)
sets pin to high.
void PEX_SetPinDirectionOutput(uint8_t portExpander, uint8_t pin)
sets pin to input.
Header for the driver for the NXP PCA9539 port expander module.
#define PEX_PORT_EXPANDER3
SPI_INTERFACE_CONFIG_s spi_ltcInterface[BS_NR_OF_STRINGS]
struct definition for plausibility values of an AFE
const int16_t maximumPlausibleVoltage_mV
uint16_t gpioVoltages_mV[BS_NR_OF_STRINGS][BS_NR_OF_MODULES_PER_STRING *BS_NR_OF_GPIOS_PER_MODULE]
DATA_BLOCK_HEADER_s header
DATA_BLOCK_HEADER_s header
int16_t cellTemperature_ddegC[BS_NR_OF_STRINGS][BS_NR_OF_TEMP_SENSORS_PER_STRING]
uint16_t nrValidTemperatures[BS_NR_OF_STRINGS]
uint16_t invalidCellTemperature[BS_NR_OF_STRINGS][BS_NR_OF_MODULES_PER_STRING]
int32_t packVoltage_mV[BS_NR_OF_STRINGS]
DATA_BLOCK_HEADER_s header
uint64_t invalidCellVoltage[BS_NR_OF_STRINGS][BS_NR_OF_MODULES_PER_STRING]
uint16_t nrValidCellVoltages[BS_NR_OF_STRINGS]
int16_t cellVoltage_mV[BS_NR_OF_STRINGS][BS_NR_OF_CELL_BLOCKS_PER_STRING]
DATA_BLOCK_HEADER_s header
uint16_t nrOpenWires[BS_NR_OF_STRINGS]
uint8_t openwire[BS_NR_OF_STRINGS][BS_NR_OF_MODULES_PER_STRING *(BS_NR_OF_CELL_BLOCKS_PER_MODULE+1u)]
LTC_OPENWIRE_DETECTION_s * openWireDetection
DATA_BLOCK_ALL_GPIO_VOLTAGES_s * allGpioVoltages
DATA_BLOCK_CELL_VOLTAGE_s * cellVoltage
DATA_BLOCK_CELL_TEMPERATURE_s * cellTemperature
LTC_ERRORTABLE_s * errorTable
SPI_INTERFACE_CONFIG_s * pSpiInterface
DATA_BLOCK_OPEN_WIRE_s * openWire
uint8_t PEC_valid[BS_NR_OF_STRINGS][LTC_N_LTC]
uint8_t mux3[BS_NR_OF_STRINGS][LTC_N_LTC]
uint8_t mux2[BS_NR_OF_STRINGS][LTC_N_LTC]
uint8_t mux0[BS_NR_OF_STRINGS][LTC_N_LTC]
uint8_t mux1[BS_NR_OF_STRINGS][LTC_N_LTC]
int32_t openWireDelta[BS_NR_OF_STRINGS][BS_NR_OF_CELL_BLOCKS_PER_STRING]
int16_t openWirePdown[BS_NR_OF_STRINGS][BS_NR_OF_CELL_BLOCKS_PER_STRING]
int16_t openWirePup[BS_NR_OF_STRINGS][BS_NR_OF_CELL_BLOCKS_PER_STRING]
LTC_STATE_REQUEST_e request
uint32_t commandDataTransferTime
SPI_INTERFACE_CONFIG_s * spiSeqPtr
uint32_t commandTransferTime
SPI_INTERFACE_CONFIG_s * spiSeqEndPtr
LTC_STATEMACH_e laststate
LTC_ADCMEAS_CHAN_e adcMeasCh
LTC_REUSE_MODE_e reusageMeasurementMode
uint32_t gpioClocksTransferTime
uint8_t resendCommandCounter
uint8_t spiNumberInterfaces
uint32_t ErrRequestCounter
STD_RETURN_TYPE_e check_spi_flag
bool first_measurement_made
LTC_ADCMEAS_CHAN_e adcMeasChreq