foxBMS  1.2.0
The foxBMS Battery Management System API Documentation
ltc_6806.c File Reference

Driver for the LTC monitoring chip. More...

#include "ltc.h"
#include "ltc_6806_cfg.h"
#include "HL_spi.h"
#include "HL_system.h"
#include "database.h"
#include "diag.h"
#include "io.h"
#include "ltc_pec.h"
#include "pex.h"
#include "os.h"
#include "afe_plausibility.h"
Include dependency graph for ltc_6806.c:

Go to the source code of this file.

Macros

#define LTC_FUEL_CELL_LSB_RESOLUTION_mV   (1.5f)
 
#define LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV   ((int16_t)((0x7FF * LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
 
#define LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV    ((int16_t)((((~0x001) + 1) & 0x7FF) * (-LTC_FUEL_CELL_LSB_RESOLUTION_mV)))
 
#define LTC_PORT_EXPANDER_TI_INPUT_REG_ADR   (0x00u)
 
#define LTC_PORT_EXPANDER_TI_OUTPUT_REG_ADR   (0x01u)
 
#define LTC_PORT_EXPANDER_TI_CONFIG_REG_ADR   (0x03u)
 

Functions

static void LTC_SetFirstMeasurementCycleFinished (LTC_STATE_s *ltc_state)
 sets the measurement initialization status. More...
 
static void LTC_Initialize_Database (LTC_STATE_s *ltc_state)
 in the database, initializes the fields related to the LTC drivers. More...
 
static void LTC_SaveLastStates (LTC_STATE_s *ltc_state)
 Saves the last state and the last substate. More...
 
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 More...
 
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 More...
 
static void LTC_ResetErrorTable (LTC_STATE_s *ltc_state)
 resets the error table. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
static uint32_t LTC_GetSPIClock (SPI_INTERFACE_CONFIG_s *pSpiInterface)
 gets the frequency of the SPI clock. More...
 
static void LTC_SetTransferTimes (LTC_STATE_s *ltc_state)
 sets the transfer time needed to receive/send data with the LTC daisy-chain. More...
 
static LTC_RETURN_TYPE_e LTC_CheckStateRequest (LTC_STATE_s *ltc_state, LTC_REQUEST_s statereq)
 checks the state requests that are made. More...
 
void LTC_SaveVoltages (LTC_STATE_s *ltc_state, uint8_t stringNumber)
 stores the measured voltages in the database. More...
 
void LTC_SaveTemperatures (LTC_STATE_s *ltc_state, uint8_t stringNumber)
 stores the measured temperatures and the measured multiplexer feedbacks in the database. More...
 
void LTC_SaveAllGPIOMeasurement (LTC_STATE_s *ltc_state)
 stores the measured GPIOs in the database. More...
 
uint8_t LTC_CheckReEntrance (LTC_STATE_s *ltc_state)
 re-entrance check of LTC state machine trigger function More...
 
LTC_REQUEST_s LTC_GetStateRequest (LTC_STATE_s *ltc_state)
 gets the current state request. More...
 
LTC_STATEMACH_e LTC_GetState (LTC_STATE_s *ltc_state)
 gets the current state. More...
 
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. More...
 
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. More...
 
void LTC_Trigger (LTC_STATE_s *ltc_state)
 trigger function for the LTC driver state machine. More...
 
bool LTC_IsFirstMeasurementCycleFinished (LTC_STATE_s *ltc_state)
 gets the measurement initialization status. More...
 
void LTC_monitoringPinInit (void)
 Sets the transceiver pins to enable LTC6820 IC. More...
 

Variables

static uint16_t ltc_used_cells_index [BS_NR_OF_STRINGS] = {0}
 
static LTC_OPENWIRE_DETECTION_s ltc_openWireDetection = {0}
 
static LTC_ERRORTABLE_s ltc_errorTable = {0}
 
static const AFE_PLAUSIBILITY_VALUES_s ltc_plausibleCellVoltages6806
 
LTC_STATE_s ltc_stateBase
 
static uint16_t ltc_cmdWRCFG [4] = {0x00, 0x01, 0x3D, 0x6E}
 
static uint16_t ltc_cmdRDCFG [4] = {0x00, 0x02, 0x2B, 0x0A}
 
