工具/软件:
您好的团队:

此致!
光圈
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.
您好:
我已通过 10K 电阻将此 I2Ct_IRQ 连接到 1V8。 但是、我可以看到此引脚有 3V3 输出。
默认情况下会启用内部上拉电阻。

是否有办法将其配置为以 1V8 运行?
您可以尝试在 GPIO10 视图中清除该值、然后将 GPIO10 的多路复用返回到“引脚多路复用至交替功能 (I2Ct_IRQ)“、但我不知道这是否起作用。 我也会进行测试、但这可能是配置工具的限制。
此致、
Chris
您好 Chris、
感谢您的答复
1.我遵循了您建议的步骤、但在 I2Ct_IRQ 中仍然看到 3V3。
2.我们还注意到使用 GUI 版本 V1.1.0 和 V1.0.2 生成的低区二进制文件大小不同 (68KB 与 79KB)。
v1.0.2 可以成功加载补丁并能够很好地处理我们的代码、但 V.1.1.0 不能正常运行。
是否建议使用较旧版本的 V1.0.2 GUI?
此致!
光圈
您好:
1. 我遵循了您建议的步骤、但我在 I2Ct_IRQ 中仍然看到 3V3。
感谢您这边的测试。 EVM 上拉至 LDO_3V3、因此在执行步骤时只能确认二进制文件是否发生变化。
是否建议使用较旧的版本 V1.0.2 GUI?
如果需要测量最新规范、请使用 1.1.0。
*更新了 PD 固件以符合最新的 PD 规范 v3.2.1.1
V1.0.2 可以成功加载补丁并与我们的代码配合使用、但 V.1.1.0 不是。
您使用的是定制编程器还是 EVM/GUI 工具?
此致、
Chris
您好、Chris、
感谢您的答复。 看起来我们已经解决了前面提到的问题。
但是、我们目前遇到了与 DRP 供电方行为相关的挑战。
具体而言、当我们连接到手机时、TPS25751 可用作手机电源并为手机供电。 相比之下、当连接到笔记本电脑时、我们希望 TPS25751 用作笔记本电脑的受电端并从笔记本电脑获取电力。
TPS25751 中是否有任何寄存器配置可使其区分手机和笔记本电脑以相应地处理电源角色?
此致!
光圈
您好:
TPS25751 中是否有任何寄存器配置可使其区分手机和笔记本电脑以相应地处理电源角色?
您可以使用 GPPi 命令从端口伙伴获取信息、然后发出 SWSk 或 SWSr 命令。
您可以使用高级配置并在端口控制寄存器中设置启动和交换电源角色的功能、具体取决于手机和笔记本电脑。 如果手机请求电源角色交换、因此 TPS25751 将成为供电方、则选择 Process swap to source。 设置启动切换至受电方后、tps25751 将启动电源角色交换以成为受电方(如果初始协商导致 tps25751 成为供电方)、并且手机或笔记本电脑可以选择接受或拒绝电源角色交换。

此致、
Chris
您好:
在 PTCH 模式期间、PD 控制器取消屏蔽补丁就绪中断。 成功下载补丁后、掩码将由补丁中的配置定义。
如果多个中断未被屏蔽、您可以读取寄存器 0x14 以确定中断源。
https://www.ti.com/lit/ug/slvucr8a/slvucr8a.pdf#page=19
可以在高级配置视图中通过 GUI 在配置中设置中断屏蔽。

