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 系列智能保险丝高侧开关如何实现可扩展且极其灵活的电流检测。此代码示例会设置 1ms 的时间,以便定期唤醒高侧开关通道 1 的负载电流并对其进行采样。如果负载电流低于 500mA,则器件启用高侧开关的以下设置:

  • 启用输入电压调节(DIAG_CONFIG_CHx 寄存器的 ISNS_SCALE_CHx),允许将 ADC 输入电压按 8 倍调节
  • 启用开路负载检测(DIAG_CONFIG_CHx 的 OL_ON_EN_CHx),这会将 KSNS 比率更改为较低的值(请参阅数据表中的电气规格)

在每个事件上都会设置一个断点行,以允许用户中断并理解电流检测的行为。当在软件中进入低电流检测模式时,会设置状态变量 (inLowCurrent) 以指示当前状态,器件会继续定期对电流采样。如果电流电平使 ADC 读数饱和,则会退出低电流模式并使用正常调节/KSNS 模式。以下代码中演示了相关代码的一个片段:

    while(1)
    {
        __WFI();

        /* Reading the load current value. We need to read the register twice
            as the */
        resCode = HCS_readRegister(TPS2HC10S_ADC_RESULT_CH1_I_REG,
                                    &currentValue);
        resCode.byte |= HCS_readRegister(TPS2HC10S_ADC_RESULT_CH1_I_REG,
                                    &currentValue).byte;

        /* For each transaction, the high-side switch can return an error 
            status code that can report common faults of the device. */
        if(resCode.byte != 0)
        {
            handleError(resCode);
        }

        /* Masking out the relevant bits */
        currentValue &= TPS2HC10S_ADC_RESULT_CH1_I_ADC_RESULT_CH1_I_MASK;

        /* Check to see if we are below the threshold where we want to turn
            on current sense scaling and change the KSNS ratio and enable
            scaling by 8x. This can allow for  */
        if((currentValue < LOW_CURRENT_SNS_THRESHOLD) &&
                (inLowCurrent == false))
        {
            exportConfig.diagConfigCh1.value.bits.OL_ON_EN_CH1 = 1;
            exportConfig.diagConfigCh1.value.bits.ISNS_SCALE_CH1 = 1;
            inLowCurrent = true;
            HCS_writeRegister(TPS2HC10S_DIAG_CONFIG_CH1_REG,
                                exportConfig.diagConfigCh1.value.word);

            /* Adding place to set a breakpoint for the sake of demonstration */
            asm ("nop");
        }
        else if((currentValue == LOW_CURRENT_SNS_SATURATION) &&
                    (inLowCurrent == true))
        {
            exportConfig.diagConfigCh1.value.bits.OL_ON_EN_CH1 = 0;
            exportConfig.diagConfigCh1.value.bits.ISNS_SCALE_CH1 = 0;
            HCS_writeRegister(TPS2HC10S_DIAG_CONFIG_CH1_REG,
                                exportConfig.diagConfigCh1.value.word);

            /* Adding place to set a breakpoint for the sake of demonstration */
            asm ("nop");
        }
    }

由于能够检测低电流并启用调节/KSNS 模式,高侧检测能够提高电流检测分辨率,并满足需要高电流检测精度的应用的要求。