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.

[参考译文] TPS65982:TPS65982未检测到 USB 连接

Guru**** 2582695 points
Other Parts Discussed in Thread: TPS65982, TPS55288, TPS65981

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1069059/tps65982-tps65982-not-detecting-usb-connection

部件号:TPS65982
“线程”中讨论的其它部件: TPS55288TPS65981,测试

您好,

我使用 TPS65982控制 USB-C 设备的充电模式。 这款芯片对我来说是全新的,我目前正在学习曲线,以使其正常运行。 应用程序自定义工具 GUI 用于创建.bin 文件,以使用 SPI 对闪存芯片(W25Q80)进行编程。 我可以让 USB-C 设备在5V 时充电约为1.1A,在12V 时充电约为500mA,但无法检测到电缆连接。 主板的电源为5V (VIN_Z = PP_EXT)。 在正常操作下,PP_HV 应使用 TPS55288芯片供电20V,但这也不起作用。 为了进行测试,我绕过了 TPS55288芯片,并一直 在为 PP_HV 提供12V 源输入。  当我读取状态寄存器时,表示没有建立 USB 连接。 它还显示 PP_HVswitch 上存在故障。 我认为,我看到的许多问题都是由于电缆检测不足以及 GUI 配置可能错误造成的。

下面附有原理图,寄存器转储和 GUI 设置。

当我创建新项目时,我选择了 TPS65982 (NRND)->标准->无->双角色端口(DRP)更喜欢电源。

在应用程序自定义工具 GUI 中配置设置时,我对某些选项的措辞有点困惑。 在系统配置区域的 GUI 中,PP_5V0只能被禁用或设置为输出。 在第91页的 TPS65982数据表中,PP_5V0看起来像输入。 在我们的设置中,PP_EXT (5V),PP_5V0和 PP_HV (12V)都是输入,但如果我设置了,请尝试将其设置为输入,这样,USB-C 设备就不会充电。 在我们的应用中,VBUS 应该是唯一的输出,除非我对这些输出被标记为输入或输出有误解。

到底什么是 PP_hve,它在 GUI 中列出,但不在数据表中列出。 它似乎与 PP_EXT 相关,当 PP_hve 本身被设置为输出时,它可以为我的 USB-C 设备充电。

我还对 TPS65982如何选择哪个电源为 USB-C 设备供电感到困惑? 当我禁用 PP_5V0并将 PP_hve 设置为输出时,我可以从 PP_EXT (VIN_Z)为 USB-C 设备充电,但当我同时将 PP_5V0和 PP_hve 作为输出时,USB-C 设备仅从 PP_5V0充电。 当我关闭 PP_5V0的电源时,PP_hve 将不会切换为 USB-C 设备充电。 现在无法进行 mux 可能是由于未检测到电缆连接。

我认为 C_CC 引脚配置可能负责检测电缆方向,但为什么 TPS65982根本无法检测到电缆连接?

对于寄存器值,我参考  了 TPS65981,TPS65982和 TPS65986主机接口技术参考手册。

在 USB 连接之前,状态寄存器(0x1A)的读数为0x60000400,第2个字节中的4 (0100)位为11:10,表示“PP_HV 开关当前因故障(系统输出)而禁用。” 我无法确定导致这种情况的原因。 第一个字节中的00表示没有插头。

建立 USB 连接后,状态寄存器显示为0x6d022400。 由于故障,PP_HV 开关仍处于禁用状态。 第一个字节仍为00,不存在插头。

PP_HV 故障是否可能导致电缆检测不足?

下面是 TPS65982的连接原理图。

 

以下是我用于 TPS65982的配置设置。 由于无法解决的错误,应用程序 GUI 无法保存项目,因此我保存了屏幕截图并将其压缩。

e2e.ti.com/.../Application-Custimization-Tool_5F00_Configuration.zip

以下是注册输出,用于无 USB 连接与已连接设备。

