ZHCAE13A May 2024 – July 2024 TPS2HCS10-Q1
I2T 跳变代码示例展示了当系统中发生 I2T 事件时如何处理高侧开关上的事件。此代码示例假设器件设置为针对 I2T 故障的锁存模式,并演示了在 I2T 事件发生后复位 器件的正确事件序列。在自动重试模式(I2T_CONFIG_CHx 寄存器的 TCLDN_CHx 设置为超时)下,器件会在重新启用通道之前自动等待适当的持续时间。
请注意,在该代码示例中,FAULT 引脚设置为用作下降沿中断。当 I2T 跳变发生时,FAULT 引脚(开漏)被拉低,微控制器被中断。然后,微控制器上的软件可以唤醒器件执行,并采取必要的缓解措施来重新启用器件。在锁存模式下,I2T 跳变事件发生后需要执行的适当步骤为:
以下是相关的代码片段:
if(currentValue & TPS2HC10S_FLT_STAT_CH1_I2T_FLT_CH1_MASK)
{
/* Disabling the channel */
HCS_setSwitchState(0);
/* Setting the device to 2s retry state */
exportConfig.i2tConfigCh1.value.bits.TCLDN_CH1 =
(tcldn_ch1_en_3_0x2 >> TPS2HC10S_I2T_CONFIG_CH1_TCLDN_CH1_OFS);
HCS_writeRegister(TPS2HC10S_I2T_CONFIG_CH1_REG,
exportConfig.i2tConfigCh1.value.word);
/* Waiting for two seconds. At this point we can normally
yield the tasks if we were in an RTOS, but just waiting for
an interrupt here. */
DL_TimerA_startCounter(TIMER_0_INST);
while(timerTriggered == false)
{
__WFI();
}
timerTriggered = false;
/* Setting back to latch mode */
exportConfig.i2tConfigCh1.value.bits.TCLDN_CH1 = 0;
HCS_writeRegister(TPS2HC10S_I2T_CONFIG_CH1_REG,
exportConfig.i2tConfigCh1.value.word);
/* Re-enabling the channel */
HCS_setSwitchState(1);
}