61 #include "HL_system.h"
77 #define LTC_PORT_EXPANDER_TI_INPUT_REG_ADR (0x00u)
78 #define LTC_PORT_EXPANDER_TI_OUTPUT_REG_ADR (0x01u)
79 #define LTC_PORT_EXPANDER_TI_CONFIG_REG_ADR (0x03u)
86 #define LTC_FUEL_CELL_LSB_RESOLUTION_mV (1.5f)
88 #define LTC_FUEL_CELL_LSB_RESOLUTION_mV (3.0f)
94 #define LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV ((int16_t)((0x7FF * LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
99 #define LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV \
100 ((int16_t)((((~0x001) + 1) & 0x7FF) * (-LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
107 #pragma SET_DATA_SECTION(".sharedRAM")
110 #pragma SET_DATA_SECTION()
129 .minimumPlausibleVoltage_mV = -5000,
145 .numberOfMeasuredMux = 32,
147 .ErrRetryCounter = 0,
148 .ErrRequestCounter = 0,
149 .VoltageSampleTime = 0,
151 .commandDataTransferTime = 3,
152 .commandTransferTime = 3,
153 .gpioClocksTransferTime = 3,
157 .first_measurement_made =
false,
161 .transmit_ongoing =
false,
169 .ltcData.balancingFeedback =
NULL_PTR,
170 .ltcData.balancingControl =
NULL_PTR,
178 .requestedString = 0u,
227 {0x07, 0xC0, 0xBA, 0x70};
229 {0x06, 0xC0, 0x32, 0x3C};
242 uint16_t timer_ms_ok,
244 uint8_t substate_nok,
245 uint16_t timer_ms_nok);
252 uint32_t frameLength);
267 uint8_t stringNumber);
271 uint16_t *DataBufferSPI_RX_with_PEC,
272 uint8_t stringNumber);
278 uint32_t frameLength);
299 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
346 ltc_state->
state = state;
348 ltc_state->
timer = timer_ms;
375 uint16_t timer_ms_ok,
377 uint8_t substate_nok,
378 uint16_t timer_ms_nok) {
400 int32_t stringVoltage_mV = 0;
401 uint16_t numberValidMeasurements = 0;
426 numberValidMeasurements++;
451 uint16_t numberValidMeasurements = 0;
466 numberValidMeasurements++;
559 return ltc_state->
state;
614 uint8_t tmpbusID = 0;
627 if (ltc_state->
timer > 0u) {
628 if ((--ltc_state->
timer) > 0u) {
635 if (ltc_state->
timer > 0u) {
636 if ((--ltc_state->
timer) > 0u) {
644 if (continueFunction ==
STD_OK) {
645 switch (ltc_state->
state) {
656 ltc_state->
adcMode = tmpadcMode;
1288 uint8_t registerSet,
1289 uint8_t stringNumber) {
1290 uint16_t cellOffset = 0;
1291 uint16_t val_ui = 0;
1292 int16_t voltage = 0;
1293 uint64_t bitmask = 0;
1294 uint16_t buffer_LSB = 0;
1295 uint16_t buffer_MSB = 0;
1297 cellOffset = registerSet * 4u;
1300 bitmask |= 0x0Full << cellOffset;
1303 if (cellOffset == 0u) {
1308 for (uint8_t m = 0u; m <
LTC_N_LTC; m++) {
1309 uint8_t incrementations = 0u;
1312 for (uint8_t c = 0u; c < 4u; c++) {
1315 buffer_MSB = pRxBuff[4u + (m * 8u)];
1316 buffer_LSB = (pRxBuff[4u + 1u + (m * 8u)]) >> 4u;
1317 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1320 buffer_MSB = pRxBuff[4u + 1u + (m * 8u)] & 0x0Fu;
1321 buffer_LSB = (pRxBuff[4u + 2u + (m * 8u)]);
1322 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1325 buffer_MSB = pRxBuff[4u + 3u + (m * 8u)];
1326 buffer_LSB = (pRxBuff[4u + 4u + (m * 8u)]) >> 4u;
1327 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 4u));
1330 buffer_MSB = pRxBuff[4u + 4u + (m * 8u)] & 0x0Fu;
1331 buffer_LSB = (pRxBuff[4u + 5u + (m * 8u)]);
1332 val_ui = (uint16_t)(buffer_LSB | (buffer_MSB << 8u));
1339 if ((val_ui & (1u << (12u - 1u))) == 0u) {
1392 uint32_t frameLength) {
1395 uint8_t PEC_Check[6];
1396 uint16_t PEC_result = 0;
1406 for (uint16_t i = 0u; i <
LTC_N_LTC; i++) {
1408 pTxBuff[4u + (i * 8u)] = 0x3F;
1409 pTxBuff[5u + (i * 8u)] = (
LTC_HIRNG << 7u) | 0x40u;
1410 pTxBuff[6u + (i * 8u)] = 0x00;
1411 pTxBuff[7u + (i * 8u)] = 0x00;
1412 pTxBuff[8u + (i * 8u)] = 0x00;
1413 pTxBuff[9u + (i * 8u)] = 0x00;
1415 PEC_Check[0] = pTxBuff[4u + (i * 8u)];
1416 PEC_Check[1] = pTxBuff[5u + (i * 8u)];
1417 PEC_Check[2] = pTxBuff[6u + (i * 8u)];
1418 PEC_Check[3] = pTxBuff[7u + (i * 8u)];
1419 PEC_Check[4] = pTxBuff[8u + (i * 8u)];
1420 PEC_Check[5] = pTxBuff[9u + (i * 8u)];
1422 PEC_result = LTC_pec15_calc(6, PEC_Check);
1423 pTxBuff[10u + (i * 8u)] = (PEC_result >> 8u) & 0xFFu;
1424 pTxBuff[11u + (i * 8u)] = PEC_result & 0xFFu;
1443 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
1498 }
else if (PUP == 1u) {
1523 uint16_t *DataBufferSPI_RX_with_PEC,
1524 uint8_t stringNumber) {
1528 uint16_t PEC_result = 0;
1529 uint8_t PEC_Check[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1533 PEC_Check[0] = DataBufferSPI_RX_with_PEC[4u + (i * 8u)];
1534 PEC_Check[1] = DataBufferSPI_RX_with_PEC[5u + (i * 8u)];
1535 PEC_Check[2] = DataBufferSPI_RX_with_PEC[6u + (i * 8u)];
1536 PEC_Check[3] = DataBufferSPI_RX_with_PEC[7u + (i * 8u)];
1537 PEC_Check[4] = DataBufferSPI_RX_with_PEC[8u + (i * 8u)];
1538 PEC_Check[5] = DataBufferSPI_RX_with_PEC[9u + (i * 8u)];
1540 PEC_result = LTC_pec15_calc(6, PEC_Check);
1541 PEC_TX[0] = (uint8_t)((PEC_result >> 8u) & 0xFFu);
1542 PEC_TX[1] = (uint8_t)(PEC_result & 0xFFu);
1545 if ((PEC_TX[0] != DataBufferSPI_RX_with_PEC[10u + (i * 8u)]) ||
1546 (PEC_TX[1] != DataBufferSPI_RX_with_PEC[11u + (i * 8u)])) {
1589 uint32_t frameLength) {
1601 pTxBuff[0] = Command[0];
1602 pTxBuff[1] = Command[1];
1603 pTxBuff[2] = Command[2];
1604 pTxBuff[3] = Command[3];
1621 uint32_t SPI_Clock = 0;
1622 uint32_t prescaler = 0;
1647 prescaler = ((pSpiInterface->
pNode->FMT0) >> 8u) & 0xFFu;
1648 SPI_Clock = (uint32_t)(AVCLK1_FREQ * 1000000u) / (prescaler + 1u);
1662 uint32_t transferTime_us = 0;
1663 uint32_t SPI_Clock = 0;
1669 transferTime_us = (8u * 1000u * 1000u) / (SPI_Clock);
1676 transferTime_us = ((4u) * 8u * 1000u * 1000u) / (SPI_Clock);
1682 transferTime_us = ((4u + 9u) * 8u * 1000u * 1000u) / (SPI_Clock);
1720 bool retval =
false;
1759 #ifdef UNITY_UNIT_TEST
1769 #define TEST_LTC_DEFINE_GET(VARIABLE) \
1770 extern void TEST_LTC_Get_##VARIABLE(uint8_t data[4]) { \
1771 for (uint8_t i = 0u; i < 4u; i++) { \
1772 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_CELLS_PER_MODULE
number of battery cells per battery module (parallel cells are counted as one)
#define BS_NR_OF_MODULES
number of modules in 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_TEMP_SENSORS_PER_STRING
#define BS_NR_OF_BAT_CELLS
#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
#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.
enum STD_RETURN_TYPE STD_RETURN_TYPE_e
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 uint32_t LTC_GetSPIClock(SPI_INTERFACE_CONFIG_s *pSpiInterface)
gets the frequency of the SPI clock.
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.
bool LTC_IsFirstMeasurementCycleFinished(LTC_STATE_s *ltc_state)
gets the measurement initialization status.
static const AFE_PLAUSIBILITY_VALUES_s ltc_plausibleCellVoltages6806
#define TEST_LTC_DEFINE_GET(VARIABLE)
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
void LTC_SaveAllGPIOMeasurement(LTC_STATE_s *ltc_state)
stores the measured GPIOs in the database.
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 uint16_t ltc_cmdRDCVG_Fuelcell[4]
static uint16_t ltc_cmdRDCVH_Fuelcell[4]
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
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]
static LTC_ERRORTABLE_s ltc_errorTable
static void LTC_Initialize_Database(LTC_STATE_s *ltc_state)
in the database, initializes the fields related to the LTC drivers.
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
uint16_t ltc_RxPecBuffer[LTC_N_BYTES_FOR_DATA_TRANSMISSION]
void LTC_monitoringPinInit(void)
Sets the transceiver pins to enable LTC6820 IC.
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]
void TEST_LTC_SetFirstMeasurementCycleFinished(LTC_STATE_s *ltc_state)
static STD_RETURN_TYPE_e LTC_RX_PECCheck(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 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]
static STD_RETURN_TYPE_e LTC_RX(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.
uint8_t TEST_LTC_CheckReEntrance(LTC_STATE_s *ltc_state)
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_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_STATEMACH_INITIALIZATION
@ LTC_STATEMACH_UNINITIALIZED
@ LTC_STATEMACH_STARTMEAS_CONTINUE
@ LTC_STATEMACH_OPENWIRE_CHECK
@ LTC_STATEMACH_READVOLTAGE
@ LTC_STATEMACH_INITIALIZED
@ LTC_STATEMACH_STARTMEAS
@ 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
DATA_BLOCK_HEADER_s header
uint16_t gpioVoltages_mV[BS_NR_OF_STRINGS][BS_NR_OF_MODULES *BS_NR_OF_GPIOS_PER_MODULE]
int16_t cellTemperature_ddegC[BS_NR_OF_STRINGS][BS_NR_OF_TEMP_SENSORS_PER_STRING]
DATA_BLOCK_HEADER_s header
uint16_t invalidCellTemperature[BS_NR_OF_STRINGS][BS_NR_OF_MODULES]
uint16_t nrValidTemperatures[BS_NR_OF_STRINGS]
uint16_t nrValidCellVoltages[BS_NR_OF_STRINGS]
int16_t cellVoltage_mV[BS_NR_OF_STRINGS][BS_NR_OF_BAT_CELLS]
uint64_t invalidCellVoltage[BS_NR_OF_STRINGS][BS_NR_OF_MODULES]
DATA_BLOCK_HEADER_s header
int32_t packVoltage_mV[BS_NR_OF_STRINGS]
uint16_t nrOpenWires[BS_NR_OF_STRINGS]
DATA_BLOCK_HEADER_s header
uint8_t openwire[BS_NR_OF_STRINGS][BS_NR_OF_MODULES *(BS_NR_OF_CELLS_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]
int16_t openWirePup[BS_NR_OF_STRINGS][BS_NR_OF_BAT_CELLS]
int32_t openWireDelta[BS_NR_OF_STRINGS][BS_NR_OF_BAT_CELLS]
int16_t openWirePdown[BS_NR_OF_STRINGS][BS_NR_OF_BAT_CELLS]
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