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 */
}



