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.

[参考译文] TPS25751:无法从当前配置错误硬件已连接的器件刷写到器件

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected

器件型号:TPS25751
主题中讨论的其他器件:BQ25756、BQ25792

工具/软件:

您好:

我当前使用 TPS25751S 在电源模式下驱动具有相关数据传输的 USB 2.0端口。 我已经配置了在 GUI 上进行配置所需的各种参数、并在 GUI 设置中以正确的端口和9600 (推荐)的波特率将卡连接到 PC 上的 USB 端口。 当我点击左下角的横幅来连接我的器件时、我设法进行连接(小绿色按钮亮起)。 但是、当我尝试在卡上加载配置时、它是不可能的、因为它显示"硬件已断开连接、请尝试刷新页面并重新连接硬件"。
通常、我可以刷写卡上的代码。 我使用连接到 ESP32的 FTDI USB UART 桥接器。

"硬件未连接"是指 PD 控制器还是微控制器?
我之所以提出此问题、是因为我将 I2Cc 端口用于 EEPROM + PD 控制器、并且将 I2Ct 连接到 μ µC 和 PD 控制器。 与 EVM 1D 不同、我不在 EEPROM 和微控制器之间链接 I2CTPS2575t 总线。

我将 LowRegionBinary 和 FullFlashBinary 文件导出到.C 中、并从外部连接器将配置刷入 EEPROM、因此 EEPROM 端不会出现设计错误。

您能帮助我找到解决方案吗?

此致、