static uint16_t ltc_cmdRDCVA_Fuelcell [4] = {0x00, 0x04, 0x07, 0xC2}
 
static uint16_t ltc_cmdRDCVB_Fuelcell [4] = {0x00, 0x05, 0x8C, 0xF0}
 
static uint16_t ltc_cmdRDCVC_Fuelcell [4] = {0x00, 0x06, 0x9A, 0x94}
 
static uint16_t ltc_cmdRDCVD_Fuelcell [4] = {0x00, 0x07, 0x11, 0xA6}
 
static uint16_t ltc_cmdRDCVE_Fuelcell [4] = {0x00, 0x08, 0x5E, 0x52}
 
static uint16_t ltc_cmdRDCVF_Fuelcell [4] = {0x00, 0x09, 0xD5, 0x60}
 
static uint16_t ltc_cmdRDCVG_Fuelcell [4] = {0x00, 0x0A, 0xC3, 0x04}
 
static uint16_t ltc_cmdRDCVH_Fuelcell [4] = {0x00, 0x0B, 0x48, 0x36}
 
static uint16_t ltc_cmdRDCVI_Fuelcell [4] = {0x00, 0x0C, 0xEF, 0xCC}
 
static uint16_t ltc_cmdADCV_normal_Fuelcell [4] = {0x04, 0x40, 0xED, 0xB0}
 
static uint16_t ltc_BC_cmdADOW_PUP_100ms_fuelcell [4]
 
static uint16_t ltc_BC_cmdADOW_PDOWN_100ms_fuelcell [4]
 
uint16_t ltc_RxPecBuffer [LTC_N_BYTES_FOR_DATA_TRANSMISSION] = {0}
 
uint16_t ltc_TxPecBuffer [LTC_N_BYTES_FOR_DATA_TRANSMISSION] = {0}
 
static DATA_BLOCK_CELL_VOLTAGE_s ltc_cellvoltage = {.header.uniqueId = DATA_BLOCK_ID_CELL_VOLTAGE_BASE}
 
static DATA_BLOCK_CELL_TEMPERATURE_s ltc_celltemperature = {.header.uniqueId = DATA_BLOCK_ID_CELL_TEMPERATURE_BASE}
 
static DATA_BLOCK_ALL_GPIO_VOLTAGES_s ltc_allgpiovoltage = {.header.uniqueId = DATA_BLOCK_ID_ALL_GPIO_VOLTAGES_BASE}
 
static DATA_BLOCK_OPEN_WIRE_s ltc_openwire = {.header.uniqueId = DATA_BLOCK_ID_OPEN_WIRE_BASE}
 

Detailed Description

Driver for the LTC monitoring chip.

SPDX-License-Identifier: BSD-3-Clause

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

We kindly request you to use one or more of the following phrases to refer to foxBMS in your hardware, software, documentation or advertising materials:

  • ″This product uses parts of foxBMS®″
  • ″This product includes parts of foxBMS®″
  • ″This product is derived from foxBMS®″
Author
foxBMS Team
Date
2019-09-01 (date of creation)
Updated
2021-10-04 (date of last update)
Prefix
LTC

Definition in file ltc_6806.c.

Macro Definition Documentation

◆ LTC_FUEL_CELL_LSB_RESOLUTION_mV

#define LTC_FUEL_CELL_LSB_RESOLUTION_mV   (1.5f)

Value of the LSB in mV

Definition at line 86 of file ltc_6806.c.

◆ LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV

#define LTC_FUELCELL_NEGATIVE_FULLSCALE_RANGE_mV    ((int16_t)((((~0x001) + 1) & 0x7FF) * (-LTC_FUEL_CELL_LSB_RESOLUTION_mV)))

Value for negative full scale measurement for fuel cell

Definition at line 99 of file ltc_6806.c.

◆ LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV

#define LTC_FUELCELL_POSITIVE_FULLSCALE_RANGE_mV   ((int16_t)((0x7FF * LTC_FUEL_CELL_LSB_RESOLUTION_mV)))

Value for positive full scale measurement for fuel cell

Definition at line 94 of file ltc_6806.c.

◆ LTC_PORT_EXPANDER_TI_CONFIG_REG_ADR

#define LTC_PORT_EXPANDER_TI_CONFIG_REG_ADR   (0x03u)

