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.

[参考译文] TPS25751:PlugEvent GPIO 输出切换为低电平

Guru**** 2558470 points
Other Parts Discussed in Thread: BQ25798, MSPM0L1105, TPS25751, TPS25750

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1428562/tps25751-plugevent-gpio-output-toggling-low

器件型号:TPS25751
主题中讨论的其他器件:BQ25798MSPM0L1105、、 TPS25750

工具与软件:

我将 MSPM0L1105通过 I2C 连接到 TPS25751、然后通过 I2C 连接到 BQ25798。 我已将 TPS 配置为通过 GPIO_0输出 PlugEvent 输出、并且全部运行良好-插入 USBC 并保持高电平、删除 USBC 并变为低电平。 我有一些 LED 正由 MSP 根据该引脚的状态进行切换。 我的问题似乎与所连接的电池充满电时有关-我的 USBC 数字万用表显示瞬时~50mA、然后是~15秒的0mA 周期、那么会发生复位事件- PlugEvent 引脚变为低电平、导致在监控该 GPIO 引脚的 MCU 上执行一系列操作。 当 MCU 检测到插入 USB 时、它将通过 INT_EVENT1寄存器查询 TPS、一旦设置了"Ready for Patch"位、即已知 TPS 是否正在运行、之后我查询它处于何种模式-如果它位于应用程序中、则可以假设它不是 POR 并且 TPS 仍然写入了补丁、如果它位于 PTCH 中、那么我将运行参考手册中详述的补丁例程。 因此、在本例中、它正在充电并出现缺口、我查询 INT_EVENT1寄存器、它表示 PD 硬复位(位1)。  任何人都知道什么可能会触发 TPS 的硬复位? 这不是 MSP、因为我可以轻松中断、BQ 将继续按照预期充电、然后停止和恢复充电。 此外、由于在 MSP 控制的 FET 上锁存功率、因此不会发生 TPS 功率损耗。

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

    尊敬的 Legare:  

    您是否有可以参考的系统方框图或原理图?  

    谢谢。此致、

    Raymond Lin

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

    感谢您发送编修。 我不确定哪些方面会对您有所帮助、这里是顶级的方框图。 请告诉我,如果这不画图片!

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

    附件中的一些附加信息是 MSP 和 TPC 之间 I2C 的逻辑布线、并显示了"TPS RESET"的18秒频率的两个实例。 每次复位为35字节序列、正如我提到过的、使用此 I2C 序列的原因是 MSP 看到 USB_GPIO 引脚插入线路从低电平变为高电平(未插入以插入)。 操作顺序如下:

    1.读取 TPS INT_EVENT1寄存器(0x14)-返回顺序为0x0A00204D00000000000003、因此寄存器值为0x030000000000004D20000A。
      - MSP 正在寻找/等待准备补丁位被设定,表示 TPS 正在运行。 值得注意的是、位1为1、这意味着 PD 硬复位、参考手册中提示请参阅 PD_STATUS 寄存器0x40以了解更多详细信息。 我修改了 MSP 固件、然后读取该寄存器

    2.读取 TPS PD_STATUS 寄存器(0x40)-返回顺序为0x1C004005、因此寄存器值为0x0540001C
      -注意,所有的软复位和硬复位位位位都是0 ,这意味着没有复位事件,这似乎与 INT_EVENT1硬复位位相矛盾?

    3.读取模式寄存器(0x03)-返回值为0x41505020、其为"APP"
      -因此,由于 TPS 返回它是在应用程序模式, MSP 固件不会尝试重新执行补丁程序写入序列

    4.写入睡眠控制寄存器(0x70)以在100ms 后(即0x03)启用睡眠

    编辑:似乎我不能上传.Sal ,但我发誓我看到他们之前张贴在这里? 不确定、 但 我已将其上传到 file.io
    (reset_sequence.Sal https://file.io/mFwet3rwawk4)

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

    尊敬的 Legare:  

    此外、由于 MSP 控制的 FET 有一个锁存功率、因此这不是 TPS 功率损失。

    MCU_3V3是否连接到 TPS25751 VIN_3V3引脚?  

    通常、在这两种情况下 TPS25751仅返回"PTCH"模式:  

    1. EC 发送'GAID'命令、强制 TPS25751从其 ROM 重新启动(冷重启)。

    TPS25751在 VIN_3V3上失去3.3V 电压。

    谢谢。此致、

    Raymond Lin

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

    是的、没错。 在电池已满的情况下、TPS 不会返回到贴片模式、我不希望它恢复到贴片模式。 应该一直显示在应用中、直到 MCU 断电、这正是我的体验。

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

    您能否压缩 Saleae 文件并将其附加到此处? 我无法打开您之前发送的链接。  

    您是否还可以附加 JSON 文件以便我在终端查看配置?  

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

    噢 ZIP 作品、很棒! 好的、附件是 Salea 布线以及 TPS 上使用的配置 JSON。
    e2e.ti.com/.../reset_5F00_sequence.zip

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

    您连接的 JSON 适用于 TPS25750、而不是 TPS25751。 您是否使用此 JSON 配置来加载 PD 固件配置?  

    此外、您的 MCU 中是否有处理中断后清除中断的流程? 这些中断应通过寄存器0x18来清除、该寄存器未出现在 Saleae 日志中。  

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

    感谢您的支持、Raymond。 我最近继承了这个项目,所以请原谅我的天真。  它实际上是板上使用的 TPS25750。

    至于处理中断、没有、 没有对 INT_CLEAR1进行写入。 这是否必要/是否会改变情况? 《参考手册》的补丁突发模式执行流程一节中没有提及它。

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

    由于您启动了它、I2C IRQ 线路是否应该从 TPS 连接到 BQ? 目前、两条 TPS 的 I2C IRQ 线路均未连接。 我认为 I2CM_IRQ 输出符合 TPS 上存在 IRQ 事件时 MCU 将切换的条件、然后 MCU 可以发出 INT_EVENT1读取来确定原因。 但是、由于 TPS 和 BQ 要一起使用、因此对于更自主的类似操作、TPS 和 BQ 之间是否需要 IRQ 线路?

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

    如果您没有清除中断寄存器、先前触发的中断事件将保持原样。 I2Cs_IRQ 线路是应从 PD 连接到 MCU 的线路、其中 PD (TPS25750)是 I2C 从设备、MCU 是 I2C 主设备。 I2Cm_IRQ 旨在用作从器件(即 BQ)的 I2C 主器件、但这是保留功能、不需要连接到 BQ 器件。  

    如果可能的话、我建议在 PBMx 序列之后读取中断状态寄存器、并且清除任何不再有效的中断(例如、补丁已载入[80]或者补丁已准备就绪[81]、这是因为当 TPS25750进入 APP 模式时、这些中断应该已经完成)。 此外、使用 INT 线路可以更好地指示何时触发特定中断。 依靠 GPIO 处理插入事件可能可以、但可能发生了一些与插入事件不相关的其他中断事件。  

    我还想强调的是、我们确实拥有 TPS25750的后续器件、该器件称为 TPS25751。 TPS25751与 TPS25750引脚对引脚、并且与 PD3.1兼容。 可在此处链接的此常见问题解答页面上找到更多详细信息: https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1346998/faq-tps25751-migrating-from-the-tps25750-to-the-tps25751 

    如果您有任何问题或需要进一步说明、请告诉我!  

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

    一切都很有意义、Raymond。 谢谢你。 在 未设置 PD_STATUS 中的任何重置原因时、我为什么会"重置"? 沿着这些思路、我刚刚发现 BQ 需要寄存器数据 MSB->LSB、BQ 如何以相同的方式返回寄存器数据? 也就是说、在我上一篇文章中、我读取了 TPS PD_STATUS 寄存器(0x40)、逻辑布线显示了返回的字节顺序0x1C004005。 那么、我曾认为接收到的第一个字节是最低地址、因此寄存器值为0x0540001C、但这是否正确、寄存器值实际上是 0x1C004005? 这将对我的调查产生重大影响

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

    从 TPS25750/1读回数据是小字节序、这意味着它从 LSB 变为 MSB。 回读的第一个数据字节是中断状态寄存器的寄存器大小、后跟中断状态寄存器的第一个字节(字节0)。  

    另一方面、BQ25798是 I2C 写入和读取的大字节序(MSB、然后是 LSB)。 您是否是在从 MCU 向 PD 发送"I2Cw"/"I2Cr"后在 DATAx 中引用读回值?   

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

    我之前提到的是 BQ25798写入/读取。 我用小端字节序将数据打包到 BQ 中、但现在知道这是不正确的。 我认为这实际上解决了电池充满时的重置问题。 我怀疑我写入的数据是由于字节顺序不正确而意外的。 感谢您的宝贵意见、Raymond。  

    现在、我还有一个与 BQ25798有关的问题-如果应在另一个主题中开始、请告诉我将在哪个时间点解决该问题并打开一个新主题。 但新的问题是高阻态模式:BQ 不会自动进入高阻态、充电完成时、0x1C 中的 BQ 充电状态为7、充电终止完成、但 BQ 仍像开关一样消耗5 -7mA。 如果写入充电 控制寄存器(0x0F)以启用 HIZ、则电流会下降至微安、成功!  不过、 目前我会定期读取电池电压、以确定它是否处于应该再次充电的阈值、此时我再次禁用高阻态并且充电恢复。 是否可以通过某种方法让 BQ 根据充电电压/状态和测量的电池 ADC 自动启用和禁用高阻态?

    再次感谢

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

    最好为 BQ 团队添加新问题的新主题。