Leroy Corentin

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

    你好、Leroy、

    我假设您所谈论的是这个问题吗?

    App Config GUI 中的 Flash to Device 选项仅适用于 TPS25751EVM。

    连接状态是查找在 USB 端口上具有专有固件的 TIVA MCU。 如果没有 EVM、则无法使用此设置。

    对于客户使用、您在第二步中所做的就是预期的使用。

    Unknown 说:
    i 将 LowRegionBinary 和 FullFlashBinary 文件导出到.C 中、并从外部连接器将配置刷入 EEPROM 中、因此 EEPROM 端不会出现设计错误。

    我们希望客户将 Export Binary 选项与 EEPROM 的外部编程配合使用来对其系统进行编程。

    这与 Flash to Device 按钮的行为基本相同、我们只需使用 TIVA 通过 USB 端口对 I2C EEPROM 进行编程。

    谢谢。此致、

    Chris

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

    您好 Chris、

    很抱歉回复延迟。 实际上、我意识到从 GUI 进行刷写专用于德州仪器(TI)提出的 EVM。 因此、我生成了一个代码、用于将 I2C 补丁发送到 EEPROM 或 PD 控制器、然后补丁发送到 I2C 总线上。 我可以将补丁刷写到控制器、但在供电方模式下无法获得 PPS。 实际上、在 VBUS 端子(引脚26和27)上、I 保持为0V。 我在 PP5V 上具有+5V (来自可以处理高达3A 电流的稳定控制系统)。 源模式似乎未激活。

    我已经遵循了数据表中关于元件布线的建议、如果您需要 原理图、我可以与您分享这些建议。

    目前在 PCB 上、我未使用液体检测或 BC、而是使用 USB 2.0。 我刷写在 GUI 上生成的补丁、然后在不修改‘Advanced Configuration’选项卡中任何信息的情况下导出该补丁。 如何确定问题的根源? 我是否应该使用分析仪分析 CC 引脚的行为?

    我以前从未使用过这种类型的组件、我无法获得团队中的技术支持、因此我会采纳我可以获得的任何建议/建议。

    谢谢、

    Leroy Corentin

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

    你好、Leroy、

    我无法获得源代码模式下的 PPS。

    什么是"PPS"?

    我假设您正在使用 PBMx 序列通过 I2C 直接刷写 PD 控制器?

    是否确定正确闪烁? 您是否可以从 PD 控制器读取寄存器? 如果是、我建议读取 MODE (0x03)寄存器。 如果您已正确刷写器件、则应该能够读取寄存器、将有效载荷解码为 ASCII 值、并应为"app"。

    您能否共享您在 GUI 中使用的 json 来生成二进制文件和.c 文件?

    如何确定问题的根源? 我是否应该使用分析器分析 CC 引脚的行为?

    我们需要确定它是刷写还是配置。 您可以首先通过确保 PD 正确加载并检查模式和引导标志寄存器来检查刷写部分。 有关寄存器的更多信息、请参阅 TRM。

    分析 CC 引脚可能有所帮助。 如果您配置为仅供电方并且 PD 控制器已正确供电、您应该会看到 CC 引脚上拉至3.3/5V。

    您使用的是哪种类型的接收端设备? USB-C PD 接收端还是仅 Type-C? 连接接收端后、您应该会看到 CC 线路在接近1.6V 的电压下稳定

    谢谢。此致、

    Chris

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

    PPS 用于可编程电源、来自 TPS25751数据表。

    我确实使用 TPS25751技术参考手册中的 PBMx 序列 直接刷写到 PD 控制器中。  

    [报价 userid="416726" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5795408 #5795408"] 是否确定正确闪烁? 您是否可以从 PD 控制器读取寄存器? 如果是、我建议读取 MODE (0x03)寄存器。 如果您已正确刷写器件、则应该能够读取寄存器、将有效载荷解码为 ASCII 值、并应为"app "。

    我首先使用 i2c 扫描来检查器件以查看 PD 控制器的地址、然后处理发送数据 、但我创建的函数可能存在问题。 我仍在检查代码中是否存在任何错误。 我将检查 MODE (0x03)寄存器、但由于我的计划、直到星期一才会告诉您。  

    您是否可以共享您在 GUI 中用于生成二进制文件和.c 文件的 json?

    是否有直接共享文件的工具? 我无法使用"图像/视频/文件"来导入.json 和.c 文件  

    我不想直接在帖子中复制/传递文件内容。

    您使用的是哪种接收设备? USB-C PD 接收端还是仅 Type-C? 连接接收端时、您应该会看到 CC 线路稳定在接近1.6V 的电压。

    我正在使用 Android 设备、如平板电脑、其中包含 DRP rôle。 我需要使用 PD 控制器、因为由于 CCx 引脚上只有 RP 或 RD、因此无法同时从 PCB 提供电源和传输数据。 我需要在读取/写入数据时为平板电脑供电。  

    谢谢

    Leroy Corentin

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

    你好、Leroy、

    您应该可以直接将文件拖放到消息框中。 您不想直接在帖子中分享 json 的原因是什么吗?

    我不需要.C 文件、json 就足够了。

    您能否共享 PBMx 进程的 I2C 日志?

    谢谢。此致、

    Chris

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

    e2e.ti.com/.../tps25751s_5F00_config.txt

    您好 Christopher、

    很抱歉,我无法在我之前的回复中共享 json 文件,似乎这种格式是不可读的,我将文件转换为.txt

    我将在星期一共享 I2C 日志、因为我本周因进度计划无法进行测试。 我会在星期一回复您。

    此致、

    Leroy Corentin

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

    你好、Leroy、

    是的、该 txt 文件应该起作用。 我很惊讶、您需要这么做、通常我只是拖放。

    e2e.ti.com/.../tps25751s_5F00_configLeroy.json

    我将在星期一分享 I2C 日志、因为我本周由于时间安排无法测试。 我将在星期一回复您。

    听起来不错、

    是的、尝试获取 PBMx I2C 日志、然后检查 Mode 寄存器。 这些应有助于缩小问题的范围。

    谢谢。此致、

    Chris

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

    你好 Christopher!

    更新代码后、我重复了测试、I2C 总线的工作频率过高(100k 而不是50k)、导致总线上读取错误。

    现在我可以查看 MODE 寄存器(0x03)的内容、它看起来仍然处于 PTC 状态:

    I (362) PD_CONFIG: Initializing I2C...
    I (372) PD_CONFIG: MODE Register: PTC
    I (372) PD_CONFIG: Sending PBMs command...
    I (472) PD_CONFIG: PBMs acknowledged: Patch burst mode started
    I (472) PD_CONFIG: MODE Register: PTC
    I (472) PD_CONFIG: Sending Low Region binary patch...
    I (33442) PD_CONFIG: Patch sent successfully!
    I (33442) PD_CONFIG: MODE Register: PTC
    I (33442) PD_CONFIG: Sending PBMc command...
    I (33542) PD_CONFIG: PBMc acknowledged: Patch burst mode completed
    I (33542) PD_CONFIG: Patch burst mode completed successfully!
    I (33542) PD_CONFIG: MODE Register: PTC
    I (33542) main_task: Returned from app_main()

    我检查了 CC 引脚、即使加载了补丁、它们也为0V。 27和26引脚(VBUS)也未通电。

    如果您需要、我可以分享这些代码、但最让我感兴趣的是寄存器模式始终处于 PTC 模式的原因。

    我还可以判断在 PBMe 之后我不执行 GO2P 任务、因为我在 PD 控制器上激活了安全模式(ADCINx 引脚连接到 GND)。

    在寄存器模式下读取数据的任务后、我尝试增加延迟、但这始终处于 PTC 状态。 我无法读取"app"或"boot"。  

    您希望我分享该工程的硬件原理图、以便了解我使用的电路板是哪种类型? 可能是在硬件器件中存在问题(我使用 TPS25751的 S 封装、而不是 D 封装)

    我将更新此消息、而不是创建其他消息、同时继续测试以保持您的更新。

    您建议我在论坛上创建一个新主题、因为现在的问题不再与第一个主题相关?

    KR、

    Leroy Corentin

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

    你好、Leroy、

    这仍然与您的原始问题半相关、因此应该没问题。

    几个问题:

    1. 如何为系统供电? VIN3V3已上电、ADCIN 和 I2C 引脚已正确"通电"。 (即上拉电压有效)
    2. 我无法100%从您共享的日志中判断、但您的 PBMx 序列看起来是正确的
      1. " PBMx 确认"是什么意思、您检查什么? 您是否检查 CMD 寄存器是否已清零? 您是否在读取数据寄存器并确认没有错误?
      2. 对于补丁突发、每个突发发送多少个字节的数据?
      3. 对于 PBMc 命令、您是否读取 DATA 寄存器中的输出数据? 您能否报告读取的值?
    3. 绿色单位是 ms 吗?

    下面是一个类似器件上工作的 PBMx 流程的 I2C 日志示例、以供参考。  

    e2e.ti.com/.../PBMx_5F00_PowerUp_5F00_Two_5F00_994-_2800_6_2900_.xlsx

    如果可能、您能分享一些类似的内容吗?

    谢谢。此致、

    Chris

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

    尊敬的 Christophe:

    您如何为系统供电? VIN3V3已上电、ADCIN 和 I2C 引脚已正确"通电"。 (即上拉电压有效)

    我目前正在通过 降压转换器的输出为 VIN3V3供电、该转换器还为我的 ESP32和 PCB 上的其他模块供电。 我通过100k 电阻器将 ADCIN 引脚连接到 GND、但我也可以更改此配置、将其连接到1.5V 或3.3V (ADCIN1为3.3V、ADCIN2为1.5V)。 但是、对于 I2C、我连接到 VIN3V3的同一信号、以将4.7k 的电阻器上拉到每个 SDA 和 SCL 信号。  

    由于 ADC 引脚的状态、我在电源"安全模式"下具有与数据表中的解码#2相关的 I2C 地址(0x21)。

    "PBMx reknowledged"是什么意思? 您是否检查 CMD 寄存器是否已清零? 您是否正在读取数据寄存器并确认没有错误?

    发送 PBMc 命令时没有 I2C 通信错误。 我不检查 CMD 寄存器是否被清除、是否需要执行该操作?

    对于补丁突发、您发送每个突发的数据字节数?

    我为所有 PBMx 任务每次突发发送16字节的数据。

    对于 PBMC 命令、您是否读取数据寄存器中的输出数据? 您能否报告您读取的值?

    我之前没有读取输出数据、我查看了参考 Manuel、但找不到数据寄存器的大小、所以我建议它等于8个字节、下面是来自数据寄存器的输出数据日志:

    I (33542) PD_CONFIG: DATAX Register: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    绿色单位是毫秒吗?

    单位指自系统启动以来的时间戳(以毫秒为单位)。 在 PBMs 任务完成后、启动补丁大约需要30秒。

    我将以 csv 格式更新 I2C 日志文件的消息、继续更新 Chris。

    KR、

    Leroy Corentin

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

    你好、Leroy、

    Unknown 说:
    ]发送了 PBMC 命令、没有 I2C 通信错误。 我不检查 CMD 寄存器是否被清零、是否需要执行该操作?

    对于所有4CC 命令、建议在写入命令后读取 CMD 寄存器。

    预计有3个答复:

    1. 读回命令(即您编写 PBMC、然后读取 PBMC)
      1. 这意味着该命令仍在处理中
    2. 读回 ASCII "!CMD"。 表示命令为 inavlid
    3. 读回零
      1. 命令已执行并完成。

    对于每个4CC 命令、我们建议读取 CMD 寄存器并等待其清除、以确保命令已执行。


    您能否将.c 文件与您生成的二进制文件共享并告诉我您向 PBMs 命令的数据寄存器写入的内容?

    谢谢。此致、

    Chris

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

    您好、Chistopher、

    因此、从上周开始、我就能够尝试 TPS25751S 的不同方面、下面是我的结论。

    关于您的建议,我尝试在每次发送 TPS 上的命令时查看 CMD 注册中的哪些内容,它总是返回!CMD。 我会共享我拥有的日志、以便您可以查看我拥有的日志。 问题出在补丁或我发送它的方式上、因为 TPS 仍处于 PTCH 模式。

    I (354) PD_CONFIG: Initializing I2C...
    I (364) PD_CONFIG: MODE Register: PTCH
    I (364) PD_CONFIG: Sending PBMs command...
    I (374) PD_CONFIG: CMD Register: !CMD
    I (474) PD_CONFIG: PBMs acknowledged: Patch burst mode started
    I (474) PD_CONFIG: MODE Register: PTCH
    I (474) PD_CONFIG: Sending Low Region binary patch...
    I (484) PD_CONFIG: CMD Register: !CMD
    I (494) PD_CONFIG: CMD Register: !CMD
    I (504) PD_CONFIG: CMD Register: !CMD
    I (514) PD_CONFIG: CMD Register: !CMD
    I (524) PD_CONFIG: CMD Register: !CMD
    I (534) PD_CONFIG: CMD Register: !CMD
    I (544) PD_CONFIG: CMD Register: !CMD
    I (554) PD_CONFIG: CMD Register: !CMD
    I (564) PD_CONFIG: CMD Register: !CMD
    I (574) PD_CONFIG: CMD Register: !CMD
    I (584) PD_CONFIG: CMD Register: !CMD
    I (594) PD_CONFIG: CMD Register: !CMD
    I (604) PD_CONFIG: CMD Register: !CMD
    I (614) PD_CONFIG: CMD Register: !CMD
    I (624) PD_CONFIG: CMD Register: !CMD
    I (634) PD_CONFIG: CMD Register: !CMD
    I (644) PD_CONFIG: CMD Register: !CMD
    I (654) PD_CONFIG: CMD Register: !CMD
    I (664) PD_CONFIG: CMD Register: !CMD
    I (674) PD_CONFIG: CMD Register: !CMD
    I (684) PD_CONFIG: CMD Register: !CMD
    I (694) PD_CONFIG: CMD Register: !CMD
    I (704) PD_CONFIG: CMD Register: !CMD
    I (714) PD_CONFIG: CMD Register: !CMD
    I (724) PD_CONFIG: CMD Register: !CMD
    I (734) PD_CONFIG: CMD Register: !CMD
    I (744) PD_CONFIG: CMD Register: !CMD
    I (754) PD_CONFIG: CMD Register: !CMD
    I (764) PD_CONFIG: CMD Register: !CMD
    I (774) PD_CONFIG: CMD Register: !CMD
    I (784) PD_CONFIG: CMD Register: !CMD
    I (794) PD_CONFIG: CMD Register: !CMD
    I (804) PD_CONFIG: CMD Register: !CMD
    I (814) PD_CONFIG: CMD Register: !CMD
    I (824) PD_CONFIG: CMD Register: !CMD
    I (834) PD_CONFIG: CMD Register: !CMD
    I (844) PD_CONFIG: CMD Register: !CMD
    I (854) PD_CONFIG: CMD Register: !CMD
    I (864) PD_CONFIG: CMD Register: !CMD
    I (874) PD_CONFIG: CMD Register: !CMD
    I (884) PD_CONFIG: CMD Register: !CMD
    I (894) PD_CONFIG: CMD Register: !CMD
    I (904) PD_CONFIG: CMD Register: !CMD
    I (914) PD_CONFIG: CMD Register: !CMD
    I (924) PD_CONFIG: CMD Register: !CMD
    I (934) PD_CONFIG: CMD Register: !CMD
    I (944) PD_CONFIG: CMD Register: !CMD
    I (954) PD_CONFIG: CMD Register: !CMD
    I (964) PD_CONFIG: CMD Register: !CMD
    I (974) PD_CONFIG: CMD Register: !CMD
    I (984) PD_CONFIG: CMD Register: !CMD
    I (994) PD_CONFIG: CMD Register: !CMD
    I (1004) PD_CONFIG: CMD Register: !CMD
    I (1014) PD_CONFIG: CMD Register: !CMD
    I (1024) PD_CONFIG: CMD Register: !CMD
    I (1034) PD_CONFIG: CMD Register: !CMD
    I (1044) PD_CONFIG: CMD Register: !CMD
    I (1054) PD_CONFIG: CMD Register: !CMD
    I (1064) PD_CONFIG: CMD Register: !CMD
    I (1074) PD_CONFIG: CMD Register: !CMD
    I (1084) PD_CONFIG: CMD Register: !CMD
    I (1094) PD_CONFIG: CMD Register: !CMD
    I (1104) PD_CONFIG: CMD Register: !CMD
    I (1114) PD_CONFIG: CMD Register: !CMD
    I (1124) PD_CONFIG: CMD Register: !CMD
    I (1134) PD_CONFIG: CMD Register: !CMD
    I (1144) PD_CONFIG: CMD Register: !CMD
    I (1154) PD_CONFIG: CMD Register: !CMD
    I (1164) PD_CONFIG: CMD Register: !CMD
    I (1174) PD_CONFIG: CMD Register: !CMD
    I (1184) PD_CONFIG: CMD Register: !CMD
    I (1194) PD_CONFIG: CMD Register: !CMD
    I (1204) PD_CONFIG: CMD Register: !CMD
    I (1214) PD_CONFIG: CMD Register: !CMD
    I (1224) PD_CONFIG: CMD Register: !CMD
    I (1234) PD_CONFIG: CMD Register: !CMD
    I (1244) PD_CONFIG: CMD Register: !CMD
    I (1254) PD_CONFIG: CMD Register: !CMD
    I (1264) PD_CONFIG: CMD Register: !CMD
    I (1274) PD_CONFIG: CMD Register: !CMD
    I (1284) PD_CONFIG: CMD Register: !CMD
    I (1294) PD_CONFIG: CMD Register: !CMD
    I (1304) PD_CONFIG: CMD Register: !CMD
    ...
    

    下面是我正在执行 PBMs、PBMC、patch send、PBMe 的.c 文件:  

    e2e.ti.com/.../6562.main.c

    您希望德州仪器(TI)为该补丁生成的文件还是我的项目之一、以便您可以试用它?

    KR、  

    Leroy Corentin

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

    你好、Leroy、

    通过二进制文件、您是否希望用得克萨斯为该修补程序生成的修补程序或我的项目之一来尝试?

    是的、我最初要求提供.c 补丁文件、但没有尝试。

    您似乎遇到了不同的问题、但我们看到的一个常见问题是用户未正确填充 PBMs 数据有效载荷、特别是看到补丁大小字段的问题。 您的问题似乎主要是!CMD、因此让我们从这里开始吧。

    让我们先解决!CMD 问题

    如何写入 CMD 寄存器? 有效载荷看起来是什么样子的?

    以下是正确执行的 PBMs 命令的捕获、您可以将其用作参考。

    请记住、第一个有效载荷字节是"num bytes"、4CC 命令应从左到右发送。 (即、对于 PBM、首先发送 P)

    谢谢。此致、

    Chris

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

    您好 Christopher、

    我没有任何逻辑分析仪、因此我买了一个、可以看到来自 I2C 总线的逻辑信号。  

    以下是在 Logic 2上运行代码时获得的有关示例的信息:

    第一种是以 ASCII 格式发送到 TPS 的数据、末尾是!CMD、后面应该是"PBMS"。 我发送你的 hexa 格式,所以你可以看到我写在器件的0x21地址的数据补丁:  

    您如何写入 CMD 寄存器? 有效载荷看起来是什么样子的?

    我使用 write_i2c (PD_CTRL_ADDR、REG_CMD、DATA、length)写入 CMD 寄存器;从外部示例代码写入 I 用作 I2C 协议的参考。

    下面是一个用于发送补丁的有效载荷示例。 我 为贴片发送16个数据包突发、对于 PBMs、我发送  7个数据包突发、对于 PBMc、我发送1个数据以结束传输。

    我看不到发送到 TPS 的"PBMS"十六进制数据。 似乎我没有将 PBM 发送到组件。 我将更新此消息、让您知道我正在做什么。

    您可以在有效载荷的末尾看到编码的"!CMD"。

    我想我错过了一些东西。 在 Texas 生成的补丁中、它是否直接在选项卡中具有编码的"PBMs"?  另外、PBMs 之前发送的第一个逻辑跟踪是什么? 它不是"DATA1"、但我不知道它是什么。 如技术文档中所述、我需要发送"DATA1"、然后发送"PBMS"、我是否正确?

    kr

    Leroy Corentin

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

    你好、Leroy、

    感谢日志、这对您有很大帮助!

    您似乎错误地使用了 I2C 接口和"4CC "命令。

    TPS25751使用 SMBus、SMBus 要求您发送寄存器地址、 要写入的数据字节数(字节计数= N)、然后是数据字节。

     有关"4CC "命令的正确用法、请参阅随附的文档。 "PBMS"计为4CC 命令。

    e2e.ti.com/.../5824.Using-4CC-Commands.pdf

    应首先将"输入数据"写入数据寄存器(0x09)、然后将4CC 命令"PBMs"写入 CMD (0x08)寄存器。

    在我共享的 I2C 日志中、您可以看到首先发生的对数据寄存器的写入操作。

    在这种情况下、我们将写入寄存器0x09、写入的数据字节为0x06"、0x80是"INPUT DATAX"有效载荷的第一个字节。 捆绑包大小(字节0-3)为0x00 0x00 0x33 0x80、I2C 目标为0x35、超时值为0x31。

    谢谢。此致、

    Chris

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

    您好 Christopher、

    发送的最后一个数据包似乎适用于 PBMs 任务并发送补丁。 这是我昨天一天结束时所能测试的。

    下面是 PBM 的日志以及发送到 TPS 的64字节数据的一个示例:  

    第二个屏幕是读取命令寄存器后、可以查看输出数据寄存器。

    第二个屏幕是发送64字节数据的结束、我可以读取 CMD 寄存器、不再有"!CMD"。

    发送给我的 pdf 格式、建议稍后读取输出数据寄存器  

    我今天不能测试它,但我想我能明天或之后的一天.

    感谢您分享了该文档、我实际上在 PBM 之前并没有发送"DATA1"、更重要的是、我在开头发送的是"PBMS"、而不是"PBMs"、我的十六进制编码为0x53。

    昨天我不能用 PBMC 这样做,所以我要修改代码以发送正确的有效载荷,并在末尾读取模式寄存器。

    我会让您保持联系、非常感谢 Christopher!

    编辑:我在我的代码修改了 I2C 目标的地址,它不正确(0x21而不是0x35 ),但在测量它似乎不会产生任何问题,我没有读取输出数据寄存器中的0x05数据。所以,即使我设置了 I2C 目标的地址是错误的,它似乎是工作的,我错了吗?

    KR、

    Leroy Corentin

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

    你好、Leroy、

    如果您使用的是 Saleae、请随时发送.Sal 日志、我也有逻辑软件、可以查看完整日志。

    [引述 userid="631543" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5828081 #5828081"]

    发送给我的 pdf 格式、建议稍后读取输出数据寄存器  

    我今天不能测试它,但我想我能明天或之后的一天.

    [/报价]

    没问题。 是的、这是确保命令已执行并完成的重要步骤。


    我在代码中修改了 I2C 目标器件的地址、它不正确(0x21而不是0x35)、但在测量结果上、它似乎不会产生任何问题、我没有读取输出数据寄存器中的0x05数据。因此、即使我为 I2C 目标器件设置了错误的地址、它似乎也会起作用?

    我不确定您的意思(更改地址和0x05数据)

    关于器件 I2C 地址、对于4CC 命令和正常使用、器件 I2C 地址由 ADCIN 配置进行设置。

    我用于测试的 EVM 将器件地址设置为0x21 (索引#2)。

    0x35的地址仅用于64字节突发、由 PBMs 命令设置。 您应该能够为该地址使用所需的任何值、前提是 I2C 总线上没有其他外设已经使用该地址。

    基本上、对于 PBMx 修补过程的突发部分、您可以使用所需的任何地址、只需确保(1)在 PBM 中设置它、(2)它用于突发、(3)它不被总线上的任何其他外设使用。

    下面是一个使用 EVM 拍摄的 PBMx 日志示例。 这里有一些快捷方式(不是读取完整的寄存器、并不总是检查 CMD 寄存器是否被清除)、但它应该有助于完成该过程的整体流程。 您应该主要关注4秒和6秒之间的流量

    e2e.ti.com/.../PBMs.sal

    谢谢。此致、

    Chris

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

    您好 Christopher、

    如果你想的话,这里是 saleae 文件 :  

    e2e.ti.com/.../saleae_5F00_tp25751.zip

    0x35的地址仅用于64字节突发、并由 PBMs 命令设置。 您应该能够为该地址使用所需的任何值、前提是 I2C 总线上没有其他已使用该地址的外设。

    好的、谢谢、我保留了0x35、所以我尊重您发送给我的模板。

    以下是使用 EVM 采集的 PBMx 日志示例。 这里有一些快捷方式(不是读取完整的寄存器、并不总是检查 CMD 寄存器是否被清除)、但它应该有助于完成该过程的整体流程。 您应该主要关注4s 到6s 之间的流量

    与我的示例相比、我有几个问题。 它似乎你的化粪池的每一个有效负载64字节1毫秒,我做它很快。 如果我更关心每个有效负载之间的200µs、这是否会成为问题? 此外、为什么 CMD 寄存器需要很长时间才能在示例中发送 PBMC 命令? 因为您发送 PBMC、然后在 DE CMD 寄存器空闲之前读取多次寄存器、然后设法将应用放在 MODE 寄存器上、但等待释放 CMD 需要很长时间(关于.Sal 文件、大约需要300ms)?

    在我的示例中、我在读取 CMD 寄存器为空之前不必过长、但发送 PBMC 后、我找不到设置为 APP 的状态寄存器、它始终是 PTCH。 我会让你保持联系,我认为我发送补丁的方式可能是错误的,我肯定不会有相同的模式,你.

    编辑: 所以我不能直接向你发送.Sal 文件,我在邮件开头的压缩文件夹中输入它,这样你就可以看到我的日志。

    kr  

    Leroy Corentin

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

    你好、Leroy、

    它似乎你的化粪池每一个有效载荷的64字节1毫秒,我做它很快。 如果我更关心每个有效负载之间的200µs、这是否会成为问题?

    这是我们使用的 I2C 主机的限制、200us 应该没问题。

    另外、为什么 CMD 寄存器需要很长时间才能在示例中发送 PBMC 命令?

    我们建议在突发结束和 PBMC 命令之间至少间隔500us。 我不知道为什么我们要等待50ms 的样本日志、但我建议遵循 TRM。 我将与团队核实是否存在特定原因、并告知您是否听到任何消息。

    在我的情况下、在读取 CMD 寄存器为空之前不必等太长时间、但发送 PBMC 后、我找不到状态寄存器设置为 APP、它始终是 PTCH。 我会让你保持联系,我认为我发送补丁的方式可能是错误的,我肯定没有与你相同的模式.[/报价]

    读回 PBMc 命令之后的输出数据、可能会有信息说明其响应失败的原因。

    谢谢。此致、

    Chris

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

    您好 Christopher、

    在 PBMC 命令之后读回输出数据、可能会有信息说明它在响应中失败的原因。

    因此、我能够将字节值与数据表中的值进行比较、下面是我的结论:

    下面是加载补丁后的 data_output:  

    TPS25751上未发送补丁(configBundleGood 为0、但应为1、acState 为0、但应为0x07、rpState 为0)。 当在 PBM 之前发送 DATA1时、我确实在 CMD1中将 I2C 目标地址设置为0x35、但我很惊讶地看到:
    DevicePatchCompleteStatus 为0
    AppConfigPatchCompleteStatus 也为0 (请参阅屏幕截图)。

    因此 DATA_OUTPUT 寄存器似乎有一个"默认"状态、这就是我在几天前分享的4CC 行的文档中看到的状态:  

    "在许多情况下、输出数据将返回一个"标准任务代码"。 Output DataX 部分引用的表将从寄存器读取的值映射到 Output DataX 中的每个情况。 下面有一个示例可导航此案例。"

    这是否意味着我实际上没有看到 DATA_OUTPUT 寄存器中的内容?  

    加载补丁后、我检查了多次寄存器、它永远不会改变。 我也是在测量开始时执行的、在通过"PBMs"发送读取 CMD1寄存器之后。 里面的数据并不完全相同:  

    这里是0x40 0x00、而不是0x40 0x03。  

    我会向您发送日志、以便您可以直接从分析仪上查看。 我可以确保您阅读德州仪器(TI)生成的所有 low_region .c 文件以加载补丁。  

    硬件是否会导致补丁加载出现任何问题?

    以下是日志:  

    e2e.ti.com/.../saleae_5F00_multiple_5F00_read_5F00_data_5F00_output.zip

    与往常一样,如果我有任何新的东西,我会通过编辑这条消息让你保持联系.

    此致

    Leroy Corentin

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

    你好、Leroy、

    不是100%确定这是否是唯一的问题、但我快速浏览了您的日志并注意到您没有发送完整的 PBMs 命令?

    这接近1.5秒标记

    之后、您会立即读取寄存器0x10吗? 您是打算在这里读取0x08吗?

    谢谢。此致、

    Chris

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

    您好 Christopher、

    很抱歉、我向您发送了一个日志文件、该文件不尊重每次写入/读取过程之间的时间延迟、导致数据发送(因此's'未正确发送)或接收到的数据出现错误值。  

    这是一个新的日志文件、其显示正确的数据序列和补丁加载、然后使用与之前相同的观察结果读取 CMD 寄存器(请参考中发送的前一条消息)。

    e2e.ti.com/.../0820.saleae_5F00_multiple_5F00_read_5F00_data_5F00_output.zip

    此外、我尝试使用外部 EEPROM、因为我真的想看看此选项是否可以起作用、在生成 fullflash .c 文件后、我按照页面写入序列发送它、PD 控制器进入"app"模式、在 EEPROM 中加载补丁后读取模式寄存器、然后重新为 PCB 供电。  

    遗憾的是、补丁无法正常工作、我尝试连接 Android 设备以查看它是否可以从 PCB 灌入电流、以及数据传输是否可行、但没有任何反应。

    我还尝试使用 BC1.2协议而非 PD。 我通过在 CDP 模式下使用 BC 1.2修改了补丁(以启用数据传输)。 我还将 GPIO4和5配置为 D+和 D-、以便在电池充电方面遵守 USB 标准。 很遗憾、这也不起作用。

    在阅读数据表时、我注意到我没有集成 BQ25792和 BQ25756等任何元件、如下所示:

    TPS25751支持可编程电源(PPS)拉电流和灌电流。 当 TPS25751协商 PPS 合约作为供电方时、器件会启用高压电源路径(D 型号为 PPHV、S 型号为 PPEXT)、并与受支持的 TI 电池充电器(BQ25792和 BQ25756)进行通信、以提供协商的电压

    如果我尝试使用 BC1.2而不是 USB-BC1.2、这是否是我用例中的主要缺点 PD?

    编辑:我可以尝试 BC1.2或 USB-USB PD ,因为我不需要任何高于5V 和1.5安培的电源( 500mA 也可以),我可以实现这两个,但不使用相同的引脚)。

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

    您好:

    今天是 TI 美国的假日。  请原谅您的延迟。

    此致

    Chris

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

    你好、Leroy、

    当写入"突发"时、它们应该是对器件地址0x35的 I2C 写入、而不是0x21。  

    这是您发出的第一个突发。

    我共享的示例日志中的第一个突发


    您的端口要求是什么?

    • 电源角色
    • 速率下降
    • 数据角色
    • 数据速度

    您能分享您最新的 json 吗?


    [引述 userid="631543" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5838541 #5838541"]

    此外、我尝试使用外部 EEPROM、因为我真的想看看此选项是否可以起作用、在生成 fullflash .c 文件后、我按照页面写入序列发送它、PD 控制器进入"app"模式、在 EEPROM 中加载补丁后读取模式寄存器、然后重新为 PCB 供电。  

    遗憾的是、补丁无法正常工作、我尝试连接 Android 设备以查看它是否可以从 PCB 灌入电流、以及数据传输是否可行、但没有任何反应。

    [/报价]

    EEPROM 可以加载到 APP 模式。

    最好从基本的5V 仅供电配置开始进行初始测试。 您是否为 PP5V 和 PPHV 提供5V 电压?

    您打算如何提供电压作为电源? PD 控制器是一个开关、 如果要支持5V 至20V 电压、则至少需要一个连接到 PP5V 的5V 电源轨和一个可变输出直流/直流转换器。

    [引述 userid="631543" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5838541 #5838541"]

    TPS25751支持可编程电源(PPS)拉电流和灌电流。 当 TPS25751协商 PPS 合约作为供电方时、器件会启用高压电源路径(D 型号为 PPHV、S 型号为 PPEXT)、并与受支持的 TI 电池充电器(BQ25792和 BQ25756)进行通信、以提供协商的电压

    如果我尝试使用 BC1.2而不是 USB-BC1.2、这是否是我用例中的主要缺点 PD?

    [/报价]

    您在这里说得对。 PPS 是一种可变合约、由定期请求更新电压和电流的接收端组成。 在 PPS 合约中、需要定期更新供电的直流/直流级、这通常通过 PD 控制器和直流/直流转换器之间的 I2C 连接来支持、通过 I2C 连接可以更新合约电压和电流。

    我们仅本身支持特定的 BQ 器件、这些器件是 GUI 中列出的器件。

    但是 PPS 和 BC1.2  优点 了解相同的信息。 BC1.2限制为5V、非 PD、不一定需要连接 BQ 器件。 在没有 BQ 器件的情况下可以使用 BC1.2、但如果需要双向电源或大于5V 的电压、可能还有其他原因需要使用该器件

    [引用 userid="631543" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5838541 #5838541"]编辑:我可以尝试 BC1.2或 PD、因为我不需要任何高于5V 和1.5A 的电源(500mA 也可以)、我可以通过这两种方式实现这一点、但不能使用相同的引脚)。[/报价]

    如果您不希望提供超过5V 1.5A 的电流、则不应支持 PPS。 Type-C、Bc1.2和 USB-C PD @ 5V/1.5A 都应正常。

    是否确定需要 PD 控制器? 如果您只需要提供 Type-C 1.5A 电流、则可以使用 Type-C 端口控制器。

    谢谢。此致、

    Chris

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

    您好、Chistopher、

    最好从基本的仅5V 电源配置开始进行初始测试。 您是否为 PP5V 和 PPHV 提供5V 电压?

    我在 PP5V 和 VSYS 上提供4.92V 的电压(因为我已经选择了 S 封装)。

    您打算如何提供电压作为供电方? PD 控制器是一个开关、 如果要支持5V 至20V 电压、则至少需要一个连接到 PP5V 的5V 电源轨和一个可变输出直流/直流转换器。[/报价]

    我具有稳定的 PP5V 输入、当 PPS 供电模式激活时、在连接到 USB C 端口的引脚26和27 (VBUS)上提供+5V 电压。 对于电流、我的电路上的限制为1.5A、因此我可以保持在标准5V 1.5A 上。

    [报价 userid="416726" url="~/support/power-management-group/power-management/f/power-management-forum/1506116/tps25751-cannot-flash-to-device-from-current-configuration-bug-hardware-device-connected/5840471 #5840471"] 但是 PPS 和 BC1.2  优点 了解相同的信息。 BC1.2限制为5V、非 PD、不一定需要连接 BQ 器件。 在没有 BQ 器件的情况下可以使用 BC1.2、但如果需要双向电源或大于5V 的电压、可能还有其他原因需要使用该器件。

    我在 DRP 模式下不需要 USB C 端口、只需在 DFP 模式下即可在双向数据通信的同时为 Android 设备供电。 具有这种双向数据功能非常重要、因为数据交换是连续的。
    由于我在 DRP 模式下使用 Android 设备(通常可以支持 BC1.2或 USB-BC1.2协议)、因此我可以选择其中一个、但在最合理的情况下 PD、最好使用带有 USB-BC1.2 PD 的补丁、但我想同时测试这两个补丁、由于 USB-BC1.2无法正常工作、因此我尝试通过重新生成补丁来切换到 PD。

    是否确定需要 PD 控制器? 如果您只需要提供 Type-C 1.5A、则可以使用 Type-C 端口控制器。

    据我所知、问题是我需要为外部器件供电并双向传输数据。 此配置并非本机配置、从硬件配置的角度来看、将 CC 引脚设置为上拉或下拉不允许协商数据传输和负载。 USB 端口控制器可能是更合适的解决方案? 与 PD 控制器的区别在于电源方向不协商? 知道 Android 设备处于 DRP、那么在我侧设置供电电源方向并在 Android 设备侧设置受电方向是否不是问题?

    此致、

    Leroy Corentin

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

    你好、Leroy、

    对于仅5V 电源、您应该没问题。 您能分享您正在使用的最新 json 吗? 我可以查看一下5V 电源是否无法正常工作的原因。

    我在 DRP 模式下不需要 USB C 端口、只需在 DFP 模式下即可在双向数据通信时为 Android 设备供电。 具有这种双向数据功能非常重要、因为数据交换是连续的。

    如果端口只需要是 DFP 数据和电源、则可能不需要 PD 控制器。 如果需要大于5V 的电源合约、数据角色交换(DFP 和 UFP 数据之间交换)和交替模式支持、则通常需要 PD 控制器。 我不太熟悉 USB 数据要求、但您可能找到 DFP、即"仅供电"控制器。 我仍然会帮助您调试当前的问题、但需要记住一点。


    关于 MCU 闪存更新过程(PBMx)、请尝试更新突发写入。

    对于5V 拉电流问题、请给我 json、我可以查看是否有任何问题。

    当前在加载 EEPROM 的情况下对此进行测试时、您是否会看到 VBUS 变为5V? VBUS 上的电压稳定在5V、还是出现断开?

    您是否有 PD 分析仪?

    谢谢。此致、

    Chris

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

    您好 Christopher、

    好消息,我设法加载 Android 设备,我修改了补丁,我现在有一个负载。 但目前没有数据传输。 我正在继续我的测试。 以下是生成的最后一个 json:

    e2e.ti.com/.../config_5F00_tps25751s.zip

    关于 MCU 闪存更新过程(PBMx)、请尝试更新突发写入。

    我将暂时停止通过 MCU 进行测试、我将继续直接使用 EEPROM、因为使用 EEPROM 不太复杂。  

    当前在加载 EEPROM 的情况下对此进行测试时、您是否会看到 VBUS 转至5V?

    是的、我现在可以测量通过 VBUS 的电流、得到100mA。

    您是否有 PD 分析器?

    不,我不,我以前从来没有使用过一个。 您是否知道我可以购买的任何好参考资料、以便我可以使用它来提供更多详细信息?

    KR、

    Leroy Corentin

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

    你好、Leroy、

    我们现在应该没有 PD 分析仪就可以了。

    似乎没有任何未解决的问题需要我的帮助?

    在数据传输方面、PD 控制器将协商连接(DFP/UFP)上的端口数据角色、但根本不与数据交互。 协商数据角色后、PD 控制器的角色即完成。

    谢谢。此致、

    Chris

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

    您好 Christopher、  

    似乎没有任何未决问题需要我的帮助?

    只是最后一件事,我会离开你,我 promis!

    我想知道在尝试将 PD 控制器的配置用作 TPS25751时、将 USB 2.0端口与 USB 3.0端口配合使用是否会导致任何问题。 我问道、因为即使在 DRP 数据角色中、我也看不到与 Android 设备的连接。 我正在读取 状态寄存器(0x1A)、在为器件充电后、看到0x05 0x7D 0x00 0x20 0x00。 请参阅技术文档第29页、未检测到插头连接、数据+端口角色似乎处于默认模式(由于寄存器中的零值)。

    我将此文档中的日志分享给您、以便您可以查看何时使用逻辑状态的 i2c 行+ de CC 行。 开始时、器件未物理连接、但连接时间约为10s 和25秒

    e2e.ti.com/.../status_5F00_register.zip

    谢谢大家、

    Leroy Corentin

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

    你好、Leroy、

    我认为正在检测到端口? 确保您正确地解释 I2C 有效载荷。 在 num 个字节中发送的第一个字节、第二个字节(0x7D)是 LSB。

    在您发送的"阅读"中:

    0x05:数量字节

    0x7D:Byte0

    0x00:字节1

    0x20:字节2

    仅供参考、从 TPS25751进行 I2C 读取时、您可能需要读取 N+1个字节、其中 N 是器件返回的数字字节作为第一个字节时要读取的寄存器大小、因此在 I2C 读取中始终会有额外的字节。

    谢谢。此致、

    Chris

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

    您好、Chris、

    因此、我仔细分析了有效载荷、无法在供电方模式下进行电力输送。

    不过、无论补丁的内容如何、借助 UFP 或 DFP 中的数据角色、我确实对与补丁相关的寄存器进行了状态更改。 无论我尝试应用哪个补丁、唯一不会改变的是连接状态寄存器、它始终处于6点钟的"连接存在、未检测到 Ra "。

    我在不使用控制器的情况下将 CC 引脚连接到下拉电阻器、看看是否出现串行通信故障、这样做时没有问题。 我设法获得数据交付。 我不知道我还能做些什么来解决这个问题。 对于在我为数据角色激活 DRP 模式时为什么没有进行数据传输、您有什么建议吗?

    此致、

    Leroy Corentin

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

    你好、Leroy、

    我不太熟悉 USB 数据、但可能发生的情况是 USB-C 端口的数据角色会影响您的 USB 通信。

    在初始连接时、Type-C PD 端口将为电源供电方、数据 DFP 或受电方、数据 UFP。 在 Type-C 状态机中将器件配置为 DRP 模式时、PD 控制器可在初始连接时进入任一配置。 如果您希望最终成为用于数据目的的 UFP、并且最初作为供电方进行连接、则需要发起数据角色交换。

    这可以通过几种方式实现。

    1.在配置中、端口控制寄存器中有"Initiate swap to UFP"字段。 通过启用此字段、PD 控制器将自动尝试在 DFP 时切换为 UFP 数据角色。

    2.在运行时期间、您可以使用 SWUF 4CC 命令触发切换至 UFP。

    请注意、这两个命令都将在远端触发 DR_Swap 请求 如果远端不支持 DR_SWAP、它可以将其拒绝、您将保留当前的数据角色。

    谢谢。此致、

    Chris