TI port expander register addresses

Definition at line 79 of file ltc_6806.c.

◆ LTC_PORT_EXPANDER_TI_INPUT_REG_ADR

#define LTC_PORT_EXPANDER_TI_INPUT_REG_ADR   (0x00u)

TI port expander register addresses

Definition at line 77 of file ltc_6806.c.

◆ LTC_PORT_EXPANDER_TI_OUTPUT_REG_ADR

#define LTC_PORT_EXPANDER_TI_OUTPUT_REG_ADR   (0x01u)

TI port expander register addresses

Definition at line 78 of file ltc_6806.c.

Function Documentation

◆ LTC_CheckReEntrance()

uint8_t LTC_CheckReEntrance ( LTC_STATE_s ltc_state)

re-entrance check of LTC state machine trigger function

This function is not re-entrant and should only be called time- or event-triggered. It increments the triggerentry counter from the state variable ltc_state. It should never be called by two different processes, so if it is the case, triggerentry should never be higher than 0 when this function is called.

Parameters
ltc_statestate of the ltc state machine
Returns
retval 0 if no further instance of the function is active, 0xff else

Definition at line 515 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_CheckStateRequest()

static LTC_RETURN_TYPE_e LTC_CheckStateRequest ( LTC_STATE_s ltc_state,
LTC_REQUEST_s  statereq 
)
static

checks the state requests that are made.

This function checks the validity of the state requests. The results of the checked is returned immediately.

Parameters
ltc_statestate of the ltc state machine
statereqstate request to be checked
Returns
result of the state request that was made, taken from LTC_RETURN_TYPE_e

Definition at line 1698 of file ltc_6806.c.

◆ LTC_CondBasedStateTransition()

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 
)
static

condition-based state transition depending on retVal

If retVal is STD_OK, after timer_ms_ok is elapsed the LTC statemachine will transition into state_ok and substate_ok, otherwise after timer_ms_nok the statemachine will transition to state_nok and substate_nok. Depending on value of retVal the corresponding diagnosis entry will be called.

Parameters
ltc_statestate of the ltc state machine
retValcondition to determine if statemachine will transition into ok or nok states
diagCodesymbolic IDs for diagnosis entry, called with DIAG_EVENT_OK if retVal is STD_OK, DIAG_EVENT_NOT_OK otherwise
state_okstate to transition into if retVal is STD_OK
substate_oksubstate to transition into if retVal is STD_OK
timer_ms_oktransition into state_ok, substate_ok after timer_ms_ok elapsed
state_nokstate to transition into if retVal is STD_NOT_OK
substate_noksubstate to transition into if retVal is STD_NOT_OK
timer_ms_noktransition into state_nok, substate_nok after timer_ms_nok elapsed

Definition at line 369 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_GetSPIClock()

static uint32_t LTC_GetSPIClock ( SPI_INTERFACE_CONFIG_s pSpiInterface)
static

gets the frequency of the SPI clock.

This function reads the configuration from the SPI handle directly.

Parameters
pSpiInterfacepointer to SPI configuration
Returns
frequency of the SPI clock

Definition at line 1620 of file ltc_6806.c.

◆ LTC_GetState()

LTC_STATEMACH_e LTC_GetState ( LTC_STATE_s ltc_state)

gets the current state.

This function is used in the functioning of the LTC state machine.

Parameters
ltc_statestate of the ltc state machine
Returns
current state, taken from LTC_STATEMACH_e

Definition at line 558 of file ltc_6806.c.

◆ LTC_GetStateRequest()

LTC_REQUEST_s LTC_GetStateRequest ( LTC_STATE_s ltc_state)

gets the current state request.

This function is used in the functioning of the LTC state machine.

Parameters
ltc_statestate of the ltc state machine
Returns
retval current state request, taken from LTC_STATE_REQUEST_e

Definition at line 538 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_Init()

static STD_RETURN_TYPE_e LTC_Init ( SPI_INTERFACE_CONFIG_s pSpiInterface,
uint16_t *  pTxBuff,
uint16_t *  pRxBuff,
uint32_t  frameLength 
)
static

initialize the daisy-chain.

To initialize the LTC6804 daisy-chain, a dummy byte (0x00) is sent.

