This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ25720:BQ25720

Guru**** 2779905 points

Other Parts Discussed in Thread: BQ25720

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1617300/bq25720-bq25720

器件型号: BQ25720
Thread 中讨论的其他器件: Tiger

我们使用源自您开发板方法的 BQ25720 设计和固件、

我们会看到间歇性的现场事件、在这些事件中、我们的系统记录“输入丢失“/"输入“输入恢复“、我们希望确认是否有任何充电器配置或固件行为起到作用。

注意:

  • 输入源标称值:~12–13.6V、我们也尝试了 24VDC
  • 固件会定期读取状态并通过 MQTT 发布遥测
  • 我们目前进行以下配置:
    • 充电选项 0 = 0x060E
    • 充电电流= 0x0080 (128mA)
    • 输入电压 (VINDPM)=最近从 0x1AC0 (~10.048V) 更改为 0x8D00 (~9.024V)
    • IIN_HOST = 0x4100 (~3.25A)
    • 充电选项 3 = 0x0434
  • 我们还运行寄存器验证例程、并在检测到不匹配时重新应用配置、

发现的问题:

  • 某些事件显示低 VIN 和充电器状态 0x0000 (看起来像真正的输入移除)。
  • 其他事件显示“输入丢失“、而充电器状态为 0x9400、这似乎表示输入存在+ DPM 活动。
  • 我们希望避免将 DPM 限制条件错误地归类为真正的输入损失。

问题:

  1. BQ25720 是否可以在某些故障/保护条件下自动禁用/看似会丢失适配器输入、而无需主机明确设置 INHIBIT/OTG 位?
  2. 在您的视图中、主机固件应如何区分:
    • 真正的适配器移除与
    • VINDPM/IINDPM 限制与
    • 瞬态骤降事件?
  3.  STAT_AC 是否 是“存在 IN_VINDPM/IN_IINDPM 且 单独处理的输入“的建议主要指示器?
  4. 我们的寄存器设置(0x060E、0x0434、IIN_HOST、VINDPM 阈值)是否会  导致出现输入压降等意外问题?
  5. 是否定期重新写入任何不匹配的所有寄存器是一种安全策略、或者我们应该只更正特定字段和/或去抖验证?
  6. 是否存在已知注意事项、在正常操作期间、寄存器回读可能会有所不同并触发错误的“不匹配“复位?
  7. 对于充电终止/充满电池的情况、主机驱动的 CHRG_INHIBIT 或 ChargeCurrent=0 是否是唯一的预期控制路径、或者是否有其他内部路径在输入保持存在时有效地停止充电?
  8. 请确认在输入电压为~12V 且电缆/源可能出现压降的情况下、使用 3 节串联锂离子电池时的最佳实践设置。
  9. 我们是否应该始终记录建议的遥测/状态位来诊断源不稳定性与充电器限制?
  1. 是否建议在 ACOC/ACOV/VSYS_UVP 附近进行额外的保护/故障处理、以减少错误的“断电“警报?

