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修订历史记录

低功耗模式示例

低功耗模式示例展示了如何将 HCS 高侧开关设置为低功耗模式,然后在发生故障事件时唤醒。要使用此示例,在将代码下载到微控制器之前,在通道 1 上设置一个负载,该负载消耗的电流低于 800mA(我们使用 HCS_gotoSleep 将 LPM 退出电流设置为此值)。下载代码示例之后,将负载电流增加到大于 800mA。这可能导致 LPM 退出,触发 FAULT 引脚,并使微控制器中断/处理此事件。相关的应用程序代码如下所示:

    while(1)
    {
        /* Putting the device into LPM. 800mA exit current on CH1 */
        HCS_gotoLPM(lpm_exit_curr_ch1_en_2_0x1, lpm_exit_curr_ch2_en_1_0x0);

        /* Wait for the fault line to trigger low on PB3 */
        __WFI();

        /* If we woke up from the interrupt, check to make sure it was a signal
            for an LPM wakeup. The idea here is that the user increases the
            load current somehow to "force the device" from LPM. */
        resCode = HCS_readRegister(TPS2HC10S_FLT_STAT_CH1_REG,
                                    &currentValue);
        resCode.byte |=  HCS_readRegister(TPS2HC10S_FLT_STAT_CH1_REG,
                                    &currentValue).byte;

        if(currentValue & TPS2HC10S_FLT_STAT_CH1_LPM_WAKE_CH1_MASK)
        {
            /* Set a breakpoint here for demonstration */
            asm ("nop");
        }

        if(resCode.byte != 0)
        {
            handleError(resCode);
        }
    }