此致、
Chris
您好:
作为器件流程的一部分、将设置补丁准备就绪中断、以指示 PD 控制器已完成引导并准备好进行补丁。 因此您应该期望中断线路会被拉低。 bit0 是保留的、因此这不是预期结果。 此外、如果在寄存器 0x16 中仅选择了插头插入移除(位 3)、则不应设置其他位。
下载补丁后、您能否清除中断并确认系统稳定? 是从嵌入式控制器还是 EEPROM 下载?
此致、
Chris
您好:
如果使用 EC 通过补丁突发模式将映像加载到 PD 控制器、那么我将考虑使用命令完成中断 (30)。 由于这是在 PTCH 期间使用的、因此 GUI 中没有对此进行配置、但必须在运行时由 EC 进行配置。 请查看随附的示例。
我建议使用 Command Complete(命令完成)(30) 和插头插件拆卸 (3)。 插入后、您可以查询 PD 控制器以确定状态、并执行 GPPI/MBRd 命令以确定端口伙伴是什么以及您是否处于所需的电源角色。 如果不处于所需的电源角色、则可以发出交换命令 (SWSk 或 SWSr)。
https://www.ti.com/lit/ug/slvucr8a/slvucr8a.pdf#page=59
此致、
Chris
您好、Chris、
完成一些故障排除后、我们能够在清除 0x18 寄存器后看到 IRQ 变为高电平。 感谢您的支持。
您能否告知建议监测中断屏蔽寄存器 (0x16) 中的哪些字段?
我们的产品是一款蓝牙扬声器、PD 由嵌入式控制器控制并在 DRP 模式下运行
(连接到交流适配器/移动电源/笔记本电脑时用作受电方,连接到手机时用作供电方)。
...
Bset 表示!
光圈
您好、Chris、
感谢您的答复!
我们将其添加到中断事件 PD hardreset(0)、插头插入或移除 (3)(过流 (9))、新合约作为提供方、13、液体检测 (60) 我们应该如何在这五个事件中触发 PD hardreset 和新合约作为提供方中断、我们是否需要任何其他中断事件?
除了您之前关于添加 CMD1 完整 (30) 中断的建议外、我们应该怎么做以及如何使用 GPPI/MBRd 命令? 您能提供一个参考代码示例吗
此致!
光圈
您好:
我们是否需要任何其他中断事件?
我不这么认为。
以及您先前关于添加 CMD1 完整 (30) 中断的建议、我们应该怎么做以及如何使用 GPPI/MBRd 命令? 您能否提供参考代码示例
目前没有任何示例代码。 我建议使用 PD 标准来帮助建立确定端口伙伴的流程。 例如:
(1) 端口伙伴是否支持双角色电源(拉电流 PDO 中的 B29)? 如果电源和 B29=0、则很可能是交流适配器。
(2) 端口伙伴是否支持通信 (B26) 和/或双角色数据 (25)? 如果没有、则可能是移动电源。
(3) 端口伙伴是否有电池 (Source_Capabilities_Extended 消息、字节 22)?
(4) 什么是电池功能消息? 什么是电池设计容量、VID、PID? 如果小于 X、则 可能是移动电话
此致、
Chris
(1) 端口伙伴是否支持双角色电源(拉电流 PDO 中的 B29)? 如果源和 B29=0、则很可能是交流适配器。
您好 Chris、
为了解决将产品(扬声器)连接到计算机(产品为计算机充电,而不是计算机为产品充电)的问题、已执行以下步骤
(1) USB 插入
(2) 检查它当前是否为受电方。 如果是、请勿进行处理。 如果是供电方、则读取相反的 MSDK_USB_CiPadOS P_PD∝PDO_SOURCE-RX
(3) 提取第一个 PDO 并检查其是否支持双角色电源 (B29=1)。 如果是、则启动 SWSK
(4) 旋转训练字符是否变为 Sink
此操作是否正常? 有一个问题:提取 PDO 来提取第一个 PDO 的第三步是不是? 还是我们需要根据什么来判断?
此致!
光圈
你好、李莱夫蒂、
如果希望计算机为扬声器供电、则您希望扬声器成为 USB-C PD 接收端。
根据您的配置、您可能需要执行几项操作。
检查您是否充当供电方
要发起到受电方的切换、您可以使用发送 4CC “SWSk"命令“命令来尝试 PR_SWAP 到受电方
2.确保未设置端口控制->“Initiate swap to source“字段、否则 TPS25751 将在发送 SWSk 命令后自动尝试执行 PR_Swap。
3.确保端口控制 — 。 还会设置“Process swap to sink“字段。
谢谢。此致、
Chris
尊敬的 Iris:
我可以在什么情况下使用 4CC “SWSk"命令“命令吗? 在执行 4CC “SWSk"命令“命令之前、需要做出什么判断?
某个参数。
从技术上讲、您可以随时使用它、但如果不满足某些条件、PD 控制器可能会拒绝它。
为什么设置了 try.src? 是否希望在初始连接时成为 DFP/供电方? 如果您没有首选项、您可能希望将支持选项设置为不支持。
谢谢。此致、
Chris
您好、Chris
如果我们将初始 A 交换设置为 Sink、则会出现扬声器无法为手机充电且笔记本电脑未实现的现象
以下是用于执行 SWSK 的相关代码。 您可以查看
static void nina_usb_pd_try_swap_to_sink_if_needed(const msdk_device_t *dev)
{
#ifdef CONFIG_MSDK_DRV_TPS25751
msdk_usb_c_propval_t val = {0};
msdk_status_t status;
/*Step 1: Read the current Power Role (Source or Sink)*/
status = tps25751_property_get(dev, MSDK_USB_C_PROP_SOURCE_SINK, &val);
if (status != MSDK_STATUS__OK) {
MSDK_LOG_ERR("[PD] Failed to get current role");
return;
}
bool is_source = val.source_sink; // true = Source, false = Sink
MSDK_LOG_DBG("val.source_sink=%d",val.source_sink );
if (!is_source) {
MSDK_LOG_INF("[PD] Already in Sink role. No swap needed.");
return;
}
MSDK_LOG_INF("[PD] Current role: Source. Checking port partner capabilities...");
/*Step 2: Read the PDO (Port Partner Source Capabilities) of the peer device*/
status = tps25751_property_get(dev, MSDK_USB_C_PROP_PD_FIX_PDO_SOURCE_RX, &val);
if (status != MSDK_STATUS__OK) {
MSDK_LOG_ERR("[PD] Failed to get partner source capabilities");
return;
}
/*Step 3: Analyze the B29 (Dual Role Power) field of the first PDO*/
uint32_t raw_pdo = 0;
memcpy(&raw_pdo, &val.source_pdos_rx[0], sizeof(uint32_t));
if (!is_host_like_partner(raw_pdo)) {
MSDK_LOG_INF("[PD] Partner is not host-like (likely mobile or accessory). Stay as Source.");
return;
}
MSDK_LOG_INF("[PD] Partner supports DRP. Attempting to swap to Sink...");
/*Step 4: Use property set encapsulation to send 'SWSk' (Swap to Sink)*/
msdk_usb_c_propval_t swap_val = { .custom.usb_pd_pr_swap = true };
status = tps25751_property_set(dev, MSDK_USB_C_PROP_CUSTOM__USB_PD_PR_SWAP, &swap_val);
if (status != MSDK_STATUS__OK) {
MSDK_LOG_ERR("[PD] Failed to initiate power role swap (SWSk)");
return;
}
/*Step 5: Polling waiting becomes Sink*/
uint32_t elapsed = 0;
while (elapsed < PD_SWAP_TIMEOUT_MS) {
msdk_usb_c_propval_t check_val = {0};
if (tps25751_property_get(dev, MSDK_USB_C_PROP_SOURCE_SINK, &check_val) == MSDK_STATUS__OK) {
if (!check_val.source_sink) {
MSDK_LOG_INF("[PD] Swap to Sink successful.");
return;
}
}
msdk_time_delay_ms(POLL_INTERVAL_MS);
elapsed += POLL_INTERVAL_MS;
}
MSDK_LOG_DBG("[PD] Swap to Sink failed or timed out.");
#endif // CONFIG_MSDK_DRV_TPS25751
}
static bool is_host_like_partner(uint32_t raw_pdo)
{
bool b29_dual_role_power = (raw_pdo & (1 << 29)) != 0;
bool b26_usb_comm_capable = (raw_pdo & (1 << 26)) != 0;
bool b25_dual_role_data = (raw_pdo & (1 << 25)) != 0;
return b29_dual_role_power && (b26_usb_comm_capable || b25_dual_role_data);
}此致!
光圈
尊敬的 Iris:
这是意料之中的。 启动切换为受电方的操作始终会在担任供电方角色时尝试电源角色交换、如果远端支持 PR_Swap、则完成此操作。
PD 控制器无法很好地了解远端连接的器件类型、仅根据当前电源角色进行角色交换。
如果将 Initiate swap to xxxx 设置设为 Sink、您可能会禁用这两个“Initiate swap to xxx“设置、并让远端决定是否更喜欢这两个设置。 应由 MCU 确定何时保持为供电状态以及何时切换为受电方。 我们不能在何时交换电源角色方面提供过多指导、因为这可能是您的系统所特有的。
谢谢。此致、
Chris