如有任何帮助、将不胜感激

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gavin:

    作为故障排除的第一步、我想请求提供寄存器转储和原理图。  

    此致、

    Tiger

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然可以、您能给我发送您的电子邮件地址吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tiger:

    寄存器如承诺的那样、

    我们使用 5m Ω 检测电阻器:

    // BQ25720 寄存器设置
    //注意:以下值是使用 TI 的 Battery Management Studio (BMS) 工具生成的。
    //#define BQ25720_REG_CHARGE_OPTION_0_SETTING 0x870E //默认值 0xE70E //默认值 0x20D0 (8400mV)//不同之处在于 WDT 通过 0x870E 禁用
    #define BQ25720_REG_CHARGE_OPTION_0_SETTING 0x060E //默认 0xE70E //默认值 0x20D0 (8400mV)//不同之处在于低功耗模式被禁用、WDT 被 0x060E 禁用
    //#define BQ25720_REG_CHARGE_OPTION_0_SETTING 0x020E //默认值 0xE70E //默认值 0x20D0 (8400mV)//差异是禁用低功耗模式、禁用 WDT、使用 0x020E 禁用 OOA
    #define BQ25720_REG_CHARGE_MAX_VOLTAGE_SETTING 0x3138 // 12,600mV
    #define BQ25720_REG_OTG_VOLTAGE_SETTINGS 0x09C4 //默认值 0x09C4
    #define BQ25720_REG_OTG_current_setting 0x3C00 //默认值 0x3C00
    //#define BQ25720_REG_INPUT_VOLTAGE_SETTING 0x2580 // 12,800mV //默认值 0x0000 (3200mV)
    //#define BQ25720_REG_INPUT_VOLTAGE_SETTINGS 0x0000 // 3200mV //默认值 0x0000 (3200mV)
    #define BQ25720_REG_INPUT_VOLTAGE_SETTING 0x1AC0 // 10,048mV
    #define BQ25720_REG_VSYS_MIN_SETTING 0x5C00 // 9200mV //默认值 0x4200 (6600mV)//注意:示例数据的此值为 0x7B00 (12,300mV)
    #define BQ25720_REG_IIN_HOST_SETTINGS 0x4100 //默认值 0x4100
    #ifndef EVAL_Board
    #define BQ25720_REG_CHARGE_OPTION_1_SETTINGS 0x3F00 //默认值 0x3300 //注意:RSNS_RSR、RSNS_RAC — 定制板的电阻为 5m Ω
    #else
    #define BQ25720_REG_CHARGE_OPTION_1_SETTINGS 0x3300 //默认值 0x3300 //注意:RSNS_RSR、RSNS_RAC — 开发板的电阻为 10m Ω
    #endif
    #define BQ25720_REG_CHARGE_OPTION_2_SETTING 0x0037 //默认 0x00B7 //区别是 EN_EXTILIM 通过 0x0037 禁用
    #define BQ25720_REG_CHARGE_OPTION_3_SETTINGS 0x0434 //默认值 0x0434
    #define BQ25720_REG_PROCHOT_OPTION_0_SETTING 0x4A81 //默认值 0x4A81
    #define BQ25720_REG_PROCHOT_OPTION_1_SETTING 0x41A0 //默认值 0x41A0
    #define BQ25720_REG_ADC_OPTIONS 0xE0FF //每 1s 转换一次、3.06V 满量程、所有通道、启动 ADC //默认值 0x2000
    #define BQ25720_REG_ADC_OPTION_setting_NO_START 0xA0FF //每 1s 转换一次、3.06V 满量程、所有通道//默认值 0x2000
    #define BQ25720_REG_CHARGE_OPTIONS _4_SETTINGS 0x0048 //默认值 0x0048
    #define BQ25720_REG_VMIN_ACTIVE_PROTECTION_SETTING 0x006C //默认值 0x006C
    #define BQ25720_REG_CHARGE_CURRENT_SETTINGS 0x0080 // 128mA //默认 0x0000 (0mA)//  

    #ifndef BQ25720_H
    #define BQ25720_H

    /*
    注意:
    - PROCHOT (“处理器热“)是一种信号,可用于向主机处理器指示它应该降低功耗。
    这个术语最初来自 CPU、它会指示它们是否过热、但在这种情况下、意味着消耗的功率超过适配器和电池的可用功率。
    */

    #define BQ25720_ADDR 0b0001001 // BQ25720 的 I2C 地址(0x12 写入、0x13 读取)
    #define BQ25720_DEV_ID 0xE1 // BQ25720 的器件 ID
    #define BQ25720_MAN_ID 0x40 // BQ25720 的制造商 ID
    #define BQ25720_REG_DEV_ID 0xFF
    #define BQ25720_REG_MAN_ID 0xFE
    #define BQ25720_REG_CHARGE_OPTIONS 0x12
    #define BQ25720_REG_CHARGE_CURRENT 0x14
    #define BQ25720_REG_CHARGE_MAX_VOLTAGE 0x15
    #define BQ25720_REG_CHARGER_STATUS 0x20
    #define BQ25720_REG_PROCHOT_STATUS 0x21
    #define BQ25720_REG_IIN_DPM 0x22
    #define BQ25720_REG_ADC_VBUS_PSYS 0x23
    #define BQ25720_REG_ADC_IBAT 0x24
    #define BQ25720_REG_ADC_IIN_AND_CMPIN 0x25
    #define BQ25720_REG_ADC_VSYS_AND_VBAT 0x26
    #define BQ25720_REG_CHARGE_OPTION_1 0x30
    #define BQ25720_REG_CHARGE_OPTIONS 0x31
    #define BQ25720_REG_CHARGE_OPTIONS 0x32
    #define BQ25720_REG_PROCHOT_OPTION_0 0x33
    #define BQ25720_REG_PROCHOT_OPTION_1 0x34
    #define BQ25720_REG_ADC_OPTIONS 0x35
    #define BQ25720_REG_CHARGE_OPTIONS 0x36
    #define BQ25720_REG_Vmin_ACTIVE_PROTECTION 0x37
    #define BQ25720_REG_OTG_VOLTAGE 0x3B
    #define BQ25720_REG_OTG_CURRENT 0x3C
    #define BQ25720_REG_INPUT_VOLTAGE 0x3D
    #define BQ25720_REG_VSYS_MIN 0x3E
    #define BQ25720_REG_IIN_HOST 0x3F

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t CHRG_INHIBIT:1;
    uint16_t EN_IIN_DPM:1;
    uint16_t EN_LDO:1;
    uint16_t IBAT_GAIN:1;
    uint16_t IADPT_GAIN:1;
    uint16_t EN_LEARN:1;
    uint16_t VSYS_UVP_ENZ:1;
    uint16_t EN_CMP_LATCH:1;
    uint16_t DIS_STRGRV:1;
    uint16_t PWM_FREQ:1;
    uint16_t EN_OOA:1;
    uint16_t OTG_ON_CHRGOK:1;
    uint16_t IIN_DPM_AUTO_DISABLE:1;
    uint16_t WDTMR_ADJ:2;
    uint16_t EN_LWPWR:1;
    };
    };
    }bq25720_charger_option0_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t AUTO_WAKEUP_EN:1;
    uint16_t EN_SHIP_DCHG:1;
    uint16_t EN_PTM:1;
    uint16_t FORCE_CONV_OFF:1;
    uint16_t CMP_DEG:2;
    uint16_t CMP_POL:1;
    uint16_t CMP_REF:1;
    uint16_t EN_FAST_5MOHM:1;
    uint16_t PSYS_RATIO:1;
    uint16_t RSNS_RSR:1;
    uint16_t RSNS_RAC:1;
    uint16_t PSYS_CONFIG:2;
    uint16_t EN_PROCHOT_LPWR:1;
    uint16_t EN_IBAT:1;
    };
    };
    }bq25720_charger_option1_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t BATOC_VTH:1;
    uint16_t EN_BATOC:1;
    uint16_t ACOC_VTH:1;
    uint16_t EN_ACOC:1;
    uint16_t ACX_OCP:1;
    uint16_t Q2_OCP:1;
    uint16_t EN_ICHG_IDCHG:1;
    uint16_t EN_EXTILIM:1;
    uint16_t PKPWR_TMAX:2;
    uint16_t STAT_PKPWR_RELAX:1;
    uint16_t STAT_PKPWR_OVLD:1;
    uint16_t EN_PKPWR_VSYS:1;
    uint16_t EN_PKPWR_IIN_DPM:1;
    uint16_t PKPWR_TOVLD_DEG:2;
    };
    };
    }bq25720_charger_option2_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t PSYS_OTG_IDCHG:1;
    uint16_t BATFETOFF_HIZ:1;
    uint16_t CMP_EN:1;
    uint16_t IL_AVG:2;
    uint16_t OTG_VAP_MODE:1;
    uint16_t EN_VBUS_VAP:1;
    uint16_t BATFET_ENZ:1;
    uint16_t EN_OTG_BIGCAP:1;
    uint16_t EN_VSYS_MIN_SOFT_SR:1;
    uint16_t EN_PORT_CTRL:1;
    uint16_t EN_ICO_mode:1;
    uint16_t EN_OTG:1;
    uint16_t RESET_VINDPM:1;
    uint16_t RESET_REG:1;
    uint16_t EN_HIZ:1;
    };
    };
    }bq25720_charger_option3_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t STAT_PTM:1;
    uint16_t STAT_IDCHG2:1;
    uint16_t PP_IDCHG2:1;
    uint16_t IDCHG_TH2:3;
    uint16_t IDCHG_DEG2:2;
    uint16_t STAT_VBUS_VAP:1;
    uint16_t PP_VBUS_VAP:1;
    uint16_t VSYS_UVP_NO_HICCUP:1;
    uint16_t EN_DITHER:2;
    uint16_t VSYS_UVP:3;
    };
    };
    }bq25720_charger_option4_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t EN_ADC_VBAT:1;
    uint16_t EN_ADC_VSYS:1;
    uint16_t EN_ADC_ICHG:1;
    uint16_t EN_ADC_IDCHG:1;
    uint16_t EN_ADC_IIN:1;
    uint16_t EN_ADC_PSYS:1;
    uint16_t EN_ADC_VBUS:1;
    uint16_t EN_ADC_CMPIN:1;
    uint16_t 保留:4;
    uint16_t PTM_EXIT_LIGHT_LOAD:1;
    uint16_t ADC_FULLSCALE:1;
    uint16_t ADC_start:1;
    uint16_t ADC_CONV:1;
    };
    };
    }bq25720_adc_option_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t LOWER_PROCHOT_VINDPM:1;
    uint16_t INOM_DEG:1;
    uint16_t VSYS_TH1:6;
    uint16_t PROCHOT_VINDPM_80_90:1;//固定字段宽度
    uint16_t ICRIT_DEG:2;
    uint16_t ILIM2_VTH:5;
    };
    };
    }bq25720_PROCHOT_option0_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t PP_ACOK:1;
    uint16_t PP_BATPRES:1;
    uint16_t PP_VSYS:1;
    uint16_t PP_IDCHG1:1;
    uint16_t PP_INOM:1;
    uint16_t PP_ICRIT:1;
    uint16_t PP_COMP:1;
    uint16_t PP_VINDPM:1;
    uint16_t IDCHG_DEG1:2;
    uint16_t IDCHG_TH1:6;
    };
    };
    }bq25720_PROCHOT_option1_t;

    typedef 结构{
    联合体{
    uint16_t 值;
    结构{
    uint16_t Fault_OTG_UVP:1;
    uint16_t Fault_OTG_OVP:1;
    uint16_t Fault_Force_Converter_Off:1;
    uint16_t Fault_VSYS_UVP:1;
    uint16_t Fault_SYSOVP:1;
    uint16_t Fault_ACOC:1;
    uint16_t Fault_BATOC:1;
    uint16_t Fault_ACOV:1;
    uint16_t in_OTG:1;
    uint16_t IN_PCHRG:1;
    uint16_t in_FCHRG:1;
    uint16_t IN_IIN_DPM:1;
    uint16_t IN_VINDPM:1;
    uint16_t in_VAP:1;
    Uint16_t ICO_DONE:1;
    uint16_t STAT_AC:1;
    };
    };
    }bq25720_charger_status_t;
    #endif // BQ25720_H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“583607" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1617300/bq25720-bq25720
    1. BQ25720 是否可以在某些故障/保护条件下自动禁用/看似会丢失适配器输入、而无需主机明确设置 INHIBIT/OTG 位?
    2. 在您的视图中、主机固件应如何区分:
      • 真正的适配器移除与
      • VINDPM/IINDPM 限制与
      • 瞬态骤降事件?
    3.  STAT_AC 是否 是“存在 IN_VINDPM/IN_IINDPM 且 单独处理的输入“的建议主要指示器?
    4. 我们的寄存器设置(0x060E、0x0434、IIN_HOST、VINDPM 阈值)是否会  导致出现输入压降等意外问题?
    5. 是否定期重新写入任何不匹配的所有寄存器是一种安全策略、或者我们应该只更正特定字段和/或去抖验证?
    6. 是否存在已知注意事项、在正常操作期间、寄存器回读可能会有所不同并触发错误的“不匹配“复位?
    7. 对于充电终止/充满电池的情况、主机驱动的 CHRG_INHIBIT 或 ChargeCurrent=0 是否是唯一的预期控制路径、或者是否有其他内部路径在输入保持存在时有效地停止充电?
    8. 请确认在输入电压为~12V 且电缆/源可能出现压降的情况下、使用 3 节串联锂离子电池时的最佳实践设置。
    9. 我们是否应该始终记录建议的遥测/状态位来诊断源不稳定性与充电器限制?
    1. 是否建议在 ACOC/ACOV/VSYS_UVP 附近进行额外的保护/故障处理、以减少错误的“断电“警报?
    [/报价]

    感谢您的代码。  我认为在实际系统中发生了 VINDPM 事件。  

    1.故障会导致输入电源崩溃,例如 ACOC 故障。 如果系统中存在 VIN、则检测到交流存在。  

    2.有一个用于指示 STAT_AC、IN_IINDPM 和 IN_VINDPM 状态的寄存器位。 充电器不知道输入损耗是由于适配器移除还是瞬态骤降而导致。  

    3.一个更好的指示器是 ACOK 信号,这意味着系统中存在一个有效的电源。   

    4、寄存器设置对我来说很好。 如果 RAC = 5m Ω、则 IINHOST = 0x2000。 这会将输入电流限制编程为 3.2A。  

    5.我不建议重新写入所有的寄存器。 我仅针对特定功能更改寄存器中的每个位。  

    6.如果有任何不匹配,我的建议是弄清楚为什么这个位变了。  

    7.要停止充电、请设置 CHRG_INHIBIT=1 或 CHARGEECURRENT=0。 没有替代方法。  

    8、默认设置为良好的起点。 然后、您可以自定义 VINDPM = 10V。  

    9. BQ25720 中只有一个充电器状态寄存器。  

    10.如有需要,您可以使用独立比较器监控 VIN。

    此致、

    Tiger

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tiger:

    感谢您的答复、

    请参阅随附的原理图

      在需要重新启动适配器之前、您是否可以针对此情况(如果有)建议仅限软件的恢复序列?

    具体来说:

    1.     在此场景中、在 Charge Option 3 (0x32) 中切换 RESET_REG/RESET_VINDPM 是否是有效的恢复方法?
      如果是、您建议使用哪种确切的顺序和延迟?
    2. 如果 ACOC 可能是触发信号、如何清除 ACOC?
    • 当故障被排除时、它是纯自动的吗?
    • 是否需要适配器 UVLO 压降(物理移除)
    • 需要任何寄存器位操作?
    1. 建议 RAC=5m Ω 应使用 IIN_HOST=0x2000 (3.2A)。
      我们当前使用的是 0x4100。
      您是否建议我们立即更改为 0x2000 作为第一次缓解措施、以避免瞬变期间崩溃/ACOC?
    2. 您建议使用 ACOK 作为更好的输入有效指示器。
      请确认最佳固件逻辑:仅当 ACOK 表示有效适配器时、才应该选通恢复尝试、而不是仅使用 STAT_AC/CMPIN?
    3. 如果 BQ25720 SMBus 不再可检测到(DEV_ID/MAN_ID 读取失败) 、那么除了充电器输入/路径的硬下电上电外、TI 是否有任何建议的恢复?

    补充说明:在我们的固件中、我们目前会定期重新写入关键配置寄存器、因为如果我们停止此操作、充电器可能会进入不恢复状态(从主机角度来看,“砖模式“:SMBus 有时仍然可读、但 VIN/IIN_充电 路径在适配器下电上电之前不会恢复)。 我们理解您的建议、即避免完整的寄存器重写;不过、如今这种定期重写可作为保持单元运行的权变措施。 您能否建议一种可以避免这种故障模式的最小位级保持活动/恢复策略(哪些特定的位/寄存器,序列和时序)?

    e2e.ti.com/.../PMP22419A_5F00_MAIN2.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tiger:

    还有一个问题:

    1、在没有电池的情况下运行控制器的含义是什么?如果我们决定在没有电池的情况下运行控制器,有什么特别的事情我们应该做吗?

    此致、

    Gavin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    充电器在没有电池的情况下工作。 如果没有备用电池、充电器将不具有过载能力。 如果输入崩溃、充电器需要重新启动。