Hello,
I am still trying to set up the TMS570 HSK and I am yet to get the ENDRV to stay high.
The error count in the TPS is constantly at 7 and it is forcing the device to reset making debugging difficult.
I am aware that an error count above 5 causes the ENDRV line to stay low.
This is the code I am trying to use to initialise the TPS and watchdog (taken from the TPSDriver-User'sGuide-v2.2.0.chm)
/* USER CODE BEGIN (0) */ #include "Tps_Driver.h" /* USER CODE END */ /* Include Files */ #include "sys_common.h" /* USER CODE BEGIN (1) */ #include "mibspi.h" #include "adc.h" #include "rti.h" #include "Application_Types.h" #include "Board_Config.h" #include "Interface_Support.h" #include "sci.h" #include <stdio.h> #include <string.h> /* USER CODE END */ /** @fn void main(void) * @brief Application main function * @note This function is empty by default. * * This function is called after startup. * The user can use this function to implement the application. */ /* USER CODE BEGIN (2) */ const TPS_AllVoltageRailLimits TPS65381Q_VoltageLimits = VOLTAGE_RAIL_LIMITS; /* USER CODE END */ void main(void) { /* USER CODE BEGIN (3) */ mibspiInit(); gioInit(); sciInit(); adcInit(); TPS_SendDebugText(INFO, (uint8*) "INIT TPS", 0); TPS_Initilization_struct initstruct; memcpy(&initstruct.AMUXVoltageRailLimits, &TPS65381Q_VoltageLimits, sizeof(TPS65381Q_VoltageLimits)); initstruct.GetTPSDiagPinSampledValue = TPSDiagosticPinSampledData; initstruct.blNRES_Monitoring = TRUE; initstruct.blbist_at_startup = TRUE; initstruct.blenable_drv_op = TRUE; //Error pin monitoring is disabled here,The Halcogen startup toggles the error pin,If error monitoring is //enabled then appropriate settings has to be made to error monitoring(PWM low width) width //so that the error monitoring does not reset the TPS device. initstruct.blerror_pin_monitoring = FALSE; initstruct.blignition_power_latch = FALSE; initstruct.blsafe_state_timeout = TRUE; initstruct.dev_configreg_settings.blMASK_VBAT_OV = TRUE; initstruct.dev_configreg_settings.blMASK_VDD1_UV = TRUE; initstruct.dev_configreg_settings.blPOST_RUN_RST = TRUE; initstruct.dev_configreg_settings.blVDD3_5_OT = TRUE; initstruct.dev_configreg_settings.blVDD5_OT = TRUE; initstruct.error_pin_monitoring_mode = ERROR_PIN_MODE; initstruct.error_pin_pwm_width.u8PWM_HIGH = 8; //the min error pin low dyuration in 204.8 us initstruct.error_pin_pwm_width.u8PWM_LOW = 40; initstruct.send_recieve_data_TPS = SendandRecieveDataTPS; initstruct.u8pwd_threshhold_value = 5; initstruct.u8safe_lock_threshhold = 5; //timeout duration in 198 ns initstruct.u8safe_state_timeout_scaler = 4; TPS_SendDebugText(INFO, (uint8*) "going in", 0); if(TPS_DriverInit(&initstruct)) { TPS_SendDebugText(INFO, (uint8*) "init done", 0); } TpsIf_Init(SendandRecieveDataTPS); TPS_SendDebugText(INFO, (uint8*) "init watchdog", 0); TPS_WatchdoConfiguration watchdogconfig; //Initialize watchdog and open a new sequence run watchdogconfig.u8TokenFDBK = 0; watchdogconfig.u8TokenSeed = 0; watchdogconfig.blwatchdog_reset = FALSE; // approx 40ms watchdogconfig.u8open_windowtime_scaler = (uint8) (OPEN_WINDOW_CONFIG / 0.55 - 1); //approx 15 ms watchdogconfig.u8close_windowtime_scaler = (uint8) (CLOSE_WINDOW_CONFIG / 0.55 - 1); watchdogconfig.watchdog_mode = QANDA_MODE; TPS_SendDebugText(INFO, (uint8*) "going in 2", 0); TPS_WatchdogInit(&watchdogconfig); uint8 u8wdfailcnt; while(1){ TPS_GetWatchdogFailCount(&u8wdfailcnt); TPS_SendDebugText(INFO, (uint8*) u8wdfailcnt, 0); } /* USER CODE END */ }