Parameters
pSpiInterfacepointer to SPI configuration
pTxBufftransmit buffer
pRxBuffreceive buffer
frameLengthnumber of words to transmit
Returns
retVal STD_OK if dummy byte was sent correctly by SPI, STD_NOT_OK otherwise

Definition at line 1388 of file ltc_6806.c.

◆ LTC_Initialize_Database()

static void LTC_Initialize_Database ( LTC_STATE_s ltc_state)
static

in the database, initializes the fields related to the LTC drivers.

This function loops through all the LTC-related data fields in the database and sets them to 0. It should be called in the initialization or re-initialization routine of the LTC driver.

Parameters
ltc_statestate of the ltc state machine

Definition at line 296 of file ltc_6806.c.

◆ LTC_IsFirstMeasurementCycleFinished()

bool LTC_IsFirstMeasurementCycleFinished ( LTC_STATE_s ltc_state)

gets the measurement initialization status.

Parameters
ltc_statestate of the ltc state machine
Returns
true if a first measurement cycle was made, false otherwise

Definition at line 1719 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_monitoringPinInit()

void LTC_monitoringPinInit ( void  )

Sets the transceiver pins to enable LTC6820 IC.

Definition at line 1738 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_ResetErrorTable()

static void LTC_ResetErrorTable ( LTC_STATE_s ltc_state)
static

resets the error table.

This function should be called during initialization or before starting a new measurement cycle

Parameters
ltc_statestate of the ltc state machine

Definition at line 1440 of file ltc_6806.c.

◆ LTC_RX()

static STD_RETURN_TYPE_e LTC_RX ( uint16_t *  Command,
SPI_INTERFACE_CONFIG_s pSpiInterface,
uint16_t *  pTxBuff,
uint16_t *  pRxBuff,
uint32_t  frameLength 
)
static

send command to the LTC daisy-chain and receives data from the LTC daisy-chain.

This is the core function to receive data from the LTC6804 daisy-chain. A 2 byte command is sent with the corresponding PEC. Example: read configuration register (RDCFG). Only command has to be set, the function calculates the PEC automatically. The data send is: 2 bytes (COMMAND) 2 bytes (PEC) The data received is: 6 bytes (LTC1) 2 bytes (PEC) + 6 bytes (LTC2) 2 bytes (PEC) + 6 bytes (LTC3) 2 bytes (PEC) + ... + 6 bytes (LTC{LTC_N_LTC}) 2 bytes (PEC)

The function does not check the PECs. This has to be done elsewhere.

Parameters
Commandcommand sent to the daisy-chain
pSpiInterfacepointer to SPI configuration
pTxBufftransmit buffer
pRxBuffreceive buffer
frameLengthnumber of words to transmit
Returns
statusSPI STD_OK if SPI transmission is OK, STD_NOT_OK otherwise

Definition at line 1584 of file ltc_6806.c.

◆ LTC_RX_PECCheck()

static STD_RETURN_TYPE_e LTC_RX_PECCheck ( LTC_STATE_s ltc_state,
uint16_t *  DataBufferSPI_RX_with_PEC,
uint8_t  stringNumber 
)
static

checks if the data received from the daisy-chain is not corrupt.

This function computes the PEC (CRC) from the data received by the daisy-chain. It compares it with the PEC sent by the LTCs. If there are errors, the array the error table is updated to locate the LTCs in daisy-chain that transmitted corrupt data.

Parameters
ltc_statestate of the ltc state machine
DataBufferSPI_RX_with_PECdata obtained from the SPI transmission
stringNumberstring addressed
Returns
retVal STD_OK if PEC check is OK, STD_NOT_OK otherwise

Definition at line 1521 of file ltc_6806.c.

◆ LTC_SaveAllGPIOMeasurement()

void LTC_SaveAllGPIOMeasurement ( LTC_STATE_s ltc_state)

stores the measured GPIOs in the database.

This function loops through the data of all modules in the LTC daisy-chain that are stored in the ltc_allgpiovoltage buffer and writes them in the database. At each write iteration, the variable named "state" and related to voltages in the database is incremented.

Parameters
ltc_statestate of the ltc state machine

Definition at line 497 of file ltc_6806.c.

◆ LTC_SaveLastStates()

