//***************************************************************************** // (C) Automotive Lighting Reutlingen GmbH // Tuebinger Strasse 123, 72762 Reutlingen, Germany // // Automotive Lighting Reutlingen GmbH owns all the rights to this work. // This work shall not be copied, reproduced, used, modified, transferred // or its information shall not be disclosed without the prior written // authorization of Automotive Lighting Reutlingen GmbH. //***************************************************************************** //----------------------------------------------------------------------------- /// \file CddTps92682.c /// /// \brief /// /// \author OTT, Peter ALDE-RT/EES6 //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // Includes //----------------------------------------------------------------------------- // standard includes #include #include //#include // module API (include path) #include // module includes (relative to API) #include <../Cfg/CddTps92682_Cfg.h> #include <../Cfg/CddTps92682_RoutCfg.h> #include <../Gen/CddTps92682_Types.h> #include <../Gen/CddTps92682_Com.h> #include "CddSpiTest.h" #include "string.h" #include "IoHwAbUser.h" boolean CddTps92682_EftDataValid_Used = TRUE; boolean CddTps92682_EftDataValid_Back = TRUE; tCddTps92682_Eft_Calib CddTps92682_Eft_Calib_Used[CDDTPS92682_Cfg_NbOfDevices] = CDDTPS92682_Eft_Calib_Default; tCddTps92682_Eft_Calib CddTps92682_Eft_Calib_Back[CDDTPS92682_Cfg_NbOfDevices] = CDDTPS92682_Eft_Calib_Default; tCddTps92682_Eft_EcuVarCfg CddTps92682_Eft_EcuVarCfg_Used[CDDTPS92682_Cfg_NbOfDevices] = CDDTPS92682_Eft_EcuVarCfg_Default; tCddTps92682_Eft_EcuVarCfg CddTps92682_Eft_EcuVarCfg_Back[CDDTPS92682_Cfg_NbOfDevices] = CDDTPS92682_Eft_EcuVarCfg_Default; boolean boTps92682En_Used = FALSE; boolean boTps92682En_Back = FALSE; boolean boTps92682PwmEn_Used = FALSE; boolean boTps92682PwmEn_Back = FALSE; uint16 aunTps92682SpiMsg_Used[CDDTPS92682_Cfg_NbOfDevices]; uint16 aunTps92682SpiMsg_Back[CDDTPS92682_Cfg_NbOfDevices]; void CddTps92682_Test_SetEftDataValid(boolean boValid) { CddTps92682_EftDataValid_Used = boValid; } boolean CddTps92682_Test_EftDataValid(void) { return CddTps92682_EftDataValid_Used; } tCddTps92682_Eft_Calib* CddTps92682_Test_Eft_Calib(void) { return CddTps92682_Eft_Calib_Used; } tCddTps92682_Eft_EcuVarCfg* CddTps92682_Test_Eft_EcuVarCfg(void) { return CddTps92682_Eft_EcuVarCfg_Used; } void CddTps92682_Test_SetBoosterEn(boolean boEnable) { boTps92682En_Used = boEnable; } boolean CddTps92682_Test_GetBoosterEn(void) { return boTps92682En_Used; } void CddTps92682_Test_SetBoosterPwm(boolean boEnable) { boTps92682PwmEn_Used = boEnable; } boolean CddTps92682_Test_GetBoosterPwmEn(void) { return boTps92682PwmEn_Used; } void CddTps92682_Test_TransferMsg(uint8 ucDevice, uint16* punData) { aunTps92682SpiMsg_Used[ucDevice] = *punData; } uint16 CddTps92682_Test_GetTransferMsg(uint8 ucDevice) { return aunTps92682SpiMsg_Used[ucDevice]; } void CddTps92682_RestoreStubContents(void) { CddTps92682_EftDataValid_Used = CddTps92682_EftDataValid_Back; memcpy(CddTps92682_Eft_Calib_Used, CddTps92682_Eft_Calib_Back, sizeof(CddTps92682_Eft_Calib_Used)); memcpy(CddTps92682_Eft_EcuVarCfg_Used, CddTps92682_Eft_EcuVarCfg_Back, sizeof(CddTps92682_Eft_EcuVarCfg_Used)); memcpy(&boTps92682En_Used, &boTps92682En_Back, sizeof(boTps92682En_Used)); memcpy(&boTps92682PwmEn_Used, &boTps92682PwmEn_Back, sizeof(boTps92682PwmEn_Used)); memcpy(aunTps92682SpiMsg_Used, aunTps92682SpiMsg_Back, sizeof(aunTps92682SpiMsg_Used)); } //----------------------------------------------------------------------------- // Start declaration or definitions of functions //----------------------------------------------------------------------------- #define ctadCddBoost_START_SEC_CODE #include <../Cfg/CddTps92682_MemMap.h> //----------------------------------------------------------------------------- // Function definitions //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- /// \brief Set GPIOs BOOST_ENABLE and BOOST_FSO pin /// /// \descr Control GPIOs enable pins of booster depending on EFT parameters /// /// \param boBoostEnable: TRUE or FALSE /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_SetBoostEnableGpio(const boolean boBoostEnable) { CDDTPS92682_SetBoosterEn(boBoostEnable); } //----------------------------------------------------------------------------- /// \brief Set GPIOs BOOST_ENABLE and BOOST_FSO pin /// /// \descr Control GPIOs enable pins of booster depending on EFT parameters /// /// \param boBoostEnable: TRUE or FALSE /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_SetBoostLimpHomeGpio(const boolean boBoostLimphome) { CDDTPS92682_SetBoosterEn(boBoostLimphome); } //----------------------------------------------------------------------------- /// \brief Set the duty cycle of BSTSYNC PWM signal /// /// \descr Control the duty cycle of BSTSYNC signal /// /// \param unBstSyncDuty_1_32768 /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_SetBoostDuty(const boolean ucBoostPwmEnable) { CDDTPS92682_SetBoosterPwm(ucBoostPwmEnable); } //----------------------------------------------------------------------------- /// \brief /// /// \descr /// /// \param - /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_SetBoosterVoltage(const uint32 ulIdx, const uint16 unVBoostTarget_mV) { uint8 ucBoostVsetpoint = 0u; sint32 slVBoostTargetAdjusted; sint16 snCalibBoostVoffset = CDDTPS92682_CALIB_nVOffset(0); uint16 unCalibBoostVfactor = CDDTPS92682_CALIB_unVFactor(0); (void)ulIdx; // for future use if (unCalibBoostVfactor == 0xFFFFu) // if booster is not explicitely calibrated { snCalibBoostVoffset = CDDTPS92682_ECUVARCFG_nVOffset(0); unCalibBoostVfactor = CDDTPS92682_ECUVARCFG_unVFactor(0); } //Guard to avoid any division by 0. if (unCalibBoostVfactor != 0u) { uint16 unVBoostLim = UTIL_MIN(unVBoostTarget_mV, CDDTPS92682_Cfg_VboostMax); // upper limit unVBoostLim = UTIL_MAX(unVBoostLim, CDDTPS92682_Cfg_VboostMin); // lower limit slVBoostTargetAdjusted = (sint32)unVBoostLim - snCalibBoostVoffset; // calculate according to EFT data //ucBoostVsetpoint = (uint8)((uint32)(slVBoostTargetAdjusted) / unCalibBoostVfactor); ucBoostVsetpoint= (uint8) (slVBoostTargetAdjusted*255/51021);// slVBoostTargetAdjusted*255/2.4/(1+47/2.32)// Rfb1 2.32k Rfb2 =47K ucBoostVsetpoint = UTIL_MIN(ucBoostVsetpoint, CDDTPS92682_Cfg_BOOST_VSETPOINT_Max); // upper limit ucBoostVsetpoint = UTIL_MAX(ucBoostVsetpoint, CDDTPS92682_Cfg_BOOST_VSETPOINT_Min); // lower limit } if (CDDTPS92682_EftDataValid() != FALSE) // end of line data available { //CddTPS92682_SetBoostVsetpoint(ucBoostVsetpoint); CddTPS92682_SetBoostOutput(ucBoostVsetpoint); } } //----------------------------------------------------------------------------- /// \brief /// /// \descr /// /// \param boEFTIsValid /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_Init(void) { //CddTps92682_SetBoostLimpHomeGpio(FALSE); //CddTps92682_SetBoostDuty(100); //CddTps92682_SetBoostEnableGpio(TRUE); #if (CDDBUCK_CHIP_ERROR_HAND == CDDBUCk_CHIP_CPSQ5352) CddTps92682_SpiInit(); #endif } //----------------------------------------------------------------------------- /// \brief /// /// \descr /// /// \param boEFTIsValid /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_IOInit(void) { CddTps92682_SetBoostEnableGpio(TRUE); } //----------------------------------------------------------------------------- /// \brief /// /// \descr This function may be called only if SPI cyclic mode is stopped /// /// \param - /// /// \return void //----------------------------------------------------------------------------- void CddTps92682_Shutdown(void) { CddTps92682_SetBoostDuty(0); CddTps92682_SetBoostEnableGpio(FALSE); } #define ctadCddBoost_STOP_SEC_CODE #include <../Cfg/CddTps92682_MemMap.h> //----------------------------------------------------------------------------- // End declaration or definitions of functions //-----------------------------------------------------------------------------