主题中讨论的其他器件: MSP430FR2433、 BQ25713、 TPS5450、 EV2400、 TPS65987
您好!
我需要将一个主要是电池充电灌电流的端口切换到电源、以便我们可以使用 OTG 类型的器件。 我使用了设置和寄存器的数量、但似乎无法切换。 是否有人可以总结所需的步骤和注册?
我从 GUI 工具中提供的默认灌电流项目开始。 我设置了发射源功能、并要求它通过几种不同的方式进行切换。
PP_HV1上连接5V 电源、2和3.3V 由外部 LDO 供电。
谢谢、
Chris
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.
您好!
我需要将一个主要是电池充电灌电流的端口切换到电源、以便我们可以使用 OTG 类型的器件。 我使用了设置和寄存器的数量、但似乎无法切换。 是否有人可以总结所需的步骤和注册?
我从 GUI 工具中提供的默认灌电流项目开始。 我设置了发射源功能、并要求它通过几种不同的方式进行切换。
PP_HV1上连接5V 电源、2和3.3V 由外部 LDO 供电。
谢谢、
Chris
我尝试过它。 实际上、我在 这里找到了一个更详细的文档、但仍然有问题。
我写了这个脚本、但运气不好。 读出的值是来自前3个寄存器的0是否有原因?
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
感谢您的电话和支持本项目的持续工作。 大家都知道、我们仍未解决所有问题、但发现了 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项目开始、进行以下更改、我们可以使其获得灌电流或拉电流电源。
现在我的问题是、当我对闪存进行编程并尝试重现上述结果时、许多配置寄存器并不像我们刚刚在闪存中设置的那样、因此系统无法正常工作。 有时、闪存验证在上一步中会失败。
我之前还将 R40移至 R43、因为这是 MISO 下拉电阻器、当电池电量耗尽时、似乎需要该电阻器来使 LDO_3V3上电。 我还将使用来自电池电压的另一个稳压器的3V3来驱动这个网络、但这并不总是可用的。
我更详细地与系统一起玩、发现了一些有趣的东西。
1.从冷重启命令重新启动时、SPI 闪存存在标志为 false。 不知道原因、但这会使人产生很大的困惑。 我需要拔下大约3到4根电缆、以确保所有评估板电源都已断开、因此我认为这是一种良好的测试技术。 不知道原因、但显然需要真正的全功率循环重新启动。
2.我在 LDO_3V3和 Vin_3V3之间添加了一个小二极管、现在一切正常。 无电电池启动良好。 充电正常。 OTG 输出正常。 如果电源始终很小(<25mA)、您是否看到此设置有任何问题?
谢谢、
Chris