static void LTC_SaveLastStates ( LTC_STATE_s ltc_state)
static

Saves the last state and the last substate.

Parameters
ltc_statestate of the ltc state machine

Definition at line 332 of file ltc_6806.c.

◆ LTC_SaveRXtoVoltagebuffer_Fuelcell()

static void LTC_SaveRXtoVoltagebuffer_Fuelcell ( LTC_STATE_s ltc_state,
uint16_t *  pRxBuff,
uint8_t  registerSet,
uint8_t  stringNumber 
)
static

saves the voltage values read from the LTC daisy-chain.

After a voltage measurement was initiated to measure the voltages of the cells, the result is read via SPI from the daisy-chain. There are 6 register to read _(A,B,C,D,E,F,G,H,I) to get all cell voltages. Only one register can be read at a time. This function is called to store the result from the transmission in a buffer.

Parameters
ltc_statestate of the ltc state machine
pRxBuffreceive buffer
registerSetvoltage register that was read (voltage register A,B,C,D,E,F,G,H or I)
stringNumberstring addressed

Definition at line 1285 of file ltc_6806.c.

◆ LTC_SaveTemperatures()

void LTC_SaveTemperatures ( LTC_STATE_s ltc_state,
uint8_t  stringNumber 
)

stores the measured temperatures and the measured multiplexer feedbacks in the database.

This function loops through the temperature and multiplexer feedback data of all modules in the LTC daisy-chain that are stored in the LTC_MultiplexerVoltages buffer and writes them in the database. At each write iteration, the variables named "state" and related to temperatures and multiplexer feedbacks in the database are incremented.

Parameters
ltc_statestate of the ltc state machine
stringNumberstring addressed

Definition at line 449 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_SaveVoltages()

void LTC_SaveVoltages ( LTC_STATE_s ltc_state,
uint8_t  stringNumber 
)

stores the measured voltages in the database.

This function loops through the data of all modules in the LTC daisy-chain that are stored in the LTC_CellVoltages buffer and writes them in the database. At each write iteration, the variable named "state" and related to voltages in the database is incremented.

Parameters
ltc_statestate of the ltc state machine
stringNumberstring addressed

Definition at line 389 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_SetFirstMeasurementCycleFinished()

static void LTC_SetFirstMeasurementCycleFinished ( LTC_STATE_s ltc_state)
static

sets the measurement initialization status.

Definition at line 1732 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_SetStateRequest()

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.

This function is used to make a state request to the state machine,e.g, start voltage measurement, read result of voltage measurement, re-initialization It calls LTC_CheckStateRequest() to check if the request is valid. The state request is rejected if is not valid. The result of the check is returned immediately, so that the requester can act in case it made a non-valid state request.

Parameters
ltc_statestate of the ltc state machine
statereqstate request to set
Returns
current state request, taken from LTC_STATE_REQUEST_e

Definition at line 596 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_SetTransferTimes()

static void LTC_SetTransferTimes ( LTC_STATE_s ltc_state)
static

sets the transfer time needed to receive/send data with the LTC daisy-chain.

This function gets the clock frequency and uses the number of LTCs in the daisy-chain.

Parameters
ltc_statestate of the ltc state machine

Definition at line 1661 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_StartOpenWireMeasurement()

static STD_RETURN_TYPE_e LTC_StartOpenWireMeasurement ( SPI_INTERFACE_CONFIG_s pSpiInterface,
LTC_ADCMODE_e  adcMode,
uint8_t  PUP 
)
static

tells LTC daisy-chain to start measuring the voltage on GPIOS.

This function sends an instruction to the daisy-chain via SPI to start the measurement.

Parameters
pSpiInterfacepointer to SPI configuration
adcModeLTC ADCmeasurement mode (fast, normal or filtered)
PUPpull-up bit for pull-up or pull-down current (0: pull-down, 1: pull-up)
Returns
retVal STD_OK if command was sent correctly by SPI, STD_NOT_OK otherwise

Definition at line 1489 of file ltc_6806.c.

◆ LTC_StartVoltageMeasurement()

static STD_RETURN_TYPE_e LTC_StartVoltageMeasurement ( SPI_INTERFACE_CONFIG_s pSpiInterface,
LTC_ADCMODE_e  adcMode,
LTC_ADCMEAS_CHAN_e  adcMeasCh 
)
static

