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;
383 uint16_t timer_ms_ok,
385 uint8_t substate_nok,
386 uint16_t timer_ms_nok) {
408 int32_t stringVoltage_mV = 0;
409 uint16_t numberValidMeasurements = 0;
434 numberValidMeasurements++;
459 uint16_t numberValidMeasurements = 0;
474 numberValidMeasurements++;
567 return ltc_state->
state;
622 uint8_t tmpbusID = 0;
635 if (ltc_state->
timer > 0u) {
636 if ((--ltc_state->
timer) > 0u) {
643 if (ltc_state->
timer > 0u) {
644 if ((--ltc_state->
timer) > 0u) {
652 if (continueFunction ==
STD_OK) {
653 switch (ltc_state->
state) {
664 ltc_state->
adcMode = tmpadcMode;
1289 uint8_t registerSet,
1290 uint8_t stringNumber) {
1291 uint16_t cellOffset = 0;
1292 uint16_t val_ui = 0;
1293 int16_t voltage = 0;
1294 uint64_t bitmask = 0;
1295 uint16_t buffer_LSB = 0;
1296 uint16_t buffer_MSB = 0;
1298 cellOffset = registerSet * 4u;
1301 bitmask |= 0x0Full << cellOffset;
1304 if (cellOffset == 0u) {
1309 for (uint8_t m = 0u; m <
LTC_N_LTC; m++) {
1310 uint8_t incrementations = 0u;
1313 for (uint8_t c = 0u; c < 4u; c++) {
1316 buffer_MSB = pRxBuff[4u + (m * 8u)];
1317 buffer_LSB = (pRxBuff[4u + 1u + (m * 8u)]) >> 4u;
1318 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1321 buffer_MSB = pRxBuff[4u + 1u + (m * 8u)] & 0x0Fu;
1322 buffer_LSB = (pRxBuff[4u + 2u + (m * 8u)]);
1323 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1326 buffer_MSB = pRxBuff[4u + 3u + (m * 8u)];
1327 buffer_LSB = (pRxBuff[4u + 4u + (m * 8u)]) >> 4u;
1328 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1331 buffer_MSB = pRxBuff[4u + 4u + (m * 8u)] & 0x0Fu;
1332 buffer_LSB = (pRxBuff[4u + 5u + (m * 8u)]);
1333 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1340 if ((val_ui & (1u << (12u - 1u))) == 0u) {
1393 uint32_t frameLength) {
1396 uint8_t PEC_Check[6];
1397 uint16_t PEC_result = 0;
1407 for (uint16_t i = 0u; i <
LTC_N_LTC; i++) {
1409 pTxBuff[4u + (i * 8u)] = 0x3F;
1410 pTxBuff[5u + (i * 8u)] = (
LTC_HIRNG << 7u) | 0x40u;
1411 pTxBuff[6u + (i * 8u)] = 0x00;
1412 pTxBuff[7u + (i * 8u)] = 0x00;
1413 pTxBuff[8u + (i * 8u)] = 0x00;
1414 pTxBuff[9u + (i * 8u)] = 0x00;
1416 PEC_Check[0] = pTxBuff[4u + (i * 8u)];
1417 PEC_Check[1] = pTxBuff[5u + (i * 8u)];
1418 PEC_Check[2] = pTxBuff[6u + (i * 8u)];
1419 PEC_Check[3] = pTxBuff[7u + (i * 8u)];
1420 PEC_Check[4] = pTxBuff[8u + (i * 8u)];
1421 PEC_Check[5] = pTxBuff[9u + (i * 8u)];
1423 PEC_result = LTC_pec15_calc(6, PEC_Check);
1424 pTxBuff[10u + (i * 8u)] = (PEC_result >> 8u) & 0xFFu;
1425 pTxBuff[11u + (i * 8u)] = PEC_result & 0xFFu;
1499 }
else if (PUP == 1u) {
1524 uint16_t *DataBufferSPI_RX_with_PEC,
1525 uint8_t stringNumber) {
1529 uint16_t PEC_result = 0;
1530 uint8_t PEC_Check[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1534 PEC_Check[0] = DataBufferSPI_RX_with_PEC[4u + (i * 8u)];
1535 PEC_Check[1] = DataBufferSPI_RX_with_PEC[5u + (i * 8u)];
1536 PEC_Check[2] = DataBufferSPI_RX_with_PEC[6u + (i * 8u)];
1537 PEC_Check[3] = DataBufferSPI_RX_with_PEC[7u + (i * 8u)];
1538 PEC_Check[4] = DataBufferSPI_RX_with_PEC[8u + (i * 8u)];
1539 PEC_Check[5] = DataBufferSPI_RX_with_PEC[9u + (i * 8u)];
1541 PEC_result = LTC_pec15_calc(6, PEC_Check);
1542 PEC_TX[0] = (uint8_t)((PEC_result >> 8u) & 0xFFu);
1543 PEC_TX[1] = (uint8_t)(PEC_result & 0xFFu);
1546 if ((PEC_TX[0] != DataBufferSPI_RX_with_PEC[10u + (i * 8u)]) ||
1547 (PEC_TX[1] != DataBufferSPI_RX_with_PEC[11u + (i * 8u)])) {
1597 uint32_t frameLength) {
1609 pTxBuff[0] = Command[0];
1610 pTxBuff[1] = Command[1];
1611 pTxBuff[2] = Command[2];
1612 pTxBuff[3] = Command[3];
1629 uint32_t SPI_Clock = 0;
1630 uint32_t prescaler = 0;
1655 prescaler = ((pSpiInterface->
pNode->FMT0) >> 8u) & 0xFFu;
1656 SPI_Clock = (uint32_t)(AVCLK1_FREQ * 1000000u) / (prescaler + 1u);
1670 uint32_t transferTime_us = 0;
1671 uint32_t SPI_Clock = 0;
1677 transferTime_us = (8u * 1000u * 1000u) / (SPI_Clock);
1684 transferTime_us = ((4u) * 8u * 1000u * 1000u) / (SPI_Clock);
1690 transferTime_us = ((4u + 9u) * 8u * 1000u * 1000u) / (SPI_Clock);
1728 bool retval =
false;
1767 #ifdef UNITY_UNIT_TEST
1768 uint8_t TEST_LTC_CheckReEntrance(
LTC_STATE_s *ltc_state) {
1772 extern void TEST_LTC_SetFirstMeasurementCycleFinished(
LTC_STATE_s *ltc_state) {
1777 #define TEST_LTC_DEFINE_GET(VARIABLE) \
1778 extern void TEST_LTC_Get_##VARIABLE(uint8_t data[4]) { \
1779 for (uint8_t i = 0u; i < 4u; i++) { \
1780 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
STD_RETURN_TYPE_e DIAG_CheckEvent(STD_RETURN_TYPE_e cond, DIAG_ID_e diagId, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_CheckEvent provides a simple interface to check an event for STD_OK.
DIAG_RETURNTYPE_e DIAG_Handler(DIAG_ID_e diagId, DIAG_EVENT_e event, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_Handler provides generic error handling, based on diagnosis group.
@ 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 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 DATA_BLOCK_CELL_VOLTAGE_s ltc_cellVoltage
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_TRANSMIT_COMMAND(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_SPI_WAKEUP_WAIT_TIME_US
#define LTC_TRANSMIT_WAKE_UP(spi_ltcInterface)
#define LTC_NMBR_REQ_ADOW_COMMANDS
#define LTC_OW_MEASUREMENT_MODE
#define LTC_TRANSMIT_RECEIVE_DATA(spi_ltcInterface, txbuf, rxbuf, length)
#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