e2e.ti.com/.../TPS65982_5F00_RegOutput.xlsx

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

    我同意,由于原理图或配置中的某些电源问题,未检测到 USB 电缆方向的原因。 如果可以,请在连接设备时从 USB Power Deliver Analyzer 发送 PD 日志。 这可能有助于显示设备在关机前是否尝试连接。

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

    遗憾的是,我无法访问 USB 电源传输分析器。 我会研究如何获得一个。

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

    如果 PD 分析仪不可用,如果您可以探测 CC 线路以查看除初始连接外是否有任何变化。

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

    我真的倾向于 PP_HV 开关故障是罪魁祸首。 这条线路上的故障可能由什么引起? 我已在 GUI 中完全禁用 PP_HV 线路,故障仍然存在。 我尝试了几乎所有设置来配置此芯片,但未能排除此故障。

    我能够监控两条 CC 线路。  

    我注意到,当我将电缆连接到 TPS65982时,当我将电缆置于方向2时,我可以在设备端翻转电缆,在 C_CC1或 C_CC2上看不到任何更改。

    以下是屏幕截图。

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

    我同意 PP_HV 故障现在是问题所在。 我将在星期一外出度假,因此会推迟回复。 我将查看 TPS65982文档,并在星期二返回给您

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

    瑞安

    请执行以下操作:

    1)尝试获取 PJT 以保存并在此处共享。 我不确定为什么会有问题

    2)在系统配置(0x28)下启用"Im琳 为 PP_EXT"并将 PP_EXT 配置设置为"PP_EXT 为输出配置"

    3)当设备正在运行并且通过 GUI 连接到它时,请从 GUI 的菜单顶部进入调试模式,然后转至 Decive 1, port 1-> Commands -> DBfg - Dead Battery Flag Clear -> Execute DBfg

    4)转至调试寄存器->模式(0x3)->在此处读取值(可以在没有 GUI 的情况下完成)

    步骤3也可以在没有 GUI 的情况下完成,但可能需要更多的参与。

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

    您好,Christodulos,

    我终于获得了 PJT 以保存,不得不以管理员身份运行该应用程序 见下文附件。

    我能够连接到 GUI,我的电线悬挂在连接到 Aardvark 适配器的上拉电阻器上。 GUI 在寄存器上显示完全不同的读数。 它表明插头正在建立连接,但 PP_HV 开关仍存在故障。  我现在需要更多时间来通过 GUI 全面了解这一点。 这似乎还不是权力的哗变。

    模式寄存器读取0x205041,这是应用程序模式,这是它以前读取的模式。

    状态寄存器0x1A 读取0x4006D。

    DBfg 标志清除命令被拒绝。

    总的来说,这似乎是个好消息,但我希望在未连接到 GUI 时能够读取相同的值。

    e2e.ti.com/.../DRP-Prefer-Power-Source_5F00_ILIMdisabled.pjt

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

    很高兴 GUI 在工作!

    应用程序模式良好。 我建议使用某种类型的 I2C 记录器(总相位/Saleae)来捕获 I2C 事务读取格式,以便您可以复制 GUI I2C 事务。

    借助 PJT,我可以尝试在 EVM 中重现问题。 当我加速时,您是否可以在设备连接时拍摄寄存器快照(进入调试模式->从顶部菜单中单击调试->拍摄快照)?

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

    下面是快照。

    e2e.ti.com/.../DRP_5F00_ILIMdisabled_2D00_Snapshot.zip

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

    从快照中,“调试”寄存器快照显示存在连接,且连接使用 PP_5V

    状态(0x1a)-(0x24026d)
     状态
       插头存在          插头,有关详细信息,请参阅连接状态(如下所示)。 (0x1)
       存在连接状态            连接,未检测到 Ra (Rd 但无 Ra)或未检测到 Rp,包括在 Attached.SNK 中连接的 PD 控制器。 (0x6)
       插头方向      倒置(C_CC1上的插头 CC)或方向未知或端口已禁用/断开。 (0x0)
       端口角色             PD 控制器为来源(C_CCX 上拉活动)。 (0x1)
       数据角色             PD 控制器是 DFP。 (0x1)
       启用了 VConn         的 VConn 不由该控制器提供(0x0)
       PP_5V 开关          已启用从 VBUS 到电源通道的反向电流阻塞(用作输出)(0x2)
       PP_HV 开关          已禁用(0x0)
       PP_Hve 开关         已禁用(0x0)
       PP_电缆开关       已禁用(0x0)
       过电流           错误(0x0)
       电源          VIN_3V3 (0x1)
       VBUS 状态           VBUS 处于 PD 协商的其他功率级别,且在预期限制范围内。 如果多通道 ADC 处于活动状态,请参阅 ADC 结果了解确切的电压。 (0x2)
       USB 主机不      存在提供 VBUS 或 PD 控制器电源角色为来源的远端设备。 (0x0)
       充当传统      PD 控制器不在传统模式下(非 PD 模式)。 (0x0)
       转至“最小活动      无 PD 合同已建立”或“GotoMin 限制已被源功能”消息或“断开连接/硬重置”清除。 (0x0)
       BIST                  未进行 BIST (0x0)
       高电压警告  PD 控制器作为接收器或 VBUS 电压运行低于 HighVoltageWarning</Z1>指定的限值限制寄存器或端口断开。 (0x0)
       低电压警告   PD 控制器作为接收器或 VBUS 电压工作超过 LowVoltageWarningLimit 指定的限值限制寄存器或端口已断开连接。 (0x0)

    我认为 PD 工作正常,但 I2C 读取处理不正确,因为 GUI 能够从 PD 中提取这些信息。 检查在 GUI 外部执行 I2C 通信的方式和方式。

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

    是的,我在几次回答中都提到了这一点,但连接到 GUI 时的行为与使用具有相同配置的二进制文件对内存进行编程时的行为不同。 虽然未连接到 GUI,但状态寄存器会列出 HV 开关上的故障,并且不存在插头。 我看到的另一个问题是 ,我们的设备无法在充电器一侧的 USB - C 电缆两侧充电。 我可以翻转设备侧的电缆,它可以为两侧充电,但在充电器侧,当参考 CC 线路屏幕截图时,它只能在方向1充电。 方向2有一些变化,在这种情况下,它看不到设备何时连接,并且电缆插入设备端时 CC 线路没有变化。 本周我没有太多时间进一步调试,我将在星期一尝试一些事情。  

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

    瑞安

    要从 GUI 加载配置,您需要执行哪些步骤? 您是否使用当前项目的二进制->闪存加载配置?

    另外,方向有问题的 c 型电缆也很奇怪。 您是否尝试过其它电缆? 在 CC_1/CC_2导线上,我看不到示意图中有任何明显的问题。

    谢谢,

    克里斯

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

    我通过保存二进制文件并使用 aardvark SPI 编程器将二进制数据加载到闪存芯片(W25Q80)上来加载软件。  加载文件以进行刷新的步骤包括:
    ) 从应用程序自定义工具保存.bin 文件。 二进制->检查“低区域(完整页眉)”->“更改文件”->“确定”

    2) 打开闪存中心,选择 Aardvark 适配器,选择 W25Q80闪存,然后选择 Program + Verify。 如果验证失败,我将擦除并重新编程,直到验证成功。

    我确实做了一些测试,以查看是否通过 将输出功率从仅 PP_EXT 更改为仅 PP_5V0来更改配置。 在我的设置中,这两个输出由两个单独的电源供电,根据所选的电源,电源上的电流消耗会有所不同。  我看到的问题是,当 PP_EXT 和 PP_5V0都设置为输出时,如果我将电源转至 PP_5V0,则电源不会切换到 PP_EXT。 我不确定我是否理解错误,但我认为它应该能够根据可用情况切换(mux)源。  我认为我在 PP_HV 开关上看到的故障是导致这种情况的原因,但连接到 GUI 时该故障似乎已消失。

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

    瑞安

    我担心程序+验证失败足以导致此问题。 我建议从 GUI 执行 Flash 读取并比较从 PD 读取的.bin。 这可能是闪存问题。

    假设闪存不是问题,则 PP_5V0和 PP_EXT 将配置为特定的电源路径。 用户应指定,PD 不会根据可用的内容切换到一个或另一个。

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

    我不知道为什么它有时会失败,但验证基本上是对原始 bin 文件的读取/比较。 当它失败并且我进行了验证时,它也失败了。 但 当我成功加载时,我可以验证它是否与 bin 文件匹配。 我甚至可以手动转储闪存,并与原始纸槽进行比较,它看起来是一样的。 闪存加载失败后,我肯定不会开始测试 TPS65982。 我等待它成功加载,然后重新启动主板以使更改生效。

    如果用户需要指定,为什么有一个选项可以设置同时启用所有不同的输出? 如果设备不支持快速充电,则 应使用正确电流值的 PP_5V0。 如果可以支持快速充电,则应使用 PP_HV 或 PP_EXT 为设备提供更高的电压和电流。 如果我错了,请纠正我。 这就是为什么我认为它应该能够在电源模式之间切换。 数据表中的描述似乎在第4页上提到了这一点。

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

    瑞安

    让我确保我的 PP_设置正确:

    您已将 PP_HV 连接到电源(PP_HV 用于源模式)

    您已将 PP_EXT 连接到不同的电源(也仅用于源模式)

    我要说的是,如果设备是源角色,而当前 PDO (源功能)开关源是 PP_HV,则关闭 PP_HV 会导致断开连接。 当 PP_HV 终止时,PD 不会切换到其他协议合同。

    或者,我希望如果选择了 PDO 并且其开关源为 PP_hve (PP_EXT),那么断开 PP_HV 不会导致问题。 侧注,PP_5V0用于为 CC 线路之间的 VCONN 供电,因此这对于始终具有5V 电压非常重要

    至于未连接到 GUI 时设备未按预期运行,我知道 GUI 仅查询 PD 或重新编程 EEPROM (如果被告知),您如何将 GUI 连接到系统? 通常,这不应干扰 PD 操作。

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

    我将 TPS65982的 CH1 I2C 线路连接到 Aardvark 编程器,然后 GUI 可以连接到 TPS65982。

    如果没有连接到 GUI,我会将相同的 I2C 线路与 PIC 微控制器一起使用,PIC 微控制器会向特定寄存器发送读取命令,我可以看到这些值与 GUI 列出的值不同。  

    为了防止 PIC 和 Aardvark 驱动线路,我清除 PIC 并连接 Aardvark,或者我断开 Aardvark 并对 PIC 进行编程。

    我知道从 PIC 读取数据时数据很好,因为大多数寄存器 与 GUI 相同,例如处于 APP 模式,但特别是0x1A 寄存器我看到 PP_HV 开关故障,并且仍然没有插头连接。

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

    请使用 PIC 阅读引导标志(0x2D)寄存器吗? 我希望在不使用 GUI 时看到这些值

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

    0x2D 寄存器从 PIC 读取0x1980300712E9180030000000。

    0x2D 应该为0x18E91207308019

    编辑:当我尝试获取0x2D 寄存器时,我在 GUI 中意识到所有字节都已交换。 我不理解为什么要交换字节,因为当我执行十六进制字符串转换时,0x1寄存器读取 ACE1,0x3读取应用程序,0x4读取 I2C,所以我认为顺序正确。 我在数据表中找不到这些寄存器应该都是大端子或小端子。 我确实看到寄存器中的一些字节应该被读为“小端点”。  

    通过这一发现,“状态寄存器”现在很有意义,似乎我看到了一个即插即用事件。 我仍然无法确定为什么我的设备在 TPS65982一侧的 USB-C 电缆的两个方向上都无法充电。

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

    正在插入哪个设备,并且您尝试了不同的电缆?

    尝试将不同的设备和电缆组合在一起,以查看方向是否与电缆,设备或 PD 相关。

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

    我可能已找到问题。 主板上的 USB-C 插座似乎很多损坏。 在不起作用的 USB 方向上,如果您施加相当大的力在插座和插头之间完全接触,则连接方向会被视为倒置,GUI 中检测到 Ra,而没有 Rd。 这就是为什么尝试多根 USB 电缆产生相同结果的原因。 遗憾的是,当您松开电缆时,它会失去一些接触,设备停止充电,GUI 将不再看到电缆的方向。 我们必须确定是否可以换用不同型号的连接器。

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

    很高兴问题被发现。