tells the LTC daisy-chain to start measuring the voltage on all cells.

This function sends an instruction to the daisy-chain via SPI, in order to start voltage measurement for all cells.

Parameters
pSpiInterfacepointer to SPI configuration
adcModeLTC ADCmeasurement mode (fast, normal or filtered)
adcMeasChnumber of cell voltage measured (2 cells or all cells)
Returns
retVal STD_OK if dummy byte was sent correctly by SPI, STD_NOT_OK otherwise

Definition at line 1466 of file ltc_6806.c.

◆ LTC_StateTransition()

static void LTC_StateTransition ( LTC_STATE_s ltc_state,
LTC_STATEMACH_e  state,
uint8_t  substate,
uint16_t  timer_ms 
)
static

function for setting LTC_Trigger state transitions

Parameters
ltc_statestate of the ltc state machine
statestate to transition into
substatesubstate to transition into
timer_mstransition into state, substate after timer elapsed

Definition at line 345 of file ltc_6806.c.

◆ LTC_TransferStateRequest()

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.

This function takes the current state request from ltc_state and transfers it to the state machine. It resets the value from ltc_state to LTC_STATE_NO_REQUEST

Parameters
ltc_statestate of the ltc state machine
pBusIDptrbus ID, main or backup (deprecated)
pAdcModeptrLTC ADCmeasurement mode (fast, normal or filtered)
pAdcMeasChptrnumber of channels measured for GPIOS (one at a time for multiplexers or all five GPIOs)
Returns
retVal current state request, taken from LTC_STATE_REQUEST_e

Definition at line 576 of file ltc_6806.c.

Here is the call graph for this function:

◆ LTC_Trigger()

void LTC_Trigger ( LTC_STATE_s ltc_state)

trigger function for the LTC driver state machine.

This function contains the sequence of events in the LTC state machine. It must be called time-triggered, every 1ms.

Definition at line 611 of file ltc_6806.c.

Here is the call graph for this function:

Variable Documentation

◆ ltc_allgpiovoltage

DATA_BLOCK_ALL_GPIO_VOLTAGES_s ltc_allgpiovoltage = {.header.uniqueId = DATA_BLOCK_ID_ALL_GPIO_VOLTAGES_BASE}
static

local copies of database tables

Definition at line 119 of file ltc_6806.c.

◆ ltc_BC_cmdADOW_PDOWN_100ms_fuelcell

uint16_t ltc_BC_cmdADOW_PDOWN_100ms_fuelcell[4]
static
Initial value:
=
{0x06, 0xC0, 0x32, 0x3C}

Broadcast, Pull-down current, All cells, normal mode, 100ms

Definition at line 228 of file ltc_6806.c.

◆ ltc_BC_cmdADOW_PUP_100ms_fuelcell

uint16_t ltc_BC_cmdADOW_PUP_100ms_fuelcell[4]
static
Initial value:
=
{0x07, 0xC0, 0xBA, 0x70}

Broadcast, Pull-up current, All cells, normal mode, 100ms

Definition at line 226 of file ltc_6806.c.

◆ ltc_celltemperature

DATA_BLOCK_CELL_TEMPERATURE_s ltc_celltemperature = {.header.uniqueId = DATA_BLOCK_ID_CELL_TEMPERATURE_BASE}
static

local copies of database tables

Definition at line 118 of file ltc_6806.c.

◆ ltc_cellvoltage

DATA_BLOCK_CELL_VOLTAGE_s ltc_cellvoltage = {.header.uniqueId = DATA_BLOCK_ID_CELL_VOLTAGE_BASE}
static

local copies of database tables

Definition at line 117 of file ltc_6806.c.

◆ ltc_cmdADCV_normal_Fuelcell

uint16_t ltc_cmdADCV_normal_Fuelcell[4] = {0x04, 0x40, 0xED, 0xB0}
static

All cells, normal mode

Definition at line 202 of file ltc_6806.c.

◆ ltc_cmdRDCFG

uint16_t ltc_cmdRDCFG[4] = {0x00, 0x02, 0x2B, 0x0A}
static

Definition at line 182 of file ltc_6806.c.

◆ ltc_cmdRDCVA_Fuelcell

