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.

[参考译文] BQ25180:充电状态变化中断

Guru**** 2513185 points
Other Parts Discussed in Thread: BQ25180

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1337442/bq25180-interrupt-on-charge-state-changes

器件型号:BQ25180

您好!

我将为 BQ25180编写驱动程序、但未按预期获得中断。

我在做什么:

  1. 将 CHARGECTRL1设置为 0x50 (不屏蔽任何中断)
  2. 连接充电器
  3. 发生中断时、读取 STAT0寄存器
  4. 使用 STAT0的 CHG_STAT 字段确定充电状态

实际情况是、当我将5V 连接到 IN 时、我会得到一个中断并能够成功地确定充电状态。 (根据电池状态、我获取 CV、CC 或充电完成状态)

但如果我将其保持连接、它绝不会改变。 如果我希望状态为 CV、并在切换到 CC 时中断、当处于 CC 时、我希望和中断完成充电。 但这种情况从未发生。

我是否误解了 CHRGECTRL1寄存器? 特别是 CHG_STATUS_INT_MASK 字段?

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

    您好!

    通过将 CHG_STATUS_INT_MASK 位保持为清零状态、您应该在 CHG_STAT 字段发生变化时接收中断。 您能否澄清一下:

    Unknown 说:
    但如果我将其保持连接状态,它就永远不会改变

    如果您保持 VIN 连接、尽管电池电压发生变化、CHG_STAT 仍不会变化并保持相同状态? 或者电池电压是否不发生变化? 如果您通过 CHG_DIS 位启用或禁用充电、您是否看到 CHG_STAT 发生变化并生成了中断? 如果产生中断、会出现什么标志?

    此致。

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

    感谢您的回复。

    我的措辞不正确。 充电按预期工作。 VBAT 提高至设置电平 、 来自 PSU 的功率消耗降低(表示 CC)。 当我在启动时读取 CHG_STAT 时、它显示了当前状态的正确值、因此我假设 CHG_STAT 字段是正确的。

    但引脚上没有中断。 (已使用示波器进行验证)

    我在 VIN 连接且电池充满电的情况下测试了以下序列:

    1. 禁用充电(将 ICHG_CTRL 从0x23更改为0xa3)
    2. 读取所有寄存器
    3. 启用充电更改 ICHG_CTRL 从0xa3到0x23)
    4. 读取所有寄存器

    在#1我没有看到在振荡器上的中断,但在#3我看到了。

    2号和4号处的寄存器内容:

    Register Acronym CHG_DIS=1      CHG_DIS=0
    0x00     STAT0        0x61      0x61
    0x01     STAT1        0x00      0x00
    0x02     FLAG0        0x20      0x00
    0x03     VBAT_CTRL    0x3c      0x3c
    0x04     ICHG_CTRL    0xa3      0x23
    0x05     CHARGECTRL0  0x2c      0x2c
    0x06     CHARGCTRL1   0x50      0x50
    0x07     IC_CTRL      0x84      0x84
    0x08     TMR_ILIM     0x4d      0x4d
    0x09     SHIP_RST     0x11      0x11
    0x0a     SYS_REG      0x40      0x40
    0x0b     TS_CONTROL   0x00      0x00
    0x0c     MASK_ID      0xc0      0xc0

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

    您好、Oscar、

    STAT0似乎没有在这两个条件之间发生变化、因此我不确定它是否会在这种情况下引起中断、因为它似乎在切换 CHG_DIS 时终止。

    您能否在电池处于较低(充电)电压的情况下再次尝试此场景?

    此致、

    胡安·奥斯皮纳

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

    您好!

    我只在星期五工作、但下周我会检查。

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

    将等待结果。

    此致。

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

    我已经使用较低的电池电压(略小于4.0V)重新完成了测试。 我还将充电电压改回4200mV。

    这次我在#1和#3都得到了一个中断。 寄存器的内容如下所示。

    Register  Acronym       CHG_DIS=1   CHG_DIS=0
    0x00      STAT0         0x61        0x41
    0x01      STAT1         0x00        0x00
    0x02      FLAG0         0x00        0x00
    0x03      VBAT_CTRL     0x46        0x46
    0x04      ICHG_CTRL     0xa3        0x23
    0x05      CHARGECTRL0   0x2c        0x2c
    0x06      CHARGECTRL1   0x50        0x50
    0x07      IC_CTRL       0x84        0x84
    0x08      TMR_ILIM      0x4d        0x4d
    0x09      SHIP_RST      0x11        0x11
    0x0a      SYS_REG       0x40        0x40
    0x0b      TS_CONTROL    0x00        0x00
    0x0c      MASK_ID       0xc0        0xc0

    我还尝试手动触发中断(通过将 INT 短接至 GND)、在读取寄存器时、它会报告充电完成。

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

    我发现了问题。

    我漏掉了内部看门狗由 I2C 通信进行修补。 在测试看门狗时、看门狗在默认的160秒运行、我在该时间范围内手动触发了中断。 但在160之后、寄存器值被复位、从而屏蔽了中断。

    在禁用看门狗的情况下、一切都按预期运行。

    但相关问题:看门狗有什么用例? 使用它有什么好处?

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

    您好、Oscar、

    看门狗主要是一种确保 MCU 仍在工作的方法、尤其是在高电流充电期间。 如果160秒内没有进行 I2C 通信、则充电器会假定主机无法正常工作、因此会将所有器件恢复为默认值、包括低充电电流默认值。

    此致、

    胡安·奥斯皮纳

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

    明白了、谢谢!

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

    很乐意为您提供帮助!