69 #define ADI_AFE_WAKEUP_TIME ((ADI_DAISY_CHAIN_WAKE_UP_TIME_us / ADI_COEFFICIENT_US_TO_MS) + 1u)
70 #define ADI_ISO_SPI_WAKEUP_TIME ((ADI_DAISY_CHAIN_READY_TIME_us / ADI_COEFFICIENT_US_TO_MS) + 1u)
206 for (uint16_t m = 0; m <
ADI_N_ADI; m++) {
220 for (uint16_t m = 0; m <
ADI_N_ADI; m++) {
405 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
407 for (uint16_t m = 0; m <
ADI_N_ADI; m++) {
497 uint16_t txData = 0u;
553 for (uint16_t m = 0u; m <
ADI_N_ADI; m++) {
557 uint8_t flagComp = 0u;
559 if (flagComp != 1u) {
576 #ifdef UNITY_UNIT_TEST
577 extern void TEST_ADI_ClearAllFlagsInStatusRegisterGroupC(
ADI_STATE_s *adiState) {
580 extern void TEST_ADI_DisableBalancingOnStartup(
ADI_STATE_s *adiState) {
583 extern void TEST_ADI_GetRevisionOfAllIcsInString(
ADI_STATE_s *adiState) {
586 extern void TEST_ADI_GetSerialIdsOfAllIcsInString(
ADI_STATE_s *adiState) {
589 extern void TEST_ADI_InitializeConfiguration(
ADI_STATE_s *adiState) {
592 extern void TEST_ADI_ResetErrorTable(
ADI_STATE_s *adiState) {
595 extern void TEST_ADI_StartContinuousCellVoltageMeasurements(
ADI_STATE_s *adiState) {
598 extern void TEST_ADI_WakeUpDaisyChain(
ADI_STATE_s *adiState) {
601 extern void TEST_ADI_ResetIirFilterOnStartup(
ADI_STATE_s *adiState) {
uint16_t adi_command[ADI_COMMAND_DEFINITION_LENGTH]
uint8_t adi_dataReceive[BS_NR_OF_MODULES_PER_STRING *ADI_MAX_REGISTER_SIZE_IN_BYTES]
uint8_t adi_writeGlobal[ADI_MAX_REGISTER_SIZE_IN_BYTES]
uint8_t adi_clearFlagData[ADI_CLRFLAG_DATA_LENGTH]
Header for the buffers used by the driver for the ADI analog front-end.
const uint16_t adi_cmdWrpwma[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdRdstatc[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdMute[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdAdcv[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdClrflag[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdWrpwmb[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdRdstate[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdSrst[ADI_COMMAND_DEFINITION_LENGTH]
const uint16_t adi_cmdRdsid[ADI_COMMAND_DEFINITION_LENGTH]
Header file of some software.
Headers for the driver for the ades183x analog front-end.
#define ADI_STCR0_CS4FLT_MASK
#define ADI_STCR0_CS3FLT_POS
#define ADI_CFGRA5_FC_0_2_POS
#define ADI_DEFAULT_DCC_9_16_SETUP
#define ADI_STCR0_CS8FLT_POS
#define ADI_CFGRB0_VUV_0_7_MASK
#define ADI_STCR0_CS5FLT_MASK
#define ADI_DEFAULT_DCT0_0_5_SETUP
#define ADI_STCR5_SLEEP_MASK
#define ADI_CFGRB1_VOV_0_3_MASK
#define ADI_DEFAULT_VUV_8_11_SETUP
#define ADI_CFGRB3_DTRNG_MASK
#define ADI_CFGRA1_FLAG_D_0_7_POS
#define ADI_DEFAULT_FLAG_D_SETUP
#define ADI_DEFAULT_SNAP_ST_SETUP
#define ADI_STCR1_CS16FLT_MASK
#define ADI_STCR1_CS16FLT_POS
#define ADI_STER5_REV_0_3_MASK
#define ADI_CFGRA4_GPO_9_10_POS
#define ADI_DEFAULT_MUTE_ST_SETUP
#define ADI_STCR5_OSCCHK_POS
#define ADI_STCR0_CS4FLT_POS
#define ADI_STCR4_SMED_MASK
#define ADI_STCR4_CED_POS
#define ADI_CFGRB5_DCC_9_16_MASK
#define ADI_STCR5_OSCCHK_MASK
#define ADI_STCR0_CS6FLT_POS
#define ADI_STCR4_VD_UV_POS
#define ADI_DEFAULT_IIR_SETUP
#define ADI_CFGRB4_DCC_1_8_POS
#define ADI_STCR5_SPIFLT_MASK
#define ADI_CFGRB4_DCC_1_8_MASK
#define ADI_IIR_FILTER_PARAMETER_2
#define ADI_CFGRA5_MUTE_ST_POS
#define ADI_ADCV_RSTF_POS
#define ADI_DEFAULT_VOV_0_3_SETUP
#define ADI_ADCV_RSTF_LEN
#define ADI_CFGRA5_SNAP_ST_MASK
#define ADI_DEFAULT_OWA_SETUP
#define ADI_START_AUX_CHANNEL
#define ADI_STER5_REV_0_3_POS
#define ADI_STCR0_CS2FLT_POS
#define ADI_STCR4_VA_OV_POS
#define ADI_STCR5_VDE_MASK
#define ADI_CFGRA5_COMM_BK_POS
#define ADI_STCR4_VD_UV_MASK
#define ADI_STCR1_CS9FLT_MASK
#define ADI_STCR5_SPIFLT_POS
#define ADI_CFGRA4_GPO_9_10_MASK
#define ADI_STCR1_CS14FLT_POS
#define ADI_STCR5_SLEEP_POS
#define ADI_CFGRB3_DTMEN_MASK
#define ADI_CFGRB2_VOV_4_11_MASK
#define ADI_DEFAULT_VUV_0_7_SETUP
#define ADI_STCR0_CS7FLT_POS
#define ADI_CFGRB3_DCT0_0_5_POS
#define ADI_CFGRB3_DTRNG_POS
#define ADI_STCR1_CS13FLT_MASK
#define ADI_CFGRB3_DTMEN_POS
#define ADI_STCR4_VA_OV_MASK
#define ADI_CFGRA0_CTH_0_2_MASK
#define ADI_REGISTER_OFFSET5
#define ADI_STCR0_CS1FLT_MASK
#define ADI_CFGRA5_FC_0_2_MASK
#define ADI_STCR1_CS13FLT_POS
#define ADI_STCR5_COMP_MASK
#define ADI_ADCV_OW01_POS
#define ADI_DEFAULT_OWRNG_SETUP
#define ADI_STCR0_CS6FLT_MASK
#define ADI_STCR4_CED_MASK
#define ADI_CFGRB3_DCT0_0_5_MASK
#define ADI_STCR4_VD_OV_MASK
#define ADI_DEFAULT_DTRNG_SETUP
#define ADI_STCR0_CS3FLT_MASK
#define ADI_CFGRA0_REFON_POS
#define ADI_STCR1_CS12FLT_MASK
#define ADI_STCR5_THSD_MASK
#define ADI_STCR5_THSD_POS
#define ADI_CFGRB1_VUV_8_11_POS
#define ADI_STCR4_VA_UV_POS
#define ADI_CFGRB1_VUV_8_11_MASK
#define ADI_CFGRA5_COMM_BK_MASK
#define ADI_STCR4_SMED_POS
#define ADI_DEFAULT_GPO_9_10_SETUP
#define ADI_CFGRB0_VUV_0_7_POS
#define ADI_CFGRA0_CTH_0_2_POS
#define ADI_CFGRA2_SOAKON_POS
#define ADI_STCR4_CMED_MASK
#define ADI_STCR4_VA_UV_MASK
#define ADI_STCR0_CS2FLT_MASK
#define ADI_STCR0_CS7FLT_MASK
#define ADI_IIR_SETTLING_TIME_ms
#define ADI_CFGRA0_REFON_MASK
#define ADI_REGISTER_OFFSET3
#define ADI_STCR5_COMP_POS
#define ADI_STCR1_CS15FLT_MASK
#define ADI_DEFAULT_SOAKON_SETUP
#define ADI_STCR5_TMODCHK_POS
#define ADI_CFGRA2_OWRNG_MASK
#define ADI_STCR1_CS10FLT_POS
#define ADI_DEFAULT_REFON_SETUP
#define ADI_CFGRA2_OWA_0_2_POS
#define ADI_DEFAULT_COMM_BK_SETUP
#define ADI_CFGRA5_MUTE_ST_MASK
#define ADI_STCR4_CMED_POS
#define ADI_STCR5_VDEL_POS
#define ADI_ADCV_CONT_POS
#define ADI_STCR5_VDE_POS
#define ADI_ADCV_CONT_LEN
#define ADI_REGISTER_OFFSET0
#define ADI_STCR5_VDEL_MASK
#define ADI_STCR0_CS1FLT_POS
#define ADI_STCR1_CS11FLT_MASK
#define ADI_DEFAULT_DCC_1_8_SETUP
#define ADI_CFGRA1_FLAG_D_0_7_MASK
#define ADI_STCR4_SED_MASK
#define ADI_DEFAULT_CTH_COMPARISON_THRESHOLD
#define ADI_STCR0_CS8FLT_MASK
#define ADI_ADCV_OW01_LEN
#define ADI_CFGRA3_GPO_1_8_POS
#define ADI_REGISTER_OFFSET1
#define ADI_DEFAULT_VOV_4_11_SETUP
#define ADI_STCR1_CS9FLT_POS
#define ADI_STCR1_CS15FLT_POS
@ ADI_PEC_NO_FAULT_INJECTION
#define ADI_CFGRA3_GPO_1_8_MASK
#define ADI_STCR1_CS11FLT_POS
#define ADI_CFGRA5_SNAP_ST_POS
#define ADI_DEFAULT_DTMEN_SETUP
#define ADI_CFGRB1_VOV_0_3_POS
#define ADI_CFGRB5_DCC_9_16_POS
#define ADI_STCR1_CS10FLT_MASK
#define ADI_CFGRA2_OWA_0_2_MASK
#define ADI_CFGRA2_OWRNG_POS
#define ADI_STCR5_TMODCHK_MASK
#define ADI_DEFAULT_GPO_1_8_SETUP
#define ADI_STCR4_SED_POS
#define ADI_STCR0_CS5FLT_POS
#define ADI_TSOFTRESET_ms
#define ADI_CFGRB2_VOV_4_11_POS
#define ADI_STCR1_CS12FLT_POS
#define ADI_STCR1_CS14FLT_MASK
#define ADI_REGISTER_OFFSET4
#define ADI_REGISTER_OFFSET2
#define ADI_CFGRA2_SOAKON_MASK
#define ADI_STCR4_VD_OV_POS
void ADI_WriteCommandConfigurationBits(uint16_t *configuredCommand, uint8_t position, uint8_t length, uint16_t configuration)
write configuration bits in commands (e.g., channel in ADAX command).
void ADI_WriteDataBits(uint8_t *pSentData, uint8_t dataToWrite, uint8_t position, uint8_t mask)
Helper function to write specific bits in data to be sent.
void ADI_ReadDataBits(uint8_t receivedData, uint8_t *pDataToRead, uint8_t position, uint8_t mask)
Helper function to read specific bits from received data.
void ADI_ReadRegister(uint16_t *registerToRead, uint8_t *data, ADI_STATE_s *adiState)
send command to the ades183x daisy-chain to read a register.
void ADI_ClearCommandCounter(ADI_STATE_s *adiState)
Send RSTCC to AFEs in daisy-chain and clear command counter of AFE driver.
void ADI_StoredConfigurationWriteToAfeGlobal(ADI_STATE_s *adiState)
Sends data in the configuration stored in driver to all AFEs in the daisy chain, for all configuratio...
void ADI_StoredConfigurationFillRegisterDataGlobal(ADI_CFG_REGISTER_SET_e registerSet, uint8_t registerOffset, uint8_t data, uint8_t position, uint8_t mask, ADI_STATE_s *adiState)
Writes data in the configuration stored in AFE driver, for all AFEs in the daisy-chain.
void ADI_SpiTransmitReceiveData(ADI_STATE_s *adiState, uint16_t *pTxBuff, uint16_t *pRxBuff, uint32_t frameLength)
Transmits and receives data on SPI.
void ADI_WriteRegisterGlobal(const uint16_t *registerToWrite, uint8_t *data, ADI_PEC_FAULT_INJECTION_e pecFaultInjection, ADI_STATE_s *adiState)
Write the same 6 bytes to all devices in the daisy-chain.
STD_RETURN_TYPE_e ADI_StoredConfigurationWriteToAfe(ADI_CFG_REGISTER_SET_e registerSet, ADI_STATE_s *adiState)
Sends data in the configuration stored in driver to all AFEs in the daisy chain, for a specific confi...
void ADI_TransmitCommand(uint16_t *command, ADI_STATE_s *adiState)
send command to the ades183x daisy-chain (e.g., start voltage measurement).
void ADI_Wait(uint32_t waitTime)
wait for a certain number of milliseconds
void ADI_CopyCommandBits(const uint16_t *sourceCommand, uint16_t *destinationCommand)
copy command bits in variables.
Headers for the diagnostic driver for the ADI analog front-end.
static void ADI_ResetIirFilterOnStartup(ADI_STATE_s *adiState)
Reset TODO.
static void ADI_WakeUpDaisyChain(ADI_STATE_s *adiState)
Wake up the AFE.
static void ADI_InitializeConfiguration(ADI_STATE_s *adiState)
Initialize the driver configuration.
static void ADI_GetRevisionOfAllIcsInString(ADI_STATE_s *adiState)
TODO.
#define ADI_AFE_WAKEUP_TIME
static void ADI_StartContinuousCellVoltageMeasurements(ADI_STATE_s *adiState)
Start cell voltage measurement.
static void ADI_DisableBalancingOnStartup(ADI_STATE_s *adiState)
Disable balancing.
void ADI_InitializeMeasurement(ADI_STATE_s *adiState)
Implements the initialization for the ades183x driver.
static void ADI_ResetErrorTable(ADI_STATE_s *adiState)
Resets the error table.
static void ADI_GetSerialIdsOfAllIcsInString(ADI_STATE_s *adiState)
TODO.
static void ADI_ClearAllFlagsInStatusRegisterGroupC(ADI_STATE_s *adiState)
TODO.
#define ADI_ISO_SPI_WAKEUP_TIME
Header file of some software.
#define BS_NR_OF_STRINGS
Number of parallel strings in the battery pack.
#define FAS_ASSERT(x)
Assertion macro that asserts that x is true.
#define NULL_PTR
Null pointer.
ADI_ERROR_TABLE_s * errorTable
bool crcIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool adcComparisonIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool initClearedAuxValuesAreOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool compFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool evenWireIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool digitalSupplyRangeIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool oscchkFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool analogSupplyOvervoltageFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool analogSupplyUndervoltageFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool tmodchkFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool analogSupplyOvervoltageFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool smedFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool oscchkFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool voltageRegisterContentIsNotStuck[BS_NR_OF_STRINGS][ADI_N_ADI]
bool oddWireIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool commandCounterIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool auxiliaryRegisterContentIsNotStuck[BS_NR_OF_STRINGS][ADI_N_ADI]
bool vdeFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool dieTemperatureIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool spiIsOk[BS_NR_OF_STRINGS]
bool digitalSupplyOvervoltageFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool vdelFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool analogSupplyRangeIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool cmedFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool filteredVoltageRangeIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool initResetAuxValuesAreOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool digitalSupplyOvervoltageFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool adcCompFlagsHaveNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool thsdFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool vdeFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool cmedFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool configurationAIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool auxComparisonIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool sleepFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool ocCounterSlowerFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool spiFltFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool auxVoltageRangeIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool tmodchkFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool oddWireHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool configurationBIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool evenWireHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool vresRangeIsOk[BS_NR_OF_STRINGS][ADI_N_ADI]
bool smedFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool ocCounterFasterFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool digitalSupplyUndervoltageFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
bool digitalSupplyUndervoltageFlagIsCleared[BS_NR_OF_STRINGS][ADI_N_ADI]
bool analogSupplyUndervoltageFlagHasNoLatentFault[BS_NR_OF_STRINGS][ADI_N_ADI]
uint8_t revision[BS_NR_OF_STRINGS][ADI_N_ADI]
uint64_t serialId[BS_NR_OF_STRINGS][ADI_N_ADI]
uint8_t spiNumberInterfaces
uint8_t redundantAuxiliaryChannel[BS_NR_OF_STRINGS]