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.

[参考译文] TPS65988:支持 UCSI 版本、并符合规格

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1309790/tps65988-ucsi-version-supported-and-specification-conformance

器件型号:TPS65988

您好!

我似乎找不到任何关于 TPS65988DH 器件支持何种版本的 UCSI 的注意事项。 数据表或技术参考手册中没有说明这一点。

此外、根据 slvubh2b.pdf (技术参考手册)中的第4.15章、某些数据描述与 UCSI 规范不匹配。 例如、表4-52。 UCSI - PPM_RESET、字节3、位6:0"连接编号"。 根据 UCSI 规范(版本1.0、1.2、2.0和3.0)、PPM_RESET 字节3-8是"保留且应设置为零。" 因此、自定义 ucsi 框架(例如 Linux 内核框架)很可能会在字节3-8中插入零、这将根据表4-52中的"连接编号"描述导致"任务被拒绝"。

请在以下网址查看 PPM_RESET 的 Linux 实现: https://elixir.bootlin.com/linux/v5.19.17/source/drivers/usb/typec/ucsi/ucsi.c#L870

此致、

马蒂亚斯

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

    您好!

     由于我们的设计、我们的 UCSI - PPM_RESET 与 UCSI 规格略有偏差、因此连接器编号需要为0x01或0x02。

    此致

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

    您好!

    那么、您不符合 UCSI 标准、因为我们必须修改一些来自 ucsi 框架的消息、然后才能发送到 TPS65988。 如果我们知道与规格的所有偏差、我们就可以接受它。

    是否有偏差? 它们是否在某处得到记录(除了必须根据 UCSI 规范进行规格差异)? 支持哪个版本? UCSI 规范(版本1)规定了19条控制器命令。 slvubh2b.pdf 仅指定11个命令。 其余8条命令又如何? 例如、在 Linux ucsi 实现中大量使用命令 ACK_CC_CI (0x04h)命令。 slvubh2b.pdf 中没有提到这一点。 是不是有问题? 如果是、它是否符合规范?

    此致、

    马蒂亚斯

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

    您好!

    我们的 PD 支持 UCSI 命令。 如果 EC 接收并解析 UCSI 命令、然后将 I2C 发送到 PD、则符合 UCSI 标准、因此并非所有命令都 在 PD 中实现。

    看起来您想要在 Linux 系统下使用 TPS65988、我建议查看此处的驱动程序代码。 https://github.com/brgl/linux/blob/master/drivers/usb/typec/tps6598x.c

    此致

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

    您好!

    恐怕问题没有回答。 让我们同意不同意什么是符合性和什么不是,它不是那么有趣:)

    我以 Linux 为例、因为在我看来、它很容易理解、且源代码对每个人都开放。 这是我追求的原理。

    让我们看一个简单的示例。 我将一个嵌入式控制器 通过 i2c 连接到 TPS65988DH。 端口的 I2C 地址分别为0x20和0x24 (7位)。 我有一个负责逻辑的 UCSI 框架。 此框架为我提供控制器消息(根据 UCSI 规范、版本可定制)以中继到 PD 控制器。 假设我收到消息0x01h 0x00h 0x00h 0x00h 0x00h 0x00h 0x00h 0x00h 0x00h、是符合 UCSI 标准的 PPM_RESET 消息。 我通过读取 slvubh2b.pdf 文件和之前对此主题的响应知道、我无法将此消息盲目地中继到 UCSI 4CC 命令。 我需要将消息修改为0x01h 0x00 0x01h…(对于端口1)或0x01h 0x00h 0x02h…… (对于端口2)、然后再在 i2c 总线上发送它。

    现在我收到另一条消息0x04h 0x00h 0x01h 0x00h 0x00h 0x00h 0x00h 0x00h、这是一条符合 UCSI 标准的 ACK_CC_CI 命令。 现在该怎么办? 由于 slvubh2b.pdf 中没有提到 ACK_CC_CI 命令、我的最佳选择是简单地忽略它、并在 i2c 总线上不发送任何内容、对吗? 如果不是、我是否可以未经修改地发送它?

    最好在某处记录与 UCSI 规范的偏差。 我可以在 slvubh2.pdf 和 UCSI 规范之间做一个手动的"差异",以找出什么不同,但我认为这应该被记录在某个地方(所以我不必一直深入到规范:))。

    此致、

    马蒂亚斯

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

    您好!

    TRM 中列出的 UCSI 命令是器件支持的唯一 UCSI 命令。 不支持 TRM 中未列出的任何其他4CC 命令、并且需要 EC 解析 UCSI 命令、然后从 PD 检索相关信息。  

    以 Windows 系统为例、OS (OPM)向具有 UCM 驱动程序(PPM)的 EC 发送 UCSI 命令、然后 EC (PPM)解析命令并通过 USCI 4CC 命令或读取寄存器内容从 PD (LPM)检索信息。

    ACK_CC_CI 命令是 OPM 和 PPM 之间的命令、此处不直接涉及 PD (LPM)、因此该命令字符串(0x04h 0x00h 0x01h 0x00h 0x00h 0x00h 0x00h 0x00h 0x00h)不会发送到 PD (LPM)、但可能需要 PPM 通过寄存器读取或其他方式检索寄存器数据。 相同的逻辑适用于其他 UCSI 命令、但并非所有命令字符串都可以直接传递到 PD (LPM)、这取决于 EC 驱动器的实现方式。

    我不知道哪个命令需要 PD 提供哪些信息、因为 其中一些信息在 UCSI 规范中没有明确说明、但我们应该在器件寄存器中获得所需的信息。  

    由于 UCSI 命令是 OPM 和 PPM 之间的命令、因此没有进行 UCSI 命令比较。 我们提供了一个接口、供 PPM 访问 PD (LPM)、因此它本质上是不同的。

    此致

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

    您好!

    谢谢、我很清楚。 我可能需要根据我收到的 UCSI 消息、在 EC 中调用其他4CC 命令和/或读取/写入寄存器。

    非常感谢您的观看!

    此致、

    马蒂亚斯