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.

[参考译文] TPS65987D:在电池电量耗尽时提供奇怪的 I2C 主输出

Guru**** 2564200 points
Other Parts Discussed in Thread: BQ25703A, TPS65987D

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/881876/tps65987d-strange-i2c-master-output-on-dead-battery-boot

器件型号:TPS65987D
主题中讨论的其他器件:BQ25703ATPS65987

您好!

我们有一个嵌入式 PC 系统、该系统具有触摸屏和 SOM。  它具有一个内部智能的现成可充电锂电池。  我们的系统依靠电池运行、并使用带 PD 的 USB-C 进行充电和数据交换。  

我们将 TPS65987D 和 BQ25703A 用于 USB-C 和 PD 功能、我们的设计是从 TIDA-01627演变而来的。  ADCIN1的比率设置为0.9。

我们基于 SLVAE-18的 TPS65987D 固件的 I2C 主设备配置(为 BQ25703A 电池管理控制器配置 I2C 主设备)

充电/放电/USB OTG 均按预期工作。   但是、我们遇到了电池启动失效的问题。

每当我们让系统从无电电池( 由于电池内部 FET 切断、电池低压保护、VBAT = 0)开始并插入 USB-C 进行充电时、我们的系统将仅充电约2%。

我一直在使用连接到 BQ25703AEVM 的 TPS65987D-90EVM (采用与我们的设计相同的方式)来开发 TPS 固件和测试。

使用 EVM 模块并运行连接到 BQ 器件的 Battery Management Studio 和 TI 的 BQ 电量监测计软件来监测我们的电池。我已经观察了 BQ 寄存器、会看到地址0x02/0x03复位为零(这是充电停止的原因)。  进一步研究表明、BQ 地址0x00/0x01到0x820E 实际上是设置为0xE20E、而不是将其设置为0xE20E。  看门狗定时器被启用(上电时为默认值)。

在电池电量耗尽时、我监测了 TPS65987与 BQ 之间的 I2C 总线、发现 TPS 中的几条 I2C 命令正在被截断。  消息中不存在寄存器地址和数据。  这些是按照 SLVAE-18中的讨论发出的初始命令。 请参阅示波器捕获。  0x6B 地址后不会发送任何数据元素。

然后、第一个实际正确发送的命令是延迟大约300ms 设置充电电流:

从而使看门狗计时器保持设置状态、并导致我们的系统停止充电。  大约175秒时、电池将停止充电。  这种行为在 EVM 设置和我们的系统上都发生。  截断的消息也是相同的。  如果我们将未耗尽的电池插入系统(无 USB-C 电源)、上述 SLVAE-18消息会正确传输。

通过我们的 SOM 对 TPS65987D 进行冷复位可以解决该问题、因为它会将 POR 命令重新发送到 BQ 器件。  但这不是一个合理的解决方案、因为它需要开启整个系统。  死系统应该能够通过一些更高的控制器交互进行插入和充电、我认为这是使用 TPS/BQ 器件的目的。

被截断的消息看起来像是电池电量耗尽时的错误行为。  如果能在无电电池启动时正确实施 BQ 配置、我将不胜感激。

谢谢、

Dave

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

    我错过了这样一个事实、即这些"截断"传输实际上没有来自 BQ 的 ACK。  我将进一步了解 BQ 器件如何在电池电量耗尽模式下获得供电、从而可能导致其错过初始传输。

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

    尊敬的 David:

    是的、这将是我的建议。 PD 控制器在通电后向充电器发送命令、但电池充电器尚未通电、并且 NAK 是 PD 控制器尝试发送的命令。 我会与充电器团队再次核实、但在电池电量耗尽事件期间、电池充电器将通过 VBUS 引脚供电。 假设触发事件发生在电源复位时、您还可以在 PD 控制器关闭充电器的电源路径后再次发送这些命令、从而为 BQ 上的 VBUS 引脚提供电压。

    希望这有助于解决您的问题

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

    感谢您的反馈 Adam。

    我使用 EVM 板执行了其他测试。   我们怀疑 BQ 器件似乎没有尽快通电。  在下面的捕获中:蓝色=SDA、黄色=SCL、蓝色=Vbus、来自 PP1

    正如您所建议的、我尝试使用"PP1开关打开(关闭)"作为触发事件来复制 POR I2C 主器件事件。  因此、现在我有4个 POR 事件(离 SDA/SCL 活动很远)、并且在 I2C 布线中还有4个事件(中间的 I2C 活动)。  当我的 USB-C 连接到电池电量耗尽模式时(在应用 GUI 工具中使用调试模式进行验证)、PP1开关关闭(打开)。  请注意、栗色迹线表示从 TPS 到 BQ 的 VBUS 馈电。  请注意、在新 PP1关闭 I2C 事件后~17ms 之前、它不会开始升高到5V。   

    看起来唯一成功的事件(右侧 SDA/SCL 活动)是在 POR 事件大约300ms 后协商的 PDO 灌电流协议。

    基于上述内容、BQ 器件在 POR 事件甚至 PP1关闭事件之后才会真正处于活动状态。   

    我已经将"CHRG_OK"连接到 TPS 上的 GPIO、我可以将其用作 I2C 事件触发器、但我不清楚如何执行、因为我没有看到任何涉及 GPIO 的触发事件下拉选项。

    我现在倾向于重新发送有关 PDO 灌电流协商的任何关键配置。  对于我来说、这些是设置的充电电流、无看门狗和正确的充电电压电平。

    Dave

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

    如上所述、我实施了相关工作、即在任何 PDO 灌电流事件中重新发出充电电流、充电电压和禁用看门狗。  这似乎可以解决电池电量耗尽模式下的充电问题。