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.

[参考译文] bq24272:电池 OVP 警告

Guru**** 2328790 points
Other Parts Discussed in Thread: BQ24272, CC3100MOD, BQ24160, BQ24168
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/591856/bq24272-battery-ovp-warning

器件型号:BQ24272
主题中讨论的其他器件: CC3100MODBQ24160BQ24168

您好!

我已将寄存器设置为4.2V 工作电压。 很多时候、电池 OVP (发生过压错误)。

我想知道充电器 IC 在哪个电池电压水平下会耗尽电池电量。

当(如果)由于放电而最终停止显示错误时、充电器 IC 会恢复正常充电吗?

当我检测到电池 OVP 时、是否有任何方法可以停止放电? 我想进入一个等于充电完成的状态、以免耗尽电池。

HC

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

    电池 OVP 阈值通常比 VBATREG 高2.5-7.5%、VBATREG 设置为4.2V、规格在数据表 EC 表的"输入保护"部分下标记为"V_BOVP"。

    此外、请注意、该部件具有看门狗计时器、一旦过期、将使 VBATREG 恢复为默认值3.6V。

    最后、您可能还需要将 bq24261M 视为项目的替代解决方案。 我们已对该器件进行了 NRND 运算。



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

    您好 Joel、

    我不断复位看门狗。

    但是、我找不到任何有关电池电压降至阈值以下时将发生什么情况的信息。 它是否会恢复正常充电?

    我知道新 的(不可替换的引脚) IC。 IC 是在几年前设计到产品中的(是的、很长的项目)。

    重点是:我需要找到一个解决方案、以避免当前 IC 出现电池过压问题。

    您能否详细说明为何对该器件进行 NRND 设计-它的"已知"问题是什么? 找不到任何勘误表...

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

    是的、它应该会恢复正常充电。 通常、在 VBAT 电压超过再充电阈值之前、您不会再次看到任何电荷。

    该器件之所以 NRND、是因为多种原因、包括后来发布的更新和改进的 IP、以及推动更多客户使用这些器件的一般业务决策。


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

    您能否在收到 BATOVP 警告之前和之后发送所有寄存器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeff、

    我只根据下面的代码设置我的寄存器。 然后、我每5秒会不断地复位看门狗。
    充电时、我还会在显示屏上持续显示所有状态警告。

    //设置和验证寄存器。 如果出错则返回 False。
    //标准充电方法是0.2C CC 充电至4.2V/节、然后 CV 充电、直到充电电流下降至0.02C。
    // CC:5h (90%)+ CV:0.5h = 5.5h
    _Bool I2C_ChargerSetRegisters ()

    _Bool 错误;
    struct st_BQ24272 *pBQ24272;

    // 01
    BQ24272.STATUS_CONTROL.BIT.TMR_RST = 1;//重置看门狗计时器
    I2C_ChargerWriteReg (BQ24272.STATUS_CONTRAL.BYTE、STATUS_CONTRAL_ADDR);

    //一个可写字段:en_NOBATOP -应为默认值。
    //BQ24272.battery_supply_status

    //02
    BQ24272.control.bit.reset = 0;//无复位
    BQ24272.control.bit.EN_STAT = 0;//禁用 STAT 输出(我们不使用它)
    BQ24272.control.bit.TE = 1;//启用充电电流终止。
    BQ24272.control.bit.CE_N = 0;//充电器被启用。
    BQ24272.control.bit.Hz_MODE = 0;//非 Hz 模式

    I2C_ChargerWriteReg (BQ24272.control.byte、CONTRAL_ADDR);

    //03
    //偏移3.5V,设置为4.2V
    BQ24272.CONTRAL_BATTERY_VOLTGE.BIT.VBREG5 = 1;// 640mV
    BQ24272.CONTRAL_BATTERY_VOLTAGE BIT.VBREG4 = 0;// 320mV
    BQ24272.CONTRAL_BATTERY_VOLTGE.BIT.VBREG3 = 0;// 160mV
    BQ24272.CONTRAL_BATTERY_VOLTAGE BIT.VBREG2 = 0;// 80mV
    BQ24272.CONTRAL_BATTERY_VOLTAGE BIT.VBREG1 = 1;// 40mV
    BQ24272.CONTRAL_BATTERY_VOLTAGE BIT.VBREG0 = 1;// 20mV
    BQ24272.CONTRAL_BATTERY_VOLTGE.BIT.I_INLIMIT = 0;//输入电流限值为1.5A。

    I2C_ChargerWriteReg (BQ24272.CONTRAL_BATTERY_VOLTAGE、CONTRAL_BATTERY_VOLTGE_ADDR);

    //只读寄存器
    //BQ24272.vender_part_revision

    //05
    //充电电流感测偏移为550mA:2500mAh 电池、0.2C => 500mA (使用550mA)
    //终止阈值偏移为50mA:2500mAh 电池、0.02C => 50mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ICHRG4 = 0;// 1200mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ICHRG3 = 0;// 600mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ICHRG2 = 0;// 300mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ICHRG1 = 0;// 150mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ICHRG0 = 0;// 75mA
    //终止(充电结束时的电流电平)。
    BQ24272.battery_terminal_fast_charge 电流.bit.ITERM2 = 0;// 200mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ITERM1 = 0;// 100mA
    BQ24272.battery_terminal_fast_charge 电流.bit.ITERM0 = 0;// 50mA

    I2C_ChargerWriteReg (BQ24272.battery_termination_fast_charge 电流。byte、battery_termination_fast_charge 电流_ADDR);

    //06
    // VIN-DPM 电压偏移为4.20V:(之前设置为4.52V、现在是4.2V 2015!)
    //如果输入电压低于阈值,此功能将降低充电电流。
    BQ24272.V_IN_DPM_VOLTGE_DPPM_STATUS.BIT.V_INDPM2 = 0;// 320mV
    BQ24272.V_IN_DPM_VOLTGE_DPPM_STATUS.BIT.V_INDPM1 = 0;// 160mV
    BQ24272.V_IN_DPM_VOLTGE_DPPM_STATUS.BIT.V_INDPM0 = 0;// 80mV

    I2C_ChargerWriteReg (BQ24272.V_IN_DPM_VOLTGE_DPPM_STATUS.byte、V_IN_DPM_VOLTGE_DPPM_STATUS_ADDR);

    //BQ24272.safety_timer_NTC_monitor
    BQ24272.SAFETY_TIMER_NTC_MONITOR.BIT.XTMR_EN = 0;//定时器未减慢。
    BQ24272.SAFETY_TIMER_NTC_MONITOR.BIT.TMR = 1;// 6小时垃圾费。
    BQ24272.safety_timer_NTC_monitor.bit.TS_EN = 1;// NTC 温度监视器打开。
    BQ24272.SAFETY_TIMER_NTC_MONITOR.BIT.LOW_CHG = 0;//寄存器0x05中编程的充电电流;

    I2C_ChargerWriteReg (BQ24272.safety_timer_NTC_monitor.byte、safety_timer_NTC_monitor_ADDR);

    //读取和验证寄存器
    pBQ24272 = I2C_ChargerReadRegisterAndGetStatus ();

    错误=错误;
    if (((pBQ24272->battery_supply_status.byte & 0x01)!= 0x00)

    错误= true;


    if ((pBQ24272->control.byte & 0x8F)!= 0x84)

    错误= true;


    if (((pBQ24272->CONTRAL_BATTERY_VOLTAGE & 0xFE)!= 0x8C)

    错误= true;


    if (((pBQ24272->battery_terminal_fast_charge _curration.byte & 0xFF)!= 0x00)

    错误= true;


    if (((pBQ24272->V_IN_DPM_VOLTGE_DPPM_STATUS_BYTE 和0x07)!= 0x00)// 0x04更改为0x00!

    错误= true;


    if (((pBQ24272->safety_timer_NTC_monitor.byte & 0xE9)!= 0x28)

    错误= true;


    返回(!error);




    ----

    //寄存器
    #pragma BIT_ORDER LEFT
    pragma 解压
    struct st_BQ24272{
    // 00
    UNION{
    unsigned char 字节;
    结构{
    unsigned char TMR_RST:1;
    无符号字符 STAT:3;
    无符号字符:1;
    无符号字符故障:3;
    }位;
    } STATUS_CONTROL;

    // 01
    UNION{
    unsigned char 字节;
    结构{
    无符号字符 STAT:2;
    unsigned char :3;
    无符号字符 BATSTAT:2;
    unsigned char EN_NOBATOP:1;
    }位;
    } BATTERY_SUPPLY_STATUS;

    //02
    UNION{
    unsigned char 字节;
    结构{
    无符号字符复位:1;
    unsigned char :3;
    unsigned char EN_STAT:1;
    unsigned char TE:1;
    unsigned char CE_N:1;
    unsigned char Hz_MODE:1;
    }位;
    }控制;

    //03
    UNION{
    unsigned char 字节;
    结构{
    无符号字符 VBREG5:1;
    无符号字符 VBREG4:1;
    无符号字符 VBREG3:1;
    无符号字符 VBREG2:1;
    无符号字符 VBREG1:1;
    无符号字符 VBREG0:1;
    unsigned char I_INLIMIT:1;
    无符号字符:1;
    }位;
    } CONTRAL_BATTERY_VOLTAGE;

    // 04
    UNION{
    unsigned char 字节;
    结构{
    无符号 char vender:3;
    unsigned char PN:2;
    unsigned char 修订版本:3;
    }位;
    }vender_part_revision;

    //05
    UNION{
    unsigned char 字节;
    结构{
    无符号字符 ICHRG4:1;
    无符号字符 ICHRG3:1;
    unsigned char ICHRG2:1;
    unsigned char ICHRG1:1;
    无符号字符 ICHRG0:1;
    无符号字符 ITERM2:1;
    无符号字符 ITERM1:1;
    无符号字符 ITERM0:1;
    }位;
    } BATTERY_TERINAING_FAST_CHARGE_CURRENT;

    //06
    UNION{
    unsigned char 字节;
    结构{
    unsigned char MINSYS_STATUS:1;
    unsigned char DPM_STATUS:1;
    unsigned char :3;
    unsigned char V_INDPM2:1;
    无符号字符 V_INDPM1:1;
    unsigned char V_INDPM0:1;
    }位;
    } V_IN_DPM_VOLTGE_DPPM_STATUS;

    // 07
    UNION{
    unsigned char 字节;
    结构{
    unsigned char XTMR_EN:1;
    unsigned char TMR:2;
    无符号字符:1;
    unsigned char TS_EN:1;
    unsigned char TS_FAULT:2;
    unsigned char low_CHG:1;
    }位;
    }SAFETY_TIMER_NTC_MONITOR;

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

    Hans、

    状态寄存器可能会报告一个错误、有助于跟踪 BOVP 故障。   此外、显示负载瞬态期间 V (SYS)、V (BAT)和 I (SYS)触发的示波器图有助于排除 V (SYS)在负载瞬态恢复上出现过冲的可能性。   下面是一个显示了离开补充模式后 V (SYS)(红色)过冲 的负载瞬态示例。  故障是否仅在电池接近充满电时发生?  发生这种情况时、V (TS)在哪里?

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

    Jeff、

    感谢你的答复,很抱歉我的答复很晚。

    要回答您的问题:是的、BOVP 故障仅在电池接近充满电时发生。 这个较晚的阶段能否以某种方式触发 BOVP?

    我将实现一个变量来检查是否在错误发生之前发生了 Done (完成)-以检查它是否在错误发生之前达到 Done (完成)。

    对于 V (TS)、我尚未检查温度传感器输入端的电压。

    为了触发示波器、我将实现一个 GPIO 来在 BOVP 发生时输出信号、并在此事件期间测量 VSYS、VBAT 和 IBAT。

    HC

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

    您好!

    我已经进行了一些测量、以查看正在发生的情况。 当我进行测量时、我没有遇到 BOVP 故障-但发生了其他有趣的事情。

    我测量了电池电流。 我已将终端设置为50mA。 当电流达到28mA 时、电流突然反转、电流开始以大约5mA 的电流从电池流入电路(由万用表和 uCurrent 器件测量)。 未更改任何状态寄存器! 它仍在报告"充电"。 我怀疑5mA 读数是由于电容耦合通过电池 FET (我假设现在已关闭)、原因是下图中的振荡。 (测量 BAT 引脚会由于 SYS 上的"噪声"而出现一些噪声耦合。)

    然后、我使用示波器测量了 SYS 电压。 看看图片中的波形。

    SYS 电压在大约4.2V 和4.4V 之间振荡、占空比为50%、周期为2ms。

    在数据表中、有一个称为 V_SYSREGFETOFF 的值、它是达到端接时的系统稳压电压。 V_BATREG +4.17%是最大值、看起来与4.4V 半周期峰值一致。 但是、我不知道这里实际发生了什么、以及 V_SYS 为什么以这种方式运行。  

    测量的终止电流低于数据表中规定的精度、即50mA 时为+/- 35%。

    另一个有趣的观察结果是、如果电池实际上已充满电(假设充电电流介于50和70mA 之间)、并且您在几秒钟内取出直流插孔并重新插入、则会立即报告此情况。 但是、如果您不这样做、充电电流将下降、直到达到28mA 限制... 在我的设置中、我有一个唤醒 CC3100MOD 的消息队列。 如果在"长时间至28mA"阶段调用此函数、则会报告完成情况。 唤醒 CC3100MOD 会短暂消耗一些电流。 为什么 V_SYS 上的"浪涌"电流会使充电器 IC 突然开始正常运行?

    在我看来、IC 似乎无法在设定的终止电流上正确结束恒压相位并进入完成状态。

    我尝试执行一些测试、在这些测试中、我首先复位充电器 IC (RESET 位)、然后设置寄存器设置、以检查"实际充满电的电池阶段"中的"重新启动"是否具有与以下相同的行为: 取入和出直流插头/强制 V_SYS 上出现突然的浪涌电流。

    回答:重新启动通常会导致 BOVP 错误、并且会一直停留在该错误状态。 但是、如果我唤醒 CC3100MOD、它将退出 BOVP 错误状态、并恢复正常充电。  如果我已经打开 CC3100MOD、然后重新启动充电器 IC、它将短暂进入 BOVP 状态并恢复正常充电。

    我将 CC3100MOD 的睡眠/唤醒控制和重新启动的充电器 IC 映射到了一些按钮。

    如果这些观察结果能够揭示这种奇怪行为的根本原因、那将会很有趣。  

    HC  

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

    通常不建议添加与电池串联的电流表。 如果您将仪表短路、振荡是否会消失? 如果是、则是设置问题。 如果不是、

    bq24272是 bq24160的自旋。 您看到的振荡和终止问题可能是由于 反向升压检测电路误跳闸、如 www.ti.com/.../bq24168.pdf 的9.3.16.5反向升压(升压反向)保护电路所述。 如果您向存储器位置位0 (EN_NOBATOP)写入1以禁用反向升压预防电路、振荡是否会消失? 如果是、那么为了实现低充电电流终止、我建议在电池接近终止时使用此位。 但是、充满电的电池有可能会升压回输入电压(换句话说、您可能会在 IN 引脚上看到高达10V 的尖峰)。 这不会损坏充电器 IC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jeff、

    感应电阻器仅为10m Ω(因此负载电压非常低)、因此我认为这无关紧要。 当感测电阻短路时、振荡不会消失。

    您能强调一下您的意思吗:"... 然后、我建议在电池接近终端时使用该位、以实现低充电电流终端"。

    "为了实现低充电电流终止"是什么意思?

    如果 有助于在电池接近终端时将 EN_NOBATOP 设置为"1"、我如何知道电池何时接近终端? 我的应用程序被设置在石头上-至少是我的愿望!

    不过、幸运的是(也许)我已经在 SYS 输出上放置了一个 AD MCU 12位引脚。 我是否可以监控此引脚并假设电压大约为4.2V (不再增加)时、充电器处于 CV 阶段-然后说/说我们接近终端并设置 EN_NOBATOP 位? 图2. 将会导致我认为这是可能的。 我还可以在检测到4.2V 以设置 EN_NOBATOP 后等待默认的恒定时间、当然这会有所帮助...

    --

    另一个观察结果:电流现在为100mA。 如果我通过设置控制寄存器中的 RESET 位来复位充电器、则报告 BVOP。 这是合理的、因为电池电压现在设置为3.7V (默认复位)。 如果我在复位后设置正确的寄存器设置、则不会退出/清除 BVOP 故障状态。 退出错误状态的唯一方法是启动 wifi 芯片组或取出直流插孔。

    阅读 bq24168 pdf 后、有一种方法可以清除 BOVP 故障。 设置 Hz 模式! 因此、我将其切换:

    void I2C_ChargerClearBatteryOVPfault ()
    {
    // 02
    BQ24272.control.bit.reset = 0; //无复位
    BQ24272.control.bit.EN_STAT = 0; //禁用 STAT 输出(我们不使用它)
    BQ24272.control.bit.TE = 1; //启用充电电流终止。
    BQ24272.control.bit.CE_N = 0; //充电器被启用。
    BQ24272.control.bit.Hz_MODE = 1; // Hz 模式
    I2C_ChargerWriteReg (BQ24272.control.byte、CONTRAL_ADDR);
    
    BQ24272.control.bit.Hz_MODE = 0; //非 Hz 模式
    I2C_ChargerWriteReg (BQ24272.control.byte、CONTRAL_ADDR);
    } 

    这很有效!

    与 VSYS 振荡/脉冲问题相关:由于我的应用能够通过 AD 引脚检测电压振荡、因此可以检测到该错误状态。 正如您所说的、在我检测到振荡后设置 EN_NOBATOP 位将移除振荡。 之后将 EN_NOBATOP 清零至正常状态似乎是可以的。 在测试期间、我现在看到终端电流约为25mA。 这与预期的50mA 相差很远-但我想我可以忍受这种情况吗? 或者、这会对电池产生不良影响吗?

    HC

    HC

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

    抱歉、应该是"为了允许低电流终止"。 如果您也使用了 ITERM=150mA、则可能没有发现此问题。

    设置 HiZ 模式将重置所有内容、但请务必小心、因为在 HiZ 模式下、只有电池为您的系统供电。 降压转换器被关闭、并且不会在 SYS 上提供 MINSYS 电压。 如果您只需从默认3.6V 写入高达4.2V 的 VBATREG 寄存器、则 BVOP 应复位。

    我喜欢您对 ADC 的想法、即监控电压电平、并且在接近终端时仅更改 EN_NOTBAOP 位。

    ITERM=50mA 时的数据表最小规格为+/-35%、因此您应该以32mA 的最小电流终止。 您的 ITERM = 25mA 测量的精确度如何?