ZHCAE13A May   2024  – July 2024 TPS2HCS10-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1软件生态系统
  5. 2平台驱动程序
    1. 2.1 驱动程序概念
    2. 2.2 支持平台
    3. 2.3 移植到其他平台
    4. 2.4 API 指南
      1. 2.4.1  tHCSResponseCode 联合体参考
      2. 2.4.2  float_t HCS_convertCurrent (uint16_t rawValue, uint16_t ksnsVal, uint16_t snsRes)
      3. 2.4.3  float_t HCS_convertTemperature (uint16_t rawValue)
      4. 2.4.4  float_t HCS_convertVoltage (uint16_t rawValue)
      5. 2.4.5  tHCSResponseCode HCS_getChannelFaultStatus (uint8_t chanNum, uint16_t * fltStatus)
      6. 2.4.6  tHCSResponseCode HCS_getDeviceFaultSatus (uint16_t * fltStatus)
      7. 2.4.7  tHCSResponseCode HCS_gotoLPM (lpm_exit_curr_ch1_t ch1ExitCurrent, lpm_exit_curr_ch2_t ch2ExitCurrent)
      8. 2.4.8  tHCSResponseCode HCS_gotoSleep (void )
      9. 2.4.9  tHCSResponseCode HCS_initializeDevice (TPS2HCS10Q1_CONFIG * config)
      10. 2.4.10 tHCSResponseCode HCS_readRegister (uint8_t addr, uint16_t * readValue)
      11. 2.4.11 tHCSResponseCode HCS_setSwitchState (uint8_t swState)
      12. 2.4.12 tHCSResponseCode HCS_updateConfig (TPS2HCS10Q1_CONFIG * config)
      13. 2.4.13 tHCSResponseCode HCS_wakeupDevice (void )
      14. 2.4.14 tHCSResponseCode HCS_writeRegister (uint8_t addr, uint16_t payload)
  6. 3配置或评估工具
  7. 4代码示例
    1. 4.1 空示例
    2. 4.2 I2T 跳变示例
    3. 4.3 低功耗模式示例
    4. 4.4 电流检测示例
  8. 5总结
  9. 6参考资料
  10. 7修订历史记录

I2T 跳变示例

I2T 跳变代码示例展示了当系统中发生 I2T 事件时如何处理高侧开关上的事件。此代码示例假设器件设置为针对 I2T 故障的锁存模式,并演示了在 I2T 事件发生后复位 器件的正确事件序列。在自动重试模式(I2T_CONFIG_CHx 寄存器的 TCLDN_CHx 设置为超时)下,器件会在重新启用通道之前自动等待适当的持续时间。

请注意,在该代码示例中,FAULT 引脚设置为用作下降沿中断。当 I2T 跳变发生时,FAULT 引脚(开漏)被拉低,微控制器被中断。然后,微控制器上的软件可以唤醒器件执行,并采取必要的缓解措施来重新启用器件。在锁存模式下,I2T 跳变事件发生后需要执行的适当步骤为:

  1. 禁用受影响的通道
  2. 将 I2T_CONFIG_CHx 寄存器的 TCLDN_CHx 设置为适当的冷却时间
  3. 在微控制器上休眠,等待指定的持续时间
  4. 将 I2T_CONFIG_CHx 寄存器的 TCLDN_CHx 设置回锁存模式
  5. 重新启用通道

以下是相关的代码片段:

        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);
        }