uint16_t ltc_cmdRDCVA_Fuelcell[4] = {0x00, 0x04, 0x07, 0xC2}
static

Definition at line 189 of file ltc_6806.c.

◆ ltc_cmdRDCVB_Fuelcell

uint16_t ltc_cmdRDCVB_Fuelcell[4] = {0x00, 0x05, 0x8C, 0xF0}
static

Definition at line 190 of file ltc_6806.c.

◆ ltc_cmdRDCVC_Fuelcell

uint16_t ltc_cmdRDCVC_Fuelcell[4] = {0x00, 0x06, 0x9A, 0x94}
static

Definition at line 191 of file ltc_6806.c.

◆ ltc_cmdRDCVD_Fuelcell

uint16_t ltc_cmdRDCVD_Fuelcell[4] = {0x00, 0x07, 0x11, 0xA6}
static

Definition at line 192 of file ltc_6806.c.

◆ ltc_cmdRDCVE_Fuelcell

uint16_t ltc_cmdRDCVE_Fuelcell[4] = {0x00, 0x08, 0x5E, 0x52}
static

Definition at line 193 of file ltc_6806.c.

◆ ltc_cmdRDCVF_Fuelcell

uint16_t ltc_cmdRDCVF_Fuelcell[4] = {0x00, 0x09, 0xD5, 0x60}
static

Definition at line 194 of file ltc_6806.c.

◆ ltc_cmdRDCVG_Fuelcell

uint16_t ltc_cmdRDCVG_Fuelcell[4] = {0x00, 0x0A, 0xC3, 0x04}
static

Definition at line 195 of file ltc_6806.c.

◆ ltc_cmdRDCVH_Fuelcell

uint16_t ltc_cmdRDCVH_Fuelcell[4] = {0x00, 0x0B, 0x48, 0x36}
static

Definition at line 196 of file ltc_6806.c.

◆ ltc_cmdRDCVI_Fuelcell

uint16_t ltc_cmdRDCVI_Fuelcell[4] = {0x00, 0x0C, 0xEF, 0xCC}
static

Definition at line 197 of file ltc_6806.c.

◆ ltc_cmdWRCFG

uint16_t ltc_cmdWRCFG[4] = {0x00, 0x01, 0x3D, 0x6E}
static

Definition at line 181 of file ltc_6806.c.

◆ ltc_errorTable

LTC_ERRORTABLE_s ltc_errorTable = {0}
static

init in LTC_ResetErrorTable-function

Definition at line 124 of file ltc_6806.c.

◆ ltc_openwire

DATA_BLOCK_OPEN_WIRE_s ltc_openwire = {.header.uniqueId = DATA_BLOCK_ID_OPEN_WIRE_BASE}
static

local copies of database tables

Definition at line 120 of file ltc_6806.c.

◆ ltc_openWireDetection

LTC_OPENWIRE_DETECTION_s ltc_openWireDetection = {0}
static

stores information on the detected open wires locally

Definition at line 123 of file ltc_6806.c.

◆ ltc_plausibleCellVoltages6806

const AFE_PLAUSIBILITY_VALUES_s ltc_plausibleCellVoltages6806
static
Initial value:
= {
.maximumPlausibleVoltage_mV = 5000,
.minimumPlausibleVoltage_mV = -5000,
}

local definition of plausible cell voltage values for the LTC 6806

Definition at line 127 of file ltc_6806.c.

◆ ltc_RxPecBuffer

uint16_t ltc_RxPecBuffer[LTC_N_BYTES_FOR_DATA_TRANSMISSION] = {0}

PEC buffer for RX and TX

Definition at line 108 of file ltc_6806.c.

◆ ltc_stateBase

LTC_STATE_s ltc_stateBase

This variable contains the internal state of the LTC state machine.

Definition at line 134 of file ltc_6806.c.

◆ ltc_TxPecBuffer

uint16_t ltc_TxPecBuffer[LTC_N_BYTES_FOR_DATA_TRANSMISSION] = {0}

PEC buffer for RX and TX

Definition at line 109 of file ltc_6806.c.

◆ ltc_used_cells_index

uint16_t ltc_used_cells_index[BS_NR_OF_STRINGS] = {0}
static

index of used cells

Definition at line 114 of file ltc_6806.c.