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:从灌电流切换到拉电流的步骤

Guru**** 2393725 points
Other Parts Discussed in Thread: TPS65987D, MSP430FR2433, BQ25713, TPS5450, EV2400

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/924586/tps65987d-steps-for-switching-from-sink-to-source

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

您好!

我需要将一个主要是电池充电灌电流的端口切换到电源、以便我们可以使用 OTG 类型的器件。  我使用了设置和寄存器的数量、但似乎无法切换。  是否有人可以总结所需的步骤和注册?

我从 GUI 工具中提供的默认灌电流项目开始。  我设置了发射源功能、并要求它通过几种不同的方式进行切换。  

PP_HV1上连接5V 电源、2和3.3V 由外部 LDO 供电。  

谢谢、

Chris

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

    尊敬的 Chris:

    您可以通过更改端口控制寄存器(0x28)的位0:1来更改端口角色。 您是否对此进行了实验?

    将这些位设置为0x01会将角色更改为仅源。

    这是否能回答您的问题?

    此致、
    Kedar

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

    我尝试过它。  实际上、我在 这里找到了一个更详细的文档、但仍然有问题。  

    我写了这个脚本、但运气不好。  读出的值是来自前3个寄存器的0是否有原因?

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

    尊敬的 Chris:

    读取的值应该已经读取了写入的值。 对此、我需要一些时间进行调查。

    因此、您似乎希望在检测到 OTC 器件后切换到源角色。 您执行的最后一个命令(从交换到源)似乎已成功返回、但您仍然看到器件处于灌电流角色? 您能否通过 TotalPhase 等工具共享 PD 日志?

    此致、
    Kedar

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

    我没有 Totalphase 分析器、但已经订购了一个。  各种状态寄存器似乎指示一些奇数和冲突信息。  

    。  

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

    我还想补充一点、现在非常不清楚哪些寄存器需要保存到闪存中、哪些寄存器可以通过写操作进行调整。  我正在使用写入操作、因为我的大多数闪存尝试都失败了、并显示了任意数量的不可加密错误消息。  例如、更改0x32的尝试似乎永远不会成功。

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

    尊敬的 Chris:

    根据您之前的观察、当 Type-C 未连接且端口设置为 DRP 时、您可能会看到不同的值、具体取决于寄存器的单独读取何时发生、因为切换在 SRC 和 SNK 之间。

    对于最后一个问题、我需要查看一些日志。

    您是否获得了总相位分析器?

    请分享 TotalPhase 和 I2C 日志中的 PD 日志以供进一步调查。

    此致、
    Kedar

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

    Kedar、这种故障排除非常缓慢。  我们是否可以进行屏幕共享调试会话、以便我希望很快得到某种程度的帮助?  否则、我将需要选择其他供应商、因为我无法承受该项目的巨大延迟。  

    我有一个总相位分析器。  可以查看总线消息、但现在我甚至无法让 TPS 芯片在总线上施加5V 电压、从而开始发送消息。  

    我在设置的寄存器方面遇到了很多问题、这些值永远不会改变。  闪存似乎最终得到了良好的验证、但当我在调试模式下检查寄存器时、它们不是设置的。  

    C

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

    尊敬的 Chris:

    是的、我们可以有一个调试会话。 但在此之前、您能否共享我请求的日志? 我怀疑可能有一些设置导致了这种情况。

    假设您使用我们的 EVM 来运行测试。

    我的理解是否正确?

    对于调试会话、我需要:

    Aardvark I2C/SPI 分析仪、
    2. TPS65987D EVM +您的平台。
    示波器。

    请确认您已准备好这些文件、我们可以设置调用以进行调试。

    此致、
    Kedar

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

    当时我共享的日志就是我拥有的所有日志。  PD 分析仪没有显示任何内容、因为没有发送消息。  此后、我取得了一些进一步的进展、但仍然存在问题。  

    无论我提供什么其他命令来尝试和缓解问题、TPS 芯片都无法成功执行 SRDY 命令。  

    目前、我只使用应用程序自定义工具与芯片进行对话、直到我能够正常操作。  此时、我将通过 I2C 将命令移动到我的微控制器。

    总之、以下是 PD 状态机跟踪:

    端口0 Type-C 0x0 = SRC_State_disabled

    端口0 Type-C 0x0 = SRC_State_disabled

    端口0 Type-C 0x0 = SRC_State_disabled

    端口0 Type-C 0x0 = SRC_State_disabled

    端口0 INT 0x51 = READY_ORT_PATCH.COM

    端口0 PD 0x1 = PEState_CableTypeDetect

    端口0 Type-C 0x66 = common_State_Unattached_SNK

    端口1 PD 0x1 = PEState_CableTypeDetect

    端口1 Type-C 0x0 = SRC_State_disabled

    端口0 Type-C 0x65 = common_State_AtTACHWAIT_SNK

    端口0 Type-C 0x61 = common_State_Attached_SNK

    端口0 BC 1.2 0x0 =充电器检测_init

    端口0 PD 0x2 = PEState_LaunchPolicyEngine

    端口0 PD 0x21 = PEState_Sink_Startup

    端口0 VBUS 0xcc = VBUSState_Mon_Hilo

    端口0 VBUS 0x90 = VBUSState_Mon_HI

    端口0 PD 0x22 = PEState_Sink_Discovery

    端口0 PD 0x24 = PEState_Sink_WaitForCapCapabilities

    端口0 BC 1.2 0x11 = secondary 检测_wait

    端口0 BC 1.2 0xe = Charger_detection_disabled.

    端口0协议0xc0 = PRState_Squelch_active

    端口0协议0xc1 = PRState_Squelch_IDLE

    端口0协议0xc5 = PRState_RX_BUF_RDY

    端口0 PD 0x26 = PEState_Sink_EvaluateCapability

    端口0 PD 0x27 = PEState_Sink_SelectCapability

    端口0协议0xc8 = PRState_TXDONE

    端口0协议0xc0 = PRState_Squelch_active

    端口0协议0xc1 = PRState_Squelch_IDLE

    端口0协议0xc5 = PRState_RX_BUF_RDY

    端口0协议0xcb = PRState_Received_GOODCRC

    端口0协议0xc0 = PRState_Squelch_active

    端口0协议0xc1 = PRState_Squelch_IDLE

    端口0协议0xc5 = PRState_RX_BUF_RDY

    端口0 PD 0x28 = PEState_Sink_TransitionSlink

    端口0 BC 1.2 0x2 = PRIMARY_DETection

    端口0 BC 1.2 0xF = PRIMARY_DETECT_WAIT

    端口0 BC 1.2 0x10 = DISABLE_PRIMARY_DETECT_WAIT

    端口0 BC 1.2 0x3 =次级检测

    端口0 BC 1.2 0x4 =充电器检测_COMPLETE

    端口0协议0xc0 = PRState_Squelch_active

    端口0协议0xc1 = PRState_Squelch_IDLE

    端口0协议0xc5 = PRState_RX_BUF_RDY

    端口0 PD 0x29 = PEState_Sink_PS_RDY

    端口0 PD 0x2a = PEState_Sink_Ready

    下面是 PD 分析仪迹线的屏幕截图:

    我有用于调试的所有其他设备。  请在您有空时告诉我。

    谢谢、

    Chris

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

    尊敬的 Chris:

    我将向您发送有关会议建议的个人消息。

    此致、
    Kedar

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

    感谢您的电话和支持本项目的持续工作。  大家都知道、我们仍未解决所有问题、但发现了 EVM 工具的一些问题。  我将尝试在这里进行归档总结、并可能对这些领域提出单独的解决方案。  

    我正在使用以下芯片:

    - MSP430FR2433作为 I2C 主设备

    - TPS65987D 作为 USB-C 接口

    - BQ25713电池充电器

    - BQ40Z50-R3作为电量监测计

    - TPS5450为5V 降压转换器

    我有3个18650类型的串联电池以及9V 和5V 的各种负载。  现在、我已经为这些产品中的每个产品连接了 EVM 板。  

    调试一直是一个主要的挑战、因为 EVM 工具似乎通常不想相互配合使用。  以下是一些问题:

    -FTDI USB 接口和驱动程序不一致且有问题。  我看到简单 I2C 扫描甚至不会以"I2C 地址扫描期间遇到异常:未检测到 FTDI I2C 通道(I2C_GetNumChannels)、退出..."开头。 消息出现。  在电源循环组合后、拔下/重新插上 USB 电缆、关闭所有其他设备或卸下所有其他 USB 设备等、我有时可以使其正常工作。

    -来自 TPS GUI 的错误消息不是很有用。  当您调试复杂的系统时、遇到各种问题、并遇到有用的错误消息、这一点至关重要。  从闪存程序验证错误、简单芯片不响应 I2C 读取、配置寄存器不执行写入操作(即使 GUI 暗示它们成功)到一般 I2C 问题、我都看到了所有问题。  其中一些原因可能是我的错误、但具有有用的错误消息确实有助于找出根本问题的根源并加速开发。

    I2C 工具需要支持总线上的多主器件。  GUI 工具非常有用、但如果您要开发除最简单系统之外的任何其他工具、它们也需要与其他器件配合使用。  现在、我有一个复杂的方案、在该方案中、我需要从系统的其余部分移除 EVM、只需连接 GUI 足够长的时间即可读取一些特殊寄存器或发出命令。  各种电路板上的上拉电阻器也会使这一过程变得复杂。  

    - EV2400 (连接充电器和电量监测计的接口)似乎经常断开连接。  我必须确保在运行长电池测试时它是唯一插入的 USB 设备。

    - EVM 应具有两个 I2C 连接器,以便可以轻松地将器件组合在一起或旁路

    -需要更多的测试点。  需要将 TPS EVM 上的3.3V 电源引出至测试点(VIN_3V3和 LDO_3V3)。  CC 线路和 USB_P/N。

    -未通电时、并非所有芯片在 I2C 总线上的行为都相同(BQ25713)。  这使得尝试与某些配置中的芯片通信变得复杂、而休眠芯片使整个总线中断。  我已经用串联电阻器和上拉电阻器的正确组合来解决这一问题、但这有点是带辅助。

    我想、一个常见的主题是 I2C 总线工具、它强大、成熟、灵活、一致、开源无疑是个不错的选择、可以修复上述许多问题。  EV2400内的 MSP 芯片可能是所有 EVM 上支持的通用接口。  

    希望这能帮助您的团队了解典型问题。

    C

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

    我在电话上与 Kedar 交谈。  通过从接收器 TPS65987项目开始、进行以下更改、我们可以使其获得灌电流或拉电流电源。  

    • 端口配置到 DRP
    • 添加至少一个具有5V 电压的发送源 PDO。
    • 在全局系统配置中将 PP1设置为拉电流或灌电流。
    • 确保20V PDO 位于发送灌电流 PDO 列表中。  

    现在我的问题是、当我对闪存进行编程并尝试重现上述结果时、许多配置寄存器并不像我们刚刚在闪存中设置的那样、因此系统无法正常工作。  有时、闪存验证在上一步中会失败。

    我之前还将 R40移至 R43、因为这是 MISO 下拉电阻器、当电池电量耗尽时、似乎需要该电阻器来使 LDO_3V3上电。  我还将使用来自电池电压的另一个稳压器的3V3来驱动这个网络、但这并不总是可用的。  

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

    尊敬的 Chris:

    您可以在调试模式下共享引导标志的屏幕截图吗?

    这将告诉您闪存引导是否成功。 此外、您能否在调试模式下确认"版本"寄存器显示正确的补丁版本?

    此致、
    Kedar

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

    引导标志似乎不一致。  有时他们会说一件事情、有时会说另一件事。  我调节了启动电阻器、使其使用0.3至0.38 ADCIN1值、或者电池电量耗尽模式 BP_ECWait_internal 和 Device Config Infinite wait。  是否有方法来确认这些设置是否已正确加载?  您是否同意他们是我的申请中的最佳选择?

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

    您好 Chris。

    下面突出显示的比较对我来说并不正确。 突出显示的字段应为"true"。

    您能否确认在什么情况下未检测到 SPI 闪存?

    此致、
    Kedar

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

    您之前的帖子中没有屏幕截图或其他文件。

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

    其中包括:

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

    这种区别似乎取决于 USB-C 电缆是否已插入。  请记住、我是从单独的电源为 LDO_3V3供电、因此不需要电缆。  实际上、在许多情况下、我希望器件充当 USB 源、它们最初不会插入 USB 电缆。  

    为什么只有插入 USB-C 时才加载闪存?  如何为器件供电并对其进行配置、以便始终保持启动状态?  

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

    我应该补充的是、当我的电池真正电量耗尽时、我将需要 TPS 的3.3V 电压为其他系统组件(MSP430)提供少量电流、以便启动并运行电池充电定序。  

    我使用 LDO_3V3来实现此目的以及上面的其他目的、但这似乎不起作用。  如何解决此问题?  我认为我无法将 LDO_3V3和 VIN_3V3连接在一起。  肖特基二极管可能放置在某个位置?  

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

    尊敬的 Chris:

    我将接管 Kedar、他让我加快处理您的问题。 在您的一侧、您能否检查 EEPROM 的电压是否稳定?

    此外、LDO_3V3引脚上允许的外部负载为25mA、因此我要说、这将无法在电池电量耗尽时为您提供系统电源。 请记住、VIN_3V3和 LDO_3V3已在 TPS65987D 中内部连接。 您还有哪些其他选项可供选择?

    此致、

    Emma

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

    Emma、幸会。

    我的控制器所需的功率仅为几 mA、因此我认为我们在这方面很好。  当我测量电压时、我会得到一致的3.27V 电压、因此我不认为这是过载问题。  

    我使用了不同的配置、并且每当未插入 USB 时、始终显示"SPI 闪存存在=错误"。  当 USB 未插入时、我需要做什么来使其识别该闪存?

    在我回答我可以在不同情况下调整功率来自何处之后。  

    C

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

    尊敬的 Chris:

    我询问电压的原因是、如果电压下降、PD 控制器将无法识别 SPI 闪存。 您是否获得3.3V 的恒定电压测量?

    此外、您插入的内容到底是什么、插入后 SPI 闪存是否会定期显示、而未插入时是否会显示?

    此致、

    Emma

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

    我在我的示波器上进行了恒定电压测量。  

    我只需插入一个 USB PD 充电器。  当我保持闪存不在那里时、我指的是引导标志寄存器。  我经常执行冷重启命令来查看状态是否发生变化、但没有变化。  我还移除并重新连接了3.3V 电源。  

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

    尊敬的 Chris:

    您能否从示波器中附加3.3V 测量的图片?

    此致、

    Emma

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

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

    我更详细地与系统一起玩、发现了一些有趣的东西。  

    1.从冷重启命令重新启动时、SPI 闪存存在标志为 false。  不知道原因、但这会使人产生很大的困惑。  我需要拔下大约3到4根电缆、以确保所有评估板电源都已断开、因此我认为这是一种良好的测试技术。  不知道原因、但显然需要真正的全功率循环重新启动。

    2.我在 LDO_3V3和 Vin_3V3之间添加了一个小二极管、现在一切正常。  无电电池启动良好。  充电正常。  OTG 输出正常。 如果电源始终很小(<25mA)、您是否看到此设置有任何问题?

    谢谢、

    Chris

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

    尊敬的 Chris:

    那么、澄清一下、二极管能够完全解决您的问题吗?

    谢谢、

    Emma

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

    它看起来有、但我仍在通过正常工作所需的所有模式运行系统。  

    但是、我想知道您是否看到了可能出现的任何我尚未考虑或测试过的潜在问题?

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

    尊敬的 Chris:

    我很高兴一切正常、但是、您不需要在两者之间使用二极管。 二极管不会伤害任何东西。 但是、如果您要反馈 LDO_3V3、则应考虑在硬件中解决该问题。 如果您需要相关指导、我可以查看您的原理图。  

    此致、

    Emma

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

    二极管是"硬件"解决方案、因为在不同情况下、我需要电源从 Vin_3V3和 LDO_3V3双向流动。  我可以通过私人消息共享原理图。

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

    尊敬的 Chris:

    请记住、LDO_3V3实际上只应用作输出、VIN_3V3用作输入。 如果二极管允许发生这种情况、那么这将是一个很好的解决方法。 由于您的问题已得到解决、我将继续并关闭此 TT。 如果您希望我查看您的原理图、请将其发送过来。 如果出现其他问题、您可以重新打开此 TT 或提交新 TT。  

    此致、

    Emma